Files
PaperClipAI/ui
DottaandClaude Opus 5.5 2c0cc8ee64 fix(ui): resolve task status glyphs through one shared mapping (BUG-07)
The same task state rendered different status icons across views. A blocked
task covered by an active sub-task ("in queue") showed the blue queued glyph
in the task header and status trigger, but the status menu's current row, the
chat chip and the coordinator sidebar recents/project rows showed the red
blocked glyph, because those surfaces dropped blockerAttention (and some
dropped externalConversationState) before calling StatusIcon.

- Add ui/src/lib/task-status-presentation.ts: one resolver for glyph, label
  and accessible copy, plus taskStatusIconProps() so call sites pass every
  presentation field from a task record.
- StatusIcon and IssueStatusBadge use the resolver; the picker draws the
  current row with the trigger's presentation.
- Task call sites (sidebar, lists, inbox, properties, pills, search, chat
  chips, status cards) spread taskStatusIconProps.
- /issues/summaries returns blockerAttention for blocked rows; recent-task
  snapshots store and refresh it; sidebar project rows use the rows projection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 13:40:26 -06:00
..
…

@paperclipai/ui

Published static assets for the Paperclip board UI.

What gets published

The npm package contains the production build under dist/. It does not ship the UI source tree or workspace-only dependencies.

Storybook

Storybook config, stories, and fixtures live under ui/storybook/.

pnpm --filter @paperclipai/ui storybook
pnpm --filter @paperclipai/ui build-storybook

Typical use

Install the package, then serve or copy the built files from node_modules/@paperclipai/ui/dist.

Editor dependency identity

Keep the root and workspace overrides for @codemirror/state, @codemirror/view, and @lezer/common aligned. CodeMirror requires shared extension identity, while Lezer parsers and syntax highlighters require shared NodeProp IDs. Multiple Lezer copies can crash code-block highlighting with tags is not iterable. src/lib/codemirror-single-instance.test.ts checks the installed dependency graph and highlights sample code through the editor's real language dependencies. GitHub Actions owns regeneration of pnpm-lock.yaml.