mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-26 18:31:34 +01:00
Recovery surfaces classified nearly every active action as `needed`, so a task showed a prominent amber "Recovery needed" warning even while a recovery owner was already running it. Make the display derivation liveness-aware. `deriveRecoveryDisplayState` now takes optional `RecoveryLivenessSignals` (recovery-owner run, source live run, queued wake, live continuation) and resolves the five display states against them: - a live/queued run owned by the recovery owner is `in_progress`, which outranks escalation — the escalation already found an owner - a newer durable source-owner run folds the action to `observe_only` rather than leaving a stale call to action - prominent amber/red is kept only for `needed` (no owner/path) and `escalated` (a decision is genuinely required) Recessed states render as `RecoveryProgressLine` — an expandable "Recovery in progress · CTO" row that reveals the existing recovery card on toggle, so evidence and resolve actions stay inspectable without a second prominent surface competing for attention. Applied across the recovery card, issue rows, active-agents panel, blocker indicators, blocked inbox chips, the workspace recovery surface, and both the classic and chat-style task threads. Verified: 349 focused UI tests pass across 16 affected suites, tsc clean, and `pnpm check:token-gates` reports all three gates clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> 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.