You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of #823.
Depends on: #827, #828.
Spec: docs/superpowers/specs/2026-10-08-event-logs-workbench-ui-handoff-design.md (see the section references below).
Design: Claude Design canvas "Event Log Viewer Redesign" (board exports to be attached).
EvtxViewBar.tsx (+ test, new): layout tablist, panel toggles, Group by, Columns, Export menu (existing formats).
EventLogWorkspace.tsx: channel pane | main | rail columns; Table is the only view wired in this phase
(others render a "Not implemented in this phase" placeholder behind the same tablist).
Acceptance
Measurements per spec §5.1–5.2 (±2 px) in the Phase 2 screenshots.
Layout persistence, confirmed for spec 13.2 (the A.5 acceptance item), from the Phase 3 lane at local head 2dcf4f2 (verified by its fix-verification review against source):
Mechanism: zustand persist over the default localStorage, the same middleware the app already uses for ui-store (key cmtraceopen-ui-preferences) and evtx-filter-store (key cmtraceopen-evtx-saved-filters).
Key and version:cmtraceopen-evtx-layout, version 1.
What is stored:partialize keeps exactly activeView, panels, railTab, railWidth and dockHeight. No record content is stored.
Rehydration:merge sanitizes on every load. An unknown view or rail tab falls back to Table or Insights, non-boolean panel flags fall back to their defaults, panels whose phase has not shipped are forced off, non-finite sizes fall back to defaults and every size is clamped (rail 280 to 480, dock at least 160), and unknown keys are dropped. The dock's 50vh ceiling is applied in pixels at render time.
Enabling a panel later: the phase that ships a panel flips it in EVTX_PANELS_AVAILABLE and DEFAULT_PANELS, bumps the persist version and migrates a stored false to the new default; a guard test makes a missed migration fail.
Spec section 9 still marks the mechanism [Unverified]; this comment is the confirmation until a spec errata pass updates it.
Activity
adamgell commentedon Oct 11, 2026
Layout persistence, confirmed for spec 13.2 (the A.5 acceptance item), from the Phase 3 lane at local head 2dcf4f2 (verified by its fix-verification review against source):
persistover the defaultlocalStorage, the same middleware the app already uses forui-store(keycmtraceopen-ui-preferences) andevtx-filter-store(keycmtraceopen-evtx-saved-filters).cmtraceopen-evtx-layout, version 1.partializekeeps exactlyactiveView,panels,railTab,railWidthanddockHeight. No record content is stored.mergesanitizes on every load. An unknown view or rail tab falls back to Table or Insights, non-boolean panel flags fall back to their defaults, panels whose phase has not shipped are forced off, non-finite sizes fall back to defaults and every size is clamped (rail 280 to 480, dock at least 160), and unknown keys are dropped. The dock's 50vh ceiling is applied in pixels at render time.EVTX_PANELS_AVAILABLEandDEFAULT_PANELS, bumps the persist version and migrates a storedfalseto the new default; a guard test makes a missed migration fail.Spec section 9 still marks the mechanism [Unverified]; this comment is the confirmation until a spec errata pass updates it.
fix(event-log): cap channel pane and rail at 40% so a narrow window k…
fix(event-log): put the 40% cap on the body row's child, not on the p…
fix(event-log): readable active tab and checked toggle text in every …
fix(event-log): resize handles track the capped width; explicit DOM c…
fix(event-log): a capped resize that changes nothing must not overwri…
fix(event-log): two-tone focus ring and paired hover colors, measured…
fix(event-log): one rounding for rendered and cap, clamped value, cal…
docs(event-log): ship-a-panel rule is a version bump with no migrate (#…
fix(event-log): remeasure resize handles whenever the requested width…
fix(event-log): round resize proposals before the no-op guard (#829)