core/workbench-ui/src/app
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
..
audit feat(workbench): Audit route — event timeline with mutation-boundary weighting (Wave R2-A) 2026-06-12 16:53:03 -07:00
calibration 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
chat feat(workbench): design mastery pass — chain rail, typography, doctrine-as-tests (Wave R R1) 2026-06-12 13:18:44 -07:00
contemplation feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
demos feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
evals feat(workbench): full-content reveal for truncated table cells (#749) 2026-06-14 16:53:01 -07:00
lived-life feat(workbench): Lived Life surface — the always-on heartbeat made felt (read-only, persist-first) 2026-06-14 16:45:03 -07:00
logos feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
packs feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
proposals feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
replay feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
runs feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
settings feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
tour feat(workbench): Wave M D1+D2 — guided determinism tour (provider-agnostic) 2026-06-13 19:39:41 -07:00
trace feat(workbench): extend TruncatedCell to trace edges and selection rails (#750) 2026-06-14 17:11:47 -07:00
vault feat(workbench): Vault route — fail-closed epistemic memory evidence (Wave R2) 2026-06-12 21:29:18 -07:00
ApiErrorBoundary.tsx feat(W-027): Workbench frontend shell — five-region grid + ten empty routes + live StatusFooter (ADR-0160 / ADR-0162) (#299) 2026-05-26 12:09:12 -07:00
App.tsx feat(workbench): Lived Life surface — the always-on heartbeat made felt (read-only, persist-first) 2026-06-14 16:45:03 -07:00
commandRegistry.ts feat(workbench): interaction substrate — list nav, virtualization, panel chrome, inspector resize, palette verbs (Wave R R0d) 2026-06-12 12:48:02 -07:00
evidenceAddress.test.ts feat(workbench): CORE-Logos Studio LG-4 — Alignment tab + holonomy-absent guard 2026-06-14 12:59:35 -07:00
evidenceAddress.ts feat(workbench): CORE-Logos Studio LG-4 — Alignment tab + holonomy-absent guard 2026-06-14 12:59:35 -07:00
EvidenceChainRail.test.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
EvidenceChainRail.tsx feat(workbench): CORE-Logos Studio LG-4 — Alignment tab + holonomy-absent guard 2026-06-14 12:59:35 -07:00
evidenceContext.test.tsx feat(workbench): evidence addresses — deep-linkable subjects + inspector URL state 2026-06-12 12:17:57 -07:00
evidenceContext.tsx feat(workbench): CORE-Logos Studio LG-4 — Alignment tab + holonomy-absent guard 2026-06-14 12:59:35 -07:00
evidenceUrlSync.tsx feat(workbench): evidence addresses — deep-linkable subjects + inspector URL state 2026-06-12 12:17:57 -07:00
KeyboardHelp.test.tsx feat(workbench): interaction substrate — list nav, virtualization, panel chrome, inspector resize, palette verbs (Wave R R0d) 2026-06-12 12:48:02 -07:00
KeyboardHelp.tsx feat(workbench): interaction substrate — list nav, virtualization, panel chrome, inspector resize, palette verbs (Wave R R0d) 2026-06-12 12:48:02 -07:00
LeewayEvidenceCard.test.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
LeewayEvidenceCard.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
LeftNav.tsx feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
RightInspector.test.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
RightInspector.tsx feat(workbench): CORE-Logos Studio LG-4 — Alignment tab + holonomy-absent guard 2026-06-14 12:59:35 -07:00
routeConformance.test.tsx feat(workbench): Lived Life surface — the always-on heartbeat made felt (read-only, persist-first) 2026-06-14 16:45:03 -07:00
routes.docs.test.ts 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
routes.test.tsx feat(workbench): unify route truth into one registry (Wave M B3.5-a) 2026-06-13 04:43:28 -07:00
routes.ts feat(workbench): Lived Life surface — the always-on heartbeat made felt (read-only, persist-first) 2026-06-14 16:45:03 -07:00
Shell.error.test.tsx fix(workbench): test-runner teardown hardening + frontend CI lane (Wave R R0a) 2026-06-12 11:45:23 -07:00
Shell.test.tsx feat(workbench): Lived Life surface — the always-on heartbeat made felt (read-only, persist-first) 2026-06-14 16:45:03 -07:00
Shell.tsx feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
shortcutRegistry.ts feat(workbench): interaction substrate — list nav, virtualization, panel chrome, inspector resize, palette verbs (Wave R R0d) 2026-06-12 12:48:02 -07:00
StatusFooter.test.tsx fix(workbench): DAG natural-height fit for dense graphs + consistent click-to-copy feedback 2026-06-14 13:31:43 -07:00
StatusFooter.tsx fix(workbench): DAG natural-height fit for dense graphs + consistent click-to-copy feedback 2026-06-14 13:31:43 -07:00
TopBar.tsx feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
useGlobalKeyboard.test.tsx feat(workbench): evidence addresses — deep-linkable subjects + inspector URL state 2026-06-12 12:17:57 -07:00
useGlobalKeyboard.ts feat(workbench): unify route truth into one registry (Wave M B3.5-a) 2026-06-13 04:43:28 -07:00
workbenchPrefs.test.ts feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
workbenchPrefs.ts feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
WrongZeroFrame.test.tsx feat(workbench): wrong=0 as a felt global presence (Wave M B3) 2026-06-13 01:12:24 -07:00
WrongZeroFrame.tsx feat(workbench): wrong=0 as a felt global presence (Wave M B3) 2026-06-13 01:12:24 -07:00