Highlights
Features
- AI Vault: show first user prompt in session history; add Select All / Clear to agent filter
Fixes
SSH & Reliability (7) — FIDO2 transport gated on OpenSSH binary; SSH targets auto-recover after network drops; consumer-recovery no longer freezes main thread; hosted-review lookups bounded to prevent branch pinning; remote-ref probe fan-out capped; relay HOST_OFFLINE lifecycle fixed; director reconnection fast-lane declared
Terminal (3) — fullscreen atlas recovery bounded; Pi CSI-u Shift+Enter trusted on Windows; paired-client renderer work bounded
Agent Status (3) — background work preserved in sidebar; question indicator cleared on Escape; status restored in reused terminal panes
Browser (3) — Windows all-black window fixed; unsafe close bypass removed; tabs stay rendered across worktree switches
Worktrees & Workspaces (2) — remote deletion idempotent; sidebar reorder preserved during refresh
Editor (1) — lazy-chunk recovery reloads instead of being silently vetoed
Quit & Performance (3) — app no longer freezes on quit with network-mounted profiles; redundant fetch skipped during worktree deletion; speech model download progress coalesced
Dev (1) — confirmation dialog split so Fast Refresh can accept it (ChecksPanel crash fix)
Mobile (3) — OMP icon gradient fixed; secondary text contrast improved; support modules no longer registered as routes
i18n (2) — Editor Font Family translations added for es/ja/ko/zh; status labels localized in Settings and Stats
Tests & Docs (2) — Azure DevOps/Bitbucket remote-url probe assertions restored; search-window error pattern comment trimmed
Other
- Dead-code cleanup: ~2k lines of unreachable exports removed via
knip - FrameDecoder dedup, push-target reuse, Codex/OpenCode fold sharing, GitHub component extraction (-1324 lines)
- Marine-creature corpus imported instead of mirrored in mobile
- Lint rules enabled:
no-useless-call,no-accumulating-spread - Issue templates ask reporters to write in English
What's Changed
- fix(i18n): add missing Editor Font Family translations for es, ja, ko, zh by @qiuyongjin in #11573
- Add first user prompt to AI Vault session history row by @AmethystLiang in #12006
- fix(P1-C): gate FIDO2 system-SSH transport on an OpenSSH binary by @AmethystLiang in #12029
- fix(quit): stop durable state writes from parking the main thread on quit by @nwparker in #11931
- fix(windows): keep browser close marker URL absolute by @nwparker in #12038
- fix(browser): remove unsafe window close bypass by @nwparker in #12040
- fix(agent-status): preserve Claude background work by @nwparker in #11838
- perf(worktrees): avoid redundant fetch during deletion by @nwparker in #11918
- fix(P1-D): bound hosted-review in-flight lookups so a wedged provider cannot pin a branch by @AmethystLiang in #12030
- fix(P1-B): recover SSH targets and remote file watchers after a network drop by @AmethystLiang in #12032
- fix(P1-A): async SSH consumer-recovery persistence and detach on failed connect by @AmethystLiang in #12026
- chore: ask issue reporters to write in English by @nwparker in #12066
- fix(terminal): bound fullscreen atlas recovery by @OrcaWin in #12061
- fix(agent-status): clear Claude question indicator after Escape by @nwparker in #12064
- fix(workspaces): make remote workspace deletion idempotent by @AmethystLiang in #11684
- chore(lint): enable safe performance guard rules by @nwparker in #12073
- fix(agent-status): restore status in reused terminal panes by @nwparker in #12074
- fix(P1-D): coalesce remote-ref probes, TTL negatives, and bound unsettled keys by @AmethystLiang in #12065
- chore(dead-code): drop ~2k lines of unreachable exports and orphan modules by @nwparker in #12077
- fix(relay): desktop control lifecycle — truthful registration, silence watchdog, named-check host proof by @Jinwoo-H in #12076
- fix(sidebar): preserve manual order during refresh by @Jinwoo-H in #12072
- fix(test): restore Azure DevOps and Bitbucket remote-url probe assertions by @nwparker in #12080
- refactor(relay): collapse the duplicated FrameDecoder into one shared module by @nwparker in #12078
- fix(terminal): trust Pi CSI-u Shift+Enter on Windows (#9703) by @itisvincent in #11769
- fix(dev): split the confirmation dialog so Fast Refresh can accept it by @nwparker in #11980
- fix(terminal): bound paired-client renderer work by @OrcaWin in #12081
- fix(speech): coalesce model download progress churn on the Settings/Voice path by @nwparker in #11962
- fix(i18n): localize status labels in settings and stats by @smwbev in #11826
- fix(editor): make lazy-chunk recovery actually reload instead of being silently vetoed by @nwparker in #11929
- fix(relay): declare reconnection to the director's verified fast lane by @Jinwoo-H in #12086
- chore(mobile): import the shared marine-creature corpus instead of mirroring it by @nwparker in #12090
- feat(updater): add an adhoc release channel for branch builds by @nwparker in #12051
- refactor(worktrees): reuse the shared push-target helpers on the SSH path by @nwparker in #12091
- refactor(usage): share the Codex/OpenCode scan fold behind a provider contract by @nwparker in #12082
- refactor(github): extract shared GitHubItemDialog/PullRequestPage code by @nwparker in #12092
- Allow clearing all agents from AI Vault session history filter by @AmethystLiang in #12128
- fix(tasks): make GitHub pagination honest — cap unreachable pages, survive background refreshes, explain empty pages by @brennanb2025 in #11584
- docs(tasks): trim the search-window error pattern comment by @AmethystLiang in #12130
- fix(browser): keep browser tabs rendering across worktree switches (STA-3228) by @brennanb2025 in #12137
- fix(mobile): correct OMP icon gradient stop by @brennanb2025 in #11650
- fix(mobile): improve secondary text contrast by @brennanb2025 in #11651
- fix(mobile): stop support modules from registering as routes by @brennanb2025 in #11652
New Contributors
- @qiuyongjin made their first contribution in #11573
- @itisvincent made their first contribution in #11769
- @smwbev made their first contribution in #11826
Full Changelog: v1.4.164...v1.4.165