What's Changed
- chore(desktop): bump version to 1.20.2 by @Kitenite in #6322
- fix(deps): sync bun.lock with the nanoid 6.0.0 bump from #6104 by @AviPeltz in #6324
- fix(desktop): ship chat-runtime migrations + Claude SDK binary path to host-service by @saddlepaddle in #6217
- feat(email): unified email layout system + activation email sequence by @saddlepaddle in #5938
- feat(docs): widen sidebar text halo with smooth fade-out by @Kitenite in #6332
- fix(api): resolve owner's relay when dispatching automations by @saddlepaddle in #6337
- feat(marketing): Linear-style hero demo remapped to value-prop pillars by @Kitenite in #6336
- feat(marketing): redesign join-us page with mission-first copy and WaaS embed by @Kitenite in #6338
- refactor(host-service,desktop): consolidate terminal session listing into terminal.list by @saddlepaddle in #6341
- fix(relay): resolve the flagged relay in every consumer by @saddlepaddle in #6340
- fix(host-service): stop hot-looping git spawns on workspaces whose worktree dir is gone by @Kitenite in #6334
- feat(api,desktop,trpc): client version header + per-procedure telemetry by @saddlepaddle in #6331
- fix(desktop): stop workspace delete from crash-remounting the renderer via stale v1 routes by @Kitenite in #6353
- refactor(desktop): loop-proof route redirects and contain content crashes by @Kitenite in #6354
- fix(marketing): align join-us hero width and theme the WaaS embed by @Kitenite in #6357
- fix(api,auth): surface cancellation reason and customer email in billing Slack alerts by @Kitenite in #6358
- feat(marketing): pricing page and copy improvements by @Kitenite in #6355
- fix(host-service): stop gh open-PR sweep dying on >1MB payloads and hot-looping on failure by @Kitenite in #6335
- fix(relay2): liveness sweep for hosts that vanish without a close event by @saddlepaddle in #6362
- fix(marketing): clip feature demos on mobile, in-flow hiring pill, align hero caret by @Kitenite in #6365
- feat(ui): add @mention and /command suggestions to ChatComposer by @saddlepaddle in #6225
- fix(desktop): stop workspaces list from swapping to the new-workspace screen by @saddlepaddle in #6361
- feat(relay2): serve host presence from the Durable Object, drop DB presence writes by @saddlepaddle in #6371
- fix(api): sync-presence may only flip hosts online, never offline by @saddlepaddle in #6368
- feat(desktop,mobile): read host presence live from the relay by @saddlepaddle in #6372
- feat(desktop): drag-and-drop pinning in the v2 sidebar by @Kitenite in #6364
- perf(desktop): cut sidebar hover and polling render fan-out by @Kitenite in #6377
- feat(desktop,mobile,trpc): replace Electric sync with plain tRPC + React Query by @saddlepaddle in #6328
- fix(host-service): classify worktree-gone terminal failures as NOT_FOUND by @saddlepaddle in #6387
- fix(desktop): classify ENOENT spawn failures as PRECONDITION_FAILED, not 500 by @saddlepaddle in #6388
- fix(host-service): classify expected GitHub auth and 404 outcomes as non-500s by @saddlepaddle in #6389
- fix(host-service): guard upgrade sockets in the desktop entrypoint against peer resets by @saddlepaddle in #6390
- docs: weekly update for PRs merged 2026-08-05 to 2026-08-12 by @Kitenite in #6391
- fix(desktop): keep the PR badge (merge chevron) from clipping in the right sidebar's mid-width dead zone by @andyst-dev in #6386
- feat(relay2): typed close codes and Sentry exception capture by @saddlepaddle in #6394
- feat(mobile,auth): add Sign in with Apple by @saddlepaddle in #6392
- chore: drop dead EXPO_PUBLIC_ELECTRIC_URL from env examples by @saddlepaddle in #6393
- chore(relay): drop Sentry from the deprecated v1 relay by @saddlepaddle in #6396
- docs(readme): animated feature demos, targeted screenshots, and a CLI cell by @Kitenite in #6378
- fix(host-service,shared): stop preset launches stalling 15s and silently losing typed commands across shell setups by @Kitenite in #6367
- perf(host-service,workspace-fs): exclude gitignored build dirs from sidebar file tracking by @Kitenite in #6379
- fix(desktop): retry terminal attach after transient server errors by @Kitenite in #6399
- fix(desktop,host-service): retry terminal create-on-attach after pty-daemon stall instead of dead tab by @Kitenite in #6333
- fix(desktop): click branch name to rename without layout shift by @saddlepaddle in #6400
- fix(desktop): cap xterm WebGL glyph-atlas GPU memory growth by @Kitenite in #6352
- fix(desktop): allow empty new-workspace submits and route branch rename to the owning host by @saddlepaddle in #6401
- fix(workspace-fs): coalesce FSEvents overflow into backed-off per-root rescans by @Kitenite in #6351
- fix(desktop): make "All tasks" and "All projects" reset tasks-page filter dropdowns by @Kitenite in #6403
- docs(readme): animated hero film of agents working in parallel by @Kitenite in #6397
- fix(desktop): stop dock-badge cache subscriber from setState during other components' renders by @Kitenite in #6405
- fix(desktop): ignore Claude subagent hook events in notify hook by @Kitenite in #6404
- feat(desktop): make Pinned and Sessions sidebar sections collapsible like Projects by @Kitenite in #6407
- feat(mobile,trpc,auth,db): grace-period account deletion with reactivation by @saddlepaddle in #6395
- feat(desktop): edit markdown directly in the rendered preview with format-preserving saves by @Kitenite in #6406
- feat(desktop): show 'being reworked' placeholder in chat panes by @Kitenite in #6409
- chore(mobile,marketing): app store submission metadata and privacy policy by @saddlepaddle in #6408
- feat(mobile,trpc,auth): gate mobile behind a paid plan by @saddlepaddle in #6411
- chore(mobile): dynamic store config for demo credentials and version by @saddlepaddle in #6412
- revert(mobile,trpc,auth): back out the pro-plan gate pending testing by @saddlepaddle in #6413
- feat(mobile): terminal-first — delete chat stacks, terminals as sessions, agent launch from home by @saddlepaddle in #6366
- perf(marketing): cut critical-path payload to raise Lighthouse performance score by @Kitenite in #6416
- fix(cli): make desktop-bundled CLI refuse self-update and explain missing superset-host by @Kitenite in #6245
- feat(cli): manage desktop app settings and theme from the CLI (superset settings) by @Kitenite in #6402
- feat(marketing): reposition hero around parallel-agents value prop and remove em dashes by @Kitenite in #6420
- feat(marketing): cash the 100+ claim in features copy and hero mockup by @Kitenite in #6421
- fix(marketing,docs): align stale tagline copy with parallel-agents positioning by @Kitenite in #6422
- docs(readme): align README positioning with parallel-agents tagline by @Kitenite in #6423
- fix(cli,host-service): surface host cloud-registration failures instead of silent "Not found" by @Kitenite in #6417
- feat(desktop,cli): live-reload settings and themes when the CLI changes them by @Kitenite in #6418
Full Changelog: desktop-v1.20.2...desktop-v1.21.0