What's Changed
- feat: auth-aware harness enablement (protocol v7.1 + GUI surfaces) (#1354) (3fb6c9d)
- feat(protocol): name the artifact projection dirnames and gate dot-prefixed chain segments (#1229) (ffcd474)
- Mobile app (#572) (b8ef446)
- fix(updater): follow release candidate lines to stable (#1401) (8077840)
- protocol: sync released baseline surface fixture (#1385) (a082498)
- fix(shell): flag a WSL that cannot host a terminal instead of offering it (#1378) (eed54b3)
- fix(protocol): move wslHealth to config.shell.listDetected v1.1 (#1426) (dbbe421)
- feat(gui): add trustworthy interview history review (#1422) (661e32e)
- feat(gui): unify folder picker across hosts (#1443) (cf8b32e)
- feat(reasonix): add harness protocol and GUI support (#1438) (662e438)
- chore: update dependencies (#1452) (586e96e)
- feat(gui-app): configurable profile eligibility controls (#1441) (ebeb8d2)
- feat(protocol): lifecycle minors — subscribe viewer intent, WORKTREE_BUSY holders, delete stopOwners, submit workspace intent (#1382) (2635ce3)
- feat(terminal): spawner theme hint on terminal.create@2.1 + single-authority OSC 10/11 replies (#1424) (ee3e35a)
- test(cli): make host start timer assertion deterministic (#1464) (acdd1b5)
- build: migrate tooling to Oxlint and Oxfmt (#1462) (0041bbf)
- fix(notifications): carry host.operation.finished on the cloud feed via @1.1 (#1473) (ee65c9a)
- feat(gui-app,protocol): simplify harness enablement to a plain sticky toggle (#1472) (c0f3d53)
- fix(protocol): restore workspace agent selection guides (#1417) (589a425)
- feat(protocol): per-artifact epic sync — multi-major handshake, epic.subscribe@2, projected reparent (#1458) (3921e57)
- feat(gui-app): tag keep-warm terminal.subscribe attachments as cache (#1466) (548555c)
- fix(mobile): recover the relay session fast after an app switch (#1475) (7ec99c2)
- feat(protocol): worktree.listHolders minor — typed holder read (T7) (#1498) (8e2b691)
- feat(gui-app): confirm force-delete of busy worktrees with teardown disclosure (T8) (#1497) (078abd6)
- fix(cli): enforce the readonly agent surface at runtime, not in help (#1503) (b104168)
- fix(traycer-cli): parse canonical RPC response schemas (CLI-023) (#1508) (52954b5)
- fix(traycer-cli): repair help surface and human-readable output (CLI-002/005/020/022) (#1505) (497f4ac)
- fix(traycer-cli): make the auth commands say what they do (CLI-017, CLI-018) (#1501) (9903ef8)
- fix(cli): make host status/doctor observational and port repairs fail safely (#1506) (9979f27)
- fix(shared): accept in-flight chunk evidence at the remote ready boundary (#1509) (e719b71)
- feat(protocol,gui-app): mobile client identity + store-aware update-required remedy (#1515) (f63ef25)
- feat(browser): add the end-to-end in-app Browser (#1491) (09c6f1b)
- refactor(clients): share the worktree row-state derivation with the GUI (#1516) (5696d42)
- fix(cli): make host lifecycle commands say what they actually do (#1504) (d37e54c)
- fix(cli): self-upgrade installs the version it reports, atomically (CLI-013..016) (#1502) (23c73c6)
- feat(host-update): durable update attempts, dispatch ACK, and compatibility cutover (#1480) (af48205)
- feat(protocol,gui): the windowed chat transcript — bounded snapshot, row skeleton, on-demand ranges (#1459) (91acebe)
- feat(protocol): holder identity + revision-consent contract on worktree force-delete (T13A) (#1517) (7d8ca01)
- fix(protocol): sanitize holder-error revisions and unknown failure codes (#1548) (50c0d5b)
- feat(gui-app): two-step sweep dialog with consent-checked execution (T13B) (#1518) (5e13f23)
- test: kill five CI flake classes at their races (desktop timers, Chrome launcher, cli-binary, darwin log replay) (#1552) (f022940)
- fix(gui-app): stabilize windowed transcript hydration (#1546) (95cfe2a)
- feat(gui,protocol): disclose the env credential that authenticated a turn (#1550) (1767598)
- feat(mobile): make save and export reach the phone's share sheet (#1538) (3dd4676)
- fix(mobile): sign device-flow sessions in as the mobile client kind (#1525) (5b244d3)
- feat(gui-app): add configurable notification chimes (#1551) (99ed075)
- feat(clients): detect system-clock skew and park streams instead of going terminal (#1567) (a52fa6c)
- feat(protocol,shared,gui-app): cross-host terminal-agent roster — origin-discriminated records, adopt-only remote tiles (#1570) (4fca857)
- feat(protocol): add the generic harness_message provider-notice kind (#1582) (bf66581)
- feat: session import - bring Claude Code and Codex sessions into Traycer (#1342) (e514fc1)
- fix(worktrees): link single-task sweep notifications (#1602) (a7f8b48)
- feat(browser): WebRTC display plane, DataChannel input, materialization-time tab placement (#1613) (e79301e)
- fix(gui-app): rename the Link a phone surface to Link mobile app (#1614) (1fa23d6)
- fix(mobile): give the usage export a working download and a share sheet (#1619) (3b30c07)
- feat(browser): silent always-on login persistence - encrypted jar, saved-logins management, per-session partitions (#1629) (31eb171)
- feat(browser): improve diagnostics and dormant tab recovery (#1634) (a29a2d9)
- fix(remote-hosts): allow access on every plan (#1639) (f8d8d23)
- fix(remote-host): reprobe retained sessions after plan denial (#1641) (35be15f)
- feat(protocol,shared,gui-app): epic sync overhaul — versioned lanes, replica runtime, worker relocation (#1589) (137f926)
- chore: update dependencies (#1646) (29f6c18)
- chore: update dependencies (#1647) (7f225ea)
- fix(browser): remote viewers take the viewer plane, native tiles track zoom, touch toolbar can navigate (#1649) (7a74df3)
- fix(cli): stop decoding 0xC0000409 as a V8 fatal first (#1652) (1e8f853)
- feat: on-demand provider-pack update check (providers.refreshPackDiscovery + Check for updates) (#1653) (06bf5bf)
- feat(managed-command): per-command relaunch-on-host-restart switch and configure RPC (#1656) (c674d21)
- feat(resources): truthful host memory (PSS/private), Chromium roles, demand-aware cadence (#1663) (c65bced)
- feat(cli): recover npm/nvm CLI invocation for the host (#1655) (dffef6e)
- feat(browser): universal sign-in carry-over and security hardening (H01-H12) (#1667) (4ecbaf5)
- feat(cli): report host crashes to Sentry from the supervisor, keyed by host id (#1673) (7778b07)
- feat(browser): re-found the overlay occlusion coordinator (#1672) (a278b65)
- fix(cli): bake the Sentry DSN into the npm bundle, and retire a stalled crash-report upload (#1674) (eeba5cb)
- feat(gui-app,protocol): PDF preview (viewing) across workspace and diff surfaces (#1618) (8d5899a)
- feat(canvas): unified tile opening and link routing (#1661) (dc382cc)
- feat(browser): import logins from another browser on this machine (#1677) (be2886b)
- feat(gui): announce login import with a release toast and a tour act; fix the five post-merge findings on #1677 (#1684) (be72a69)
- feat(gui-app,protocol): session import as the tour's last act, and a transcript row for the imported-chat divider (#1682) (e924e37)
- fix(gui-app): name the host update, not a retry, when the host has no browsers (#1676) (4c3ef17)
- feat(protocol,clients): batch @1.1 consent targets, failure categories, and failure reasons for worktree deletes (#1659) (0a60112)
- test: slim GUI chat monsters and desktop/CLI/shared/protocol suites (#1688) (a3e0a49)
- feat(mobile,shared): report WebView crashes to Sentry, sharing the desktop egress scrub (#1691) (fa45f00)
- test: restore Codex round-7 coverage flagged after #1688 merged (#1693) (bf8ffc7)
- fix(gui-app,shared): renderer memory — per-editor marked, an epic cap that works offline, mobile retention, and the recovery refetch storm (#1694) (b6fffdd)
- feat(browser): import logins from Aside and Helium; group the picker by browser (#1696) (011bed5)
- fix(gui-app): refresh the provider list from the picker and show Reasonix setup steps instead of a generic signed-out state (#1697) (7f46014)
- fix(gui-app): reveal sidebar targets and identify browser hosts (#1698) (5e48438)
- feat(protocol,gui): editor.openPaths 1.1 — Finder target and VSCodium (#1700) (acf04ab)
- chore: update in-range bun dependencies (#1701) (5707f72)
- fix(gui-app): explain held shell output and follow the live state on held rows (#1658) (a128e8c)
- feat(protocol,gui-app): open a provider's sign-in terminal on the surface the picker is drawn on (#1699) (9c446c5)
- fix(gui-app,protocol): offer the terminal sign-in on terminalLogin alone, not oauthArgs (#1713) (b3268fb)
- fix(shared): draw a stream's CLOSE seq from the retired counter, not 0 (#1714) (33a3e97)
- fix(browser): renderer-owned webview cutover + OAuth-popup / loader / UA fixes (#1715) (1ef475f)
- feat(auth): show the link-login match code on both sides of the approval (#1718) (ebc7de5)
- feat: browser tabs on the Start Page (OSS half) (#1678) (1a4131b)
- fix(gui-app): clear task notifications from child tabs (#1711) (55280b2)
- feat(gui): host-scoped import/migration settings, per-host runs, and a host picker in the tour (#1721) (feed76e)
- Revert "feat: browser tabs on the Start Page (OSS half) (#1678)" (#1729) (b011b7c)
- feat(gui): session import - one Deleted Folders group, per-row folders, and a host picker in the dialog (#1732) (a87f530)
Traycer CLI 1.3.0-rc.1.