Skip to content

feat(dashboard): maximize the Live View with Enter, restore with Esc#136

Merged
ThomasK33 merged 1 commit into
mainfrom
feat/dashboard-maximize
Jun 9, 2026
Merged

feat(dashboard): maximize the Live View with Enter, restore with Esc#136
ThomasK33 merged 1 commit into
mainfrom
feat/dashboard-maximize

Conversation

@ThomasK33

Copy link
Copy Markdown
Member

What

Adds a maximize affordance to the read-only dashboard's Live View. Press Enter — from the session list or the focused Live View pane — to blow the selected session's Live View up to the full dashboard body (the session list is dropped); Esc restores the split view.

Behaviour

  • Enter maximizes — from the list (jump straight from browsing to watching the selected session) or from the focused pane.
  • Esc restores. Maximize is a modal layer that never mutates focus, so Esc returns you to whatever was focused underneath (list → list, pane → pane).
  • While maximized: panning (↑/↓ h/j/k/l) and the z Overview toggle keep working; the header and footer stay; Tab/H/a are inert so it reads as a distinct mode.
  • The maximized pane keeps the same right edge as the split view, so toggling never shifts the frame; it stays bordered (a borderless full-bleed pane read too much like "am I in my own shell?").

Design

Shipped after a prototype + a grilling session:

  • A presentation affordance, not a domain concept — CONTEXT.md is unchanged (the Live View is still clipped/panned/overview to fit a pane per ADR 0006; only the pane size changes).
  • Named maximize, not "zoom": it enlarges the viewport rather than magnifying content, and "zoom" is already the PRD's word for the z/Overview scale toggle.
  • Modeled as an orthogonal maximized boolean (a modal layer), not a 4th focus value — its key target is identical to live.

Refactors (from a max-effort self-review)

  • Extracted pane-dimension math into a tested paneLayout(termCols, termRows, maximized) helper beside listWidthFor, with a unit test pinning the right-edge-stays-put invariant across the toggle.
  • Shared the pan and Overview key handling between the split and maximized input paths (handlePanKeys / toggleOverview).
  • Pan resets on the maximize/restore toggle (matching every other geometry transition, avoiding a stale-pan dead keypress); Enter no-ops when no session is selected.

Verification

typecheck · lint · format · 1375 unit tests (incl. 3 new paneLayout tests) all green. Behaviour verified by hand against real sessions (the dashboard needs a real TTY; CI can't drive it).

🤖 Generated with Claude Code

@ThomasK33 ThomasK33 force-pushed the feat/dashboard-maximize branch from 43ae03c to 74e19e0 Compare June 9, 2026 11:25
Press Enter — from the session list or the focused Live View — to maximize the selected session to the full dashboard body (the list is dropped); Esc restores the split view. Maximize is a modal layer that never mutates focus, so Esc returns to whatever was focused underneath. While maximized, panning and the z Overview toggle keep working and the header/footer stay; Tab/H/a are inert. The maximized pane keeps the split view's right edge so toggling never shifts the frame.

Extracts the pane-dimension math into a tested paneLayout helper alongside listWidthFor, and shares the pan/overview key handling between the split and maximized input paths.

Change-Id: I357f51ed22a5df02784213b3423df0240b805a96
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Thomas Kosiewski <tk@coder.com>
@ThomasK33 ThomasK33 force-pushed the feat/dashboard-maximize branch from 74e19e0 to 86474cb Compare June 9, 2026 11:44
@ThomasK33 ThomasK33 merged commit 2fd17ab into main Jun 9, 2026
11 checks passed
@ThomasK33 ThomasK33 deleted the feat/dashboard-maximize branch June 9, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant