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
@@ -20,8 +19,8 @@ Run multiple Claude, Codex, and Gemini agents in parallel, each in its own tmux
20
19
## Features
21
20
22
21
-**Sidebar + Preview layout** — browse all agent sessions in a list, see live output in the preview pane
23
-
-**Compose mode** — press Enter to open compose, type a full message, press Enter to send, Esc to cancel (empty compose on Codex sends a bare Enter)
24
-
-**Status indicators** — green (idle), red (running), yellow (exited) dots per session
22
+
-**Compose mode** — press Enter to open compose, type a full message, press Enter to send, Esc to cancel (draft preserved). Prompt history with Up/Down arrows. Bracketed paste support for multiline input.
23
+
-**Status indicators** — green (idle), red (running), yellow (exited) dots per session, with auto-clearing status messages
25
24
-**Task timer** — tracks elapsed time for the current running task per agent
26
25
-**Last message preview** — shows the last parsed assistant response per session from provider logs
27
26
-**Auto-generated names** — sessions get NATO phonetic alphabet names (alpha, bravo, charlie, ...)
@@ -30,7 +29,8 @@ Run multiple Claude, Codex, and Gemini agents in parallel, each in its own tmux
└── system/ Git diff parsing, process tree helpers
92
111
```
93
112
94
113
Key design decisions:
114
+
-**Backend/UI actor model** — Backend runs in `tokio::spawn`, owns all I/O, and communicates with the UI via `watch` (state snapshots) and `mpsc` (commands, previews). The UI event loop never blocks on I/O.
95
115
-**`SessionManager` trait** — all tmux interaction is behind an async trait for testability (mock/noop impls in tests)
96
-
-**Hybrid status detection** — prefers tmux output/activity signals and falls back to capture-based detection when needed
116
+
-**Hybrid status detection** — prefers tmux `%output` notifications and falls back to capture-based detection when needed
97
117
-**Session revival** — manifest file persists session metadata; on startup, dead sessions are recreated with agent-specific resume commands
98
118
-**Async I/O** — all tmux subprocess calls and manifest file I/O use `tokio` to avoid blocking the event loop
99
119
-**Nested session isolation** — safely runs from within Claude Code by unsetting `CLAUDECODE` env vars in spawned sessions
100
120
101
121
## Testing
102
122
103
-
450+ tests across unit, snapshot, CLI integration, and property-based:
123
+
490+ tests across unit, snapshot, CLI integration, and property-based:
0 commit comments