[1.14.0] - 2026-08-22
Delivery honesty, TUI gauntlet fixes, and a same-day community wave: 25 merged PRs including 11 community contributions.
Added
- First-class DeepSeek Harness (dsh) tool support: launch, resume, status, and session management for dsh sessions across the CLI and TUI (#1942).
- Auth-401 recovery holds aggregate by credential identity, so one dead credential halts its own sessions with one message instead of a storm (#1963).
Fixed
- A failed read can never rebuild the user's Claude config: MCP catalog writes are refused when the prior read failed or parsed empty, closing the data-loss path behind #1956 (#1958).
worktree cleanupcannot destroy work: unpushed, dirty, live-process, and inspection-failure worktrees are never proposed for removal,--forcecannot override any exclusion, facts are re-verified at deletion time, and every guard is mutation-pinned (#2023, fixes #1995).- CLI answers match stored truth:
inbox drainrejects unresolvable targets loudly with a documented exit-code contract;list --jsoncarries both parent-linkage fields; JSON surfaces return raw stored model values (#2022, fixes #1991, #1992, #1994, #2000). Drain targets resolve across profiles for full ids, ambiguity is surfaced on its own exit code, and a duplicate id across profiles refuses rather than draining either (#2030). - Help never mutates:
--help/-h/barehelpat any argument position prints usage on every hook dispatcher — install and uninstall alike — instead of performing the action (#2010, community, fixes #1993). - TUI gauntlet blockers: session dialogs stay usable at 100x30 with the title, focused field, and primary action always visible (#2031);
$has one meaning (Cost Dashboard, with an explanatory line when the cost store is absent),&is the labeled error filter, errored sessions showR Restartat the state line with one name everywhere, Ctrl+Q detach is in Quick Start, and a keymap invariant test walks the dispatcher so duplicate bindings cannot return (#2032). - Claude 5-family models resolve their 1M context window in Session Analytics (#1989, with thanks to the parallel report and tests in #2008).
- Web terminal pasting keeps line breaks (#1964, community). Hermes hook install asks consent first (#1965, community). Worktree branch names are sanitized from session names (#1966, community).
CODEX_HOMEis quoted on launch (#1983, community, fixes #1946). Per-session custom commands survive resume with fork targets guarded (#1984, community). Archived sessions are skipped correctly in the TUI (#1986, community).session sendno longer Ctrl+C-resends while the message body is on screen (#1980, community, fixes #1979). Session handoff CLI paths gained test coverage (#1982, community). - Remote and local group headers count exactly the partition they head (#2013, fixes #1945; #2014, fixes #1987).
web --tokengets the same validation as--token-file(#2017). macOS process probing uses libproc instead of lsof, with the fast-death watcher accounting restored (#2021, credit @jwiegley). A stale scope comment that misdescribed the MCP grouping is corrected (#2015). Orphaned poll clients are reaped safely (#1941, community). The hotkeys invariant test moved off deprecated parser APIs (#2034).