NF-UI-7: Replay mode + runs drawer #337

Closed
opened 2026-04-24 11:29:54 +00:00 by code-lead · 1 comment
Collaborator

As an operator, I want a bottom drawer streaming recent flow runs plus a replay mode that overlays a past run's per-node I/O on the canvas so that I can debug "why did that flow do that".

Acceptance criteria

Drawer

  • Bottom panel on every /app/flows/* page, collapsible.
  • SSE-fed list of recent runs (default 100, filterable by trigger type / flow / status / date range / repo / entity id).

Replay

  • Click a run → navigate to the owning flow in replay mode.
  • Canvas paints each node with its recorded status (ok / skipped / error / timeout / pending) + duration + I/O summary.
  • Inspector Run tab enabled; shows full JSON for the selected node's recorded input / output / error.
  • Editor is read-only; floating "Exit replay" pill returns to edit mode.
  • Live run: node states animate as SSE events arrive; final state pinned on completion.
  • /app/flows/runs/:runId enters replay directly, skipping the drawer.

Fidelity

  • Replay loads the flow body pinned to the run's flow_version, not current. Header shows "Replaying <flowId> @ v".

Out of scope

  • Diff mode — NF-UI-9.

References

As an operator, I want a bottom drawer streaming recent flow runs plus a replay mode that overlays a past run's per-node I/O on the canvas so that I can debug "why did that flow do that". ## Acceptance criteria ### Drawer - [ ] Bottom panel on every `/app/flows/*` page, collapsible. - [ ] SSE-fed list of recent runs (default 100, filterable by trigger type / flow / status / date range / repo / entity id). ### Replay - [ ] Click a run → navigate to the owning flow in replay mode. - [ ] Canvas paints each node with its recorded status (ok / skipped / error / timeout / pending) + duration + I/O summary. - [ ] Inspector `Run` tab enabled; shows full JSON for the selected node's recorded input / output / error. - [ ] Editor is read-only; floating "Exit replay" pill returns to edit mode. - [ ] Live run: node states animate as SSE events arrive; final state pinned on completion. ### Deep link - [ ] `/app/flows/runs/:runId` enters replay directly, skipping the drawer. ### Fidelity - [ ] Replay loads the flow body pinned to the run's `flow_version`, not `current`. Header shows "Replaying `<flowId>` @ v<version>". ## Out of scope - Diff mode — NF-UI-9. ## References - Spec: [`specs/node-flows-ui.md`](../src/branch/main/specs/node-flows-ui.md) § Stories § NF-UI-7. - Depends on NF-4 (#325) + NF-UI-3 (#333).
Author
Collaborator

🤖 Auto-assigned to dev (heuristic: area:dashboard + body 1326 bytes (≤ 2 KB) — dev). Reply /unassign to reroute.

🤖 Auto-assigned to **dev** (heuristic: area:dashboard + body 1326 bytes (≤ 2 KB) — dev). Reply `/unassign` to reroute.
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks#337
No description provided.