Files
PaperClipAI/ui
DottaandPaperclip b930ecf415 feat(ui): surface feedback delivery recovery states on the source comment
Implements the approved UX spec. Delivery state renders on the
human comment it belongs to, never as a new task status:

- retrying: one quiet footer line beside the comment's timestamp, revealed only
  after the ~400ms Doherty window, polite live region, no operator control while
  automatic recovery still owns the problem, static icon under reduced motion.
- exhausted: a persistent compact warning InlineBanner directly under the
  comment with Retry delivery, an authorized View run (omitted, never disabled,
  when no safe route exists), a one-shot alert announcement, and a focusable
  anchor for the attention deep link. Retry pending/error state stays on that
  one button and reports failure inline, not only via toast.
- recovered: the warning is replaced in place by the existing success
  SystemNotice so the operator can see why attention disappeared. Quiet
  transient recovery morphs to "Delivered after retry" for 5s and leaves
  nothing behind.

State is shown once: the generic recovery card is suppressed for
feedback_delivery in the thread, and the attention queue gets one plain-language
operator row per feedback batch deep-linked at the banner. That row is new — an
exhausted delivery is agent-owned but carries manual_repair_required, so it had
no inbox surface at all.

44 focused tests (29 component, 3 thread integration, 1 live-Postgres attention,
plus the 18 projection tests) and pnpm check:token-gates pass.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-16 19:23:56 +00: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.