Files
PaperClipAI/ui
610bd160a8 feat(ui): render liveness-aware recovery as a recessed in-progress state
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>
2026-08-15 19:19:38 +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.