Files
PaperClipAI/packages/shared
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
..
2026-03-12 13:09:22 -05:00