What's Changed
- refactor(android): every header goes through AppBar, so the filter stays put by @juliusmarminge in #26741
- refactor(mobile): one inspector column, declared with by @juliusmarminge in #27085
- refactor(mobile): a pane's bar draws its own sidebar toggle by @juliusmarminge in #27086
- refactor(mobile): Android's sidebar is the Home route in the sidebar column by @juliusmarminge in #27087
- feat(mobile): medium windows float the sidebar over the page by @juliusmarminge in #27088
- feat(mobile): without an inspector column, the inspector is a sheet by @juliusmarminge in #27090
- docs(mobile): the five layers of the mobile layout, with x-ray diagrams by @juliusmarminge in #27107
- refactor(mobile): the inspector's bar is its pane's AppBar by @juliusmarminge in #27205
- fix(mobile): the iPad inspector hides the sidebar where the page would get too narrow by @juliusmarminge in #27218
- fix(mobile): iPad workspace tabs live in the sidebar and leave with it by @juliusmarminge in #27229
- fix(mobile): the drawer surface is only for a sidebar beside a page by @juliusmarminge in #27289
- feat(server): list Claude models reported by Claude Code by @juliusmarminge in #30511
- fix(relay): production deploys no longer hang while computing the plan by @juliusmarminge in #30513
- fix(web): give dialog titles a readable line height by @Yash-Singh1 in #30527
- fix(tools): show images from MCP and OpenCode outputs by @Yash-Singh1 in #30389
- fix(mobile): smoother Settings and composer transitions on wide Android by @juliusmarminge in #26297
- fix(mobile): the Android split slides as one strip, so sidebar and detail pane always fill the width by @juliusmarminge in #26328
- fix(server): retry unstarted runs after recovery by @Yash-Singh1 in #30560
- perf(server): narrow agent awareness startup reads by @Yash-Singh1 in #30561
- fix(web): validate terminal links against filesystem metadata by @Yash-Singh1 in #30526
- fix(server): avoid message ordering scans during recovery and settlement by @Yash-Singh1 in #30582
- fix(client-runtime): expire missing file metadata per thread by @Yash-Singh1 in #30606
- fix(web): align usage table padding and thread status rows by @Yash-Singh1 in #30621
- fix(mobile): every Android content pane gets its rounded card from ScreenContent by @juliusmarminge in #30500
- fix(web): load selected diff metadata before file patches by @Yash-Singh1 in #30567
- test(evals): measure how agents get secrets only the user has by @gabrielelpidio in #30256
- feat(server): agents ask for secrets through request_secret instead of chat by @gabrielelpidio in #30257
- fix(relay): use released drizzle rc.5 and fail installs on unmet peers by @juliusmarminge in #31016
- build: typecheck with tsrs and Effect's rules through @effect/tsgo by @juliusmarminge in #31028
- refactor: replace jose with effect/jose by @juliusmarminge in #30474
- refactor: move HMAC, key, and random work to effect/crypto by @juliusmarminge in #30501
- refactor(server): sign server tokens through PayloadSigner by @juliusmarminge in #30523
- refactor: hold relay signing keys in EnvironmentSigningKey and CloudMintSigner by @juliusmarminge in #30529
- refactor(client-runtime): share DPoP proof creation across web and mobile by @juliusmarminge in #30540
- fix(client-runtime): a thread keeps syncing after a stream defect by @juliusmarminge in #31071
- test(server): AgentSessionScanner blocked-repo test no longer races the git-read timeout by @juliusmarminge in #30554
- test(web): PDF preview tests wait on pdf.js loads and stop timing out by @juliusmarminge in #31104
- docs: scope managed-policy LAN note to old background services by @b2bvic in #30900
- feat(server): render MCP Apps from Claude tool calls by @juliusmarminge in #29803
- build: run Effect rules on mobile and lock in clean suggestion rules by @juliusmarminge in #31111
- fix(mobile): keep iOS composer empty after sending an autocorrected word by @shivamhwp in #30308
- fix(server): idle agent tabs free a slot when the server's 32-tab browser limit is full by @shivamhwp in #24186
- fix(web): keep message navigation visible on touch when there is room by @shivamhwp in #26806
- fix(mobile): pinch wide images from anywhere in the Android viewer by @shivamhwp in #30929
- fix(mobile): preserve autocorrect in custom question answers by @shivamhwp in #30744
- fix(web): show Setting up during worktree setup by @shivamhwp in #28832
- fix(mobile): keep iOS thread menus short enough for drag selection by @shivamhwp in #30944
- fix(web): show the comparison base beside Changes totals by @shivamhwp in #30085
- fix(mobile): use H.264 for iOS previews and keep Close reachable by @shivamhwp in #28622
- fix(mobile): iOS image previews open without waiting for the gallery by @shivamhwp in #29044
- feat: optionally clone repos into ghq-style // folders by @shivamhwp in #24904
- fix(devices): explain Windows SSH host failures by @shivamhwp in #30941
- fix(web): make styled composer Markdown markers editable by @shivamhwp in #30421
- fix(mobile): configure another Claude account from Providers by @shivamhwp in #28928
- fix(web,mobile): save pull request description checkbox changes by @shivamhwp in #30704
- fix(client): a big server config on a slow link no longer drops the connection in a loop by @shivamhwp in #23758
- fix(server): restart T3 Connect's tunnel client when Cloudflare drops it by @shivamhwp in #24946
- fix(mobile): compact stale Claude threads before sending by @shivamhwp in #27935
- fix(web): show saved service access with Local environment off by @shivamhwp in #26464
- fix: keep older pending questions answerable by @shivamhwp in #26435
- fix(web): deleted forks no longer remain in Lineage by @shivamhwp in #29000
- fix(server): preserve sibling wakeups when interrupting a completion wake by @shivamhwp in #28204
- fix(server): attribute usage-limit auto-resume to T3 Code by @shivamhwp in #29838
- fix(acp): time out silent Antigravity prompts by @shivamhwp in #30377
- fix(codex): sharing usage limits offer the existing recovery options by @shivamhwp in #25341
- revert(web): working threads stay in the Working shelf when their environment disconnects by @juliusmarminge in #31269
- refactor: Effect code reads env through HostProcess.Environment by @juliusmarminge in #31218
- refactor: Effect.try calls map failures to typed errors by @juliusmarminge in #31217
- fix(web): sidebar project filter rows line up and stay still on hover by @shivamhwp in #29639
- refactor: errors are Schema.TaggedError, not Data.TaggedError or native Error by @juliusmarminge in #31216
- fix(server): a stopped run no longer shrinks thread history to one row by @shivamhwp in #31266
- fix(server): refresh divergence after a merged branch ref changes by @Yash-Singh1 in #31342
- fix(mobile): one aligned notice for ChatGPT sharing limits by @shivamhwp in #31277
- fix(mobile): composer keeps the keyboard when a queued edit ends by @shivamhwp in #31317
- fix(mobile): delivered messages no longer reappear at the bottom of reopened long threads by @saphid in #31182
- fix(threads): side chats inherit parent permissions by default by @extoci in #31114
- fix(server): threads follow their worktree's branch changes by @Yash-Singh1 in #31599
- fix(pi): usage reports include sessions stored in a --session-dir launch argument by @saphid in #30690
- perf(mobile): skip unchanged terminal toolbar fade updates by @saphid in #25312
- perf(mobile): assemble HTML replacements in one pass by @saphid in #25278
- perf(mobile): skip canceled SVG parsing by @saphid in #25314
- test(server): strengthen v1 cutover proof with event-stream waits and content snapshots by @saphid in #11869
- fix(contracts): a stored secret reference is always sensitive by @yordis in #31403
- fix(server): a settings save no longer reads an unreadable secret again by @yordis in #31226
- fix(threads): allow snoozing pending input requests by @saphid in #20058
- fix(server): repair cutover test crypto import breaking main CI by @Yash-Singh1 in #31630
- feat(server): sends can start a fresh provider session by @juliusmarminge in #30323
- feat: /clear starts a fresh session in the same thread by @juliusmarminge in #30325
- feat: scheduled tasks can run in one thread with a fresh session each run by @juliusmarminge in #30326
- fix(web): dragging a sidebar thread no longer scrolls the list out from under the pointer by @juliusmarminge in #30346
- fix(assets): preserve the PR repository for GitHub media by @juliusmarminge in #21631
- fix(server): load PR uploads from SSO organizations by @juliusmarminge in #21632
- fix(mobile): the Duo inspector stops at its widest instead of vanishing by @juliusmarminge in #31665
- test(server): launcher PATH lookup test no longer drops the Windows drive letter by @tris203 in #22534
- test(server): replay tests delete their temp directories by @only21mil in #23445
- fix(mobile): transcribe Android audio during recording by @PixPMusic in #31300
- test(web): linked-environment subagents keep opening in their own thread by @RealDoc06 in #26492
- test(server): pin post-commit outbox settle boundary by @Narayan201120 in #27560
- test: remove unreachable github cli decoding test by @t3-code-bot[bot] in #28115
- test(server): retain delegated child events when detaching a parent by @benjamin-di in #29622
- test(lint): pin which ResizeObserver constructions no-raw-resize-observer reports by @only21mil in #28781
- test(mobile): drop two deleted tests from the React test list by @only21mil in #28800
- test(web): worked-for expand test waits for the timeline to finish loading by @saphid in #29661
- test(web): avoid PDF worker startup timeouts in attachment tests by @voltcrash in #29933
- test(web): source control writing settings test waits for the reset button by @juliusmarminge in #30372
- test(web): keep the work heading test inside the viewport by @voltcrash in #30613
- test: use an empty config file instead of the null device for git fixtures on Windows by @Pyseph in #30772
- test: remove stale tests for unused thread and onboarding helpers by @t3-code-bot[bot] in #30817
- test(server): correct Windows path and settings assertions by @ElliotDrel in #30983
- feat(claude): Ultracode works with any effort, like Claude Desktop by @Bil0000 in #27034
- perf(pr): pull requests paint from data already held, on web, desktop and mobile by @Bil0000 in #27798
- fix(mobile): approval card buttons line up by @shivamhwp in #31415
- fix(gitlab): author names link to GitLab profiles by @TonybynMp4 in #30418
- fix(gitlab): merge messages drop agent credits by @TonybynMp4 in #30441
- fix(gitlab): file and image comments appear as review threads by @TonybynMp4 in #30425
- fix(web): screen readers no longer read out a secret typed into the request card by @juliusmarminge in #31653
- perf(pr): actions update every client from the host's reply instead of re-reads by @Bil0000 in #25761
- feat(mobile): start side chats with /side by @juliusmarminge in #31709
- feat(claude): expose Ultracode on Claude Sonnet 5.5 and Haiku 5.5 by @DrSeedon in #30781
- feat(settings): Simlock, Antigravity and OpenCode credentials can come from a secret provider by @juliusmarminge in #31652
- refactor(mobile): screens declare what they are; layout and AppBar own every platform bar decision by @juliusmarminge in #31310
- fix(server): a saved source control token that can't be read no longer falls back to another account by @juliusmarminge in #31646
- feat(secrets): answer a secret request with a secret provider reference by @juliusmarminge in #31670
- fix(settings): removing a secret provider clears the fields that used it by @juliusmarminge in #31651
- docs(user): explain secret providers and secret requests by @juliusmarminge in #31654
- feat(server): transcribe audio on a chosen environment by @juliusmarminge in #30625
- feat(web): opt into environment dictation on this device by @juliusmarminge in #30623
- feat(desktop): dictate into browser annotations with the same consent by @juliusmarminge in #30624
- feat(mobile): opt in to dictation on a paired environment by @juliusmarminge in #31059
- fix(web): keep the folder path caret in place while editing by @juliusmarminge in #31642
- perf(mobile): call the highlights lexer through Nitro, up to 10x faster calls on Android by @camchis in #31188
- fix(claude): turns use the downloaded model catalog by @juliusmarminge in #31717
- fix(gitlab): bot authors are flagged as bots by @TonybynMp4 in #30383
- fix(gitlab): merge requests can edit their labels by @TonybynMp4 in #30483
- perf(mobile): faster thread sync, connects, and reconnects on bad wifi by @Bil0000 in #28487
- fix(mobile): iPad composer drops when the keyboard floats or minimizes by @juliusmarminge in #31251
- perf(mobile): stop iOS syntax highlighting from looking up a thread-local on every lexer call by @camchis in #31187
- fix(gitlab): edited comments wake PR watchers by @TonybynMp4 in #30403
- fix(gitlab): merge requests can delete their source branch by @TonybynMp4 in #30453
- fix(gitlab): comments link to their note on GitLab by @TonybynMp4 in #30411
- fix(mobile): iOS terminal accepts Chinese, Japanese and Korean input by @juliusmarminge in #30546
- fix(mobile): Android app no longer stays offline after reopening by @kahlstrm in #28625
- fix(mobile): show one Android notification per thread completion by @shivamhwp in #27699
- fix(mobile): stop Android composer flicker at the wrap boundary by @shivamhwp in #27682
- fix(mobile): Android dictation works with regional preferences set by @EhsanulHaqueSiam in #31030
- fix(mobile): iOS compose button no longer grows while a tab is pressed by @Jerematix in #28955
- fix(mobile): Android terminal Backspace deletes on the first press by @only21mil in #24983
- fix(mobile): Android secret requests no longer offer password manager logins by @voida6 in #29825
- fix(mobile): iOS composer text no longer turns invisible mid-draft by @wojas in #30135
- fix(mobile): iOS 26 scroll edge effect no longer hides composer text by @wojas in #30138
- fix(mobile): typing after in-app dictation reaches the draft again on iOS by @wojas in #30139
- perf(mobile): skip obsolete queued iOS diff row decodes by @saphid in #25287
- fix(gitlab): the checks and review list filters work by @TonybynMp4 in #30433
- fix(mobile): keep Android tablet cold launches in landscape by @Dwite in #28825
- fix(pr): GitCafe attachments render in pull request bodies by @juliusmarminge in #31741
- fix(gitlab): unresolved overview threads count as review findings by @TonybynMp4 in #30397
- fix(mobile): Android alerts and the live card show the same status bar icon by @juliusmarminge in #29738
- fix(mobile): keyboard state follows Android's nonanimated IME show by @juliusmarminge in #25847
- fix(mobile): Android composer no longer accepts autofill by @juliusmarminge in #27489
- perf(mobile): skip obsolete queued full token decodes by @saphid in #25320
- fix(gitlab): threads on changed code show as outdated by @TonybynMp4 in #30423
- fix(gitlab): the checks panel lists each pipeline job by @TonybynMp4 in #28728
- perf(mobile): avoid code row scans while dragging file paths by @saphid in #25484
- fix(chat): show one usage-limit recovery notice by @shivamhwp in #29292
- fix(web): adding to the composer no longer drops earlier findings and selections by @TonybynMp4 in #24990
- feat(pull-requests): PR composers complete @user mentions by @TonybynMp4 in #30747
- feat(web): add pull request comments to the chat by @TonybynMp4 in #30579
- feat(gitlab): link issue, merge request, commit and user references by @TonybynMp4 in #30524
- fix(mobile): sending on iOS no longer leaves an autocorrected draft behind by @saphid in #26452
- feat(gitlab): reviews can request changes by @TonybynMp4 in #30549
- feat(pull-requests): PR composers complete #123 and GitLab !123 references by @TonybynMp4 in #30857
- feat(gitlab): merge requests from forks can toggle maintainer edits by @TonybynMp4 in #30518
- fix(prs): reviewer menu searches past the first page and keeps GitLab's requested reviewers by @TonybynMp4 in #22489
- fix(ui): snooze menu times match the menu's typography by @ishaanko in #30596
- feat(web): a Labs setting hides tool calls so threads read like a chat by @flamboh in #30000
- feat(scheduled-tasks): tasks link to their thread by @t3dotgg in #31764
- fix(shared): recognize numeric bare-repository config by @macodev00 in #27500
- fix(server): a command id reused for two threads at once no longer succeeds for both by @saphid in #18385
- fix(server): coalesce tool output before it fills the live buffer by @snarkyalyx in #16317
- perf(server): Windows git reads no longer start a console host by @AkiVonAkira in #19288
- fix(server): a publish whose first push fails still shows the new remote by @saphid in #29688
- fix(server): reverting files removes what a new .gitignore from the turn was hiding by @saphid in #29795
- fix(server): Codex titles no longer fail on ChatGPT accounts without gpt-6-luna by @Muzammil-Bit in #30078
- fix(desktop): quit no longer orphans a backend that is slow to stop by @saphid in #22572
- perf(server): GitHub activity reads skip PR-wide fields on later review-thread pages (8.9 s → 6.8 s median) by @Yuruzuu in #30294
- perf(server): the headless browser closes after five idle minutes (517 MiB → 1.6 MiB median) by @Yuruzuu in #30306
- fix(provider-acp-registry): surface agent error message on sign-in failure by @iScabrous in #30295
- perf(server): a slow host no longer delays other watched PRs' wakes (935 ms → 65 ms median) by @Yuruzuu in #30291
- perf(server): PR cache invalidation no longer waits on other projects' reads (1,163 ms → 0.12 ms median) by @Yuruzuu in #30293
- fix(opencode): tools stopped mid-run show as interrupted, not failed by @saphid in #29762
- fix(client-runtime): pull request bodies with CRLF line endings keep their code blocks whole by @MarcoDotIO in #30352
- fix(shared): long assistant quote chips no longer end in a broken character by @spoukyii in #30367
- fix(cli): t3 connect unlink no longer warns about a server that is gone by @MarcoDotIO in #30324
- fix(server): ACP agents get T3CODE_THREAD_ID like Claude and Codex sessions by @frankhommers in #30361
- fix(server): accept a case-insensitive DPoP authorization scheme by @spoukyii in #30337
- fix(server): usage-limit auto-resume no longer arms subagents of archived or deleted parents by @spoukyii in #30363
- fix(provider-core): background work notices no longer end in a broken character by @spoukyii in #30369
- fix(client-runtime): subagent previews no longer end in a broken character by @spoukyii in #30391
- fix(server): explain fake-IP DNS failures in HTML previews by @shivamhwp in #30318
- perf(resource-monitor): Linux terminal process checks use a third of the CPU by @jaikhuranna in #30381
- fix(server): failed Claude text generation shows Claude's error instead of raw JSON by @MarcoDotIO in #30331
- fix(server): pull request tools point a bare thread uuid at its mcp: thread by @spoukyii in #30375
- fix(server): message search keeps results when a short non-Latin word differs in case by @MarcoDotIO in #30332
- fix(web): preview annotation chip labels no longer end in a broken character by @spoukyii in #30345
- fix(server): thread titles no longer fail when the text generation provider can't run by @medric-z in #29607
- fix(web): refresh resource timeline while diagnostics is open by @shawk08033 in #30528
- fix(usage): a CLIProxy hub saved as its management.html panel URL shows accounts again by @Jolymmiles in #25579
- fix(shared): command output keeps text after an unterminated OSC by @spoukyii in #30479
- fix(cli): t3 up's retry and restart hints keep --base-dir by @spoukyii in #30480
- fix(server): a branch tracking another local branch no longer shows that branch's PR by @MarcoDotIO in #30563
- fix(web): terminal links keep route and pnpm paths in one piece by @tiliakoos in #30603
- fix(shared): CSV and TSV attachments keep their table under generic file types by @tiliakoos in #30601
- fix(server): report Claude settings compaction threshold by @voltcrash in #29220
- fix(cli): t3 project remove finds a deleted project by a relative or trailing-slash path by @MarcoDotIO in #30562
- fix(server): an invalid regex in project search still finds its text when Match case is off by @MarcoDotIO in #30569
- fix(server): agents see why a project update was refused instead of a generic failure by @MarcoDotIO in #30564
- perf(client-runtime): stop tracing streamed thread batches by @ElliotDrel in #30679
- fix(server): rewound Codex threads import their history from before the rewind by @MarcoDotIO in #30652
- fix(server): keep writes moving with a larger WAL limit by @Yash-Singh1 in #31804
- fix(opencode): edits that delete text keep their empty replacement by @Jo2234 in #30643
- fix(forgejo): read author assignees once by @Jo2234 in #30686
- fix(cli): t3 pair's no-running-server hint keeps --base-dir by @saphid in #30689
- perf(server): stop tracing routine port polling helpers by @ElliotDrel in #30678
- fix(server): ACP MCP bridge no longer splits messages on U+2028/U+2029 by @geezoria in #30719
- fix(cli): expand home-relative thread project paths by @Jo2234 in #30721
- perf(ci): boot the built web client in Build and Typecheck, not Test Web (about 22 s off the longest job) by @Pyseph in #30752
- fix(shared): ignore unfinished quoted Git config continuations by @imharjot in #30743
- fix(review-guide): preserve excerpt line terminators by @Jo2234 in #30717
- feat(pi): show extension status in existing controls by @StiensWout in #23901
- fix(fx): preserve literal unicode escape text in clipped replies by @Jo2234 in #30701
- perf(dev): knip:check runs its two passes side by side (34 s → 26 s median on 4 CPUs) by @Pyseph in #30737
- fix(shared): command output no longer prints the final byte of escape sequences with intermediates by @geezoria in #30724
- fix(web): restore folder breadcrumb trails when reopening tabs by @Jo2234 in #30706
- fix(client-runtime): sanitized error stacks keep line and column for URLs with a query by @geezoria in #30726
- fix(shared): shortened agent paths like /tmp/... no longer become broken file chips by @saphid in #30762
- fix(server): MCP auth spans no longer include the tool call by @navidnadali in #30834
- fix(server): preview browser picks up Chrome 157 security fixes by @snnbotchway in #30820
- fix(server): agents read RTF paragraphs that end with a backslash by @geezoria in #30848
- fix(server): a late checkpoint keeps the stopped run's baselines by @navidnadali in #30830
- fix(shared): preserve IPv6 hosts when switching clone protocols by @Lucenx9 in #30798
- docs: explain Linux desktop installation by @voltcrash in #30819
- perf(server): each live event is projected once for all subscribers by @navidnadali in #30860
- fix(server): request_secret asks for one value per card by @rgrvlsk in #30805
- fix(ssh): host discovery skips hidden Include matches by @Lucenx9 in #30910
- docs: clarify diagnostic exports and their separate controls by @Mr-Neutr0n in #30942
- docs: fix worktree cleanup path in FAQ by @jacobcorbett in #31000
- fix(server): a policy that manages observability endpoints is refused instead of ignored by @MarcoDotIO in #30973
- fix(client-runtime): untitled subagent titles no longer end in a broken character by @spoukyii in #30390
- fix(shared): underline styles and colours no longer scramble command output colours by @MarcoDotIO in #21542
- perf(server): batch queued provider writes without waiting by @Yash-Singh1 in #31656
- fix(server): prepare restart continuations faster on shutdown by @Yash-Singh1 in #31807
- fix(web): keep change totals aligned beside the label by @Yash-Singh1 in #31814
- fix(web): rank usage provider summaries by the selected metric by @dharmeshgurnani in #15632
- fix(server): wait for automatic follow-ups before settling threads by @Yash-Singh1 in #31815
- fix(web): settings descriptions use the full row and stay two lines by @flamboh in #31826
- fix(voice): insert Unicode word boundaries for dictation by @juliusmarminge in #31799
- fix(mobile): use preferred languages for on-device iPhone dictation by @juliusmarminge in #31800
- fix(mobile): keep the opening words of local iPhone dictation by @juliusmarminge in #31801
- fix(server): keep PR generation focused on the change by @Yash-Singh1 in #31819
- chore(desktop): trace shutdown phases by @Yash-Singh1 in #31850
- perf(server): batch shutdown recovery commits by @Yash-Singh1 in #31854
- perf(server): batch projection recovery reads into one query by @Yash-Singh1 in #31842
- fix(desktop): let the window shrink to 400x360 so it fits half-screen tiles by @shivamhwp in #28223
- fix(web): improve Changes row text and spacing by @shivamhwp in #31858
- feat(server): stop opted-in project actions when threads settle by @Yash-Singh1 in #31857
- fix(build): skip Koffi source builds during cross-packaging by @Yash-Singh1 in #31864
- fix(server): Antigravity installs on Intel Macs by @aledog007 in #30189
- fix(desktop): arm64 macOS builds no longer ship x64-only objc-js binary by @joshuarossi in #31285
- fix(web): keep task updates static in the timeline by @Yash-Singh1 in #31888
- fix(devices): keep devices listed when simulator discovery fails by @shivamhwp in #25971
- fix(web): dragging a sidebar thread no longer scrolls the list to the bottom by @juliusmarminge in #27691
- fix(web): tagging a thread by drag no longer scrolls the sidebar by @t3dotgg in #31924
- ci: stacked PRs stop evicting the shared pnpm cache by @t3dotgg in #31937
- fix(web): remote subagents no longer split from the lineage list by @t3dotgg in #29285
- perf(ci): release uploads stop recompressing installers and CLI archives by @t3dotgg in #31942
- feat(antigravity): identify as T3 Code to agy acp 1.5.1+ by @patrick-toulme in #31158
- ci(release): JS bundle jobs stop building an unused Linux helper by @t3dotgg in #31941
- feat(marketing): help search engines tell t3.codes apart from copycat sites by @t3dotgg in #31142
- perf(server): background service launcher uses 75% less memory by @t3dotgg in #29284
- fix(azure-devops): a fork's same-named branch no longer hides the branch's own pull request by @saphid in #29817
- perf(server): provider-thread reads start from owned rows, not every node of the thread by @juliusmarminge in #31012
- perf(server): stop tracing the per-event background-work probe by @juliusmarminge in #31584
- perf(server): stop tracing each transcript file in usage scans by @juliusmarminge in #31586
- perf(cursor): stop tracing the per-event account usage hash by @juliusmarminge in #31017
- fix(muse): recover from unavailable session views by @Sidreyas in #32154
- feat(web): sort and filter transcription models by @voltcrash in #32045
- fix(azure-devops): existing pull requests are found for branches containing # by @aotradovec in #31928
- perf(server): background PR discovery no longer delays git status after a restart by @juliusmarminge in #32162
- fix(web): the citation comment box opens at the quote instead of sliding in from the corner by @juliusmarminge in #32141
- fix(clients): dictating a citation comment or preview annotation uses the full width by @juliusmarminge in #32142
- fix(web): PR bodies keep before/after video tables intact by @bartlomiejbloniarz in #25988
- perf(release): fetch the nightly Android APK in a background step by @t3dotgg in #31949
- perf(release): macOS CLI notarization no longer blocks the desktop build by @t3dotgg in #31945
- ci(release): npm publish no longer checks out and installs the workspace by @t3dotgg in #31936
- ci(release): macOS arm64 stops compressing a pnpm store it cannot save by @t3dotgg in #31955
- fix(web): relay-connected microphone destinations authorize speech requests by @juliusmarminge in #31778
- fix(server): a usage-limit auto-resume survives a server restart by @shivamhwp in #31292
- fix(mobile): review diff no longer goes blank after switching sections by @juliusmarminge in #27960
- fix(mobile): iOS filter menus close back into their pill without clipping or garbling by @juliusmarminge in #31168
- fix(mobile): Android composer renders DM Sans by @juliusmarminge in #30230
- fix(desktop): open Teams web in the preview browser by @shivamhwp in #31489
- fix(web): popovers over the desktop header respond to the pointer by @shivamhwp in #31794
- fix(web): add installable icons for Firefox on Android by @shivamhwp in #30420
- fix: show latest reply age in active thread rows by @shivamhwp in #31825
- fix(mobile): keep settled status pills readable by @shivamhwp in #31635
- fix(mobile): preserve line breaks in Markdown table cells by @shivamhwp in #29355
- fix(mobile): stop the work-row shimmer from updating every frame by @shivamhwp in #28530
- fix(server): t3 service install no longer moves a --base-dir service onto an empty ~/.t3 by @shivamhwp in #23878
- feat(voice): opt into cloud dictation with OpenAI, Grok, or OpenRouter by @juliusmarminge in #31769
- fix(web): make first-run dictation setup discoverable by @juliusmarminge in #32197
- fix(web): first-run voice setup offers a model for the user's language by @juliusmarminge in #32035
- feat: auto-settle inactive threads after 7 days by default by @t3dotgg in #32325
- docs(updates): say when Update all leaves a provider out by @Djordje-Stojanovic in #32269
- test(server): three more tests stop assuming a POSIX host by @MikaMcFlurry in #32263
- fix(server): git failures are read in English when macOS git follows the system language by @jason5545 in #32252
- fix(marketing): balance fork and download heading text by @extoci in #32194
- perf(shared): scan usage-limit support once per provider catalog by @luke2x in #32179
- fix(pi): the T3 MCP extension file is written atomically by @rishabhx29 in #32231
- fix(web): the main sidebar stays collapsed after relaunch by @shivamhwp in #24202
- fix(codex): explain speed limits on managed connections by @shivamhwp in #30322
- fix(web): isolate scrollbar styles from iframe owners by @Yash-Singh1 in #32398
- fix(azure-devops): default-branch lookup no longer fails for missing --repository by @voltcrash in #29586
- perf(server): avoid lsof polling when Linux proc is usable by @voltcrash in #30011
- fix(providers): remove incomplete ChatGPT connections by @voltcrash in #29280
- fix(acp): retain streamed child tool output by @StiensWout in #32411
- fix(web): recover ACP settings when projects change by @StiensWout in #32409
- fix(shared): inline code like
allocator.cc:217becomes a file chip by @felixlaga in #32403 - fix(server): theme files saved with a UTF-8 BOM are published instead of rejected by @felixlaga in #32405
- fix(grok): long command titles no longer end in a broken character by @felixlaga in #32408
- fix(github): keep review-required until required reviewers approve by @wSedlacek in #32395
- feat(web): delete archived threads from the archive page by @voltcrash in #22160
- fix(provider-acp): preserve UTF-8 across interleaved terminal streams by @StiensWout in #32391
- fix(pi): preserve explicit thinking when switching models by @StiensWout in #32389
- fix(acp): bound unread raw notification retention by @StiensWout in #19585
- fix(web): keep Pi thinking controls visible before selection by @voltcrash in #27397
- fix(desktop): published themes reach the app when it uses this machine's service by @not-compromised in #26324
- fix(antigravity): check account access after installation by @Yash-Singh1 in #32446
- fix(acp): preserve native form questions and typed answers by @StiensWout in #19659
- fix(antigravity): explain missing SOCKS dependency during refresh by @StiensWout in #19660
- fix(cursor): use the SDK account for usage data by @Yash-Singh1 in #32448
- fix(web): agent sign-in defaults to Auto access by @flamboh in #32186
- fix(gitlab):
glab mr acceptcounts as a shell merge by @felixlaga in #32400 - fix(forgejo): tea's
pullandmaliases count as shell merges by @felixlaga in #32401 - fix: side chats start with the parent's permission mode and reasoning level by @Iweisc in #32315
- fix(mobile): center the Choose project empty-state buttons by @juliusmarminge in #27450
- fix(mobile): Android terminal sends hardware-keyboard arrows, Tab, and Escape to the PTY by @only21mil in #32666
- fix(mobile): group settled PR threads in the continue menu by @arifali123 in #27941
- fix(mobile): shorten the model picker save action by @PixPMusic in #32551
- fix(mobile): center Android header confirmation buttons by @PixPMusic in #32239
- fix(muse): a declined /compact reports its reason and no longer wedges the thread by @juliusmarminge in #28454
- fix(web): restore bold weight in rendered Markdown by @juliusmarminge in #25694
- fix(web): device tool update buttons fit their popovers by @juliusmarminge in #27030
- fix(web): mobile sidebar keeps its width when shelves expand by @juliusmarminge in #27541
- fix(web): lineage phase headers truncate instead of overflowing the details card by @juliusmarminge in #27582
- fix(server): storage report lists project worktrees nested inside plain folders by @juliusmarminge in #25883
- fix(scripts): report:renders starts on Windows without a vp shim by @only21mil in #32777
- perf(server): skip oversized history during handoff selection by @AksharP5 in #23821
- feat(antigravity): support agy CLI as custom binaryPath by @jorotodorovv in #32503
- fix(mobile): share PDFs from the Android attachment viewer by @shivamhwp in #32266
- fix(server): saved preview screenshots keep full resolution by @TonybynMp4 in #28255
- fix(server): refresh linking tools in existing agent sessions by @shivamhwp in #26737
- feat(server): html tools take a file path, so agents stop retyping pages by @t3dotgg in #32833
- fix(search): keep whole-word title matches above busy prefixes by @shivamhwp in #32242
- fix(connect): show why relay unlink failed by @shivamhwp in #25198
- fix(mobile): keep scheduled task prompts clear of microphone by @shivamhwp in #32498
- feat(web,mobile): move a scheduled task to another thread by @binjamshid in #31379
- perf(server): Codex tool calls no longer wait on reasoning summaries by @t3dotgg in #31149
- fix(web): fill combobox search fields by @shivamhwp in #32926
- fix(server): mise-installed providers update through mise instead of their own updater by @ryanrhughes in #21524
- perf(sidebar): avoid full git status for branch labels by @StiensWout in #32947
- perf(desktop): speed up cold Linux x64 backend startup by @StiensWout in #32987
- fix(clients): unloaded thread links show their title and project icon by @Yash-Singh1 in #32830
- fix(clients): parse angle-bracketed thread link destinations by @ScriptedAlchemy in #30709
- fix(desktop): prepare server bytecode on Linux ARM64 by @Yash-Singh1 in #33050
- fix(desktop): open cursor:// and vscode:// file links from chat by @fixfon in #23486
- perf(server): batch worktree branch allocation and avoid path collisions by @StiensWout in #32934
- perf(server): skip unnecessary worktree cleanup scans by @StiensWout in #32933
- fix(server): wake idle parents for late delegated results by @StiensWout in #32573
- fix(mobile): keep side chats readable over the conversation by @PixPMusic in #32240
- fix(desktop): declare Calendar access for hosted commands by @Lenoridev in #21592
- fix(server): macOS Bash terminals now start as login shells by @fixfon in #22295
- fix(web): keep the wide table scrollbar visible when it overflows by @fixfon in #24084
- fix(web): file chip tooltips show the whole path by @Princeyadav05 in #27993
- fix(web): sidebar search results can be dragged onto the composer by @root-daemon in #28016
- fix(server): allow slow Antigravity browser preflights by @maria-rcks in #25211
- fix(server): name rejected certificates when linking peers by @maria-rcks in #28060
- fix(web): terminal types macOS Option-layer characters by @neominik in #21596
- fix(web): boring sidebar threads drag onto the composer again by @juliusmarminge in #26724
- fix(web): Copy MCP URL uses the T3 Connect address by @t3dotgg in #32937
- fix(web): cmd+shift+o picks the current project before pinned ones by @t3dotgg in #33109
- fix(server): respect gh Unix sockets for GitHub requests by @voltcrash in #27733
- perf(mobile): thread list resumes from the saved cache, and large gaps reload over gzip HTTP by @juliusmarminge in #32287
- feat(mobile): iOS socket compresses traffic by @juliusmarminge in #32288
- perf(server): macOS worktrees open 2x faster by cloning a cached checkout by @t3dotgg in #32927
- fix(web): mic button always sits next to send by @t3dotgg in #33133
- feat: Settings reclaims freed database space in one click by @t3dotgg in #32941
- fix(github): hidden GitHub comments and reviews no longer show in T3 Code by @t3dotgg in #33134
- feat(mobile): long-press an image to save it to Photos by @t3dotgg in #29598
- feat(settings): clean up Labs: promote tool calls, remove plan mode and old toggles by @t3dotgg in #33131
- feat: Labs option to suggest your next prompt after Claude and Codex turns by @t3dotgg in #28047
- fix(antigravity): agy CLI threads open in Full access and Auto-accept edits by @t3dotgg in #33143
- test(web): OpenInPicker announcement test no longer hears the previous test by @t3dotgg in #33139
- ci(release): retry transient GitHub API errors when resolving the release commit by @t3dotgg in #33149
- fix(muse): retries show while Muse waits and fold away once it recovers by @t3dotgg in #33151
- feat(cli): npx t3 offers to install the t3 command by @t3dotgg in #33150
- fix(web): removing a secret provider lists the Simlock tokens that read from it by @MarcoDotIO in #31754
- fix(server): a duplicate variable row no longer deletes a stored secret by @juliusmarminge in #31337
- chore(mobile): sync Enriched Markdown with upstream 1d00a92a by @juliusmarminge in #32180
- feat(mobile): Mermaid and math fences render like they do on web by @juliusmarminge in #32190
- feat(desktop): a fresh install sets up the t3 command by @t3dotgg in #33153
- fix(release): Windows signing retries transient Azure Trusted Signing errors by @t3dotgg in #33148
- fix: secret cards show the agent's sign-in link as a button by @t3dotgg in #33157
- ci(release): scheduled nightly checks read 10 KB instead of 28 MB by @t3dotgg in #33141
- docs(secrets): sign op in with a service account or Connect on remote servers by @yordis in #31760
- fix(provider-core): agents ask for a sudo password through the private secret card by @juliusmarminge in #27748
- ci(release): Linux desktop builds reuse cached AppImage, FPM, and 7-Zip downloads by @t3dotgg in #33142
- ci(release): hosted web alias job checks out 3 files, not the repo by @t3dotgg in #33145
- ci: startup and sidebar changes open the seeded thread before merge by @t3dotgg in #33146
- refactor(mobile): components/ui platform primitives are iOS files with .android overrides by @juliusmarminge in #33173
- FEATURE: Fast and Ultrafast service tiers for Pi models by @bmdavis419 in #33177
- fix(mobile): older chat messages show the date, not just the time by @t3dotgg in #33189
- feat: text generators let model APIs write titles, commits, and transcript cleanup by @juliusmarminge in #33147
- fix(mobile): feature screens use the components/ui menu, dialog and search primitives by @juliusmarminge in #33193
- fix(web): Markdown tasks no longer stay checked after their source is unchecked by @juliusmarminge in #27353
- fix(web): return focus to composer after timeline prompts by @Yash-Singh1 in #33192
- fix(mobile): SVG markers with orient="auto-start-reverse" no longer crash Android by @juliusmarminge in #32812
- fix(mobile): Android keyboard clipboard pastes fold into attachments by @only21mil in #24482
- fix(mobile): text no longer clips in Android desktop windows on external displays by @satchlj in #19064
- fix(mobile): compose button no longer covers the last tab on iPhone by @juliusmarminge in #32995
- fix(mobile): accept image drops in the iOS message input by @12ya in #25532
- fix(mobile): Android chip taps open the chip from either half by @maria-rcks in #33126
- fix(mobile): iOS Agent Activity widget shows your agents instead of a blank tile by @shivamhwp in #21163
- fix(mobile): Android navigation bar follows the app theme by @vinceglb in #27576
- fix(android): keep diagonal horizontal swipes inside HTML blocks by @none23 in #21652
- fix(mobile): keep Android live activity independent of alerts by @PixPMusic in #24933
- fix(desktop): update xa11y to 0.15.4 so App Shots read window text faster by @MatthewFeroz in #33135
- feat(source-control): add Cursor Origin provider by @maria-rcks in #33093
- perf(mobile): sign DPoP proofs natively, up to 355x faster on Android by @camchis in #31998
- feat(marketing): localize the site in 8 languages by @maria-rcks in #33155
- fix(mobile): iOS terminal can copy, paste, and stop freezing by @t3dotgg in #25828
- feat(web,mobile): @-mention a model to name it for the agent by @ScriptedAlchemy in #31207
- fix(server): delegated Claude tasks report the model that ran by @shivamhwp in #27753
- fix(mobile): nested code blocks no longer overlap the next message on Android by @juliusmarminge in #28524
- refactor: upgrade Legend List to 3.7.2 and drop our list workarounds by @jmeistrich in #28125
- fix(mobile): select file text across lines on Android by @shivamhwp in #31286
- fix(mobile): restore the sidebar toggle and drop the inspector toggle on iPhone Duo by @juliusmarminge in #33213
- fix(server): phones get the approval push when a subagent waits by @shivamhwp in #24079
- fix(deps): update vulnerable dependencies and lockfile resolutions by @juliusmarminge in #33226
- fix(mobile): Android sends with Return on a hardware keyboard by @shivamhwp in #21687
- fix(server): include thread titles in MCP links by @shivamhwp in #33255
- fix(composer): persist model picks before the next message by @shivamhwp in #31739
- fix(server): Codex /goal no longer tries to create the goal twice by @t3dotgg in #33260
- fix(server): steering during a Claude compaction shows it stopped, not failed by @t3dotgg in #33291
- fix(server): background command results reach a running Codex goal by @t3dotgg in #33268
- perf(mobile): threads open over the socket without an extra HTTP round trip by @t3dotgg in #33306
- feat(web,server): use T3 Code in another app (MCP) by @t3dotgg in #33196
- feat(web): first run is one Welcome page instead of a 3-step wizard by @t3dotgg in #33209
- fix(desktop): chat videos go fullscreen across the whole screen again by @Luca-Lucidera in #25835
- fix(desktop): recording cursor stays above modal dialogs and popovers by @mateusjunges in #27046
- perf(web): changing file counts no longer re-render the chat view by @Yuruzuu in #28571
- fix(desktop): a window saved 1px past a display edge reopens where it was by @Abhishek-B-R in #28638
- fix(web): open citation comments with the caret at the end by @kimkhoi2202 in #28667
- fix(desktop): page redirects during loading no longer show a navigation error by @shivamhwp in #28814
- fix(web): banner button hover follows the banner's rounded corners by @Byntham in #29018
- fix(web,mobile): per-thread auto-settle menu says what it does by @iamabhishekt in #29025
- perf(web): switching threads no longer re-renders every sidebar row by @Yuruzuu in #29150
- fix(web): deleting an archived thread also clears its draft, staged uploads and terminal state by @saphid in #29164
- perf(web): Appearance settings no longer re-probe fonts on every open by @chelokot in #29171
- fix(desktop): discover browser profiles in XDG config home by @voltcrash in #29243
- fix(desktop): annotating inside a page's dialog no longer closes it by @thatsnoi in #29287
- fix(desktop): preserve concurrent downloads with the same name by @voltcrash in #29308
- fix(web): removing a queued message's attachment counts as an edit when its run starts by @saphid in #29601
- fix(web): keybinding settings recognize the previewOpen condition by @saphid in #29642
- fix(web): thread navigation shortcuts honor previewFocus and previewOpen conditions by @saphid in #29678
- fix(web): editing a scheduled task shows its saved time when the hour has one digit by @saphid in #29851
- perf(web): long reasoning previews format in linear time (600 ms → 1.3 ms median) by @Yuruzuu in #30038
- fix(web): keep typed unpublished variable rows across settings re-deliveries by @justsrc in #30115
- fix(web): deleting the open thread no longer opens a side chat or subagent by @spoukyii in #30370
- fix(web): review findings handed to a thread no longer end in a broken character by @spoukyii in #30392
- fix(web): project content search no longer opens a result on an IME Enter by @spoukyii in #30448
- refactor(shared): simplify remote branch filtering by @roxvi in #30456
- fix(web): an IME Escape no longer sends the file picker or content search back to the palette by @spoukyii in #30467
- fix(composer): bound long path search requests on web and mobile by @Jo2234 in #30714
- fix(web): rich text previews keep paragraphs that end with a backslash by @geezoria in #30812
- fix(web): deleting a thread clears its side chats' drafts by @saphid in #29832
- fix(mobile): thread row timers no longer reflow the title every second by @juliusmarminge in #33447
- fix(mobile): smooth expand/collapse when the feed is at the bottom by @juliusmarminge in #33449
- fix(mobile): keep project and environment pickers reachable with the keyboard up by @juliusmarminge in #33456
- chore(mobile): update Expo SDK 58 and React Native native modules by @juliusmarminge in #33228
- ci: give Release Smoke 15 minutes by @juliusmarminge in #33478
- chore(mobile): update gesture handler and keyboard controller by @juliusmarminge in #33229
- fix(source-control): nightly CLI builds again without Cursor Origin's undici import by @juliusmarminge in #33483
- fix(mobile): the thread feed re-wraps once when an iOS column resizes by @juliusmarminge in #33459
- fix(speech): match reference benchmarks to transcription hardware by @UtkarshUsername in #31956
- feat(models): add Claude Fable 5.2 by @t3dotgg in #33500
- fix(mobile): the chat inset resets after the keyboard closes while frozen by @juliusmarminge in #33501
- fix(mobile): a full swipe on a thread row finishes even if the pan is cancelled by @juliusmarminge in #33492
- fix(client): finishing a long background thread no longer freezes the app by @juliusmarminge in #33503
- feat(models): the model picker checks for new models when it opens by @t3dotgg in #33511
- fix(desktop): close focused DevTools with Cmd+W by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/33518
- chore(mobile): update react-native-pdf-jsi to 6.1.0 and link it on Android only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/33504
- fix(mobile): the unfolded Duo sidebar no longer pops back in while resizing Files by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/33510
- fix(models): new models also surface the CLI update that supports them by @t3dotgg in https://github.com/pingdotgg/t3code/pull/33515
- fix(web): clicked workspace areas no longer show the focus ring after a stray key by @t3dotgg in https://github.com/pingdotgg/t3code/pull/33525
- chore(server): update Claude Agent SDK to 0.3.321 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/33530
New Contributors
- @b2bvic made their first contribution in #30900
- @benjamin-di made their first contribution in #29622
- @ElliotDrel made their first contribution in #30983
- @DrSeedon made their first contribution in #30781
- @kahlstrm made their first contribution in #28625
- @Jerematix made their first contribution in #28955
- @snarkyalyx made their first contribution in #16317
- @Muzammil-Bit made their first contribution in #30078
- @iScabrous made their first contribution in #30295
- @frankhommers made their first contribution in #30361
- @medric-z made their first contribution in #29607
- @shawk08033 made their first contribution in #30528
- @Jolymmiles made their first contribution in #25579
- @geezoria made their first contribution in #30719
- @navidnadali made their first contribution in #30834
- @Mr-Neutr0n made their first contribution in #30942
- @jacobcorbett made their first contribution in #31000
- @dharmeshgurnani made their first contribution in #15632
- @aledog007 made their first contribution in #30189
- @joshuarossi made their first contribution in #31285
- @patrick-toulme made their first contribution in #31158
- @Sidreyas made their first contribution in #32154
- @aotradovec made their first contribution in #31928
- @bartlomiejbloniarz made their first contribution in #25988
- @Djordje-Stojanovic made their first contribution in #32269
- @MikaMcFlurry made their first contribution in #32263
- @arifali123 made their first contribution in #27941
- @jorotodorovv made their first contribution in #32503
- @ScriptedAlchemy made their first contribution in #30709
- @Lenoridev made their first contribution in #21592
- @Princeyadav05 made their first contribution in #27993
- @root-daemon made their first contribution in #28016
- @satchlj made their first contribution in #19064
- @vinceglb made their first contribution in #27576
- @Luca-Lucidera made their first contribution in #25835
- @mateusjunges made their first contribution in #27046
- @iamabhishekt made their first contribution in #29025
- @chelokot made their first contribution in #29171
- @thatsnoi made their first contribution in #29287
- @justsrc made their first contribution in #30115
- @roxvi made their first contribution in #30456
Full Changelog: v0.1.7...v0.1.8