github pingdotgg/t3code v0.1.8
T3 Code v0.1.8

57 minutes ago

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:217 becomes 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 accept counts as a shell merge by @felixlaga in #32400
  • fix(forgejo): tea's pull and m aliases 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

Don't miss a new t3code release

NewReleases is sending notifications on new releases.