Commit Graph

9 Commits

Author SHA1 Message Date
Alejandro Gutiérrez
9cf18f5740 fix: PTY stdin error, double-click select with full buffer, alt+key passthrough
- Remove proc.stdin.on() call (Bun FileSink has no .on method), add
  try/catch and proc.killed guards to write/resize
- Double-click enters select mode instead of shift+click, with yellow
  banner and Esc-to-exit hint for discoverability
- Select mode now dumps full scrollback buffer (up to 5000 lines) so
  users can scroll up and copy old conversation text
- Pass all Alt+key combos through input parser to PTY (fixes
  Alt+Backspace word deletion and other Alt shortcuts)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:54:41 +00:00
Alejandro Gutiérrez
059004b6f2 fix: space after pane status icons, prevent repeated idle notification sounds
- Add space between status icon and project name in pane list for readability
- Add notifiedIdle set to checkTransitions to prevent re-triggering sound
  after busySessions fluctuations during the same idle period

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:46:20 +00:00
Alejandro Gutiérrez
c2e8fcaa94 feat: framed buttons, select mode isolation, shift+click select, pane status icons
- Replace bare ● and × with framed [●] and [×] for better click targets
- Select mode now clears screen and shows only focused pane content
- Shift+click auto-enters select mode for native text selection
- Ctrl+S keyboard shortcut to toggle select mode from any grid view
- Pane list shows status icons: ● green=running, ◉ yellow=idle, ○ dim=unknown
- Update hit-testing regions for new 3-char framed button positions
- Add ctrl+s select hint to all grid header modes and expanded footer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 16:38:22 +00:00
Alejandro Gutiérrez
1e105cd950 fix: buffer split mouse sequences, widen grid buttons, fix [object Object] in tab bar
- Buffer partial escape sequences in stdin handler so split SGR mouse
  events don't leak garbage characters into PTY panes
- Widen pane button hit areas from 1 char to 2-4 chars each; add title
  row click-to-expand; widen tab close/add buttons and pane list targets
- Fix [object Object] rendering in picker tab bar and pane list caused
  by OpenTUI's t`` tag not handling StyledText interpolation; add st()
  helper that concatenates StyledText by merging chunk arrays

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 15:29:44 +00:00
Alejandro Gutiérrez
c722112a7f feat: weighted grid layout, pane list bar, sorted tabs, and idle sound delay
- Replace 70/30 rearranging split with weighted grid: focused pane's
  column/row get 70%, others shrink in place (no spatial reordering)
- Add clickable pane list row below tab bar in both grid and picker modes
- Sort grid tabs numerically by tab number
- Click on focused pane no longer unfocuses it
- Delay idle notification sound by 10s to filter false intermediate alerts
- Bump chrome top from 3 to 4 rows (tab bar, pane list, header, content)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 12:52:35 +00:00
Alejandro Gutiérrez
9e424c192a feat: add tabbed grids, click-to-expand, and keybind cleanup
Introduces per-tab pane management with independent focus/expansion state,
a persistent tab bar visible in both picker and grid modes, and a 70/30
soft-expand layout triggered by clicking pane bodies. Removes legacy
toggle keybinds (Ctrl+^ and Ctrl+`) leaving only Ctrl+Space.

New keybinds: Ctrl+T new tab, Alt+1-9 switch tab, Alt+n/p cycle tabs,
Ctrl+E toggle click-expand, Ctrl+W auto-removes empty tabs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 10:45:25 +00:00
Alejandro Gutiérrez
bc8a0c1934 feat: toggle between picker and grid without closing panes
Add pause()/resume() to DirectGridRenderer that detach/reattach frame
listeners without killing captures or PTY sessions. switchToPicker now
pauses the grid, switchToGrid resumes it. Panes keep running in the
background while browsing the project list.

Footer shows "t grid" hint when panes are active in the background.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:56:38 +00:00
Alejandro Gutiérrez
3ce6572952 feat: add direct PTY grid with expand/select mode for text copying
Replace tmux-based grid with direct PTY rendering. Add [MAX] button
to expand a pane to fullscreen and [SEL] to enable native text
selection within the expanded pane. Esc exits select/expanded mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 01:41:31 +00:00
Alejandro Gutiérrez
4132744a01 feat: add tmux-based multi-terminal grid view
Launch Claude Code sessions inside embedded tmux panes instead of
separate Terminal.app windows. Sessions are tiled in a grid layout with
color-coded borders per project. Border flashing alerts when a session
goes idle and needs input. Ctrl+` switches between picker and grid view.

New modules:
- src/tmux/session-manager.ts — tmux session lifecycle
- src/tmux/ansi-parser.ts — ANSI escape code to cell grid parser
- src/tmux/capture.ts — polls tmux capture-pane for rendering
- src/tmux/input-bridge.ts — forwards keystrokes to tmux sessions
- src/components/terminal-view.ts — FrameBuffer renderable for panes
- src/components/session-grid.ts — tiled grid with flash effects

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:37:35 +00:00