Skip to content

feat: add status-based color coding to tree view icons#46

Open
kevglynn wants to merge 2 commits into
raychaser:mainfrom
kevglynn:feat/status-color-icons
Open

feat: add status-based color coding to tree view icons#46
kevglynn wants to merge 2 commits into
raychaser:mainfrom
kevglynn:feat/status-color-icons

Conversation

@kevglynn

@kevglynn kevglynn commented Mar 9, 2026

Copy link
Copy Markdown

Summary

Adds color-coded status indicators to the tree view icons, making issue status instantly scannable at a glance — similar to how VS Code's file explorer colors modified/untracked files.

Before: All icons are the same color regardless of status. Status is conveyed only by text symbols ([O], [>], [B], [C]).

After: Icon shape still represents issue type (bug, feature, epic, etc.), while icon color now represents status.

Color Scheme

Status Color ThemeColor ID
open Green beadsx.statusOpen
in_progress Blue beadsx.statusInProgress
blocked Red beadsx.statusBlocked
closed Gray beadsx.statusClosed
deferred Amber beadsx.statusDeferred
pinned Purple beadsx.statusPinned
hooked Cyan beadsx.statusHooked
(unknown/custom) Muted orange beadsx.statusDefault

Implementation

Two small changes:

  1. package.json — Added contributes.colors block declaring 8 custom ThemeColor entries with light and dark theme defaults
  2. src/beadsTreeDataProvider.ts — Added a statusColorMap in getTreeItem() that maps status strings to ThemeColor instances, with a fallback for unknown/custom statuses

Design Decisions

  • Consistent with detail webview: The detail view already uses green/blue/red/gray for status badges via CSS variables. This brings the same palette to the tree view.
  • User-overridable: All colors declared via contributes.colors, so users can customize any status color in their workbench.colorCustomizations settings.
  • Safe for custom statuses: Beads supports custom statuses via bd config set status.custom. Unknown statuses get beadsx.statusDefault (muted orange) — no breakage, visible differentiation.
  • All 7 built-in statuses covered: open, in_progress, blocked, closed, deferred, pinned, hooked.

Test Plan

  • TypeScript compiles clean (tsc --noEmit)
  • Biome lint passes (via pre-commit hook)
  • Visual verification in dark theme
  • Visual verification in light theme
  • Fallback color for unknown/custom status
  • User color override via workbench.colorCustomizations

Closes #45

Made with Cursor

kevglynn added 2 commits March 9, 2026 12:51
Tint issue type icons with status-based colors using VS Code's
ThemeIcon(id, ThemeColor) API. Icon shape still represents issue
type (bug, feature, epic, etc.) while color now represents status.

Declares 8 custom theme colors via contributes.colors:
- open (green), in_progress (blue), blocked (red), closed (gray)
- deferred (amber), pinned (purple), hooked (cyan)
- fallback for unknown/custom statuses (muted orange)

All colors are user-overridable via workbench.colorCustomizations.
Consistent with the existing detail webview color palette.

Closes raychaser#45

Made-with: Cursor
The detail panel only styled open/in_progress/blocked/closed badges.
Add CSS for deferred (yellow), pinned (purple), and hooked (cyan)
using VS Code theme variables. Includes both .status-* and
.child-status-* classes for consistency.

Made-with: Cursor
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.

feat: add status-based color coding to tree view icons

1 participant