Skip to content

UI: Improve design of cancelled task status icon#1760

Open
Meldiron wants to merge 2 commits intopaperclipai:masterfrom
Meldiron:chore-improve-ui-cancelled-task
Open

UI: Improve design of cancelled task status icon#1760
Meldiron wants to merge 2 commits intopaperclipai:masterfrom
Meldiron:chore-improve-ui-cancelled-task

Conversation

@Meldiron
Copy link
Copy Markdown

Thinking Path

  • Notice its hard to differenciate todo and cancelled (even more when they are not near each other)
  • Share suggestion and prototype on Discord, request approval to contribute
  • Build AI-assisted implementation
  • Human-made QA + bug fixing (utilizing wrong color, setting wrong size, using CSS instead of tailwind, not respecting existing heleprs for color classes, ..)

What Changed

  • Added icon and background fill to cancelled status icon

Before

image

After

CleanShot 2026-03-25 at 17 01 51@2x CleanShot 2026-03-25 at 17 01 45@2x

Verification

Manual QA, as shown in screenshot above. Tests wouldn't benefit UI change too much

Risks

  • Pixel-perfect alignment issue issue
  • SVG icon quality

Checklist

  • I have included a thinking path that traces from project context to this change
  • I have run tests locally and they pass
  • I have added or updated tests where applicable
  • If this change affects the UI, I have included before/after screenshots
  • I have updated relevant documentation to reflect my changes
  • I have considered and documented any risks above
  • I will address all Greptile and reviewer comments before requesting merge

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 25, 2026

Greptile Summary

This PR improves the visual design of the "cancelled" task status icon by adding a filled background (bg-neutral-500) and an SVG "×" mark, making it easier to distinguish from the "todo" status at a glance.

  • StatusIcon.tsx: Introduces an isCancelled flag and conditionally renders a 12×12 SVG "×" using text-card as the stroke colour, creating a cut-out effect on the filled neutral circle. The implementation follows the same absolute-centring pattern as the done dot, but is missing an explicit height (!h-2.5), which could cause inconsistent rendering across browsers.
  • status-colors.ts: Adds bg-neutral-500 to the cancelled status class string so the circle has a solid fill behind the "×". No dark-mode variant is added for the background, continuing a pre-existing gap for this status entry.
  • Both screenshots and the before/after comparison provided in the description confirm the change works well visually.

Confidence Score: 4/5

  • Safe to merge — a small, self-contained UI change with visual QA provided. Two minor style suggestions to address.
  • The change is confined to two files and only affects a single status icon. Logic is straightforward and the PR includes before/after screenshots. The two open items (missing SVG height and missing dark-mode background variant) are style-level concerns that do not break functionality.
  • No files require special attention beyond the two style suggestions already noted.

Important Files Changed

Filename Overview
ui/src/components/StatusIcon.tsx Adds an SVG "X" icon inside the cancelled status circle. Logic is correct and follows the done pattern, but is missing an explicit !h-2.5 which could cause vertically-stretched rendering in some browsers.
ui/src/lib/status-colors.ts Adds bg-neutral-500 fill to the cancelled status classes to visually distinguish it from todo. Missing a dark:bg-neutral-400 variant, consistent with a pre-existing limitation in this entry.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: ui/src/components/StatusIcon.tsx
Line: 40

Comment:
**Missing explicit height on SVG**

The `done` indicator sets both dimensions explicitly (`h-2 w-2`) to avoid ambiguity, but the cancelled SVG only sets `!w-2.5` with no corresponding `!h-2.5`. With `absolute inset-0` applied, the positioned box has `top: 0; bottom: 0` which makes the CSS-computed height equal to the parent's height (16px). Since SVG sizing with `viewBox` can conflict with absolute-positioned height constraints, some browsers may render the X stretched vertically (10px wide × 16px tall) rather than as a square icon.

Adding `!h-2.5` would match the same approach used for the `done` dot and guarantee consistent cross-browser rendering:

```suggestion
          className="absolute inset-0 m-auto !h-2.5 !w-2.5 text-card"
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: ui/src/lib/status-colors.ts
Line: 19

Comment:
**No dark-mode variant for `bg-neutral-500`**

Every other status with a background fill defines an explicit `dark:` variant (e.g. `dark:text-green-400 dark:border-green-400`). The cancelled entry has always lacked dark-mode variants for its `text-` and `border-` classes, and this PR extends that gap to the new `bg-neutral-500` fill.

In dark mode, `text-card` resolves to `oklch(0.205 0 0)` (very dark / near-black) per the project's `index.css`. A near-black X on `neutral-500` (medium grey) passes the WCAG 3:1 non-text contrast threshold but only just. Adding a slightly lighter background in dark mode (e.g. `dark:bg-neutral-400`) would both align with the existing pattern and provide a bit more contrast for the icon stroke:

```suggestion
  cancelled: "text-neutral-500 border-neutral-500 bg-neutral-500 dark:bg-neutral-400",
```

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "UI: Improve desing of cancelled task sta..." | Re-trigger Greptile

Comment thread ui/src/components/StatusIcon.tsx Outdated
Comment thread ui/src/lib/status-colors.ts Outdated
Comment thread ui/src/components/StatusIcon.tsx Outdated
@sparkeros
Copy link
Copy Markdown
Contributor

👍 Confirming this works well — I've been wanting the same thing. Applied this diff verbatim on a local fork today and Cancelled now reads as unambiguously different from Backlog in both the list view and the status dropdown, in light and dark mode. Hope this lands upstream soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants