Problem
There is no icon module: 75 inline <svg> blocks across 31 files, with heavy duplication and mixed media.
- The Octicon close path (
M3.72 3.72…) is hand-pasted 10 times; copy/branch and external-link paths several times each; the folder icon exists in two subtly different variants that render visibly differently.
- Text glyphs serve as icons alongside SVGs:
✕ (SubTaskStrip.tsx:74, CommitTreeOverlay.tsx:149, TerminalSearchOverlay.tsx:150), ✓ (SubTaskStrip.tsx:236, TaskStepsSection.tsx:231), ❯ throughout PromptInput.tsx, and an emoji 📁 (NewTaskDialog.tsx:1093) — emoji render platform-dependently and full-color, breaking the otherwise monochrome currentColor icon language.
- Icon sizes span ~9 distinct widths (8–16 px).
Proposed fix
A single src/components/icons.tsx exporting the ~20 actual glyphs as components with a size prop (16 default, 12 small), then replace the pasted SVGs and glyph/emoji icons. Mechanical work, good first issue.
From a full design/UX audit (2026-07-07); adversarially verified (counts re-derived). Line numbers as of b342bbd (v1.12.0).
Problem
There is no icon module: 75 inline
<svg>blocks across 31 files, with heavy duplication and mixed media.M3.72 3.72…) is hand-pasted 10 times; copy/branch and external-link paths several times each; the folder icon exists in two subtly different variants that render visibly differently.✕(SubTaskStrip.tsx:74,CommitTreeOverlay.tsx:149,TerminalSearchOverlay.tsx:150),✓(SubTaskStrip.tsx:236,TaskStepsSection.tsx:231),❯throughoutPromptInput.tsx, and an emoji📁(NewTaskDialog.tsx:1093) — emoji render platform-dependently and full-color, breaking the otherwise monochromecurrentColoricon language.Proposed fix
A single
src/components/icons.tsxexporting the ~20 actual glyphs as components with asizeprop (16 default, 12 small), then replace the pasted SVGs and glyph/emoji icons. Mechanical work, good first issue.From a full design/UX audit (2026-07-07); adversarially verified (counts re-derived). Line numbers as of b342bbd (v1.12.0).