mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-26 10:26:26 +01:00
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>
@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.