What's Changed
- feat(web): open html render images in the image viewer by @maria-rcks in #20036
- refactor(github): all GitHub GraphQL on effect/graphql, one request policy for REST and GraphQL by @juliusmarminge in #19224
- refactor(mobile): share settings action rows by @juliusmarminge in #18529
- fix(mobile): standardize shared button states and adoption by @juliusmarminge in #18530
- refactor(mobile): adopt shared controls and add component catalog by @juliusmarminge in #18541
- feat(mobile): map native hosts to the app theme by @juliusmarminge in #18567
- refactor(mobile): share theme mapping across Android controls by @juliusmarminge in #19217
- refactor(mobile): expose shared icon button and search field APIs by @juliusmarminge in #19264
- refactor(mobile): expose native menus through a shared Menu API by @juliusmarminge in #19265
- refactor(mobile): centralize dialog and sheet APIs by @juliusmarminge in #19266
- refactor(mobile): keep segmented controls native by @juliusmarminge in #18532
- refactor(mobile): expose app bar toolbar and FAB APIs by @juliusmarminge in #19951
- feat(mobile): share actionable toasts and native progress by @juliusmarminge in #19952
- refactor(mobile): adopt shared text shape and motion tokens by @juliusmarminge in #19953
- feat(mobile): expose themed native Android app bars by @juliusmarminge in #19994
- refactor(mobile): adopt native Android screen headers by @juliusmarminge in #19995
- refactor(mobile): finish shared control token adoption by @juliusmarminge in #19996
- fix(mobile): route alerts through the themed dialog presenter by @juliusmarminge in #19997
- refactor(mobile): adopt shared alerts in settings and connections by @juliusmarminge in #19998
- refactor(mobile): adopt shared alerts in thread and PR screens by @juliusmarminge in #19999
- refactor(mobile): finish shared alert adoption by @juliusmarminge in #20000
- refactor(mobile): adopt shared loading indicators across screens by @juliusmarminge in #20001
- refactor(mobile): unify navigation and floating toolbar APIs by @juliusmarminge in #20002
- refactor(mobile): use native iOS sliders by @juliusmarminge in #20016
- refactor(mobile): use shared Menu for markdown long presses by @juliusmarminge in #20019
- refactor(mobile): organize design system and shared components by @juliusmarminge in #20043
- fix(shell): normalize Windows PATH keys in copied environments by @juliusmarminge in #19965
- perf(server): check Android SDK locations before PATH by @juliusmarminge in #19960
- perf(server): skip unchanged device host refreshes by @juliusmarminge in #19961
- perf(server): skip Windows probes for desktop-prepared environments by @juliusmarminge in #19966
- test(server): decouple compatibility fixtures from release version by @juliusmarminge in #20068
- fix(client-runtime): hide pending context handoff on threads with no sent message by @maria-rcks in #20033
- ci: skip jobs a pull request cannot affect by @maria-rcks in #19587
- ci: cache Chromium for server test shards by @maria-rcks in #19632
- ci: run typecheck inside the Build job by @maria-rcks in #19633
- ci: cache pnpm packages on Blacksmith sticky disks by @maria-rcks in #19634
- ci: cut per-job setup time by @maria-rcks in #20044
- fix(web): settings stay compact with many connected machines by @maria-rcks in #19744
- fix(dev): freeze the worktree setup lockfile by @maria-rcks in #19747
- fix(server): clean up worktrees shared by subagents by @maria-rcks in #19748
- fix(mobile): separate TestFlight and store release versions by @juliusmarminge in #20060
- fix(server): report orphaned managed worktrees by @maria-rcks in #19749
- fix(server): compact superseded history in the background by @juliusmarminge in #19435
- feat(server): t3 doctor reclaims database space by @juliusmarminge in #19436
- feat: suggest t3 doctor when the database has space to reclaim by @juliusmarminge in #19437
- fix(web): device setup lets you through with only a remote device host by @juliusmarminge in #20077
- chore(mobile): remove the legacy v2 preview channel by @juliusmarminge in #20084
- fix(web): folder breadcrumbs navigate to parent folders by @scratchyone in #15045
- fix: command output streams live while it runs by @scratchyone in #15094
- fix(mobile): code blocks get a wrap button, long ordered lists keep their numbers by @juliusmarminge in #20080
- chore(deps): update Expo and Clerk SDKs by @juliusmarminge in #20067
- fix(server): subagents pick up their parent's renamed worktree branch by @maria-rcks in #20079
- fix(mobile): make test builds optional and preserve APK releases by @juliusmarminge in #20092
- fix(server): resumed Claude subagents keep updating their own thread by @juliusmarminge in #20061
- fix(desktop): agent typing in a preview tab no longer lands in the app by @juliusmarminge in #18556
- perf(web): virtualize a thread's linked pull requests by @juliusmarminge in #20107
- feat(web): drag a linked pull request into the composer as a context chip by @juliusmarminge in #20102
- perf(web): run the React Compiler natively instead of through Babel by @juliusmarminge in #20114
- perf(web): saving the thread list cache no longer re-encodes every thread by @bompus in #19915
- fix(provider-grok): Grok health checks no longer start Grok's updater by @bompus in #18075
- test(server): promoting a queued message into a running Claude turn succeeds by @juliusmarminge in #20065
- perf(server): expanding a wide ignored folder no longer classifies every child by @juliusmarminge in #20062
- fix(mobile): worktree setup clock pauses on hidden thread screens by @juliusmarminge in #20066
- perf(desktop): picture-in-picture stops re-encoding an unchanged page by @juliusmarminge in #20070
- fix(mobile): a table right under a line of text renders as a table by @shivamhwp in #20120
- perf(web): load project icons as one chunk instead of ~1,700 by @juliusmarminge in #20147
- feat(mobile): use shared custom segmented controls by @juliusmarminge in #20116
- fix(mobile): extend iPad sidebar background behind header by @juliusmarminge in #20149
- refactor: prune narration and history comments by @maria-rcks in #19559
- style(mobile): flatten segmented control surfaces by @juliusmarminge in #20163
- fix(cli): t3 triage and prompts work from the desktop app's t3 on Windows by @juliusmarminge in #20162
- fix(ios): show a sidebar toggle on the unfolded iPhone Duo in portrait by @PixPMusic in #20133
- bye npm by @juliusmarminge in #20148
- fix(shared): PRs built on the same PR stay in one stack under their parent by @shivamhwp in #20160
- fix(web): keep running status banners on one line by @Yash-Singh1 in #20194
- fix(codex): a slow but healthy Codex no longer shows as Unavailable by @shivamhwp in #15945
- feat(mobile): use themed native iOS segmented controls by @juliusmarminge in #20327
- fix(orchestration): queue follow-ups sent while a thread compacts by @maria-rcks in #20184
- chore(deps): update Clerk SDKs and reconcile native patch by @juliusmarminge in #20359
- fix(mobile): the app builds and launches again after the Expo update by @voida6 in #20131
- chore(deps): update Expo SDK 58 packages and trim patches by @juliusmarminge in #20389
- fix(mobile): Android fingerprint covers Expo native modules again by @juliusmarminge in #20384
- fix(android): keep the split view and menus off the fold crease by @PixPMusic in #19988
- fix(android): fold tracking starts late and hinge retargets keep the edge by @PixPMusic in #20403
- refactor(mobile): add a device type flag for iPad and iPhone Duo UI by @mweinbach in #20399
- fix(server): Windows terminal kill no longer waits on timeouts by @mweinbach in #18519
- fix(mobile): sidebar toggle works on iPad and iPhone Duo by @mweinbach in #20406
- chore(mobile): use upstream Enriched Markdown's wrap toggle and list fixes, plus Android long-press fixes by @juliusmarminge in #20400
- fix(web): restore mobile app store links in settings by @juliusmarminge in #20422
- refactor(web): move pending approvals and questions out of ChatView by @juliusmarminge in #20161
- refactor(web): move the persistent terminal drawer and panel out of ChatView.tsx by @juliusmarminge in #20164
- refactor(web): open and close thread terminals through one hook by @juliusmarminge in #20289
- chore(lint): fail lint when the React Compiler skips a listed file by @juliusmarminge in #20292
- refactor(web): let the React Compiler compile usePendingThreadRequests by @juliusmarminge in #20294
- refactor(web): move the /usage-limits panel state out of ChatView by @juliusmarminge in #20296
- refactor(web): move queued-message editing out of ChatView by @juliusmarminge in #20304
- refactor(web): move the thread's linked pull request out of ChatView by @juliusmarminge in #20308
- refactor(web): move proactive right-panel opening out of ChatView by @juliusmarminge in #20309
- refactor(web): move agent-opened browser and device surfacing out of ChatView by @juliusmarminge in #20312
- refactor(web): move right panel surface closing out of ChatView by @juliusmarminge in #20315
- refactor(web): move worktree setup progress out of ChatView by @juliusmarminge in #20316
- refactor(web): split two self-contained phases out of onSend by @juliusmarminge in #20321
- fix(web): stop crashing the native React Compiler on ChatView by @juliusmarminge in #20340
- perf(web): let the React Compiler compile ChatView by @juliusmarminge in #20379
- perf(web): stop re-rendering the conversation on streamed tokens, typing and server pushes by @juliusmarminge in #20380
- perf(client): provider status pushes keep unchanged providers identical by @juliusmarminge in #20392
- refactor(web): move ChatView's keyboard shortcuts into a command map by @juliusmarminge in #20393
- perf(web): the sidebar compiles with no manual memoization by @juliusmarminge in #20396
- perf(web): ChatComposer compiles with no manual memoization by @juliusmarminge in #20397
- refactor(web): move project script editing out of ChatView by @juliusmarminge in #20401
- perf(web): the React Compiler compiles MessagesTimeline by @juliusmarminge in #20402
- perf(web): ChatView joins the strict React Compiler list by @juliusmarminge in #20418
- refactor(web): move the right panel's surface switch out of ChatView by @juliusmarminge in #20421
- fix(web): a draft closed mid machine switch no longer rewrites that draft by @juliusmarminge in #20442
- fix(web): every reconnect gets its own grace period before the unavailable banner by @juliusmarminge in #20441
- rc/01 tooltips by @juliusmarminge in #20448
- perf(web): the composer editor compiles with the React Compiler by @juliusmarminge in #20450
- perf(web): the server browser surface compiles with the React Compiler by @juliusmarminge in #20451
- perf(web): asset URL hooks compile with the React Compiler by @juliusmarminge in #20452
- perf(web): toggle groups compile with the React Compiler by @juliusmarminge in #20453
- perf(web): thread notifications compile with the React Compiler by @juliusmarminge in #20454
- perf(web): query hooks compile with the React Compiler by @juliusmarminge in #20455
- perf(web): source control action hooks compile with the React Compiler by @juliusmarminge in #20456
- perf(web): the project icon picker compiles with the React Compiler by @juliusmarminge in #20457
- perf(web): the theme editor compiles with the React Compiler by @juliusmarminge in #20458
- perf(web): panel presence keeps its retained value in state by @juliusmarminge in #20459
- perf(web): useCopyToClipboard reads its options through useStableCallback by @juliusmarminge in #20460
- perf(web): pairing surfaces read their URL token from lazy state by @juliusmarminge in #20461
- perf(web): sidebar retained git status lives in state by @juliusmarminge in #20462
- perf(web): viewed-file tracking passes its flush target instead of reading refs by @juliusmarminge in #20463
- perf(web): useLiveRefresh reads its callback through useEffectEvent by @juliusmarminge in #20464
- perf(web): browser viewport resize checks its source through a stable callback by @juliusmarminge in #20465
- perf(web): snapshot coordinator keeps the last route target in state by @juliusmarminge in #20466
- perf(web): branch toolbar label measuring reads its state through useEffectEvent by @juliusmarminge in #20467
- perf(web): diff panel reads its loader and collapse defaults without refs by @juliusmarminge in #20468
- perf(web): welcome wizard keeps its auto-selected computers in lazy state by @juliusmarminge in #20469
- perf(web): thread actions compile without manual memoization by @juliusmarminge in #20470
- perf(web): pull request code tab compiles, with viewed toggles read through context by @juliusmarminge in #20471
- perf(web): useLocalStorage compiles with the React Compiler by @juliusmarminge in #20472
- perf(web): useTheme compiles with the React Compiler by @juliusmarminge in #20473
- perf(web): settings hooks compile with the React Compiler by @juliusmarminge in #20474
- perf(web): the queued runs control compiles with the React Compiler by @juliusmarminge in #20475
- perf(web): the browser preview view compiles with the React Compiler by @juliusmarminge in #20476
- perf(web): the command palette compiles with the React Compiler by @juliusmarminge in #20477
- perf(web): the server update action compiles with the React Compiler by @juliusmarminge in #20478
- perf(web): the attachment file preview compiles with the React Compiler by @juliusmarminge in #20479
- perf(web): the usage page compiles with the React Compiler by @juliusmarminge in #20480
- perf(web): provider update rows compile with the React Compiler by @juliusmarminge in #20481
- perf(web): useDirectoryEntries compiles with the React Compiler by @juliusmarminge in #20482
- perf(web): the file browser panel compiles with the React Compiler by @juliusmarminge in #20483
- perf(web): the sidebar update pill compiles with the React Compiler by @juliusmarminge in #20484
- perf(web): the provider updates action compiles with the React Compiler by @juliusmarminge in #20485
- perf(web): the media video player compiles with the React Compiler by @juliusmarminge in #20486
- perf(web): media actions compile with the React Compiler by @juliusmarminge in #20487
- fix(prs): typed qualifiers filter mobile PR search and sync the draft menu by @Bil0000 in #19934
- perf(web): device setup compiles with the React Compiler by @juliusmarminge in #20488
- perf(web): the device panel compiles with the React Compiler by @juliusmarminge in #20489
- perf(web): the SSH password prompt compiles with the React Compiler by @juliusmarminge in #20490
- perf(web): the cloud environment connect list compiles with the React Compiler by @juliusmarminge in #20491
- perf(web): pull request actions compile with the React Compiler by @juliusmarminge in #20492
- perf(web): pull request review annotations compile with the React Compiler by @juliusmarminge in #20493
- perf(web): pull request thread links compile with the React Compiler by @juliusmarminge in #20494
- perf(web): the link pull request dialog compiles with the React Compiler by @juliusmarminge in #20495
- perf(web): GitHub token settings compile with the React Compiler by @juliusmarminge in #20496
- perf(web): GitHub account settings compile with the React Compiler by @juliusmarminge in #20497
- perf(web): source control host settings compile with the React Compiler by @juliusmarminge in #20498
- perf(web): usage provider settings compile with the React Compiler by @juliusmarminge in #20499
- perf(web): telemetry export settings compile with the React Compiler by @juliusmarminge in #20500
- perf(web): device host connection checks compile with the React Compiler by @juliusmarminge in #20501
- perf(web): project script settings compile with the React Compiler by @juliusmarminge in #20502
- perf(web): SnapShot setup dialog compile with the React Compiler by @juliusmarminge in #20503
- perf(web): notification settings compile with the React Compiler by @juliusmarminge in #20504
- perf(web): provider setup section compile with the React Compiler by @juliusmarminge in #20505
- perf(web): storage settings compile with the React Compiler by @juliusmarminge in #20506
- perf(web): diagnostics settings compile with the React Compiler by @juliusmarminge in #20507
- perf(web): device hosts settings compile with the React Compiler by @juliusmarminge in #20508
- perf(web): project settings panel compile with the React Compiler by @juliusmarminge in #20509
- perf(web): ACP session management compile with the React Compiler by @juliusmarminge in #20510
- perf(web): capture shortcut config compile with the React Compiler by @juliusmarminge in #20511
- perf(web): integrations settings compile with the React Compiler by @juliusmarminge in #20512
- perf(web): theme import dialog compile with the React Compiler by @juliusmarminge in #20513
- fix(web): an abandoned machine switch still clears its busy state by @juliusmarminge in #20519
- perf(web): SnapShot settings compile with the React Compiler by @juliusmarminge in #20514
- perf(web): connections settings compile with the React Compiler by @juliusmarminge in #20515
- feat(auth): pairing grants access and T3 Connect management by default by @juliusmarminge in #20432
- perf(web): resize handles compile with the React Compiler by @juliusmarminge in #20524
- perf(web): the theme color picker compiles with the React Compiler by @juliusmarminge in #20525
- perf(web): the pull request panel compiles with the React Compiler by @juliusmarminge in #20526
- perf(web): the terminal drawer compiles with the React Compiler by @juliusmarminge in #20527
- perf(web): the settings panels compile with the React Compiler by @juliusmarminge in #20528
- fix(server): background subagents keep T3 tools after the parent turn ends by @maria-rcks in #19751
- fix(server): wake threads whose subagents' background work a restart cut by @maria-rcks in #19750
- fix(web): the sidebar no longer crashes when a thread leaves it by @gilitos92 in #20522
- fix(mobile): align iOS segmented controls with action colors by @juliusmarminge in #20721
- perf(web): the pull requests page compiles with the React Compiler by @juliusmarminge in #20539
- perf(web): the legacy sidebar compiles with the React Compiler by @juliusmarminge in #20640
- perf(client): a repository identity refresh keeps unchanged projects identical by @juliusmarminge in #20730
- perf(web): the new-thread handler keeps its identity across provider pushes by @juliusmarminge in #20731
- perf(web): the linked pull requests panel compiles without manual memoization by @juliusmarminge in #20723
- perf(web): pull request markdown compiles without manual memoization by @juliusmarminge in #20722
- perf(web): the pull request label and reviewer pickers compile without manual memoization by @juliusmarminge in #20719
- perf(web): the usage state hook compiles without manual memoization by @juliusmarminge in #20718
- perf(web): the pull request guide tab compiles without manual memoization by @juliusmarminge in #20716
- perf(web): the shell command block compiles without manual memoization by @juliusmarminge in #20714
- perf(web): the composer draft store compiles without manual memoization by @juliusmarminge in #20713
- perf(web): the hosted prompt link landing compiles without manual memoization by @juliusmarminge in #20712
- perf(web): the model picker compiles without manual memoization by @juliusmarminge in #20711
- perf(web): the pull request state hooks compile without manual memoization by @juliusmarminge in #20710
- perf(web): discovered local servers compile without manual memoization by @juliusmarminge in #20708
- perf(web): the proposed plan card compiles without manual memoization by @juliusmarminge in #20707
- perf(web): the pull request link hooks compile without manual memoization by @juliusmarminge in #20705
- perf(web): the preview mini player compiles without manual memoization by @juliusmarminge in #20704
- perf(web): file entry icons compile without manual memoization by @juliusmarminge in #20703
- perf(web): toasts compile without manual memoization by @juliusmarminge in #20702
- perf(web): the thread action menu hook compiles without manual memoization by @juliusmarminge in #20701
- perf(web): the new thread hooks compile without manual memoization by @juliusmarminge in #20699
- perf(web): the open-in picker compiles without manual memoization by @juliusmarminge in #20698
- perf(web): the file save coordinator compiles without manual memoization by @juliusmarminge in #20697
- perf(web): the combobox compiles without manual memoization by @juliusmarminge in #20696
- perf(web): the usage provider chart compiles without manual memoization by @juliusmarminge in #20695
- perf(web): the usage model dialog compiles without manual memoization by @juliusmarminge in #20694
- perf(web): update everything compiles without manual memoization by @juliusmarminge in #20693
- perf(web): the file preview panel compiles with the React Compiler by @juliusmarminge in #20692
- perf(web): the MCP app frame compiles without manual memoization by @juliusmarminge in #20691
- perf(web): main app navigation compiles without manual memoization by @juliusmarminge in #20690
- perf(web): project file queries compile without manual memoization by @juliusmarminge in #20689
- perf(web): the HTML render frame compiles without manual memoization by @juliusmarminge in #20688
- perf(web): the sidebar update capsule compiles without manual memoization by @juliusmarminge in #20687
- perf(web): the terminal session hooks compile without manual memoization by @juliusmarminge in #20686
- perf(web): the project file picker compiles without manual memoization by @juliusmarminge in #20685
- perf(web): the sidebar chrome compiles without manual memoization by @juliusmarminge in #20684
- perf(web): the file context menu hooks compile without manual memoization by @juliusmarminge in #20683
- perf(web): the snapshot shortcut recorder compiles without manual memoization by @juliusmarminge in #20682
- perf(web): the pull request linking hook compiles without manual memoization by @juliusmarminge in #20681
- perf(web): the port discovery hooks compile without manual memoization by @juliusmarminge in #20636
- perf(web): the new-thread link route compiles without manual memoization by @juliusmarminge in #20597
- perf(web): the Electron browser host compiles with the React Compiler by @juliusmarminge in #20548
- perf(web): the CSV table preview compiles without manual memoization by @juliusmarminge in #20680
- perf(web): the thread lineage panel compiles without manual memoization by @juliusmarminge in #20720
- perf(web): the open panel pull request URL hook compiles without manual memoization by @juliusmarminge in #20679
- perf(web): highlighted code tokens compile without manual memoization by @juliusmarminge in #20678
- perf(web): scoped settings hooks compile without manual memoization by @juliusmarminge in #20677
- perf(web): the HTML document frame compiles without manual memoization by @juliusmarminge in #20676
- perf(web): the new project hook compiles without manual memoization by @juliusmarminge in #20675
- perf(web): the scratch project hook compiles without manual memoization by @juliusmarminge in #20673
- perf(web): the expanded image dialog compiles without manual memoization by @juliusmarminge in #20672
- perf(web): the sidebar project groups hook compiles without manual memoization by @juliusmarminge in #20671
- perf(web): review file patches compile without manual memoization by @juliusmarminge in #20670
- perf(web): the draft hero headline compiles without manual memoization by @juliusmarminge in #20669
- perf(web): settings project groups compile without manual memoization by @juliusmarminge in #20668
- perf(web): the chat route layout compiles without manual memoization by @juliusmarminge in #20667
- perf(web): scoped model availability compiles without manual memoization by @juliusmarminge in #20666
- perf(web): the environment hooks compile without manual memoization by @juliusmarminge in #20665
- perf(web): the provider settings panel compiles with the React Compiler by @juliusmarminge in #20664
- perf(web): the code block language picker compiles without manual memoization by @juliusmarminge in #20663
- perf(web): the right panel tabs compile with the React Compiler by @juliusmarminge in #20662
- perf(web): settings search availability compiles without manual memoization by @juliusmarminge in #20661
- perf(web): the editor preference hooks compile without manual memoization by @juliusmarminge in #20660
- perf(web): the code view file reveal hook compiles without manual memoization by @juliusmarminge in #20659
- perf(web): the command output panel compiles without manual memoization by @juliusmarminge in #20658
- perf(web): the annotatable diff view compiles without manual memoization by @juliusmarminge in #20657
- perf(web): the chat header compiles with the React Compiler by @juliusmarminge in #20656
- perf(web): the theme library compiles with the React Compiler by @juliusmarminge in #20655
- perf(web): the chat canvas compiles without manual memoization by @juliusmarminge in #20654
- perf(web): useResizableWidth compiles without manual memoization by @juliusmarminge in #20653
- perf(web): device controls compile without manual memoization by @juliusmarminge in #20652
- perf(web): file breadcrumbs compile with the React Compiler by @juliusmarminge in #20651
- perf(web): the changed files tree compiles without manual memoization by @juliusmarminge in #20650
- perf(web): the provider update dismissal hook compiles without manual memoization by @juliusmarminge in #20649
- perf(web): the sidebar primitives compile with the React Compiler by @juliusmarminge in #20648
- perf(web): the settings layout compiles without manual memoization by @juliusmarminge in #20647
- perf(web): the remote open hook compiles without manual memoization by @juliusmarminge in #20646
- perf(web): usePreviewBridge compiles with the React Compiler by @juliusmarminge in #20644
- perf(web): the citation chip compiles without manual memoization by @juliusmarminge in #20643
- perf(web): useHtmlRenderTheme compiles without manual memoization by @juliusmarminge in #20642
- perf(web): project content search compiles with the React Compiler by @juliusmarminge in #20641
- perf(web): the agent connect surface compiles without manual memoization by @juliusmarminge in #20639
- perf(web): the theme editor host compiles without manual memoization by @juliusmarminge in #20638
- perf(web): the first-run gate compiles with the React Compiler by @juliusmarminge in #20637
- perf(web): the settings scope context compiles without manual memoization by @juliusmarminge in #20635
- perf(web): the worktree base branch picker compiles without manual memoization by @juliusmarminge in #20634
- perf(web): the project file scripts hook compiles without manual memoization by @juliusmarminge in #20632
- perf(web): the diff file tree compiles with the React Compiler by @juliusmarminge in #20631
- perf(web): thread status indicators compile without manual memoization by @juliusmarminge in #20630
- perf(web): useMediaQuery compiles without manual memoization by @juliusmarminge in #20629
- perf(web): the source control settings compile with the React Compiler by @juliusmarminge in #20628
- perf(web): scheduled task settings compile without manual memoization by @juliusmarminge in #20627
- perf(web): the remove-cloned-project hook compiles without manual memoization by @juliusmarminge in #20626
- perf(web): resource telemetry diagnostics compile without manual memoization by @juliusmarminge in #20625
- perf(web): the archived threads hook compiles without manual memoization by @juliusmarminge in #20624
- perf(web): the Connect onboarding dialog compiles with the React Compiler by @juliusmarminge in #20622
- perf(web): redacted sensitive text compiles without manual memoization by @juliusmarminge in #20621
- perf(web): the pull request stack hook compiles without manual memoization by @juliusmarminge in #20620
- perf(web): the resource telemetry hook compiles without manual memoization by @juliusmarminge in #20619
- perf(web): the provider settings form compiles without manual memoization by @juliusmarminge in #20618
- perf(web): the provider models section compiles with the React Compiler by @juliusmarminge in #20617
- perf(web): the CLI authorize surface compiles without manual memoization by @juliusmarminge in #20616
- perf(web): the pull request thread dialog compiles without manual memoization by @juliusmarminge in #20615
- perf(web): the assistant citation target hook compiles with the React Compiler by @juliusmarminge in #20614
- perf(web): the device state hooks compile without manual memoization by @juliusmarminge in #20613
- perf(web): the provider accent color picker compiles without manual memoization by @juliusmarminge in #20612
- perf(web): the T3 Connect account pages hook compiles without manual memoization by @juliusmarminge in #20611
- perf(web): the session scope hooks compile without manual memoization by @juliusmarminge in #20610
- perf(web): the provider update notification compiles without manual memoization by @juliusmarminge in #20609
- perf(web): the open-source notices panel compiles with the React Compiler by @juliusmarminge in #20608
- perf(web): the project icon picker compiles without manual memoization by @juliusmarminge in #20607
- perf(web): the project scans hook compiles without manual memoization by @juliusmarminge in #20606
- perf(web): the thread context drop hook compiles with the React Compiler by @juliusmarminge in #20605
- perf(web): the local provider update groups compile without manual memoization by @juliusmarminge in #20604
- perf(web): thread find navigation compiles without manual memoization by @juliusmarminge in #20603
- perf(web): the font previews compile with the React Compiler by @juliusmarminge in #20601
- perf(web): project actions settings compile without manual memoization by @juliusmarminge in #20602
- perf(web): the thread find bar compiles with the React Compiler by @juliusmarminge in #20600
- perf(web): the project scripts control compiles without manual memoization by @juliusmarminge in #20599
- perf(web): keybindings settings compile without manual memoization by @juliusmarminge in #20598
- perf(web): the model picker sidebar compiles with the React Compiler by @juliusmarminge in #20596
- perf(web): the composer path search hook compiles without manual memoization by @juliusmarminge in #20595
- perf(web): the font picker compiles with the React Compiler by @juliusmarminge in #20594
- perf(web): the project clone toasts compile without manual memoization by @juliusmarminge in #20593
- perf(web): the pending user input panel compiles with the React Compiler by @juliusmarminge in #20592
- perf(web): useTurnDiffSummaries compiles without manual memoization by @juliusmarminge in #20591
- perf(web): the provider update pill compiles with the React Compiler by @juliusmarminge in #20590
- perf(web): the no-projects hero compiles without manual memoization by @juliusmarminge in #20589
- perf(web): useActiveThreadRef compiles without manual memoization by @juliusmarminge in #20588
- perf(web): the custom model editor compiles without manual memoization by @juliusmarminge in #20586
- perf(web): the root route compiles with the React Compiler by @juliusmarminge in #20585
- perf(web): the diff worker pool provider compiles without manual memoization by @juliusmarminge in #20584
- perf(web): the CLI command settings row compiles without manual memoization by @juliusmarminge in #20583
- perf(web): the composer banner stack compiles with the React Compiler by @juliusmarminge in #20582
- perf(web): the primary session state hook compiles without manual memoization by @juliusmarminge in #20581
- perf(web): the index route compiles with the React Compiler by @juliusmarminge in #20580
- perf(web): the command palette results compile without manual memoization by @juliusmarminge in #20579
- perf(web): the add provider dialog compiles without manual memoization by @juliusmarminge in #20578
- perf(web): useOrchestrationCommand compiles without manual memoization by @juliusmarminge in #20576
- perf(web): the environment selector compiles without manual memoization by @juliusmarminge in #20575
- perf(web): default theme adoption compiles with the React Compiler by @juliusmarminge in #20574
- perf(web): useAtomQueryRunner compiles without manual memoization by @juliusmarminge in #20573
- perf(web): the env mode selector compiles without manual memoization by @juliusmarminge in #20572
- perf(web): highlighted search lines compile without manual memoization by @juliusmarminge in #20571
- perf(web): the server update banner compiles without manual memoization by @juliusmarminge in #20570
- perf(web): the app sidebar layout compiles with the React Compiler by @juliusmarminge in #20569
- perf(web): useAtomCommand compiles without manual memoization by @juliusmarminge in #20568
- perf(web): the branch toolbar selector compiles without manual memoization by @juliusmarminge in #20567
- perf(web): the composer state hooks compile without manual memoization by @juliusmarminge in #20566
- perf(web): the escape-to-go-back hook compiles without manual memoization by @juliusmarminge in #20564
- perf(web): the guide tour compiles without manual memoization by @juliusmarminge in #20563
- perf(web): the onboarding completion hook compiles without manual memoization by @juliusmarminge in #20561
- perf(web): the guide stop compiles without manual memoization by @juliusmarminge in #20560
- perf(web): the prompt link page compiles with the React Compiler by @juliusmarminge in #20559
- perf(web): the hosted browser webview compiles with the React Compiler by @juliusmarminge in #20558
- perf(web): the branch picker compiles without manual memoization by @juliusmarminge in #20557
- perf(web): useStableCallback compiles without manual memoization by @juliusmarminge in #20556
- perf(web): the find reveal ref compiles without manual memoization by @juliusmarminge in #20555
- perf(web): the primary cloud link hook compiles without manual memoization by @juliusmarminge in #20554
- perf(web): the project action editor resets its form without an effect by @juliusmarminge in #20550
- perf(web): the zoomable image compiles without manual memoization by @juliusmarminge in #20549
- perf(web): the PR guide diff loader compiles with the React Compiler by @juliusmarminge in #20543
- perf(web): the traits picker compiles without manual memoization by @juliusmarminge in #20540
- perf(web): the managed relay hooks compile without manual memoization by @juliusmarminge in #20552
- perf(web): the guide excerpt compiles without manual memoization by @juliusmarminge in #20553
- perf(web): AnimatedHeight compiles with the React Compiler by @juliusmarminge in #20562
- perf(web): the browser favicon store compiles without manual memoization by @juliusmarminge in #20546
- perf(web): the browser surface slot compiles with the React Compiler by @juliusmarminge in #20542
- perf(web): the link opener hook compiles without manual memoization by @juliusmarminge in #20541
- perf(web): the guide file diff compiles without manual memoization by @juliusmarminge in #20544
- perf(web): the settings sidebar compiles with the React Compiler by @juliusmarminge in #20623
- perf(web): Codex setup compiles with the React Compiler by @juliusmarminge in #20674
- perf(web): chat markdown compiles with the React Compiler by @juliusmarminge in #20715
- perf(web): the device stream view compiles without manual memoization by @juliusmarminge in #20645
- perf(web): the load-balancing hook compiles with the React Compiler by @juliusmarminge in #20565
- fix(web): settings search keeps the clamped highlight when results shrink by @juliusmarminge in #20764
- perf(web): the provider update launch notification compiles with the React Compiler by @juliusmarminge in #20577
- perf(web): the model picker compiles without manual memoization by @juliusmarminge in #20706
- feat(web): step reasoning effort from the keyboard by @Bil0000 in #19928
- perf(web): the item inspector compiles without manual memoization by @juliusmarminge in #20545
- fix(mobile): dev pairing link no longer opens Home inside a sheet by @PixPMusic in #20130
- fix(server): webhook request values reach the agent marked as request data by @juliusmarminge in #20447
- refactor(client-runtime): decide learned routes and session reuse in one place by @juliusmarminge in #20445
- refactor(web): thread find compiles under the strict React Compiler rules by @juliusmarminge in #20772
- test(web): chat markdown, timeline, and diff reveal tests pass the strict compiler rules by @juliusmarminge in #20770
- perf(web): Git actions control compiles without manual memoization by @juliusmarminge in #20777
- refactor(web): the theme search section compiles without manual memoization by @juliusmarminge in #20778
- fix(server): keep sensitive values out of settings reads, startup logs and preview snapshots by @juliusmarminge in #20446
- refactor(web): the thread pull requests panel keeps its caching without "use memo" hooks by @juliusmarminge in #20740
- refactor(web): scoped settings stay cached without "use memo" by @juliusmarminge in #20767
- refactor(web): settings search items stay cached without "use memo" by @juliusmarminge in #20771
- refactor(web): the file browser keeps its caching without "use memo" hooks by @juliusmarminge in #20784
- refactor(web): the pull request stack hook keeps its caching without "use memo" by @juliusmarminge in #20741
- refactor(web): the pull request thread dialog keeps its caching without "use memo" hooks by @juliusmarminge in #20742
- refactor(web): the MCP app frame keeps its caching without "use memo" hooks by @juliusmarminge in #20759
- refactor(web): the changed files tree keeps its caching without "use memo" hooks by @juliusmarminge in #20766
- refactor(web): sidebar resize options stay cached without "use memo" by @juliusmarminge in #20776
- refactor(web): paginated branches keep their caching without "use memo" by @juliusmarminge in #20743
- refactor(web): pull request markdown keeps its caching without "use memo" hooks by @juliusmarminge in #20744
- refactor(web): the pull request detail panel keeps its caching with fewer "use memo" hooks by @juliusmarminge in #20761
- refactor(web): the open panel pull request URL keeps its caching without "use memo" by @juliusmarminge in #20768
- refactor(web): the command output panel keeps its caching without "use memo" hooks by @juliusmarminge in #20763
- fix(client-runtime): the agents pill counts background agents from earlier turns by @juliusmarminge in #20785
- refactor(web): the diff panel keeps its caching without "use memo" hooks by @juliusmarminge in #20745
- refactor(web): the composer builds model options without a "use memo" hook by @juliusmarminge in #20780
- refactor(web): the preview bridge keeps its stable thread ref without "use memo" hooks by @juliusmarminge in #20746
- refactor(web): the pull request code tab keeps its caching with one "use memo" hook by @juliusmarminge in #20773
- refactor(web): provider models keep their caching without "use memo" by @juliusmarminge in #20775
- refactor(web): the thread lineage panel keeps its caching without "use memo" hooks by @juliusmarminge in #20789
- refactor(web): the attachment preview keeps its caching without "use memo" hooks by @juliusmarminge in #20757
- refactor(web): the pending user input panel keeps its caching without "use memo" hooks by @juliusmarminge in #20762
- refactor(web): the queued runs control keeps its caching without "use memo" hooks by @juliusmarminge in #20779
- refactor(web): the open-in picker keeps its caching without "use memo" hooks by @juliusmarminge in #20758
- refactor(web): highlighted tokens keep their caching without "use memo" hooks by @juliusmarminge in #20760
- refactor(web): merged settings stay cached without "use memo" by @juliusmarminge in #20765
- fix(server): a running Claude workflow member shows its answer so far by @juliusmarminge in #20786
- refactor(web): the keybindings panel keeps its caching without "use memo" hooks by @juliusmarminge in #20782
- refactor(web): linked pull request status keeps its caching without "use memo" hooks by @juliusmarminge in #20781
- refactor(web): the new-thread hook keeps its caching without "use memo" by @juliusmarminge in #20769
- refactor(web): review file patches keep their caching without "use memo" hooks by @juliusmarminge in #20788
- chore(web): React compiler rules apply to every web file by @juliusmarminge in #20791
- refactor(server): resolve project and worktree folders in one place by @juliusmarminge in #20449
- refactor(server): route git config through one env helper and end option parsing before names by @juliusmarminge in #20440
- test(web): React tests run compiled in a real browser by @juliusmarminge in #20797
- fix(android): menu icons take taps by @juliusmarminge in #20802
- fix(android): a composer focused through an app switch stays above the keyboard by @juliusmarminge in #20803
- refactor(web): the usage chart keeps its caching without "use memo" by @juliusmarminge in #20792
- refactor(web): pull request detail keeps its caching without "use memo" by @juliusmarminge in #20811
- refactor(web): the legacy sidebar keeps its caching without "use memo" by @juliusmarminge in #20793
- refactor(web): turn diff summaries keep their caching without "use memo" by @juliusmarminge in #20794
- refactor(web): the pull requests page keeps its caching without "use memo" by @juliusmarminge in #20820
- refactor(web): the terminal drawer keeps its caching without "use memo" by @juliusmarminge in #20799
- refactor(web): the model picker keeps its caching without "use memo" by @juliusmarminge in #20815
- refactor(web): pull request code tab keeps its caching without "use memo" by @juliusmarminge in #20816
- refactor(web): find reveal refs stay cached without "use memo" by @juliusmarminge in #20818
- refactor(web): the branch selector keeps its caching without "use memo" by @juliusmarminge in #20822
- refactor(web): the guide excerpt keeps its caching without "use memo" by @juliusmarminge in #20798
- refactor(web): chat composer keeps its caching without "use memo" by @juliusmarminge in #20834
- refactor(web): the usage page keeps its caching without "use memo" by @juliusmarminge in #20807
- refactor(web): the hosted browser webview keeps its caching without "use memo" by @juliusmarminge in #20824
- refactor(web): the command palette provider lookup keeps its caching without "use memo" by @juliusmarminge in #20827
- chore(web): lint rejects "use memo" directives by @juliusmarminge in #20843
- perf(web): relative "checked" labels re-render only when their text changes by @juliusmarminge in #20819
- perf(web): toggling a client setting no longer re-renders every settings row by @juliusmarminge in #20830
- perf(web): typing in the ACP registry search no longer re-renders every result row by @juliusmarminge in #20817
- perf(web): searching keybindings only renders rows entering or leaving the filter by @juliusmarminge in #20840
- perf(web): unchanged model picker rows skip re-rendering while searching by @juliusmarminge in #20838
- perf(web): router updates no longer re-render thread route consumers by @juliusmarminge in #20837
- perf(web): a minute tick no longer re-renders every sidebar thread row by @juliusmarminge in #20814
- test(web): jsdom-leftovers tests run in a real browser by @juliusmarminge in #20862
- test(web): hook-harness tests run in a real browser by @juliusmarminge in #20866
- test(web): misc-b tests run in a real browser by @juliusmarminge in #20869
- test(web): settings tests run in a real browser by @juliusmarminge in #20872
- test(web): misc-a tests run in a real browser by @juliusmarminge in #20868
- test(web): chat tests run in a real browser by @juliusmarminge in #20870
- test(web): browser tests from different checkouts no longer fight over one port by @juliusmarminge in #20875
- fix(web): chat view no longer renders twice per update by @juliusmarminge in #20847
- perf(web): markdown replies no longer re-render on reconnects and config pushes by @juliusmarminge in #20852
- perf(web): provider status pushes no longer re-render every timeline row by @juliusmarminge in #20854
- perf(client): a reconnect snapshot keeps unchanged skills and providers identical by @juliusmarminge in #20855
- perf(web): a client setting write only re-renders readers whose value changed by @juliusmarminge in #20848
- perf(web): right panel tabs no longer all re-render on unrelated chat updates by @juliusmarminge in #20853
- perf(web): opening chat and usage dialogs no longer re-renders the whole page by @juliusmarminge in #20859
- perf(web): typing in form dialogs no longer re-renders the dialog chrome by @juliusmarminge in #20842
- fix(web): a project action's error belongs to the request that opened it by @juliusmarminge in #20891
- test(web): the open-in picker test waits for the menu to close by @juliusmarminge in #20892
- perf(web): opening an image preview no longer re-renders the chat view by @juliusmarminge in #20845
- perf(web): another thread streaming no longer re-renders the app root and thread panels by @juliusmarminge in #20823
- perf(client): equal query refetches no longer re-render PR rows by @juliusmarminge in #20850
- perf(client): provider status pushes no longer re-render environment presentation consumers by @juliusmarminge in #20821
- perf(web): a provider status push no longer re-renders every provider card and model row by @juliusmarminge in #20851
- test(web): onboarding and usage tests run in a real browser by @juliusmarminge in #20902
- test(web): pr-and-diff tests run in a real browser by @juliusmarminge in #20901
- test(web): chat markdown and timeline tests run in a real browser by @juliusmarminge in #20905
- test(web): provider, usage and relationship tests run in a real browser by @juliusmarminge in #20914
- perf(web): the open thread's chat chrome no longer re-renders on every streaming tick by @juliusmarminge in #20860
- test(web): every React test runs in a real browser by @juliusmarminge in #20944
- fix(release): release tests install Chromium for the web browser tests by @juliusmarminge in #20934
- fix(server): drop V1 projections nothing reads after the V2 upgrade by @juliusmarminge in #20947
- feat(server): t3 doctor can delete the database from before 0.1.0 by @juliusmarminge in #20948
- fix(web): a snoozed thread wakes in the open chat view by @juliusmarminge in #21019
- fix(web): time-based labels update under the React Compiler by @juliusmarminge in #21026
- test(web): the right panel Escape test waits for focus to return by @juliusmarminge in #21030
- fix(web): table expand button only shows when a cell is cut off by @shivamhwp in #19782
- perf(mobile): Metro runs the React Compiler, with a coverage ratchet by @juliusmarminge in #20967
- perf(mobile): usage screens compile with the React Compiler by @juliusmarminge in #20969
- perf(mobile): Connect onboarding compiles with the React Compiler by @juliusmarminge in #20970
- perf(mobile): device preview compiles with the React Compiler by @juliusmarminge in #20971
- fix(android): foldable sidebar and layout fixes by @t3dotgg in #21071
- test(mobile): measure renders on a device by @juliusmarminge in #21001
- fix(web): Working threads can be dragged into chat as references again by @t3dotgg in #19697
- refactor(web): the command palette caches its derived lookups without "use memo" by @juliusmarminge in #21116
- feat(mobile): link, unlink and watch a thread's pull requests from its sheet by @flamboh in #20394
- test(web): the right panel Escape test advances fake frames until focus returns by @juliusmarminge in #21118
- test(web): ChatMarkdown thread find waits for highlights to settle by @juliusmarminge in #21121
- perf(web): switching threads no longer re-renders the chat view for an unchanged preview list by @juliusmarminge in #21130
- fix(server): opening a large database no longer blocks startup for minutes by @t3dotgg in #21122
- perf(web): switching threads no longer re-renders the outgoing thread's rows by @juliusmarminge in #21123
- perf(web): reasoning rows skip the tool-failure text scan by @juliusmarminge in #21146
- perf(web): pull request chains parse each link's URL once by @juliusmarminge in #21147
- refactor(mobile): Git and Agents sheet headers take theme colours from classes by @flamboh in #20409
- fix(server): Claude workflow members stream their thinking and tool calls into their threads by @juliusmarminge in #20856
- fix(web): a workflow thread opens with its phases and agents instead of its script by @juliusmarminge in #20857
- feat(mobile): pull request menu can copy or share the link by @juliusmarminge in #21250
- fix(web): center default badges in the reasoning selector by @Aforno in #21252
- fix(web): the model picker offers every saved custom model, not just the first 32 by @tiliakoos in https://github.com/pingdotgg/t3code/pull/14961
- fix(server): queued messages land after a resume that ran before them by @voltcrash in https://github.com/pingdotgg/t3code/pull/17773
- fix(server): preserve repository display casing by @cardoso-neto in https://github.com/pingdotgg/t3code/pull/19202
- fix(web): code blocks no longer jump when highlighting finishes by @akash3444 in https://github.com/pingdotgg/t3code/pull/20923
- fix(mobile): Browser address bar stays on one line on iOS by @ilyaliao in https://github.com/pingdotgg/t3code/pull/19042
- fix(mobile): keep queued-edit context in its draft by @saphid in https://github.com/pingdotgg/t3code/pull/18834
- fix(devices): keep long diagnostics from hiding device controls by @Quicksaver in https://github.com/pingdotgg/t3code/pull/19973
- fix(web): keep the diff panel head ref visible when the panel is narrow by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19089
- fix(web): maximized right panel no longer doubles the sidebar border by @akash3444 in https://github.com/pingdotgg/t3code/pull/18939
- fix(web): branch picker keeps space below the last branch by @Aforno in https://github.com/pingdotgg/t3code/pull/21159
- fix(provider-acp): name the rejected agent path on stderr and test the bash path by @only21mil in https://github.com/pingdotgg/t3code/pull/18489
- fix(web): full-screen visual replies keep a gap from the frame edge by @cravenceiling in https://github.com/pingdotgg/t3code/pull/20281
- fix(web): failed attachment uploads no longer block sending by @voida6 in https://github.com/pingdotgg/t3code/pull/20737
- fix(desktop): remove oversized bars from Hyprland SnapShot animations by @AksharP5 in https://github.com/pingdotgg/t3code/pull/10646
- fix(web): collapsed projects no longer leave a border stub in the legacy sidebar by @vaststudios in https://github.com/pingdotgg/t3code/pull/18314
- fix(web): name the web app manifest so Chrome offers to install it by @raj-sutariya in https://github.com/pingdotgg/t3code/pull/19175
- fix(server): another worktree's install no longer restarts the dev server by @Jacksondr5 in https://github.com/pingdotgg/t3code/pull/21065
- fix(web): expanded composer notices blur the thread behind them by @etherious1804 in https://github.com/pingdotgg/t3code/pull/19871
- fix(web): citation pills line up with the other composer chips by @abhijeetsingh-22 in https://github.com/pingdotgg/t3code/pull/19547
- fix(web): show native caret and selection in file comments by @fionn77 in https://github.com/pingdotgg/t3code/pull/17554
- fix(web): tapping away from the model picker on a phone no longer presses what is under it by @mkantautas in https://github.com/pingdotgg/t3code/pull/20841
- perf(server): colored terminal output no longer copies history one character at a time by @Alyx-ML in https://github.com/pingdotgg/t3code/pull/21209
- fix(web): stacked composer notices keep their right border by @NikitaMGrimm in https://github.com/pingdotgg/t3code/pull/19044
- fix(mobile): usage chart legend wraps instead of pushing the end date off-screen by @BCzyzewski in https://github.com/pingdotgg/t3code/pull/18203
- fix(web): the default-branch dialog no longer offers a feature branch it cannot create by @Mnigos in https://github.com/pingdotgg/t3code/pull/18716
- fix(web): truncate project names only when needed by @dgurney in https://github.com/pingdotgg/t3code/pull/17208
- fix(provider-cursor): installed node_modules no longer exhaust skill discovery by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19806
- fix(web): diff counts follow the selected color palette by @bitconym in https://github.com/pingdotgg/t3code/pull/18288
- fix(desktop): the SnapShot GNOME extension loads on GNOME 51 by @Mnigos in https://github.com/pingdotgg/t3code/pull/17436
- fix(web): composer host and workspace tooltips show their shortcuts by @jeprecated in https://github.com/pingdotgg/t3code/pull/21167
- fix(server): title imported Codex threads after the user request by @only21mil in https://github.com/pingdotgg/t3code/pull/20278
- fix(acp): preserve native slash command prompt shape by @Exotic209093 in https://github.com/pingdotgg/t3code/pull/19393
- fix(web): align pull request comment headers by @joshka in https://github.com/pingdotgg/t3code/pull/15341
- fix(client): retain PR links while reconnect metadata changes by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/17365
- fix(opencode): preserve native question selection flags by @JustYannicc in https://github.com/pingdotgg/t3code/pull/20882
- fix(server): reject worktree delegation from a checkout outside the project by @NikitaMGrimm in https://github.com/pingdotgg/t3code/pull/20213
- fix(server): T3 Connect retries a link rejected for an expired proof by @fixfon in https://github.com/pingdotgg/t3code/pull/18621
- fix(desktop): preview annotations no longer replace each other after a reload by @not-compromised in https://github.com/pingdotgg/t3code/pull/14360
- fix(web): stop offering a provider update that cannot clear a limited-support warning by @seanGSISG in https://github.com/pingdotgg/t3code/pull/17676
- fix(codex): Finder metadata no longer blocks shadow-home setup by @Ajraba04 in https://github.com/pingdotgg/t3code/pull/18991
- fix(server): html previews say how their browser exited by @nkoynov in https://github.com/pingdotgg/t3code/pull/16872
- fix(server): report spawn ENOTDIR as a spawn error instead of a defect by @gabrielrojasc in https://github.com/pingdotgg/t3code/pull/14345
- fix(desktop): accept existing Hyprland SnapShot shortcuts by @AksharP5 in https://github.com/pingdotgg/t3code/pull/10658
- fix(web): show a real arrow in the context compacted divider by @Iweisc in https://github.com/pingdotgg/t3code/pull/20326
- fix(desktop): keep disabled backends stopped after failed updates by @saphid in https://github.com/pingdotgg/t3code/pull/18414
- perf(web): reveal nested files faster by @gchen0002 in https://github.com/pingdotgg/t3code/pull/21048
- fix(server): browser control replies no longer wait behind old frames on slow links by @shivamhwp in https://github.com/pingdotgg/t3code/pull/20290
- fix(server): Codex threads get the whole T3 orchestration instructions by @lastobelus in https://github.com/pingdotgg/t3code/pull/18415
- fix(server): a /compact stopped by the Claude usage limit now fails by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19583
- fix(server): reject unresolved explicit preview tabs by @aravhawk in https://github.com/pingdotgg/t3code/pull/19737
- fix(server): keep WinGet Claude installs manual-only instead of running claude update by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19517
- fix(desktop): local network pairing links skip idle bridges and tunnels by @TinBane in https://github.com/pingdotgg/t3code/pull/18085
- fix(server): backend children no longer count as desktop resources by @jetpham in https://github.com/pingdotgg/t3code/pull/19645
- perf(server): skip unused probes when switching Git refs by @IfkumRfnl in https://github.com/pingdotgg/t3code/pull/20140
- fix(source-control): fix forgejo check details links by @RJWadley in https://github.com/pingdotgg/t3code/pull/18434
- fix(web): keep known preview tabs while the session list refreshes by @saphid in https://github.com/pingdotgg/t3code/pull/14955
- fix(web): sidebar update pill shows updates on non-default provider instances by @abdurahmon27 in https://github.com/pingdotgg/t3code/pull/14745
- fix(usage): show Antigravity Gemini limits when one quota endpoint omits them by @pauliusiv123-rgb in https://github.com/pingdotgg/t3code/pull/20081
- fix(cursor): explain model rejections from the account catalog by @StiensWout in https://github.com/pingdotgg/t3code/pull/19678
- fix(web): long approval commands wrap inside the composer by @extoci in https://github.com/pingdotgg/t3code/pull/17802
- fix(web): pending questions no longer squash the composer on narrow windows by @MatthewFeroz in https://github.com/pingdotgg/t3code/pull/20391
- fix(web): switched-off controls stay visible in dark mode by @Gigioxx in https://github.com/pingdotgg/t3code/pull/14984
- fix(mobile): fresh Android builds no longer crash on launch by @MarMarLabs in https://github.com/pingdotgg/t3code/pull/20118
- fix(mobile): image viewer no longer flashes the chat between swipes on Android by @bitmvk in https://github.com/pingdotgg/t3code/pull/20898
- fix(shared): keep quoted Git file names intact by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/19371
- fix(web): close the gap between the composer and its bottom toolbar by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/12952
- fix(desktop): Install Linux theme icons named after the app id by @mwolson in https://github.com/pingdotgg/t3code/pull/14471
- fix(web): a prompt link opened from a thread no longer lands in that thread by @Mnigos in https://github.com/pingdotgg/t3code/pull/19326
- fix(mobile): reopening the app no longer shows a "No terminal output" alert by @shivamhwp in https://github.com/pingdotgg/t3code/pull/20262
- fix(web): show reset credit progress after the usage popover closes by @GabrielCoelhoCruz in https://github.com/pingdotgg/t3code/pull/19808
- perf(server): find in a long thread no longer re-parses every message on each keystroke by @bompus in https://github.com/pingdotgg/t3code/pull/20801
- fix(desktop): prevent duplicate backends on macOS by @arhammahajan in https://github.com/pingdotgg/t3code/pull/19554
- fix(usage): fall back to GitHub API for model prices by @kyziq in https://github.com/pingdotgg/t3code/pull/21055
- fix(web): the Tailscale HTTPS row says detection is off instead of telling users to start Tailscale by @Mnigos in https://github.com/pingdotgg/t3code/pull/18758
- fix(server): a repository on an unrecognized host no longer fails every PR status lookup by @AdEx-Partners-DE in https://github.com/pingdotgg/t3code/pull/19030
- fix(server): stop restoring stale Pi models by @poterstar in https://github.com/pingdotgg/t3code/pull/18498
- fix(server): stop grouping unrelated repos that only have a local git remote by @adambuchweitz in https://github.com/pingdotgg/t3code/pull/13129
- fix(server): keep characters intact in generated commit subjects by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/19181
- fix(mobile): account badges no longer clip wide initials like WO by @vitalyiegorov in https://github.com/pingdotgg/t3code/pull/15908
- fix(server): provider logs skip Claude thinking-token counters by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19789
- fix(relay): stop held webhook deliveries when the inbox is cleared by @saphid in https://github.com/pingdotgg/t3code/pull/18838
- fix(provider-muse): show readable model names in the picker by @Marve10s in https://github.com/pingdotgg/t3code/pull/19100
- perf(server): skip idle port discovery on Linux and macOS by @nateEc in https://github.com/pingdotgg/t3code/pull/20975
- fix(shared): detect *.ghe.com remotes as GitHub by @torjusb in https://github.com/pingdotgg/t3code/pull/19362
- fix(mobile): serialize initial device identity creation by @saphid in https://github.com/pingdotgg/t3code/pull/18837
- fix(relay): reopening the app ends a finished iOS Live Activity by @MohtashamMurshid in https://github.com/pingdotgg/t3code/pull/20265
- fix(mobile): long commands no longer freeze Android work-log taps by @Pipyakas in https://github.com/pingdotgg/t3code/pull/19238
- fix(desktop): bound preview recording warmup by @Quicksaver in https://github.com/pingdotgg/t3code/pull/20085
- fix(web): a failed run shows Failed, not Completed by @JustYannicc in https://github.com/pingdotgg/t3code/pull/20996
- fix(server): opening a folder in File Explorer no longer lands on the wrong folder by @Aquaspaces in https://github.com/pingdotgg/t3code/pull/18549
- fix(devices): skip Apple device discovery on non-Mac hosts by @tris203 in https://github.com/pingdotgg/t3code/pull/18159
- fix(web): follow configured desktop update repository by @JustYannicc in https://github.com/pingdotgg/t3code/pull/21210
- fix(desktop): paste and other editing shortcuts work in every browser tab by @imqdee in https://github.com/pingdotgg/t3code/pull/19452
- fix(web): Antigravity setup card separators match other settings cards by @MONKE2525E in https://github.com/pingdotgg/t3code/pull/20088
- fix(mobile): show complete unwrapped diff lines containing tabs by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/14605
- fix(web): explain pull request diff load failures by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/19945
- fix(acp): request ids stay within signed 32-bit so Kotlin agents answer by @Mnigos in https://github.com/pingdotgg/t3code/pull/15374
- fix(antigravity): keep the runtime version learned from ACP by @pauljones0 in https://github.com/pingdotgg/t3code/pull/20980
- perf(mobile): clean Android builds keep their Gradle and native caches by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/20069
- fix(server): clear automatic PRs from other branches by @Brechard in https://github.com/pingdotgg/t3code/pull/20223
- fix(server): Bitbucket threads settle after their pull request merges by @RealDoc06 in https://github.com/pingdotgg/t3code/pull/19937
- fix(server): a steered send no longer leaves a subagent task running by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19019
- fix(opencode): retry shared database locks during startup by @luke2x in https://github.com/pingdotgg/t3code/pull/17922
- fix(server): threads no longer settle after merging PRs they were asked to merge by @Zeus-Deus in https://github.com/pingdotgg/t3code/pull/18232
- fix(server): held assistant drafts keep their position when flushed at turn end by @fixfon in https://github.com/pingdotgg/t3code/pull/19023
- fix(ssh): keep draining tunnel diagnostics after readiness by @saphid in https://github.com/pingdotgg/t3code/pull/18832
- fix(web): threads finishing together play one completion sound by @luke2x in https://github.com/pingdotgg/t3code/pull/17540
- fix(mobile): a failed draft save no longer blocks sending an uploaded attachment by @shivamhwp in https://github.com/pingdotgg/t3code/pull/21101
- fix(web): move keyboard interaction out of the closing right panel by @saphid in https://github.com/pingdotgg/t3code/pull/14786
- fix(web): show math labels in Mermaid diagrams by @NikitaMGrimm in https://github.com/pingdotgg/t3code/pull/16198
- fix(web): device tool update failures show the server error, not network advice by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/17569
- fix(web): prevent provider wizard footer overlap while loading by @akash3444 in https://github.com/pingdotgg/t3code/pull/18609
- fix(mobile): Live Activities keep updating after iOS rotates their push token by @aididhaiqal in https://github.com/pingdotgg/t3code/pull/21134
- fix(mobile): keep composer within folded screen without leaving the thread by @PixPMusic in https://github.com/pingdotgg/t3code/pull/18574
- fix(server): a branch on the only remote is not a fork when there is no origin by @only21mil in https://github.com/pingdotgg/t3code/pull/20412
- fix(mobile): Android PR filter chips no longer crowd the sheet corner by @none23 in https://github.com/pingdotgg/t3code/pull/20889
- fix(web): refresh stale desktop endpoints when Connections reopens by @arthurkatcher in https://github.com/pingdotgg/t3code/pull/16026
- fix(shared): preserve escaped quotes in launch arguments by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/19525
- fix(server): preserve explicit effort for unknown Claude models by @JustYannicc in https://github.com/pingdotgg/t3code/pull/20849
- fix(web): show No project in scratch thread breadcrumbs by @gjw4118 in https://github.com/pingdotgg/t3code/pull/19721
- fix(web): keep collapsed diff file headers reachable by @AndreiShenets in https://github.com/pingdotgg/t3code/pull/20333
- fix(mobile): Chinese input no longer breaks before a skill pill on iOS by @ilyaliao in https://github.com/pingdotgg/t3code/pull/17614
- fix(mobile): resize quota bars when filtering environments by @PixPMusic in https://github.com/pingdotgg/t3code/pull/19031
- fix(web): center composer control labels with their icons by @Aforno in https://github.com/pingdotgg/t3code/pull/21241
- fix(server): warn when connect unlink leaves the relay record by @macodev00 in https://github.com/pingdotgg/t3code/pull/17743
- fix(mobile): sheet action buttons text alignment by @camchis in https://github.com/pingdotgg/t3code/pull/11260
- fix(shared): match Windows home paths case-insensitively in file links by @hogeheer499-commits in https://github.com/pingdotgg/t3code/pull/19627
- fix(server): t3_preview_close reports the server browser's refusal by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/17429
- fix(desktop): reload the main renderer after it is killed by @spencermorris04 in https://github.com/pingdotgg/t3code/pull/20300
- fix(mobile): preserve line counts for withheld pull request hunks by @saphid in https://github.com/pingdotgg/t3code/pull/18836
- fix(server): SSH device-host tunnels no longer inherit ControlMaster by @kcazin in https://github.com/pingdotgg/t3code/pull/17440
- fix(provider-acp): stop claiming agents' own tools named like T3 tools by @JWhitleyWork in https://github.com/pingdotgg/t3code/pull/20376
- fix(client-runtime): a dropped session no longer reads as a failed connection by @otavio in https://github.com/pingdotgg/t3code/pull/18469
- fix(server): slow OpenCode wrappers no longer show as unavailable by @josephv123 in https://github.com/pingdotgg/t3code/pull/16544
- fix(web): let keyboard users reach why reviewer/label changes are unavailable by @saphid in https://github.com/pingdotgg/t3code/pull/14785
- fix(server): desktop backend now exits when its launcher dies by @bompus in https://github.com/pingdotgg/t3code/pull/20277
- fix(composer): paths such as /tmp/build.sh no longer open the slash menu by @NikitaMGrimm in https://github.com/pingdotgg/t3code/pull/19671
- fix(mobile): preserve server matches in file search by @saphid in https://github.com/pingdotgg/t3code/pull/18388
- fix(server): refresh local status after an automatic pull fails by @Alb11747 in https://github.com/pingdotgg/t3code/pull/19686
- fix(grok): preserve native question multi-select by @JustYannicc in https://github.com/pingdotgg/t3code/pull/20881
- perf(web): sidebar working timers share one clock by @Alyx-ML in https://github.com/pingdotgg/t3code/pull/21195
- fix(scripts): leave type-only packages out of third-party notices by @leorivastech in https://github.com/pingdotgg/t3code/pull/14627
- fix(web): handle Backspace when Android omits the key code by @JIAFALSEDREAM in https://github.com/pingdotgg/t3code/pull/18063
- fix(server): allow restarts when a stale runtime record matches the server pid by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/20336
- fix(desktop): ignore snapshot shortcut repeats during flight by @MatthewFeroz in https://github.com/pingdotgg/t3code/pull/11037
- fix(client-runtime): queries stay pending while a connection hands off by @tris203 in https://github.com/pingdotgg/t3code/pull/18155
- fix(server): Muse turns stopped by the subscription quota are Limited, not failed by @ntindle in https://github.com/pingdotgg/t3code/pull/18266
- fix(server): load merge request diffs on older GitLab by @aravhawk in https://github.com/pingdotgg/t3code/pull/15886
- fix(server): take a delegated task's result from its newest turn item by @hinescreative in https://github.com/pingdotgg/t3code/pull/19058
- fix(server): logs print causes instead of [Object] by @saphid in https://github.com/pingdotgg/t3code/pull/16642
- fix(web): keep font picker keyboard selection in sync by @asfires in https://github.com/pingdotgg/t3code/pull/9814
- fix(mobile): prevent environment row taps from swallowing switches by @Rohithkadaveru in https://github.com/pingdotgg/t3code/pull/17677
- fix(web): new project options scroll above the footer by @0bkevin in https://github.com/pingdotgg/t3code/pull/17064
- fix(server): stop retrying saved checkpoints after refresh failures by @shshajek-cpu in https://github.com/pingdotgg/t3code/pull/20195
- fix(server): MCP thread reads skip the item scan they filter to nothing by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/17038
- fix(web): copied task lists keep their nested items and code blocks by @SoroushRF in https://github.com/pingdotgg/t3code/pull/14778
- fix(server): t3 run from a T3 terminal no longer trips on the service's launcher context by @playcations in https://github.com/pingdotgg/t3code/pull/14263
- fix(server): keep a remote server update running when the client disconnects by @macodev00 in https://github.com/pingdotgg/t3code/pull/18980
- fix(relay): resolve cloudflared using the hydrated PATH by @Exotic209093 in https://github.com/pingdotgg/t3code/pull/19444
- fix(mobile): branch naming text saves when you leave the screen by @adityavardhansharma in https://github.com/pingdotgg/t3code/pull/18381
- fix(web): custom model price cells take only numbers by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/19245
- fix(web): standalone auth pages scroll when the card is taller than the window by @arhammahajan in https://github.com/pingdotgg/t3code/pull/19603
- fix(server): discover Claude skills from add-dir launch args by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/20167
- fix(mobile): show assistant quotes as text in the queue sheet by @GLDRoger in https://github.com/pingdotgg/t3code/pull/19007
- perf(server): OpenCode 2 stops writing unchanged session status updates by @Abdullah1738 in https://github.com/pingdotgg/t3code/pull/16775
- fix(web): give archive actions more icon spacing by @voltcrash in https://github.com/pingdotgg/t3code/pull/19769
- fix(server): checkpoints no longer expire a split index the repo still uses by @sheehanmunim in https://github.com/pingdotgg/t3code/pull/17074
- fix(web): usage limit recovery errors no longer crush the composer banner by @patryksztuczka in https://github.com/pingdotgg/t3code/pull/17457
- fix(desktop): local desktop builds no longer crash when a GitHub token is in the shell by @neominik in https://github.com/pingdotgg/t3code/pull/19277
- fix(mobile): keep PR activity in place during pull-to-refresh by @Claudesaul in https://github.com/pingdotgg/t3code/pull/20196
- fix(web): a resumed subagent's notification row shows it running, not failed by @TinBane in https://github.com/pingdotgg/t3code/pull/18099
- fix(preview): isolate tabs for threads sharing a provider session by @TDanks2000 in https://github.com/pingdotgg/t3code/pull/18146
- fix(mobile): Android sheets scroll to the end and keep their buttons on screen by @shivamhwp in https://github.com/pingdotgg/t3code/pull/20284
- fix(shared): choose duration unit after rounding seconds by @kvnloo in https://github.com/pingdotgg/t3code/pull/20299
- fix(mobile): the status pill label no longer flickers when it is truncated by @voida6 in https://github.com/pingdotgg/t3code/pull/20724
- fix(mobile): remove orphaned temp files after atomic write failures by @kvnloo in https://github.com/pingdotgg/t3code/pull/20736
- fix(mcp): optional tool parameters accept the null their schema advertises by @only21mil in https://github.com/pingdotgg/t3code/pull/20411
- fix: database errors show actionable recovery guidance by @saphid in https://github.com/pingdotgg/t3code/pull/20748
- fix(web): stored pull request details keep only the 20 most recent by @tiliakoos in https://github.com/pingdotgg/t3code/pull/21245
- fix(server): publishing explains why the first push failed by @Salloxy in https://github.com/pingdotgg/t3code/pull/19219
- fix(server): the V1 transcript import no longer stalls on each thread's V1 events by @derektrimm in https://github.com/pingdotgg/t3code/pull/21050
- fix(web): a comment under a composer quote no longer joins the quote by @fixfon in https://github.com/pingdotgg/t3code/pull/19450
- fix(usage): a CLIProxyAPI hub served under a path keeps its path by @Pipyakas in https://github.com/pingdotgg/t3code/pull/19336
- fix(server): agent-driven threads keep their recent rows when checkpoint data is large by @fixfon in https://github.com/pingdotgg/t3code/pull/21187
- fix(server): reverting a Claude thread to a subagent-only turn no longer breaks it by @fixfon in https://github.com/pingdotgg/t3code/pull/21151
- fix(server): forks no longer inherit pull request watches by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/16623
- fix(web): keep answered questions visible after a turn settles by @colonelpanic8 in https://github.com/pingdotgg/t3code/pull/21086
- fix(server): keep scheduled-task intervals on elapsed time across DST by @Sypher760-gif in https://github.com/pingdotgg/t3code/pull/15768
- fix(source-control): compare check run timestamps by instant by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/20094
- fix(web): the Diff tab keeps its scope when you switch tabs by @fixfon in https://github.com/pingdotgg/t3code/pull/20297
- fix(provider-core): stop false updates for versionless casks by @RVZO6 in https://github.com/pingdotgg/t3code/pull/20386
- fix(server): honor configured remote diff bases by @NikitaMGrimm in https://github.com/pingdotgg/t3code/pull/16453
- fix(client-runtime): Update clears the block on a host that is already compatible by @pujitha24 in https://github.com/pingdotgg/t3code/pull/18563
- fix(provider-cursor): a symlinked skills root is no longer scanned twice by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/18664
- fix(server): a disabled bootstrap provider no longer stops startup by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/20035
- fix(server): watching a pull request again no longer repeats news the thread already got by @shivamhwp in https://github.com/pingdotgg/t3code/pull/21155
- fix(server): tell users how to update an install T3 cannot update by @mkantautas in https://github.com/pingdotgg/t3code/pull/18110
- fix(server): disabled providers no longer report missing executables by @Ranga-Prasath-22 in https://github.com/pingdotgg/t3code/pull/18109
- fix(server): keep workspace skills when provider health fails by @NikitaMGrimm in https://github.com/pingdotgg/t3code/pull/18309
- fix(desktop): keypad shortcuts and Ctrl+wheel zoom the app by @0xKa in https://github.com/pingdotgg/t3code/pull/21200
- fix(server): setup actions no longer run for threads in the main checkout by @ViaxCo in https://github.com/pingdotgg/t3code/pull/18891
- fix(web): thread drops land in the visible thread's draft by @Sinan53x in https://github.com/pingdotgg/t3code/pull/20024
- fix(server): failed Cursor turns show Cursor's reason by @nkoynov in https://github.com/pingdotgg/t3code/pull/16146
- fix(web): honor the send shortcut for follow-up actions by @DazKins in https://github.com/pingdotgg/t3code/pull/20929
- fix(web): image viewer close button stays clear of the window controls by @otavio in https://github.com/pingdotgg/t3code/pull/13919
- fix(server): parent Stop clears orphaned delegated follow-ups by @1kuna in https://github.com/pingdotgg/t3code/pull/20310
- fix(opencode): OpenCode servers stop with a killed server on Windows by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/21103
- test(web): preview session sync and device tool update tests run in a real browser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21274
- fix(web): recognize Windows terminal file links by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/21199
- fix(shared): Windows saves no longer fail while a scanner holds the file by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/21062
- fix(server): recover after Claude capability probe failures by @JustYannicc in https://github.com/pingdotgg/t3code/pull/21042
- fix(browser): preserve native file pickers in desktop previews by @Gustav0ar in https://github.com/pingdotgg/t3code/pull/20994
- fix(provider-core): pnpm-global updates approve the provider's build by @voida6 in https://github.com/pingdotgg/t3code/pull/20796
- fix(server): usage-limit sweep stops scanning every run each tick by @Alyx-ML in https://github.com/pingdotgg/t3code/pull/21191
- fix(provider-grok): report model windows for handoff budgets by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/20180
- fix(server): cancel preparing runs when archiving threads by @Quicksaver in https://github.com/pingdotgg/t3code/pull/20073
- fix(desktop): a failed macOS test capture no longer blames the GNOME extension by @luke2x in https://github.com/pingdotgg/t3code/pull/18857
- fix(web): scrolling a huge thread's history no longer loops the message list by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21269
- fix(web): keep compressed image chips in their original draft by @saphid in https://github.com/pingdotgg/t3code/pull/18393
- fix(server): a Limits hub failure names its TLS, HTTP, or timeout cause by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/18168
- fix(server): Claude wake runs no longer end empty while Claude is still answering by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/15816
- fix(web): Compose input no longer adds stray quotes by @JohnnyBill in https://github.com/pingdotgg/t3code/pull/20350
- fix(forgejo): wake PR watches for edited comments by @Dunky13 in https://github.com/pingdotgg/t3code/pull/18120
- fix(mobile): avoid nested dropdowns for single tools by @StiensWout in https://github.com/pingdotgg/t3code/pull/15674
- fix(server): apps opened from T3 Code no longer inherit ELECTRON_RUN_AS_NODE by @Jord-JD in https://github.com/pingdotgg/t3code/pull/20206
- fix(web): show an empty result when file search finds no matches by @johanovskyt in https://github.com/pingdotgg/t3code/pull/17132
- fix(azure-devops): expose the latest source revision for review guides by @nateEc in https://github.com/pingdotgg/t3code/pull/20977
- fix(server): read Claude context usage from stream message deltas by @camilopaezz in https://github.com/pingdotgg/t3code/pull/19416
- fix(server): stop the branch rename before cancelling worktree setup by @saphid in https://github.com/pingdotgg/t3code/pull/18443
- fix(server): find existing PR worktrees beyond the first branch page by @saphid in https://github.com/pingdotgg/t3code/pull/18407
- fix(mobile): keep chat images visible when opening the viewer by @Claudesaul in https://github.com/pingdotgg/t3code/pull/20188
- fix(web): restore palette focus when no composer is mounted by @saphid in https://github.com/pingdotgg/t3code/pull/18850
- fix(desktop): unregistering a WSL backend now stops its supervisor by @pujitha24 in https://github.com/pingdotgg/t3code/pull/18575
- fix(web,mobile): limit bars use each provider's chart color by @charlielockyer-rice in https://github.com/pingdotgg/t3code/pull/16936
- fix(desktop): exclude unrelated VPN addresses from Tailscale pairing by @arthurkatcher in https://github.com/pingdotgg/t3code/pull/15753
- fix(server): re-snoozing a woken thread to the same wake time hides it again by @JonasFocus in https://github.com/pingdotgg/t3code/pull/14887
- fix(server): t3_thread_send reports why the orchestrator refused a message by @ddonathan in https://github.com/pingdotgg/t3code/pull/21027
- fix(web): render stored HEIC attachments by @Gigioxx in https://github.com/pingdotgg/t3code/pull/10429
- fix(web): truncate draft project names in the middle by @bentbrain in https://github.com/pingdotgg/t3code/pull/18858
- fix(server): report missing Node on SSH device hosts instead of a connection failure by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/20377
- fix(server): preserve unrelated branch upstreams when opening fork PRs by @saphid in https://github.com/pingdotgg/t3code/pull/18413
- fix(server): a Claude hook that drops a prompt now shows its reason by @fixfon in https://github.com/pingdotgg/t3code/pull/21231
- fix(mobile): iOS builds on Xcode 27.0 no longer fail on 27.1-only hinge APIs by @JeremiahDJordan in https://github.com/pingdotgg/t3code/pull/18913
- fix(server): ACP agents that need no sign-in drop models they stopped advertising by @Mnigos in https://github.com/pingdotgg/t3code/pull/18807
- fix(source-control): fix watch failures on large forgejo PRs by @RJWadley in https://github.com/pingdotgg/t3code/pull/18432
- fix(server): explain root browser launch failures instead of pointing to setup by @mxdhavgautam in https://github.com/pingdotgg/t3code/pull/19846
- fix(server): reject thread.create for an existing id by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/19704
- fix(server): MCP thread list and read report every linked pull request by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/17454
- fix(markdown): Windows paths in messages keep their backslashes by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/21069
- chore(lint): reject use* functions that call no hooks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21260
- fix(server): replace Claude sessions that never saved a message by @maria-rcks in https://github.com/pingdotgg/t3code/pull/19637
- fix(web): terminal drawer covers the turn minimap by @sairajchouhan in https://github.com/pingdotgg/t3code/pull/14383
- fix(server): Claude subagents keep their model after a usage-limit notice by @jieyuexing in https://github.com/pingdotgg/t3code/pull/17097
- fix(web): collapsed composer centers drafts that start with a list by @5knnbdwm in https://github.com/pingdotgg/t3code/pull/17820
- fix(server): a full Claude context window no longer shows as a usage limit by @fixfon in https://github.com/pingdotgg/t3code/pull/19848
- perf(server): skip unused diffs for user-written commit messages by @Microck in https://github.com/pingdotgg/t3code/pull/19605
- test(server): drop the duplicate Path import in the Grok adapter test by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21308
- test(server): a fork that stops its own PR watch keeps it as its ended watch by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21309
- test(server): wait for a workflow member's late reply to reach the test's event log by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21310
- test(web): file browser and attachment image tests run in a real browser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21297
- test(mobile): branch naming and server controls settings tests load again by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21293
- test(mobile): a completed render splits the work log into lone-call rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21295
- perf(mobile): settings screens compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21119
- perf(mobile): files, review and remaining settings screens compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21124
- perf(mobile): home, workspace layout and overlay pieces compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21133
- perf(mobile): pull request screens compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21136
- perf(mobile): composer, connections, add project and shared state compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21137
- perf(mobile): new task flow, git sheets, thread settings and work log compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21141
- perf(mobile): thread composer, route screen and queue control compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21142
- perf(mobile): thread detail screen and navigation sidebar compile with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21145
- perf(mobile): thread rows no longer re-render the list when another thread streams by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21255
- perf(mobile): composer draft no longer re-renders the thread screen when typing by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21261
- perf(mobile): ThreadFeed compiles with the React Compiler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21268
- feat(server): send telemetry through ingest.t3.codes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/15028
- fix(devices): Android fold controls work over T3 Connect by @t3dotgg in https://github.com/pingdotgg/t3code/pull/21156
- test(web): burst-merged jsdom tests run in a real browser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21318
- fix(web): keep the composer chin below the input by @t3dotgg in https://github.com/pingdotgg/t3code/pull/21345
- fix(mobile): sheets close with an X and confirm with a checkmark by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21319
- fix(tailscale): a slow tailscale status no longer hides Tailscale in Settings by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/21057
- chore(deps): web and mobile share React 19.3 from the catalog by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21376
- fix(server): migrate legacy thread pull request links by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/19129
- fix(server): a failed Codex turn no longer traps the queue behind its subagents by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21366
- feat(server): count which product features people use by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/15921
- feat(server): count which T3 MCP tools agents use by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/15913
- perf(web): HTML renders drop the loading skeleton by @maria-rcks in https://github.com/pingdotgg/t3code/pull/21480
- fix(mobile): sent steer and queued messages are marked like desktop by @flamboh in https://github.com/pingdotgg/t3code/pull/21417
- fix(server): keep queued subagent status in sync by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/21487
- perf(web): virtualize large changed-file trees by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/21482
- fix(pull-requests): distinguish skipped checks with a slash icon by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/21498
- fix(mobile): crash report shows the store build number by @mohamed-akef in https://github.com/pingdotgg/t3code/pull/16052
- fix(files): load PDFs in browser previews by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/21095
- fix(server): device-host SSH tunnels exit when the server dies by @kcazin in https://github.com/pingdotgg/t3code/pull/17448
- fix(web): Open in → Finder in the file preview opened the file in its default app instead of revealing it by @jamesvillarrubia in https://github.com/pingdotgg/t3code/pull/16955
- fix(web): project actions no longer reuse the right-panel terminal by @TonybynMp4 in https://github.com/pingdotgg/t3code/pull/18340
- fix(web): the device screen keeps focus when typing or returning to the window by @haydenkz in https://github.com/pingdotgg/t3code/pull/14534
- fix(server): keep browser input responsive during slow navigation by @josephv123 in https://github.com/pingdotgg/t3code/pull/16691
- fix(grok): a Homebrew-installed Grok updates through brew and is compared against the cask by @Mnigos in https://github.com/pingdotgg/t3code/pull/18772
- fix(antigravity): read usage from each instance data directory by @fixfon in https://github.com/pingdotgg/t3code/pull/17769
- fix(server): reconnecting no longer reopens a closed terminal by @Gigioxx in https://github.com/pingdotgg/t3code/pull/18444
- fix(shared): preview addresses containing another URL open instead of searching by @maxwellyoung in https://github.com/pingdotgg/t3code/pull/17943
- fix(server): ACP Registry loads on networks with slow IPv4 connects by @Gigioxx in https://github.com/pingdotgg/t3code/pull/15054
- fix(preview): keep desktop-rendered tabs out of idle cleanup by @TDanks2000 in https://github.com/pingdotgg/t3code/pull/18147
- fix(server): auto-delivered messages queue between provider turns by @Gigioxx in https://github.com/pingdotgg/t3code/pull/15691
- fix(server): OpenCode 2 threads keep T3's tools after an idle project is evicted by @voltcrash in https://github.com/pingdotgg/t3code/pull/16796
- fix(server): install the advertised version for pnpm-global provider updates by @RaphaelFakhri in https://github.com/pingdotgg/t3code/pull/14295
- fix(web): ignore right-clicks in the flat Device viewport by @samaluk in https://github.com/pingdotgg/t3code/pull/17020
- fix(web): "No project" picker shows its full label on the new-thread screen by @flamboh in https://github.com/pingdotgg/t3code/pull/21504
- fix(web): up-arrow recall skips automation and agent messages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/21510
- fix(desktop): reattach a browser tab whose debugger Chromium dropped by @tobymarks in https://github.com/pingdotgg/t3code/pull/17525
- fix(web): Integrations settings show one Browser section, not two by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/18264
- fix(web): hide the empty reset badge on unstarted limit windows by @akash3444 in https://github.com/pingdotgg/t3code/pull/18579
- fix(cli): browser setup installs missing fonts by @adrilasar in https://github.com/pingdotgg/t3code/pull/17570
- fix(web,mobile): queued messages no longer say "From queue" once sent by @flamboh in https://github.com/pingdotgg/t3code/pull/21474
- fix(web): refresh embedded assets in markdown file previews by @Saikrishna1876 in https://github.com/pingdotgg/t3code/pull/18647
- fix(web,mobile): keep reporting client activity after an interrupted report by @skyhong2002 in https://github.com/pingdotgg/t3code/pull/15738
- fix(web): paste terminal text once and clear the shortcut on release by @t3dotgg in https://github.com/pingdotgg/t3code/pull/19366
- fix(server): fall back when checkpoint fsync is unsupported by @mdshzb04 in https://github.com/pingdotgg/t3code/pull/14411
- fix(preview): browser tabs no longer go blank when the tab list reorders by @mkiera in https://github.com/pingdotgg/t3code/pull/13799
- fix(server): terminals no longer inherit the launching tmux session by @UzEE in https://github.com/pingdotgg/t3code/pull/13359
- fix(mobile): gallery images shrink back into their thumbnail on close by @flamboh in https://github.com/pingdotgg/t3code/pull/21481
- fix(terminal): keep project script commands out of shell history by @otavio in https://github.com/pingdotgg/t3code/pull/13903
- fix(shared): port checks no longer fail on hosts with IPv6 disabled by @mr-joom in https://github.com/pingdotgg/t3code/pull/15044
- fix(mobile): load iOS device streams over HTTP on Android by @akhial in https://github.com/pingdotgg/t3code/pull/14284
- fix(web): reveal folded imported responses when opening citations by @saphid in https://github.com/pingdotgg/t3code/pull/18423
- fix(usage): show empty sessions when weekly quota is exhausted by @AlexChambers in https://github.com/pingdotgg/t3code/pull/20349
- fix(web): keep device results in the thread that started them by @saphid in https://github.com/pingdotgg/t3code/pull/16040
- fix(desktop): built-in browser sites can no longer post notifications without permission by @fixfon in https://github.com/pingdotgg/t3code/pull/20237
- fix(mobile): Browser menu pastes the phone's clipboard into the page by @spiky02plateau in https://github.com/pingdotgg/t3code/pull/19648
- fix(shared): terminal labels after non-BMP letters stay plain text by @kumar-karan in https://github.com/pingdotgg/t3code/pull/19968
- fix(connect): stop reporting a loading cloud session as a sign-in change by @Project516 in https://github.com/pingdotgg/t3code/pull/11013
- fix(terminal): fish no longer stalls 10s on startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/19685
- fix(mobile): Android terminal input no longer triggers password autofill by @voida6 in https://github.com/pingdotgg/t3code/pull/20051
- fix(shared): T3 Connect devices connect to hosts with a Latvian, Lithuanian, Basque or Azerbaijani locale by @shivamhwp in https://github.com/pingdotgg/t3code/pull/19616
- fix(server): thread-bound scheduled tasks run on the thread's current provider by @otavio in https://github.com/pingdotgg/t3code/pull/18467
- fix(server,mobile): a message you send resumes a held queue, and mobile can resume one by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21473
- feat(web): choose the in-app browser's search engine by @bmdavis419 in https://github.com/pingdotgg/t3code/pull/17688
- fix(mobile): settings no longer tell you to update when you're up to date by @shivamhwp in https://github.com/pingdotgg/t3code/pull/21688
- test(web): fix the workflow script test that times out on busy CI runners by @shivamhwp in https://github.com/pingdotgg/t3code/pull/21699
- fix(mobile): a file shared into a new task shows in the composer before you send by @shivamhwp in https://github.com/pingdotgg/t3code/pull/21659
- fix(desktop): a cold WSL distro gets 30 seconds to boot instead of 10 by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/21070
- fix(web): detect software keyboard before handling composer Enter by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/21763
- fix(mobile): the Git sheet uses the standard list rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21785
- fix(server): changed files keep their real paths for renames and non-ASCII names by @Atharvsinh-codez in https://github.com/pingdotgg/t3code/pull/20175
- fix(server): a message promoted into a stopping run stays queued by @lbgos in https://github.com/pingdotgg/t3code/pull/16926
- perf(mobile): streaming re-renders less on the open thread screen by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/20963
- feat(usage): show even-pace marks on Limits bars by @flamboh in https://github.com/pingdotgg/t3code/pull/14477
- fix(web): Usage hourly labels follow the Time format setting by @mInrOz in https://github.com/pingdotgg/t3code/pull/15575
- fix(web): stop repeating the subagent name in the waiting banner by @saphid in https://github.com/pingdotgg/t3code/pull/16022
- fix(web): Cmd+O no longer opens the editor more than once by @5knnbdwm in https://github.com/pingdotgg/t3code/pull/18983
- fix(web): hoist favorited legacy models to the top of the model picker by @TonybynMp4 in https://github.com/pingdotgg/t3code/pull/11933
- fix(server): a rollback blocked by Git's index lock says so instead of a generic error by @shivamhwp in https://github.com/pingdotgg/t3code/pull/11340
- fix(mobile): expanded tool-call groups keep following new calls by @nekohasekai in https://github.com/pingdotgg/t3code/pull/15747
- fix(web): going back in the command palette keeps the search that led there by @saphid in https://github.com/pingdotgg/t3code/pull/15940
- fix(web): changing a project's model no longer keeps the old model's options by @yaacovcorcos in https://github.com/pingdotgg/t3code/pull/16581
- fix(web): preserve snapshot thumbnail context and detail by @maria-rcks in https://github.com/pingdotgg/t3code/pull/18440
- fix(web): keep expanded tool actions usable from the keyboard by @saphid in https://github.com/pingdotgg/t3code/pull/18831
- fix(usage): Claude usage no longer lists a
<synthetic>model by @tris203 in https://github.com/pingdotgg/t3code/pull/14672 - fix(server): release webhook claims when acceptance fails by @saphid in https://github.com/pingdotgg/t3code/pull/18820
- fix(desktop): make the annotation editor border and shadow actually render by @PollyGlot in https://github.com/pingdotgg/t3code/pull/9406
- fix(server): Claude follow-ups no longer fail in Auto on models without Auto by @Gigioxx in https://github.com/pingdotgg/t3code/pull/15687
- fix(web): reopening Connections picks up new network addresses by @lnieuwenhuis in https://github.com/pingdotgg/t3code/pull/15840
- fix(client): MCP apps can no longer trap you in full screen; it opens only after a tap by @shivamhwp in https://github.com/pingdotgg/t3code/pull/18548
- fix(web,mobile): disabled provider instances no longer badge their siblings by @tris203 in https://github.com/pingdotgg/t3code/pull/14545
- fix(web): threads open at the newest message, not thousands of pixels above it by @t3dotgg in https://github.com/pingdotgg/t3code/pull/19663
- fix(mobile): report rejected shared settings writes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9356
- fix(claude): show automatic compaction while it runs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/15631
- fix(web): keep the parent thread highlighted while viewing its subagent by @saphid in https://github.com/pingdotgg/t3code/pull/15163
- fix(web): show pull request checkout error detail by @saphid in https://github.com/pingdotgg/t3code/pull/15007
- fix(server): mark unvisited thread completions unread by @maria-rcks in https://github.com/pingdotgg/t3code/pull/15607
- fix(web): started threads no longer offer a machine picker that does nothing by @tris203 in https://github.com/pingdotgg/t3code/pull/19900
- fix(web): provider model names no longer get cut off by their slug by @ilyaliao in https://github.com/pingdotgg/t3code/pull/16522
- fix(claude): mid-sentence skill chips keep the full request by @ScottN-PV in https://github.com/pingdotgg/t3code/pull/15253
- fix(web): preserve unsaved keybinding edits when saving another binding by @pnupu in https://github.com/pingdotgg/t3code/pull/11109
- fix(connections): retry unsupported saved direct connections by @none23 in https://github.com/pingdotgg/t3code/pull/15107
- fix(web): show readable messages for structured thread errors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21483
- fix(web): custom shortcuts work when Local environment is off by @Mnigos in https://github.com/pingdotgg/t3code/pull/15825
- fix(web): keep thread notification tags within the Windows toast limit by @satyalyadav in https://github.com/pingdotgg/t3code/pull/12289
- fix(web): pinned thread marker stays put when hovering the row by @flamboh in https://github.com/pingdotgg/t3code/pull/11122
- fix(web): keep a typed question answer when you open a new thread by @Gigioxx in https://github.com/pingdotgg/t3code/pull/13865
- fix(web): renumber following items when continuing a plain-Markdown numbered list by @saphid in https://github.com/pingdotgg/t3code/pull/14332
- fix(web): clicking a logged request route no longer opens it in the editor by @lnieuwenhuis in https://github.com/pingdotgg/t3code/pull/15838
- fix(desktop): reject offscreen annotation screenshot crops by @maria-rcks in https://github.com/pingdotgg/t3code/pull/18441
- fix(web): NVDA browse mode reaches the new-thread project picker again by @akj in https://github.com/pingdotgg/t3code/pull/17877
- fix(web): stop composer banner glass overlap by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/8034
- fix(web): keep pasted decorators as text by @Gigioxx in https://github.com/pingdotgg/t3code/pull/8415
- fix(shell): avoid interactive job control in environment probes by @LouisDeconinck in https://github.com/pingdotgg/t3code/pull/11275
- fix(web): a closed proactive diff stays closed when you return to a thread by @ilyaliao in https://github.com/pingdotgg/t3code/pull/14705
- fix(web): render powerline separators at cell edges by @SadriG91 in https://github.com/pingdotgg/t3code/pull/5607
- fix(server): provider failures say why a turn could not start by @saphid in https://github.com/pingdotgg/t3code/pull/16303
- fix(server): a Claude /goal no longer reads as complete while a background subagent runs by @Jreevo in https://github.com/pingdotgg/t3code/pull/16598
- fix(clients): image threads use readable titles by @saphid in https://github.com/pingdotgg/t3code/pull/19822
- fix(server): storage cleanup reaches archived threads' worktrees by @Info-Cado in https://github.com/pingdotgg/t3code/pull/16473
- fix(server): skip native sessions during bulk import by @maria-rcks in https://github.com/pingdotgg/t3code/pull/15634
- fix(web): settings project picker lists only the chosen environment's projects by @SwiggitySwerve in https://github.com/pingdotgg/t3code/pull/18503
- fix(server): keep the shared Codex app-server scope alive after a tool OOM kill by @only21mil in https://github.com/pingdotgg/t3code/pull/18329
- fix(server): review guides in a fork checkout cover only the pull request's change by @tris203 in https://github.com/pingdotgg/t3code/pull/18312
- fix(server): isolate pull request sync reads by project by @saphid in https://github.com/pingdotgg/t3code/pull/18854
- fix(opencode): send pasted images with turns and steers by @nkoynov in https://github.com/pingdotgg/t3code/pull/16145
- fix(server): one bad legacy message no longer stops the server from starting by @shivamhwp in https://github.com/pingdotgg/t3code/pull/15920
- fix(web): record the layout character in the keybinding editor by @macodev00 in https://github.com/pingdotgg/t3code/pull/15972
- fix(web): new thread shortcut works while a sent draft sets up its worktree by @Gigioxx in https://github.com/pingdotgg/t3code/pull/14538
- fix(web): preserve images copied from unsent drafts by @StiensWout in https://github.com/pingdotgg/t3code/pull/17821
- fix(server): settle OpenCode model catalog before caching it by @ignaciorasetti in https://github.com/pingdotgg/t3code/pull/16448
- fix(web): reject file suggestions from an older composer query by @saphid in https://github.com/pingdotgg/t3code/pull/18845
- fix(threads): snoozed threads no longer wake early after background updates by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/16517
- fix(server): pnpm provider updates only offer versions pnpm will install by @tris203 in https://github.com/pingdotgg/t3code/pull/19580
- fix(ssh): concurrent archive installs no longer race on uutils mkdir by @tris203 in https://github.com/pingdotgg/t3code/pull/20059
- fix(provider-core): refresh installer metadata before explicit probes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21451
- fix(opencode): stop cancelled text generation sessions by @yashranaway in https://github.com/pingdotgg/t3code/pull/10606
- fix(web): usage limits show one account popover at a time by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/18076
- fix(web): preview viewports keep their size when the main window is zoomed by @Ta-noshii in https://github.com/pingdotgg/t3code/pull/14039
- fix(mobile): Android thread pane no longer ends short after switching threads by @PixPMusic in https://github.com/pingdotgg/t3code/pull/18963
- fix(mobile): Android review diff scrolls to the end of long lines by @shivamhwp in https://github.com/pingdotgg/t3code/pull/19431
- fix(web): open Azure DevOps PR links in the panel by @jvzijp in https://github.com/pingdotgg/t3code/pull/10987
- fix(server): Changes totals compare the default branch with its tracking upstream by @abderbejaoui in https://github.com/pingdotgg/t3code/pull/15393
- fix(desktop): explain why the update button is disabled by @saphid in https://github.com/pingdotgg/t3code/pull/18404
- fix(ci): skip production workflows in forks by @JustYannicc in https://github.com/pingdotgg/t3code/pull/21216
- test(web): fix flaky attachment preview and ACP search tests by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/21893
- fix(server): agent-device no longer launches the desktop app from Codex shells by @im-