9379e1523c4a3f3154dad19a1b094e344f05a174
TUI: - VimListView: j/k now move down/up in the project and session lists (arrow keys still work); used by both list widgets. tmux status bar: - Widen the gap between window cells via a 2-space window-status-separator (WINDOW_STATUS_SEPARATOR). - Fix the current-window cell toggling between padded " 1: name " and unpadded "1: name". The per-window status format is static, but set_window_label re-asserted it on every 3s poll — letting a competing writer (e.g. a stale TUI process running older code with a differently padded format) flip the cell each cycle. The format is now owned by a single write-once path (new_window at creation, apply_theme for existing windows); the poll updates only the dynamic @hqt_label. Also lands pre-staged scaffolding: AGENTS.md quality gate, TODO.md backlog, and ty dev dependency. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
hqt — HQ Terminal
A TUI for orchestrating AI coding harness sessions (Claude Code, Kiro, Aider, etc.) via tmux. Manage multiple AI sessions across projects from a single terminal interface.
Quick Start
uv pip install -e .
hqt
Commands
| Command | Description |
|---|---|
hqt |
Launch the TUI (inside tmux) |
hqt doctor |
Check system requirements |
hqt list |
List projects and sessions |
Key Bindings
| Key | Action |
|---|---|
q |
Quit |
n |
New session |
a |
Add project |
e |
Edit project |
Tab |
Switch panel |
d |
Delete session |
Enter |
Attach to session (auto-resumes if not running) |
r |
Rename session |
s |
Stop session |
Architecture
hqt uses a layered architecture: a Click CLI bootstraps into a Textual TUI, which drives service classes (ProjectService, SessionService) backed by SQLite via SQLAlchemy. Sessions are spawned as tmux windows through TmuxManager, with harness-specific configuration provided by pluggable HarnessConfigurator implementations discovered at runtime.
Description
Languages
Python
100%