This was generated by AI during triage.
Summary
Add a 3×3 grid layout option (9 terminal panes) alongside the existing 1×1, 1×2, 2×1, 2×2, and other layouts.
Motivation
Power users running many concurrent sessions — e.g. monitoring multiple Claude Code agents, tailing several log streams, or managing a fleet of services — currently max out at 4 panes (2×2). A 3×3 layout makes the tool viable for larger multi-session workflows without needing to switch groups as frequently.
Proposed behaviour
- Add
ThreeByThree (or similar) to the Layout enum and the layout switcher toolbar/menu.
RefreshTerminalLayout distributes up to 9 active sessions into a 3-column × 3-row Grid.
- Sessions beyond 9 are dormanted (same overflow behaviour as today).
- Layout persists to
AppState.LastLayout as "ThreeByThree".
- The active-ring highlight and sidebar sync work unchanged — they are slot-agnostic.
Implementation hints
- The layout switcher in
MainWindow toolbar already iterates layout values; adding the enum entry and a ColumnDefinitions/RowDefinitions branch in RefreshTerminalLayout should be the bulk of the work.
- Minimum window size may need revisiting — 9 panes at the current minimum will be very cramped; consider enforcing a larger
MinWidth/MinHeight when this layout is active, or letting xterm.js reflow naturally via the fit-addon.
- The layout label/icon in the toolbar needs a 3×3 grid glyph or label.
Summary
Add a 3×3 grid layout option (9 terminal panes) alongside the existing 1×1, 1×2, 2×1, 2×2, and other layouts.
Motivation
Power users running many concurrent sessions — e.g. monitoring multiple Claude Code agents, tailing several log streams, or managing a fleet of services — currently max out at 4 panes (2×2). A 3×3 layout makes the tool viable for larger multi-session workflows without needing to switch groups as frequently.
Proposed behaviour
ThreeByThree(or similar) to theLayoutenum and the layout switcher toolbar/menu.RefreshTerminalLayoutdistributes up to 9 active sessions into a 3-column × 3-rowGrid.AppState.LastLayoutas"ThreeByThree".Implementation hints
MainWindowtoolbar already iterates layout values; adding the enum entry and aColumnDefinitions/RowDefinitionsbranch inRefreshTerminalLayoutshould be the bulk of the work.MinWidth/MinHeightwhen this layout is active, or letting xterm.js reflow naturally via the fit-addon.