What's Changed
- test(desktop): stop a replayed FSEvents edge racing the hysteresis test (#2210) (ca3b5bd)
- fix(desktop): make the pid.json start-gap test deterministic, log lost watcher edges (#2222) (78f0b36)
- fix(gui-app): no ghost cursor while a TUI paints a synchronized frame (#2224) (5226395)
- fix(gui-app): let a failed host update be dismissed from Settings (#2225) (31c32c1)
- fix(gui-app): the provider sign-in dialog leaves its pending state when the login start is refused (#2227) (892c95d)
- fix(cli,desktop): stop reporting expected states to Sentry (#2228) (60a9e38)
- fix(gui): stop worktree stream version feedback loop (#2229) (2498382)
- chore: raise in-range catalog floors (#2231) (ce93adf)
- feat(gui-app): Customize visual layout editor (experimental) (#2021) (ab95223)
- perf(gui-app): mount sidebar row overlays on first use, keeping the row (#2230) (bbc3bb1)
- protocol: sync released baseline surface fixture (#2236) (f0e81eb)
- chore: refresh OSS editor bridge dependency (#2240) (d8583c3)
- fix(protocol+gui-app): match model slugs across a dropped tier marker (#2249) (9e52b70)
- ci(gui-app): run the browser regressions in their own parallel workflow (#2252) (e329a28)
- perf(gui-app): scope sheet join and window chrome style invalidation (#2250) (578fe08)
- fix(providers): keep a sign-in going while the host is still getting there (#2251) (9abb094)
- docs(protocol): a null awaitLogin state also means an uninstalled sign-in (#2253) (33fb75e)
- perf(protocol,gui-app): resume chat skeletons across reconnects (#2232) (a525056)
- feat(history): sort Recent by own task activity (#2226) (e2df46f)
- ci(gui-app): run the #2021 browser regressions nightly, not on every push (#2255) (34975d2)
- fix(gui-app): hold Add custom path for Antigravity (#2257) (844b10d)
- fix(gui-app): word the held custom-path reason for every platform (#2259) (c6b86ef)
- feat: Claude parity in chat.subscribe@1.19 and the GUI (#2118) (fdacd5d)
- test(gui-app): run the browser regressions on Playwright Test (#2256) (72c560b)
- test(shared): stop a repeated SIGTERM from killing the contender fixture's descendant (#2261) (70cffee)
- test(gui-app): order F21 manual read-back after automatic completion (#2262) (289a963)
- fix(gui-app): avoid blocking audio setup during startup (#2260) (9d16b94)
- fix(gui-app): gate sign-in on the host's resolved CLI; cancel only a login the answer holds (#2265) (8b8f91d)
- fix(gui-app): slide the landing terminal panel instead of resizing it (#2266) (12d4609)
- fix(desktop,cli): restart a host whose launchd job was booted out (#2267) (a74595f)
- fix(providers): surface sign-in refusals and account verification (#2272) (74a733d)
- fix(gui-app): stop the Start Page scrolling sideways behind a collapsed panel (#2273) (a6d3335)
- perf(mobile): defer cold-launch image and History work; account relay traffic (#2274) (cf713ea)
- fix(gui-app): replace the removed Codex --full-auto suggestion (#2276) (2c6ae43)
- feat(gui-app): animate the task tab strip and reopen task tabs only (#2275) (3d2f5ae)
- fix(desktop): allow registration after host bootout (#2278) (3e10991)
- fix(notifications): link a parked shell-output delivery row to its chat (#2279) (4f4fbc6)
- fix(gui): mobile layout audit + desktop layout regression fixes (#2282) (eb28d52)
- fix(gui): tool-row headers run to the reading width for every input shape (#2284) (7b3bd09)
- test(shared): make the contender fixtures' barrier writes race-free (#2285) (6e8b190)
- fix(providers): scope login cancellation to the owning attempt (#2283) (b5fa01d)
- fix(cli,protocol): gate repeated CLI failures per machine; keep the released lease on request-ended errors (#2286) (511062f)
- fix(protocol): keep a marking span's first two attempts in the fold region (#2287) (3cabb66)
- feat: host lifecycle modes (Background, Linked with app, Always ask, Stop if idle, No local host) (#2159) (b5c1ab2)
- fix(gui-app): instant task menu on tabs; labels, menu and PRs in Current tasks (#2291) (da7ca9d)
- fix(gui): return Settings to the active host after Remove from account (#2292) (7f8f74e)
- fix(gui-app): stop restored sleeping terminal-agent tiles looping on "Starting terminal" (#2293) (8da9be6)
- feat: "Agent worktrees" setting (config block, config.worktrees RPCs, Worktrees chip) (#2294) (ca068e6)
- protocol: sync released baseline surface fixture (#2277) (e579d91)
- fix(gui): show a Task's delete in progress and keep its row from opening (#2296) (ce6de3d)
- feat(gui): drop the static version banner from Host ▸ Updates (#2295) (2391947)
- perf(gui-app): open resources streams only while something shows them (#2138) (e057c58)
- perf(gui-app): one diff highlighter worker on the phone, released when no diff is shown (#2156) (36eba69)
- chore: refresh OSS in-range dependencies (#2300) (f42bf6a)
- fix(gui-app): nest shared subagents under their orchestrator in the sidebar (#2281) (6d7e2fa)
- fix(gui,protocol): an off-screen landing terminal no longer sizes the shared grid (#2297) (38b73eb)
- fix(gui-app): release a sign-in attempt's login and wait when it ends (#2299) (8a1a9cc)
- feat: copy a managed harness profile to another host (wire contract and Settings flow) (#2298) (fad6ac0)
- fix(protocol): park a remote session on host_detached instead of redialling (#2307) (f30c6bd)
- feat(gui): sectioned Activity sidebar, tab groups as blocks, Chrome-style tab drag and split pairs (#2310) (fd148bb)
- test(protocol): stop the surface self-compat test from serializing every live schema (#2268) (c4f69f3)
- test(desktop): wait for the fleet republish instead of a fixed 10ms flush (#2270) (7b1456a)
- test(desktop): read gui-app sources synchronously in the alias scan (#2271) (33fbcc0)
- refactor: remove the remote-host plan gate (#2314) (7aa63ce)
- fix(gui-app): read a cloud draft head once per renderer, not once per mount (#2309) (c731a1a)
- feat(gui): settings pages use one of two shapes; Appearance moves to the rail (#2315) (9dbeb75)
- fix(gui-app): a top tab joins its surface in the ground that surface paints (#2313) (9084905)
- test(gui-app): measure the drop line against the group's fill, not its frame (#2319) (7821764)
- feat(gui): right-click menu for web links in rendered markdown (#2316) (100ec4f)
- test(gui-app): freeze the side strip's section-move animations, don't slow them (#2321) (d67188d)
- feat(gui-app): usage and resource readings fit wherever they are placed (#2320) (ef1462d)
- chore(deps): refresh catalogs and migrate client test tooling (#2318) (8431b7d)
- fix(gui-app): match nested chat background to canvas (#2326) (b00e4bc)
- fix: clarify host lifecycle descriptions in settings and CLI (#2325) (1449868)
- feat(cli): manage provider profiles with
traycer profile(#2327) (c84f327) - fix(gui-app): a subagent's conversation no longer wears the parent chat's dock (#2328) (435c56f)
- test(desktop): run the afterPack hook test under node, and skip the macOS job when nothing it covers changed (#2330) (bc8cd64)
- fix(gui-app): an agent under a task always reads its own title (#2334) (7ca93f2)
- fix(gui-app): New Task is always the primary button in the side strip (#2335) (0c350ca)
- fix(gui-app): Reset time covers every status-bar profile, in every reading style (#2336) (587443c)
- fix(gui-app): stack a fifth sidebar section and reorder sections by header again (#2337) (fdcd8aa)
- fix(gui-app): a Compact resource monitor is the CPU icon alone (#2338) (1bbea6e)
- feat: continue a subagent's conversation as its own chat (#2331) (0120e25)
- fix(protocol,gui-app): say the host is out of disk space instead of a bare failure (#2341) (2c1a9eb)
- Sync profiles across selected providers and devices (#2329) (7457043)
- fix(gui-app): carry the 1.4.x usage reading style and header agent-row metrics into the layout migration (#2346) (ed7f072)
- fix(gui-app): one dependency model for layout rows, and the knob behaviours it exposed (#2345) (b96a017)
- feat(gui-app): offer Open as chat on a subagent card that only replied (#2344) (882fe68)
- fix(gui-app): a tap on the composer only focuses it; a swipe right accepts the suggested prompt (#2348) (792b7cb)
- fix(gui-app): leave the limited-account banner off the provider's own usage tab (#2352) (a5043cb)
- fix(transport): report a relay stream open before delivering its first frame (#2353) (67254c6)
- perf(gui-app): sample app resources every 3 hours (#2339) (13458bb)
- chore: refresh in-range catalog dependencies (#2360) (7d95c6e)
- feat(profile-sync): rebuild on direct host-to-host sign-in transfer, one-screen dialog (#2361) (1172440)
- fix(gui-app): keep Edit Title's rename input focused while the menu closes (#2340) (87fdfc9)
- fix(gui-app): readings on agent rows off by default (#2365) (987692c)
- test(gui-app): effect sweep draws agent-row readings now that they ship off (#2367) (e9f4ad7)
Traycer Desktop 1.5.0-rc.1.