v1.10.9
Agent Deck v1.10.9
Terminal session manager for AI coding agents.
Installation
Homebrew (recommended):
brew install asheshgoplani/tap/agent-deckQuick Install:
curl -fsSL https://raw.githubusercontent.com/asheshgoplani/agent-deck/main/install.sh | bashGo Install:
go install github.com/asheshgoplani/agent-deck/cmd/agent-deck@v1.10.9Changelog
- 5786ff7 Merge main into Codex approval command
- 6d41e7c Merge main into Pi status fix
- 30221b7 Merge main into UI test-worker fix
- f0dc827 Merge main into fix/issue-1595-copy-visible-pane
- f1a7f5b Merge main into last-activity fix
- 946e7f7 Merge main into relative-time feature
- 8968cb9 Merge remote-tracking branch 'origin/main' into fix/ui-test-worker-leak
- f9b2a05 Merge remote-tracking branch 'origin/main' into maintainer/1503
- 6b026c8 Merge remote-tracking branch 'origin/main' into maintainer/validate-1560
- b4ae312 Merge remote-tracking branch 'origin/main' into maintainer/validate-1565
- a6302e3 Merge remote-tracking branch 'upstream/main' into maintainer/review-1603
- 8d8dcc4 Merge remote-tracking branch 'upstream/main' into maintainer/validate-1514
- 60eba47 Merge remote-tracking branch 'upstream/main' into maintainer/validate-1514
- 00c1319 Merge remote-tracking branch 'upstream/main' into maintainer/validate-1514
- cdad11b Merge remote-tracking branch 'upstream/main' into maintainer/validate-1566
- 582ad4d Merge remote-tracking branch 'upstream/main' into perf/tui-liveness-freeze
- c770ce5 Merge remote-tracking branch 'upstream/main' into perf/tui-liveness-freeze
- 3c44089 chore(deps): bump actions/attest-build-provenance (#1542)
- f253738 chore(deps): bump actions/cache from 5 to 6 (#1543)
- 5d49a68 chore(deps): bump actions/checkout from 6 to 7 (#1519)
- 905b767 chore(deps): bump the go-minor-patch group with 2 updates (#1516)
- ed4a485 chore(deps): bump the go-minor-patch group with 3 updates (#1575)
- ce85b23 chore(deps): bump the go-minor-patch group with 5 updates (#1613)
- 0c3b7f3 chore(lint): document tmux argv safety
- dfb1cf2 chore(release): bump to v1.10.4, update CHANGELOG for #1518
- 80026f3 chore(release): bump to v1.10.5, update CHANGELOG for #1511
- 6b0edd9 chore(release): bump to v1.10.6, update CHANGELOG for #1529 #1531
- 030a258 chore(release): bump to v1.10.7, update CHANGELOG for #1541
- 0e11487 chore(release): bump to v1.10.8, update CHANGELOG for #1548 #1545
- f70f19e chore(release): bump to v1.10.9, update CHANGELOG for #1544 #1532
- 59cca0e chore(release): bump to v1.9.74
- c908962 chore(release): bump to v1.9.75
- 5e65b38 chore(release): bump to v1.9.76
- d9b51e5 chore(security): bump Go toolchain to 1.25.12 for GO-2026-5856 (stdlib crypto/tls)
- 2af7279 ci(release): notify via ntfy on release workflow failure (#1538)
- 5a481ad ci: green main after the upsert-only save merge and the toolchain bump (#1594)
- 40f4255 docs(fleet): preflight checklist + independent (--no-parent) session guidance (#1572)
- 92f67c0 docs(fleet): use --parent (not -p) for explicit child parenting (#1531)
- 905c415 feat(cli): --message-file (path or '-' for stdin) for launch, session start, session send (#1618)
- 1f18c78 feat(cli): add 'session cleanup' to purge dead, stale sessions (#1602)
- e2c1366 feat(cli): fleet fan-out — launch parented children & track completions (#1518)
- e28dbbe feat(cli): session children --follow — JSONL event stream for fleet supervision (#1619)
- 4a0bb20 feat(cursor): pre-seed workspace trust before session start
- 7944ba7 feat(cursor): pre-seed workspace trust before session start (#1467)
- f750d09 feat(discord): add mentions_all_channels listen mode (#1493)
- f9b98bd feat(discord): tag forwarded messages with channel context
- f496004 feat(focus): drive the running TUI
- 46453af feat(groups): declarative groups in config.toml (#1456)
- a385735 feat(groups): default new-group max_concurrent via [group_defaults] config (#1541)
- 2cf7ad7 feat(hooks): conductor fleet snapshot injected at turn start (#1620)
- e65c75f feat(hooks): sync project_path from Claude Code /cd (#1557)
- c3b775e feat(mcp): add Codex management
- 87f6c24 feat(sandbox): per-instance-scoped hook status bridge (#1500)
- 3eeb24c feat(send): session send --defer-if-busy — hold delivery until the target is turn-finished (#1578) (#1643)
- fa5a32c feat(session): add archive and unarchive CLI commands
- 10189df feat(ui): add pin-cycle hotkey with stable selection (#1598)
- 65e4228 feat(ui): add preview-below orientation toggle for portrait terminals (#1626)
- 86d80d5 feat(ui): copy visible terminal pane text
- 007528c feat(ui): in-attach scrollback pager for the deck view (#1491) (#1629)
- 9cd3b8d feat(ui): make Sessions and Preview divider draggable
- cd9fdc9 feat(ui): surface worktree setup-script failures in TUI (#1624)
- e048002 feat(ui,web): compact compound relative-time units (TUI + web parity)
- 47ae459 feat: add ',' hotkey to cycle session pin (top/bottom/off)
- 85dba80 feat: add Codex session approve command
- f9d00c4 feat: implementation split terminal next to agents session #1470
- ebecd80 feat: inject environment variables on session restart (#1621)
- d3ac809 feat: per-group/per-conductor claude command, model, env, and default_path config (#1483)
- 10f0ee1 feat: pin protects sessions from auto/bulk stops (#1521)
- 7ab4452 feat: preseed Codex workspace trust on session launch
- 643cb51 fix(approve): keep Codex prompt verification fail-closed
- 740e504 fix(ci): align Go toolchain pins with go.mod
- 9ae8f10 fix(ci): align Go toolchain pins with go.mod (#1597)
- b32be9e fix(ci): force current toolchain for Lighthouse base build
- 5aa8a14 fix(claude): group config_dir beats ambient CLAUDE_CONFIG_DIR (#1508) (#1637)
- 1941c64 fix(claude): resolve transcript path by session-id when project-dir name mismatches
- 5a492c7 fix(cli): stop global -p/--profile from shadowing a subcommand's -p (#1529)
- c099b58 fix(codewhale): add deepseek TUI readiness preset (#1577) (#1646)
- e24dda8 fix(codex): add -n -P and a hard timeout to the lsof status probe (#1581) (#1632)
- 8d2480c fix(codex): deliver the initial prompt as an argument instead of typing it (#1616)
- 14f713e fix(codex): gate subagent-thread rebinds and fork subagent bindings (#1622)
- 8c946b0 fix(conductor): default HeartbeatInterval to 15 for fresh conductors (#1511)
- 536cac3 fix(conductor): stop bridge.py from spawning duplicate conductor sessions (#1609)
- f7ca6cf fix(cursor): harden remote trust seeding
- 16db87e fix(groups): preserve group create/rename/move across the save-abort reload race (#1585)
- 69d11f7 fix(groups): reject rename when target path collides (#1556)
- 0c04309 fix(groups): stop empty groups from vanishing via additive group saves (#1523)
- 52fd17a fix(loadout): integrate declarative group and conductor loadouts (#1606)
- 6eeaed7 fix(mcp): write .mcp.json with trailing newline and skip no-op rewrites (#1627) (#1636)
- 3628970 fix(output): EOF-anchored last-assistant extraction survives /compact oversized records (#1568) (#1640)
- abab546 fix(reviver): break reconnect storms on a wedged tmux server (#1579) (#1644)
- 69f3634 fix(scrollback): don't hijack PageUp from alternate-screen apps (#1648)
- 1a8c849 fix(session): deliver completions for parented conductor children
- f09e914 fix(session): grouped children use group config_dir over ambient env (#1532)
- 3b3871f fix(session): prevent conversation loss when switching Claude accounts (#1549)
- b3d7f4e fix(session): restore idle-watcher safety net for archived orphan panes
- 4d3a898 fix(session): surface spawn/exec failures instead of bare "error" (#1580) (#1645)
- 81f511d fix(settings): persist "Sync Session Title" toggle to disk (#1562)
- 1145387 fix(statedb): announce targeted archive writes so a running TUI cannot clobber them (#1611)
- a9ea185 fix(statedb): preserve detected session-id keys on stale full-table saves (#1526)
- 0879ef3 fix(status): improve TUI session status accuracy (#1544)
- ddccade fix(status): treat clean OpenCode /exit as stopped, not error (#1617) (#1634)
- d6f0d7b fix(storage): make routine saves upsert-only — stale TUI snapshots can no longer delete concurrent sessions (#1551)
- 92c29a2 fix(switch-account): locate conversation across config dirs when account field is empty (#1571) (#1641)
- 4a3ae00 fix(sysinfo): don't block TUI startup on a wedged netstat (#1548)
- 7672b1b fix(title-sync): ignore Claude's auto-derived session names (nameSource=derived) (#1545)
- d550d70 fix(tmux): bound cadence polls and reap orphaned tmux clients
- 982067b fix(tmux): bound tmux send-keys with a per-call deadline + process-group kill
- 6106954 fix(tmux): idempotent kill + socket-complete existence cache (#1517)
- 0d5f130 fix(tmux): integrate bounded send keys with poll deadlines
- 16ed0e5 fix(tmux): let explicit user tmux config win over forced key options (#1625) (#1635)
- 77b9502 fix(tmux): preserve liveness on probe errors
- f3a58b4 fix(tmux): reap orphaned control clients server-wide + close eval/test process leaks (#1486)
- b169223 fix(tmux): spawn pane commands as argv tokens, not a $SHELL-wrapped string (#1567) (#1639)
- d80b2b1 fix(tui): free group-create Tab and typed-path Enter (#1536) (#1630)
- ed15068 fix(tui): sink empty/archived-only groups below the view-mode divider (#1522)
- 23d3f8f fix(ui): accept numeric epoch zero in relative time
- ed73e08 fix(ui): guard MoveSessionToGroup against creating-session placeholder (#1540) (#1638)
- 58d5d4d fix(ui): keep selection on session while cycling pin
- 4503c24 fix(ui): nest remote sessions under their groups (#1553) (#1631)
- aeac000 fix(ui): persist manual shift+up/down session order (#1582) (#1633)
- 7f86c59 fix(ui): preserve lowercase h navigation for shell split
- 88edc2d fix(ui): show real last-active time for inactive sessions, not TUI load time
- 5856c3b fix(worktree): sweep transition-notifier state on worktree finish (#1576) (#1642)
- b6ab823 fix: apply fixes
- e0cddd4 fix: claude title sync reverting locked renames (#1623)
- 9bbf544 fix: detect atuin pty-proxy and warn about TUI incompatibility
- 3c44704 fix: manual rename reverts to folder default after a reload race (TitleLocked lost on reapply) (#1570)
- 157d2e6 fix: pi subagent status detection + running to waiting debounce fix
- efeae5b fix: preserve explicit session titles on creation (#1607) (#1610)
- 65f981b fix: reposition cursor after pin cycle + document RemoteSession gap
- 39659fa fix: restart archived sessions from TUI (#1647)
- 0e5ae31 fix: restore correct v1.9.77 content (previous commit had placeholder text)
- 1c317ae perf(session): cache group DefaultPath resolution to kill the reload freeze (#1601)
- 0949118 perf(ui): keep tmux liveness probes off the bubbletea goroutine
- 8f1ce7f perf: opt-in claim-based polling dedup for concurrent multi-instance setups (#1612)
- f3b11d0 refactor(session): fork OpenCode via native --fork
- 8da7e36 test(status): cover Pi subagent detection regressions
- b068d3c test(title-sync): end-to-end guard — derived Claude name never clobbers the session title (#1574)
- 23814d7 test(ui): disable eager Home workers under TestMain
- 6c02f6a test(ui): gate hook watchers with background workers
- 59fa6e1 test(ui): hard os.Exit watchdog for orphaned ui.test
- f6b155b test(visual): re-baseline snapshots for Command Center nav (#1462), fix #1506 (#1507)
Full Changelog: v1.9.73...v1.10.9