core/workbench-ui/src/app/proposals
Shay de2d5da4f3
feat(workbench): extend TruncatedCell to trace edges and selection rails (#750)
Follow-up to #749, which deliberately scoped TruncatedCell to the
non-virtualized columnar tables and left trace edges + single-column
selection rails as-is. Wire it into those too so every truncated data
cell in the workbench has the same full-content reveal (popover +
copy + modal-for-long).

Component:
- Add `align` prop ("start" | "end"). `end` hugs the right edge and
  right-justifies the display, for right-aligned columns like the trace
  `to_stage` cell. Defaults to "start" (unchanged).

Wiring:
- Trace propagation edges: from_stage / to_stage (to_stage align=end).
- Trace pipeline stage rail: stage label + summary.
- Trace turns rail: prompt + surface excerpts.
- Runs rail: session_id. Replay rail: prompt excerpt. Packs rail:
  pack_id. CORE-Logos pack rail: pack_id. Logos alignment rail: edge
  (rich source→target display, plain-text value for copy/reveal).
- Contemplation run rail: run_id; stage-evidence ids.
- Demos rail: title; scenario trace hash.
- Proposal detail: replay-equivalence hash, evidence hashes;
  proposal chain provenance.

Two row elements that were real <button>s (trace stage rail,
contemplation run row) are converted to <div role="button"> with an
Enter/Space onKeyDown handler — the codebase's established selectable-row
pattern (ProposalTable, RowShell) — so nesting TruncatedCell's button
trigger is valid HTML rather than a button-in-button.

Intentionally left as-is (documented):
- RunsRoute TurnRefRow is an <a>/<Link> row; nesting an interactive
  trigger inside an anchor is invalid HTML. The surface excerpt is
  reachable by following the link.
- Digests everywhere keep DigestBadge (already copy + full-value title).
- Section headings (e.g. the trace stage-detail <h3>) are not data cells.

Evidence: workbench-ui `pnpm build` (tsc -b) green; full vitest suite
535 passed / 60 files, incl. a new align assertion on TruncatedCell.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 17:11:47 -07:00
..
ProposalChainViewer.tsx feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
ProposalProvenanceViewer.tsx feat(workbench): full-content reveal for truncated table cells (#749) 2026-06-14 16:53:01 -07:00
ProposalReplayBadge.tsx feat(workbench/W-029): proposal queue (#329) 2026-05-26 21:08:36 -07:00
ProposalsRoute.test.tsx feat(workbench): evidence subject extension and proposals wrinkles (Wave R2-S) 2026-06-12 17:13:59 -07:00
ProposalsRoute.tsx feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
ProposalStateBadge.tsx feat(workbench/W-029): proposal queue (#329) 2026-05-26 21:08:36 -07:00
ProposalSummaryCard.tsx feat(workbench): land B3.5-b/c/d/e — calibration evidence subject, B4a leeway gate, docs; runner-reproducible practice artifact 2026-06-13 07:36:44 -07:00
ProposalTable.tsx feat(workbench): full-content reveal for truncated table cells (#749) 2026-06-14 16:53:01 -07:00
proposalView.ts feat(workbench/W-029): proposal queue (#329) 2026-05-26 21:08:36 -07:00
RatificationCommandPanel.tsx fix(workbench): test-runner teardown hardening + frontend CI lane (Wave R R0a) 2026-06-12 11:45:23 -07:00
ReplayEvidenceCard.tsx feat(workbench/W-029): proposal queue (#329) 2026-05-26 21:08:36 -07:00
SuggestedCLIBox.tsx feat(workbench/W-029): proposal queue (#329) 2026-05-26 21:08:36 -07:00