Repository navigation
v0.1.7 · 659 changes from 160 contributors
- Kiro (beta). Use Kiro as an Early Access provider.
- Managed policies. Administrators can centrally configure T3 Code, including through Windows Group Policy.
- One-time schedules. Schedule a task to run once at a specific date and time.
- Child approvals. Respond to delegated child approvals directly from the parent conversation.
- Shareable thread links. Copy a thread link that opens the conversation from outside T3 Code.
- Usage filters. Filter Usage totals by provider and model.
- Model switch history. See where the model or reasoning effort changed in a conversation.
Plus 591 more bug fixes and performance improvements.
Full changelog
What's Changed
- fix(clients): stop loading thread families when opening chats by @Yash-Singh1 in #26762
- fix(server): bump Antigravity quota probe UA to hub/2.24.0 so Gemini limits appear by @LVC-Chakresh in #28090
- fix(opencode): use Big Pickle for default text generation by @UtkarshUsername in #22442
- test(scripts): identify the Windows native probe by executable by @UtkarshUsername in #21774
- fix(web): effort picker shows Default or the checkmark, flush right by @shivamhwp in #28162
- fix(web): keep the model picker in place when its label changes by @juliusmarminge in #28307
- fix(device): use expo-device-hub 0.19.1 by @Yash-Singh1 in #28346
- fix(web): model picker stays put with long names and agent options by @t3dotgg in #28409
- fix(web): background command details open above their button by @t3dotgg in #28446
- refactor(desktop): Drop the unused Linux --class switch by @mwolson in #14482
- perf(server): connects no longer wait on editor and SSH target discovery by @saphid in #14519
- fix(vcs): look up pull request clone URLs on the pull request's host by @saphid in #15000
- fix(mobile): images stop re-downloading when their URL is re-signed by @flamboh in #21527
- fix(desktop): keep noisy shell probes from blocking PATH capture by @Lucenx9 in #21913
- fix(server): preview status and snapshot never echo a data: page's contents by @shivamhwp in #22302
- fix(mobile): keep reduced-motion views visible and aligned by @PixPMusic in #23230
- fix(server): match webhook existence filters on wildcard objects by @yashranaway in #23414
- fix(usage): preserve Claude monthly spend through CLIProxy by @yashranaway in #23435
- fix(copy): clarify thread and source control settings by @extoci in #24148
- fix(copy): clarify unavailable tasks and duplicate requests by @extoci in #24149
- fix(web,mobile): lineage and agent rows show which account a subagent runs on by @vitalyiegorov in #24833
- fix(web,mobile): subagent cards show which account each subagent runs on by @vitalyiegorov in #24898
- fix(mobile): release inactive draft Git status demand by @saphid in #25254
- fix(shared): allow atomic saves through 40 symlinks by @Lucenx9 in #25604
- fix(server): device tools accept a host's label and reject unknown hosts by @flamboh in #25836
- fix(web): threads on an unreachable environment no longer hide in the Working shelf by @saphid in #26195
- fix(desktop): allow slow backends to start before showing recovery by @shivamhwp in #26247
- fix(mobile): keep Android thread title spacing consistent by @PixPMusic in #26666
- perf(server): avoid unused history reads during thread waits by @Adamulek123 in #27032
- fix(web): sidebar metadata uses the theme's colors in dark mode by @flamboh in #27268
- fix(web): Queued messages can be edited during Compact and send by @mwolson in #27310
- fix(mobile): preserve chat scroll position on tab returns by @PixPMusic in #27393
- perf(server): avoid unused history when acknowledging tasks by @Adamulek123 in #27803
- feat(mcp): unlink every PR in given states with one call by @maria-rcks in #27925
- feat(mcp): link several PRs to a thread with one call by @maria-rcks in #27994
- perf(server): task waits skip unrelated sibling updates by @Adamulek123 in #27920
- fix(acp): keep turn spending out of context usage by @maria-rcks in #27927
- fix(web): explain when a theme hides environment artwork by @shivamhwp in #27936
- fix(mobile): Android commit sheet scrolls to the commit buttons by @shivamhwp in #28272
- fix(cursor): avoid reporting unfinished tool calls as successful by @only21mil in #21448
- fix(gitlab): canceling pipelines no longer show as pending by @MarcoDotIO in #21543
- docs: explain how to enable the context window indicator by @birosrichard in #21678
- fix(web): file preview videos keep their own aspect ratio by @NikitaMGrimm in #21839
- fix(server): an open question stays in the thread window, so its answer panel shows by @AdEx-Partners-DE in #22291
- fix(web): mod+L focuses the browser address bar from a focused page by @jnunemaker in #22328
- fix(mobile): iOS terminal's Attach visible output clears the home indicator by @Claudesaul in #22418
- fix(pi): show an extension dialog's title once by @only21mil in #22463
- fix(server): generated PR text reads source diffs instead of textconv output by @only21mil in #22503
- fix(server): queued delegated completions keep a newer model choice by @f4llenz in #22579
- fix(acp): turn token spend no longer blocks provider handoffs by @otavio in #22608
- fix(desktop): skip auxiliary macOS snapshot windows by @YoruSamaOG in #22624
- fix(provider-core): Chocolatey Claude installs stay manual-only and compare against choco by @robrab2000 in #22941
- fix(web): PR diffs list a
.logic.test.tsfile beside the source it covers by @MarcoDotIO in #23129 - perf(desktop): speed up Hyprland and KDE SnapShots by @only21mil in #23137
- fix(mobile): Bitbucket and GitCafe approvals show as approved on the PR timeline by @MarcoDotIO in #23138
- fix(server): terminal labels keep the whole name of a command with spaces by @MarcoDotIO in #23140
- fix(mobile): disabled send button is readable in Material You dark by @RVZO6 in #23155
- fix(web): show linked pull request state in command palette rows by @only21mil in #23156
- fix(desktop): read the Chrome cookie key off the main thread on macOS by @only21mil in #23157
- fix(screenshots): reject corrupt PNGs during validation by @only21mil in #23161
- fix(web): give non-Latin theme names distinct stable ids by @only21mil in #23162
- fix(server): generated commit messages use source patches by @only21mil in #23164
- fix(web): keep newer titles when an untouched header rename ends by @only21mil in #23171
- fix(observability): record OTLP/JSON spans that leave out empty fields by @only21mil in #23177
- fix(server): keep the live search index when a refresh times out by @only21mil in #23182
- fix(web): respect provider permissions in bulk updates by @only21mil in #23183
- fix(mobile): cap live work-log summaries for long approval prompts by @only21mil in #23227
- fix(web): keep project name edits open during IME composition by @only21mil in #23231
- fix(server): put the updated runtime on the macOS service PATH by @only21mil in #23239
- fix(server): Steer on a queued message keeps the model picked for it by @only21mil in #23240
- fix(web): line up the Date and Time fields in custom snooze by @voida6 in #23360
- fix(ssh): stop asking for a password when the SSH agent can't sign by @thepriceisright in #23437
- fix(web): copy and save images embedded as data URLs by @AkiVonAkira in #23621
- fix(server): review guide stops no longer show the same lines twice by @only21mil in #23725
- fix(muse): list background children under their turn item's native id by @koushikxd in #23856
- fix(web): format inline code when the opening backtick is typed last by @Saikrishna1876 in #23940
- fix(pi): log oversized RPC records instead of dropping them silently by @only21mil in #23947
- fix(web,mobile): Hebrew and Arabic read right to left in questions, citations, attachments and diff comments by @Dananz in #24050
- fix(web): show readable errors when a stack action fails by @only21mil in #24118
- fix(web): usage limit toast shows the Limited icon by @fixfon in #24260
- fix(server): t3 update no longer deletes the runtime its launcher runs by @only21mil in #24289
- fix(web): typed answer moved to the draft by an option click is announced by @voida6 in #24331
- fix(relay): long CJK titles no longer stop Live Activity updates by @only21mil in #24679
- fix(themes): accept VS Code JSONC imports by @mayesidev in #25375
- fix(web): prevent sidebar shelf animations from overlapping headers by @brandon-julio-t in #25384
- fix(web): keep the default instance's draft model off custom instances by @matthias-scale in #25511
- fix(acp): cancelled plan steps no longer keep the plan running by @MarcoDotIO in #25564
- fix(mobile): handle image drops in the Android composer by @12ya in #25573
- fix(server): run_scheduled_task_now says why a run was refused by @SouthCarpet in #25647
- fix(web): composer emphasis shortcuts ignore delimiters inside inline code by @egefeyzioglu in #25659
- fix(web): local visit migration preserves mark unread by @Michaelihc in #25746
- fix(provider-acp-registry): reopening a Kimi thread no longer collapses its model picker to Default by @AKolenda in #25786
- docs(readme): list fx as a supported provider by @DarlingtonDeveloper in #25974
- fix(web): PR links at launch open the PR view with the local environment disabled by @NotAnNvidiaFan in #26099
- fix(web): sidebar jump hints are readable and sit in the status slot by @G-R3 in #26112
- fix(web): maximize button no longer jumps when the right panel closes by @Claudesaul in #26232
- fix(acp): a lost or locked Copilot session restarts on the next message instead of failing every time by @ianrowe12 in #26651
- perf(web): terminal snapshots reuse WASM memory views by @hieu-lee in #26717
- fix(acp): Plan mode switches Copilot into its native plan mode by @Radu028 in #26951
- fix(cursor): ignore a stale Keychain login when Cursor is not installed by @riccardopll in #27143
- fix(web): Escape while recording a shortcut no longer closes Settings by @treiber in #27151
- fix(mobile): a closed empty search stays closed after returning by @camchis in #27184
- fix(antigravity): accept empty startup skill directories by @Gieveppix in #27191
- fix(mobile): TalkBack reads the message field before Send by @nibarAhmed in #27249
- fix(cli): trace summary no longer prints near-second durations as "1000ms" by @MarcoDotIO in #27266
- fix(shared): branch names keep accented letters as plain letters by @MarcoDotIO in #27274
- fix(provider-core): provider updates find npm on the provider's custom PATH by @ashx-j in #27321
- fix(web): changing the sidebar project filter starts the list at the top by @Mnigos in #27327
- fix(web): find the fallback model in Settings search by @voltcrash in #27376
- fix(web): Backspace no longer re-nests a checkbox under a bullet by @Geuni620 in #27384
- perf(server): reuse compiled modules for CLI commands by @voltcrash in #27433
- fix(server): preview tab list shows desktop tabs that loaded before the server attached by @camchis in #27456
- fix(web): Esc in the theme color picker restores the previous color by @drdator in #27472
- fix(shared): preserve escaped trailing whitespace in CLI arguments by @macodev00 in #27485
- fix(shared): preserve surrogate pairs in truncated CSV cells by @macodev00 in #27497
- fix(gitlab): report an expired glab OAuth login as an auth error by @WalshyDev in #27511
- fix(web): expanded SVG diagrams fill the image viewer by @melbaldove in #27519
- fix(web): configure reasoning for the fallback model by @BelKed in #27593
- fix(web): keep diff base selector available after errors by @NathanGlasby in #27635
- fix(mobile): resume continues a usage-limited thread before its queue by @AbdelrahmanTamer21 in #27662
- fix(client): a new thread's content no longer stays blank after an early 404 by @willadamskeane in #27722
- fix(web): skill labels show the skill's own name by @juuulianx in #27741
- fix(server): disclose truncated history in imported threads by @voltcrash in #27743
- fix(opencode): recover Go limits after a startup timeout by @voltcrash in #27757
- fix(server): worktree threads get their generated branch name when a branch named t3 exists by @MarcoDotIO in #27815
- fix(server): restart continuation checks before repeating side effects by @xlurie in #27836
- fix(shared): /Model with a query still opens the model picker by @samkelly880 in #27837
- fix(server): empty primary cookie no longer blocks bearer auth by @samkelly880 in #27848
- perf(mobile): text files open in half the time on a remote host by @camchis in #27850
- fix(web): composer fallback keeps the effort of a model saved under an alias by @mkantautas in #27859
- perf(server): skip no-op settlement decisions by @omar7550 in #27897
- fix(codex): a failed write to the app-server no longer leaves requests hanging by @trevoedwards in #27924
- perf(server): projects without a repository stop spawning git on every lookup by @Pyseph in #27980
- fix(server): scheduled tasks start from the default branch, not always main by @tuanvumaihuynh in #27983
- fix(server): subagent threads no longer inherit a pending title job by @Dreighto in #27990
- fix(web): show mixed automatic defaults across environments by @jtatum in #28005
- fix(client): the folder browser shows folders added or removed while T3 runs by @Umais-Adeed in #28064
- fix(mobile): chat folds stay closed until tapped, as on web and desktop by @Umais-Adeed in #28072
- fix(web): align composer context icons and space their labels by @voltcrash in #28083
- fix(web): horizontal scrolling inside diff and file panes no longer switches threads by @EtanHey in #28091
- fix(server): remember T3 Connect HTTP/2 fallback across restarts by @voltcrash in #28105
- fix(server): provider updates no longer time out mid-download by @Ajraba04 in #28132
- fix(server): delegate_task accepts the inherited options orchestrator_capabilities reports by @EtanHey in #28133
- fix(mobile): finished threads leave Working once the grace ends by @playcations in #28169
- fix(web): sidebar drops a deleted project's filter with the local environment disabled by @NotAnNvidiaFan in #28179
- fix(web): terminal URLs like redis:// no longer become broken file links by @tiliakoos in #28189
- fix(web): skill menus show loading while project skills arrive by @NotAnNvidiaFan in #28209
- fix(desktop): SnapShots keep working on Hyprland after an app update by @Rhinomcd in #28240
- fix(web): Tab completes folder names in the add-project browser by @morahan in #28243
- fix(web): make Changes and PR Code file lists resizable by @wrymn in #28244
- perf(web): main thread updates no longer re-render an open side chat by @Yuruzuu in #28264
- perf(server): skip unused parent data when forking threads by @Yuruzuu in #28265
- perf(server): stop summarizing side chat context at its cap by @Yuruzuu in #28266
- perf(web): typing in a thread no longer re-renders sidebar drafts by @Yuruzuu in #28267
- fix(scripts): Alchemy reference sync reads the catalog version by @only21mil in #28268
- docs(mobile): mobile README links the store apps instead of calling the app unreleased by @only21mil in #28269
- perf(web): render minimap highlights without extra nodes by @Yuruzuu in #28270
- fix(ci): a change to the T3 Connect troubleshooting guide runs the server test that reads it by @only21mil in #28273
- fix(scripts): report:renders works on machines without ~/.cache by @only21mil in #28274
- docs: composer banner guidance names a consumer that still exists by @only21mil in #28276
- docs(mobile): name the Android 16 Agent Live Updates switch in the notifications guide by @only21mil in #28310
- fix(web): prevent composer image thumbnail flicker by @Yash-Singh1 in #28499
- fix(clients): questions always move a thread out of Working by @t3dotgg in #28515
- feat(scheduler): run a scheduled task once at a specific date and time by @t3dotgg in #28104
- fix(server): stopping a Claude turn no longer hangs without an acknowledgement by @yaacovcorcos in #16419
- feat(mcp): preview_open goes straight to a dev-server port by @maria-rcks in #28027
- fix(server): interrupted scheduled task runs no longer stay busy by @t3dotgg in #28474
- fix(desktop): preserve host focus on preview pointer presses by @Yash-Singh1 in #28549
- fix(web): add spacing above PR detail metadata by @Yash-Singh1 in #28573
- feat(dev): add startup profiling for cold-start diagnosis by @Yash-Singh1 in #28566
- feat(clients): surface child approvals in parent threads by @Yash-Singh1 in #28516
- feat(release): update notes lead with up to 7 highlights by @t3dotgg in #28593
- test(server): pin clock in saved-usage window test by @t3dotgg in #28603
- fix(web): sidebar project filter no longer refocuses after a pick by @t3dotgg in #28605
- feat(desktop): prepare server bytecode cache in native builds by @Yash-Singh1 in #28572
- fix(desktop): discover shell environment without blocking startup by @Yash-Singh1 in #28556
- fix(server): refresh Changes totals after remote polls by @Yash-Singh1 in #28600
- perf(codex): trace app server request latency by @Yash-Singh1 in #28666
- fix(web): align pull request file viewed checkboxes by @Yash-Singh1 in #28665
- fix(desktop): skip prepared server bytecode on Linux by @Yash-Singh1 in #28700
- fix(cli): close legacy database before deleting it on Windows by @UtkarshUsername in #27629
- perf(cursor): load the agent SDK only when needed by @Yash-Singh1 in #28718
- fix(mobile): restore the reserved compose space on Android by @PixPMusic in #28819
- fix(mobile): thread links show their thread's title by @juliusmarminge in #26485
- fix(web): ChatView browser test no longer times out on CI by @juliusmarminge in #28834
- fix(mobile): sent messages rise into place instead of dropping in by @mozzius in #28660
- feat: managed policy for organization-wide T3 Code configuration by @juliusmarminge in #27197
- fix(server): force-stop timed out login shell probes by @hbw00111 in #7295
- fix(server): finish short reads before returning workspace text by @saphid in #14989
- perf(client-runtime): merge shell deltas once per received batch by @saphid in #18416
- perf(web): coalesce overlapping file tree refreshes by @saphid in #18421
- perf(clients): bound subagent preview processing to the visible prefix by @luke2x in #21277
- fix(server): avoid transient GitHub mergeability sync churn by @saphid in #22022
- test(server): stopped-queue steering test no longer races queue promotion by @tris203 in #22529
- fix(mobile): single-comment PR discussions say "1 comment", not "1 comments" by @MarcoDotIO in #22926
- fix(client): reject incomplete GitHub owner paths before lookup by @naveed949 in #23024
- fix(server): accept case-insensitive MCP bearer schemes by @Rish-it in #23782
- fix(shared): keep Azure clone URLs valid when switching protocols by @Zacharon in #24005
- fix(web): honor editableFocus in shortcut conditions by @unmanbearpig in #24134
- fix(scripts): launch check:changed on Windows without a vp shim by @Zacharon in #24164
- fix(web,mobile): time out client activity reports that never settle by @skyhong2002 in #24362
- fix(web): the welcome wizard keeps the project selection when you go back a stage by @Jacksondr5 in #24719
- fix(forgejo): merged and closed pull request lists only return their own rows by @rishabhx29 in #24772
- fix(clients): background work Stop stays pending until the stopped tasks leave by @Srijan-D in #25002
- fix(server): device list warnings keep the hub's error detail by @Jacksondr5 in #25248
- perf(client-runtime): index checkpoint answers in one bounded scan by @saphid in #25258
- fix(desktop): allow pointer lock in the built-in browser by @msfeldstein in #25275
- fix(desktop): keep preview download settings out of app exports by @mayesidev in #25428
- fix(web): PDF previews keep their page across thread switches by @ashx-j in #25496
- fix(server): unlink_pull_request reports a dismissed stack PR as not linked by @MarcoDotIO in #25561
- fix(client-runtime): re-pairing at a new address uses the new token by @abdulsalamgs in #25591
- docs(orchestration-v2): Codex rollback uses thread/revert on paginated threads by @SouthCarpet in #25705
- fix(web): keep inward mini browser resizes from growing by @diddletime in #26027
- fix(web): PR merge buttons stay in place while the stack loads by @GisTypical in #26077
- fix(web): Arabic paragraphs with many English terms now read right to left by @ahmedverona34-bot in #26095
- fix(web): dark-mode
images load instead of showing "Image unavailable" by @Vikas-Maur in #26398 - fix(server): foreground Claude forks no longer show as finished the moment they start by @henrychu04 in #26459
- perf(server): hydrate only the requested project page by @Adamulek123 in #26655
- perf(effect-acp): frame large ACP stdout lines in linear time by @hieu-lee in #26686
- perf(shared): fold command output without copying scrollback per chunk by @hieu-lee in #26691
- perf(web): composer serializes each draft doc once per keystroke by @hieu-lee in #26720
- fix(gitlab): merge requests show their approval state by @oss96 in #26877
- test: remove unreachable sidebar helper suites by @t3-code-bot[bot] in #26920
- perf(clients): thread search reuses per-thread fields across keystrokes by @hieu-lee in #26936
- perf(mobile): reuse chat lists across navigation renders by @PixPMusic in #27026
- test(web): pass stale to the stack menu refusal test by @maria-rcks in #28887
- fix(server): keep a gateway's Claude reset time on a direct 429 by @tyler-b4innova in #25438
- perf(shared): skip parsing cached terminal styles by @UtkarshUsername in #27041
- perf(web): compact changed-file directories once by @UtkarshUsername in #27073
- fix(web): chat text can be cited while file search is open by @abhijeetsingh-22 in #27131
- fix(mobile): Home list no longer opens scrolled down by @camchis in #27155
- fix(server): clean unchanged worktrees without a remote by @melvinmng in #27175
- fix(web): settled shelf no longer crashes with several projects filtered by @jagrat7 in #27231
- fix(server): t3_thread_read pages no longer split an emoji in half by @MarcoDotIO in #27273
- fix(desktop): disable blocked t3 CLI installation by @NathanGlasby in #27286
- fix(claude): approval cards close when Claude withdraws the request by @ashx-j in #27320
- fix(server): Claude threads revert to the message after a /compact by @SparshKaushik in #27381
- fix(server): show why Codex hooks stopped a turn by @voltcrash in #27399
- fix(client): a resume no longer re-renders every home row five times by @ahalekelly in #27404
- perf(server): stop measuring replay bytes once over budget by @Narayan201120 in #27405
- fix(web): Enter selects the first branch search result by @atatter in #27434
- fix(client-runtime): threads with many images no longer flood a remote with URL requests by @voida6 in #27440
- fix(web): format inline code typed with a dead-key backtick by @WalshyDev in #27457
- fix(server): Claude no longer tries to update itself through a mise command wrapper by @Gourav224 in #27466
- perf(client): avoid temporary arrays in inbox snapshots by @UtkarshUsername in #27467
- fix(mobile): give drafts the current thread card layout by @PixPMusic in #28789
- fix(server): delegated tasks finish even when the child leaves a watcher running by @Byntham in #27468
- fix(server): preserve surrogate pairs in generated thread titles by @macodev00 in #27483
- fix(shared): preserve files outside log rotation naming by @macodev00 in #27503
- fix(server): a preview navigation that fails mid-load keeps its failure by @camchis in #27537
- fix(web): Settings search finds rows by their titles by @davisonio in #27540
- docs(opencode): say where compaction is configured by @wagner-deoliveira in #27614
- fix(server): Antigravity no longer delays server startup by deleting old runtimes by @LukeCommits in #27651
- fix(web): the undo notice no longer pushes the update button out of the sidebar by @Derpedyea in #27695
- fix(providers): Antigravity API-key setup says Connect by @voltcrash in #27759
- fix(effect-acp): honor advertised session delete capability by @Kamkmgamer in #27771
- fix(web): bare URL links keep trailing underscores and tildes by @DimaMishchenko in #27794
- perf(client): repeated server settings keep the same settings object by @MarcoDotIO in #27818
- fix(server): preview browser picks up Chrome 156.0.8078.79 security fixes by @snnbotchway in #27822
- fix(shared): truncate keeps emoji whole by @samkelly880 in #27841
- fix(shared): inverted terminal ranges emit no fake lines by @samkelly880 in #27843
- fix(mobile): markdown images no longer shake on Android by @voida6 in #27943
- fix(shared): opening a database waits for another process's lock by @yaacovcorcos in #28288
- Show the full title in lineage/side-chat row tooltips by @fatihozdil in #28326
- fix(server): look up a run's turn-start items by run, not by walking thread history by @Motaghi in #28343
- fix(web): skip star prompt when the server check is unavailable by @t3-code-bot[bot] in #28364
- perf(server): reuse untracked paths in Git status by @gchen0002 in #28374
- perf(server): avoid building unused peer HTTP clients by @Adamulek123 in #28405
- fix(provider): show exit details when ACP session startup crashes by @shivamhwp in #28419
- fix(web): folder rows no longer jump at larger interface font sizes by @sergiiopm in #28428
- fix(web): Changes row no longer shows +0 while Diff has edits by @wSedlacek in #28439
- fix(clients): pasting a path copied from Finder or Explorer adds that folder by @kimkhoi2202 in #28460
- fix: paste-as-text shortcut on non-Latin layouts by @ValeraZSD in #28470
- fix(server): let slow worktree submodule checkouts finish by @iXab3r in #28482
- fix(server): an old link card no longer keeps a thread asking for input by @georgenijo in #28491
- fix(web): clicking a file in the Files tree keeps focus on that row by @shkumbinhasani in #28521
- docs(claude): explain idle compaction fallback by @voltcrash in #28532
- perf(shared): strip plan prefixes in linear time by @hieu-lee in #28537
- perf(shared): count terminal resume lines without allocations by @hieu-lee in #28539
- perf(web): terminal updates no longer re-render every sidebar row and chat by @Yuruzuu in #28563
- perf(web): chat view redraws no longer re-render the composer or side chat timeline by @Yuruzuu in #28564
- perf(server): worktree creation spawns fewer git processes by @hieu-lee in #28582
- fix(web): many automations no longer hide the thread details Automations section by @Mnigos in #28585
- fix(clients): open a delegated child's approval on the environment it runs in by @robrab2000 in #28592
- fix(web): finished replies keep their hover timestamp while commands run by @BilalIrfanContact in #28610
- fix(server): treat a repository's only non-origin remote as its primary remote by @only21mil in #22119
- perf(server): sort the working-tree file list once per status read by @only21mil in #22499
- fix(web): keep theme color alpha when a hex value is typed by @only21mil in #23136
- fix(web): keep saved sensitive variables from losing their value by @only21mil in #23168
- perf(server): t3_thread_read loads a page's items in one query by @only21mil in #23176
- fix(mobile): use loaded branch for untouched worktree base by @only21mil in #23241
- fix(server): report a created PR as created when its lookup fails by @only21mil in #23242
- fix(opencode): steers keep the turn's agent, variant and instructions by @only21mil in #23270
- perf(ci): skip PR vouch jobs for ordinary comments by @only21mil in #23387
- fix(web): sort pull request lists and timelines by time by @only21mil in #23588
- perf(ci): thread transfer report stops paging all main CI runs by @only21mil in #23633
- fix(server): T3 Connect keeps a log file of its tunnel connector by @only21mil in #24485
- fix(server): saving a shortcut no longer deletes rules it can't read by @only21mil in #24494
- fix(web): installing two providers at once starts both by @only21mil in #24655
- fix(server): Codex switches respect each instance's CODEX_HOME variable by @only21mil in #24664
- fix(server): dev seeding accepts migration histories the server boots by @only21mil in #24665
- fix(web): interval settings save when editing ends, not per keystroke by @only21mil in #24673
- fix(web): a failed plan follow-up no longer overwrites the next draft by @only21mil in #24684
- fix(server): selected-file commits stop when the index reset fails by @only21mil in #28275
- fix(opencode): OpenCode installs T3 can't identify no longer get an Update button that hangs by @only21mil in #28278
- perf(server): MCP calls skip the caller's message history by @only21mil in #28282
- fix(web): streamed replies render a list's code block as the finished reply does by @only21mil in #28285
- fix(ci): a providerEnv.ts change runs every package's tests by @only21mil in #28286
- fix(opencode): OpenCode 1.x text generation deletes its scratch session by @only21mil in #28294
- fix(scripts): check:changed no longer passes failing .github/scripts tests by @only21mil in #28296
- fix(web): Diagnostics memory no longer reads "1024.0 MB" by @only21mil in #28300
- perf(server): sending a message no longer rereads the thread from the database after settle, snooze or title updates by @only21mil in #28301
- fix(web): device tools keep the typed text when a command fails by @only21mil in #28323
- fix(server): turn diffs keep the agent's files when git's diff.relative is on by @only21mil in #28361
- fix(server): tracked clones keep an explicit SSH protocol on fallback and Retry by @only21mil in #28365
- fix(claude): Claude text generation stops saving throwaway transcripts by @only21mil in #28367
- fix(desktop): bound the Linux xdg-mime registration like its sibling helpers by @only21mil in #28368
- fix(opencode): OpenCode 1.x text generation gives up after 3 minutes like every other runner by @only21mil in #28372
- fix(server): a fork no longer inherits the source thread's pin, auto-settle and delegation state by @only21mil in #28378
- fix(web): deleting a thread clears its saved right-panel, diff-panel and mini-player state by @only21mil in #28386
- fix(server): command projection failures keep their cause by @only21mil in #28389
- fix(providers): slow Grok, Pi and fx starts no longer show as unavailable by @only21mil in #28400
- fix(evals): GPT eval summaries no longer call a proxied run free by @EtanHey in #28403
- fix(server): truncated text stays the same when projected again by @only21mil in #28418
- fix(desktop): a settings relaunch no longer replays the link that launched the app by @only21mil in #28464
- fix(server): Codex sessions get T3CODE_THREAD_ID like Claude sessions by @SevenWhite in #28604
- feat(usage): filter Usage totals by provider and model by @t3dotgg in #28952
- fix(web): allow folder references on saved local desktop servers by @shivamhwp in #27785
- fix(web): clarify the waiting label for background work by @Yash-Singh1 in #28969
- fix(preview): agent browser use no longer steals composer focus by @t3dotgg in #28613
- fix(server): token telemetry counts each request once and only confirmed models by @t3dotgg in #29001
- update the claude entrypoint identifier for accuracy by @t3dotgg in #28410
- fix(web): keep pending pull request actions scoped to each request by @Yash-Singh1 in #29005
- fix(desktop): load the renderer while the backend starts by @Yash-Singh1 in #28715
- fix(web): settings search no longer jumps or clears on an IME Enter or Escape by @only21mil in #28298
- fix(mobile): explain why voice input is unavailable by @shivamhwp in #28698
- perf(server): Codex calls t3_thread_wait directly instead of from Code Mode by @t3dotgg in #29026
- refactor(server): name Codex's direct-only T3 MCP server t3-code-direct by @t3dotgg in #29068
- fix(mobile): files with brackets in their names attach on Android by @juliusmarminge in #28983
- fix(server): Stop ends a run whose provider turn already finished by @juliusmarminge in #28520
- fix(server): a linked retry closes the waiting link card it names by @juliusmarminge in #28387
- fix(server): a stored boolean settledOverride no longer stops startup by @juliusmarminge in #28314
- fix(server): remote updates no longer fail when the staged preflight is slow on a loaded host by @juliusmarminge in #28201
- fix(server): idle compaction survives a late update for an earlier run by @juliusmarminge in #28102
- fix(server): usage prices bare model names at the maker's rate when a reseller marks them up by @juliusmarminge in #28004
- fix(web): model picker uses the full window height in short windows by @t3dotgg in #29017
- fix(server): open clients no longer stay on "Updating" after a provider update by @juliusmarminge in #27992
- ci(release): preview releases run from any branch by @juliusmarminge in #27828
- fix(desktop): save and copy any image the app can show by @t3dotgg in #29079
- feat(chat): threads show when you switch models or effort by @t3dotgg in #28995
- feat(antigravity): runtime 1.4.5 with real turn failures and subagent work by @t3dotgg in #28629
- feat: tag threads and hide tagged threads while recording by @t3dotgg in #29053
- perf(cli): short commands like t3 --version no longer load the whole server by @Yuruzuu in #29127
- fix(web): play completion sounds without delay by @Yash-Singh1 in #29146
- fix(web): preserve scroll position when expanding work details by @Yash-Singh1 in #29166
- fix(server): Claude threads no longer join the Claude session that launched T3 by @t3dotgg in #29169
- fix(web): hide image action tooltip in expanded viewer by @Yash-Singh1 in #29329
- feat(server): log fast and ultrafast service tiers in analytics by @t3dotgg in #29348
- fix(marketing): show 40k+ GitHub stars by @t3dotgg in #29362
- fix(web): center authorized client settings rows by @Yash-Singh1 in #29382
- fix(mobile): keep One UI navigation and Compose on one row by @none23 in #29203
- perf(server): bound runtime recovery reads by thread ownership by @Yash-Singh1 in #29429
- perf(server): narrow delegated recovery reads to delivery records by @Yash-Singh1 in #29435
- fix(cursor): /compact compacts with the SDK's summarize by @SunkenInTime in #29398
- fix(mobile): pending auto-merge shows in the merge button by @juliusmarminge in #29465
- fix(server): defer Tailscale endpoint discovery during startup by @Yash-Singh1 in #29432
- fix(mobile): merge button names merged, closed, draft, and conflict states by @juliusmarminge in #29486
- test(evals): guard how agents tell threads from tasks and subagents by @gabrielelpidio in #27138
- fix(server): background agent asks go to delegate_task, not a background Agent by @gabrielelpidio in #27139
- feat(server): read source control host tokens from a secret provider by @yordis in #27756
- fix(web): confirm before removing a provider instance's saved settings by @juliusmarminge in #29480
- fix(server): settled threads no longer re-send relay clears on every PR update by @juliusmarminge in #29369
- fix(client-runtime): connection diagnosis no longer blames the host while this device's sign-in loads by @juliusmarminge in #29352
- fix(opencode): Claude usage limits through OpenCode keep their reset time by @juliusmarminge in #29301
- fix(desktop): prepare macOS x64 bytecode under Rosetta by @Yash-Singh1 in #29484
- fix(server): keep PR watches active after host failures by @Yash-Singh1 in #29450
- fix(cursor): show Cursor usage after signing in with Cursor by @serhiyhvala in #29419
- perf(server): skip redundant claude session naming by @maria-rcks in #28910
- fix(mobile): keep the conversation steady during layout changes by @juliusmarminge in #29545
- feat(marketing): fetch GitHub stars at build time by @juliusmarminge in #29555
- perf(server): pin the index for the unscoped agent event high-water by @juliusmarminge in #29623
- perf(web): the pull request code tab derives its file model once per diff load by @juliusmarminge in #27833
- perf(server): stop tracing project enrichment cache reads by @juliusmarminge in #29640
- perf(server): seek live nodes for the subagent recovery probe by @juliusmarminge in #29644
- feat(provider-kiro): add Kiro as an ACP provider by @juliusmarminge in #14693
- revert(web): undo hover timestamp change from #28610 by @maria-rcks in #29680
- perf(server): idle compaction reads only the latest run, live work and newest usage by @juliusmarminge in #29648
- perf(server): cancelling a task reads only the tasks and runs it uses by @juliusmarminge in #29652
- fix(web): screen readers can browse and Tab through the threads sidebar again without going into focus mode by @nibarAhmed in #26690
- chore(deps): upgrade Effect to 4.1.2 and alchemy to beta.85 by @juliusmarminge in #26833
- perf(web): PDF previews reload without starting a new pdf.js worker by @saphid in #29626
- fix(mobile): shorten the iOS undo toast and balance its insets by @shivamhwp in #29775
- fix(web): file save session browser test no longer hangs on the discovery poll by @juliusmarminge in #29813
- fix(server): Changes totals no longer diff against a guessed base after a branch rename by @tris203 in #26125
- perf(server): skip unused parent history in linked task status by @Adamulek123 in #27913
- fix(server): native Claude updates use the native release feed by @NathanGlasby in #27958
- fix(tailscale): escalate hung serve commands to SIGKILL by @rishabhx29 in #28529
- refactor(server): provider registry owns explicit model cache invalidation by @tris203 in #19599
- perf(server): bound ordinal recovery to selected messages by @Motaghi in #27495
- fix(client-runtime): branch picker shows branches changed outside T3 Code by @ebrahimHakimuddin in #27438
- perf(client): skip idle inbox placement serialization by @UtkarshUsername in #27460
- fix(server): project content search finds matches past a line's first 512 characters by @saphid in #29167
- fix(clients): attachment sizes just under 1 MB no longer read "1024 KB" by @saphid in #29165
- fix(gitlab): merge request links keep an HTTP remote's port and scheme by @saphid in #29170
- fix(server): an upstream shadowed by a local origin/ branch keeps its real remote by @saphid in #29180
- fix(server): turn diffs keep signed commits' files under log.showSignature by @saphid in #29124
- fix(server): generated commit and PR text no longer reads colored git output by @saphid in #29126
- fix(client-runtime): checking out a pull request refreshes cached branch lists by @saphid in #29161
- fix(clients): cancel oversized project icon responses by @luke2x in #29006
- fix(shared): context chip labels no longer split an emoji at the 200-character cap by @saphid in #29158
- fix(server): create_threads titles no longer end in a broken character by @saphid in #29163
- perf(server): thread snapshots skip serializing a row past the row limit by @Yuruzuu in #29103
- fix(server): Uncommitted review keeps a staged deletion that git pairs into a rename by @saphid in #29571
- fix(cli): t3 thread start titles no longer end in a broken character by @saphid in #29563
- perf(client-runtime): expanding deferred work skips an unused timeline rebuild by @Yuruzuu in #29114
- fix(server): honor relocated systemd user configuration by @voltcrash in #29244
- fix(web): review comments keep a trailing blank line in their diff by @saphid in #29575
- fix(server): side chat and merge-back context no longer cut an emoji in half by @saphid in #29572
- perf(server): loading a file's diff skips unused repository lookups by @Yuruzuu in #29115
- fix(cli): make relative install homes produce working commands by @voltcrash in #29241
- fix(forgejo): dismissed reviews no longer read as requested changes or approvals by @saphid in #29567
- fix(shared): Linux file links preserve literal backslashes by @voltcrash in #29245
- fix(gitcafe): PR link previews show a GitHub-merged pull request as merged by @saphid in #29595
- fix(codex): restoring a checkpoint works after the Codex session was archived by @saphid in #29582
- perf(acp): ACP agents skip decoding output twice for unused diagnostics by @Yuruzuu in #29100
- fix(server): diffs keep blank context lines under diff.suppressBlankEmpty by @saphid in #29579
- fix(scripts): check:changed passes when only lint-ignored code changed by @saphid in #29596
- perf(client): streamed row updates no longer rescan question history by @Yuruzuu in #29105
- perf(desktop): keep Linux MIME helpers off the startup path by @voltcrash in #29247
- perf(server): shell updates read a burst of threads once by @Yuruzuu in #29101
- fix(opencode): forks from compacted threads no longer fail by @voltcrash in #29221
- fix(scripts): check:changed lints Astro components and runs knip for them by @saphid in #29573
- fix(desktop): Linux .deb no longer installs files any local user can overwrite by @shivamhwp in #28351
- fix(desktop): native builds prepare server bytecode again after the Effect 4.1.2 upgrade by @maria-rcks in #29780
- fix(codex): a background command's wake no longer hangs when its output tail splits an emoji by @saphid in #29168
- test(scripts): expect the unmatched-pattern flag in the Astro check:changed test by @maria-rcks in #29839
- fix(mobile): drafts on threads with colons in their ids upload attachments early by @juliusmarminge in #29717
- fix(server): provider refresh no longer reverts an enriched sign-in status by @juliusmarminge in #29627
- fix(server): forked Claude threads keep their compaction chain by @juliusmarminge in #27577
- fix(server): Claude subagents left by a stopped process no longer stay Running by @juliusmarminge in #28356
- fix(server): usage-limit auto-resume no longer arms children of settled parents by @juliusmarminge in #27951
- fix(cursor): a write-after-end in the Cursor SDK no longer stops the server by @juliusmarminge in #27703
- fix(server): avoid reparsing streamed replies for timestamps by @juliusmarminge in #25252
- fix(web): project settings can set a checkout's grouping rule again by @juliusmarminge in #23641
- fix(server): reject oversized goal objectives before dispatch by @juliusmarminge in #23033
- fix(server): checkpoints no longer rehash every file when one entry is skip-worktree or assume-unchanged by @juliusmarminge in #23624
- fix(web,mobile): chat images reload when the agent rewrites the file by @juliusmarminge in #29741
- fix(web): show the project pin before the remote badge by @maria-rcks in #29704
- fix(server): Codex usage keeps requests from interrupted turns by @juliusmarminge in #29415
- fix(client-runtime): connect to the primary environment while the browser reports offline by @juliusmarminge in #29347
- fix(server): a failed worktree add no longer leaves its new branch behind by @juliusmarminge in #28373
- fix(provider-acp): Kiro's html_render pages show in the thread by @juliusmarminge in #28253
- fix(server): streamed Browser clicks no longer wait behind queued wheel bursts by @juliusmarminge in #28236
- fix(server): Codex turns that fail with an unlisted error code no longer stay running by @juliusmarminge in #28040
- fix(opencode): sessions open through OpenCode 2 after an in-place upgrade from 1.x by @juliusmarminge in #27779
- fix(server): T3 Connect not-linked fix no longer tells Desktop users to run t3 service restart by @juliusmarminge in #27660
- fix(server): anchor Claude wake cooldowns to result arrival by @juliusmarminge in #25061
- fix(web): match new-thread hero to selected checkout by @juliusmarminge in #25064
- fix(server): stop PR lookups in emptied worktree folders by @juliusmarminge in #24803
- fix(server): agent session scans no longer hang the server on an unreadable .git/config by @juliusmarminge in #23690
- docs(connect): held webhooks are kept per managed link by @juliusmarminge in #23612
- fix(server): delegated children keep replies after their parent settles by @juliusmarminge in #23456
- fix(preview): explain invalid URLs and locators by @juliusmarminge in #23396
- fix(web): terminal controls no longer cover the first line by @juliusmarminge in #23373
- fix(server): stop maintaining the unused event correlation index by @juliusmarminge in #23211
- docs(mcp): document existing recurring-task tools by @juliusmarminge in #23199
- fix(server): release the previous session when sending to another instance by @juliusmarminge in #23198
- fix(claude): a background-task wake run no longer hangs after a user turn absorbed its wake by @maria-rcks in #28010
- fix(server): OpenCode no longer drops a $skill read before its directory scan ends by @juliusmarminge in #29535
- fix(server): coalesced webhook runs use the prompt saved before dispatch by @juliusmarminge in #29476
- fix(server): slow forge CLI calls no longer delay checkpoints and turn starts by @juliusmarminge in #28431
- fix(relay): T3 Connect repairs tunnel ingress that drifted from a matching origin by @juliusmarminge in #27961
- fix(provider-core): npm-installed Claude in ~/.local gets npm updates by @juliusmarminge in #27957
- fix(server): git hooks keep the user's locale by @juliusmarminge in #27778
- fix(pi): hold messages until compaction ends by @juliusmarminge in #24388
- fix(server): show why Claude refuses full access as root by @juliusmarminge in #23804
- fix(server): preview click timeouts identify the target by @juliusmarminge in #23489
- fix(cursor): supporting files no longer hide sibling skills by @juliusmarminge in #23326
- fix(web): usage-limit retry notice shows the timezone by @juliusmarminge in #23029
- fix(server): preserve nested Claude subagent completion across turns by @juliusmarminge in #23561
- fix(opencode): publish ordered pending-work snapshots by @juliusmarminge in #21460
- fix(opencode): decode compaction history from OpenCode 2.1 by @juliusmarminge in #22661
- fix(server): import valid conversations within each transcript record limit by @juliusmarminge in #23192
- fix(server): imported Claude sessions resume on their first turn by @juliusmarminge in #23219
- feat(web): ask for a GitHub star when idle, and star in one click by @t3dotgg in #29922
- fix(server): subagent questions reach a busy parent agent by @t3dotgg in #29909
- feat(web): celebrate a GitHub star with confetti by @t3dotgg in #29987
- fix(pi): short-lived Pi processes no longer lose rotated OAuth tokens by @astarktc in #30187
- feat(web): add refresh to provider status banners by @UtkarshUsername in #24861
- fix(server): side chats no longer open with a model switch from the parent's turn by @saphid in #29752
- fix(web): copied code blocks keep their blank lines in lists, quotes and longer fences by @saphid in #29755
- fix(web): compact model picker row indicators by @UtkarshUsername in #26415
- fix(web): open project picker from boring sidebar's header by @UtkarshUsername in #26495
- fix(client): project removal counts only listed threads, not side chats or subagents by @saphid in #29917
- fix(opencode): text generation errors explain known provider failures without raw provider text by @saphid in #29877
- fix(mobile): multi-file patches show every changed file by @saphid in #29878
- fix(server): handoff context names every file of a multi-file patch by @saphid in #29905
- fix(server): commits and PR text see changes outside a subfolder project under diff.relative by @saphid in #29879
- fix(web): opening a project from the command palette no longer lands in a subagent or side chat by @saphid in #29891
- fix(web): device host checks show the error without a stack trace by @saphid in https://github.com/pingdotgg/t3code/pull/29912
- feat(web): open full access menu from the new thread context strip by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30275
- fix(web): long server lists in thread details now page 4 at a time by @Bil0000 in https://github.com/pingdotgg/t3code/pull/28684
- fix(web): keep the project filter menu aligned with its trigger by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30282
- fix(github): Rebase stack no longer conflicts after a lower layer is squash-merged by @saphid in https://github.com/pingdotgg/t3code/pull/29919
- fix(server): changing a task's wake policy no longer reverts a checkpointed parent run by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/25662
- perf(server): settled PR lookups stop re-spawning git every sweep by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29721
- fix(server): generated commit and PR text ignores git signature output by @saphid in https://github.com/pingdotgg/t3code/pull/29580
- fix(web): picking a branch in a subfolder project keeps the thread in the project folder by @saphid in https://github.com/pingdotgg/t3code/pull/29908
- fix(mobile): close and reopen pull requests from the actions menu by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29962
- fix(web): mouse wheel over the thread minimap glides instead of jumping by @flamboh in https://github.com/pingdotgg/t3code/pull/29038
- fix(server): managed policy covers Kiro by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29915
- fix(server): t3 update installs from the policy's update mirror by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29911
- fix(desktop): Ctrl+R on macOS reaches the preview page instead of reloading it by @saphid in https://github.com/pingdotgg/t3code/pull/29893
- fix(server): native forks after an undo no longer copy later turns by @saphid in https://github.com/pingdotgg/t3code/pull/29902
- fix(server): idle compaction still runs after a queued message is removed or steered by @saphid in https://github.com/pingdotgg/t3code/pull/29904
- fix(server): guests of a forked thread can open files on the messages it inherited by @saphid in https://github.com/pingdotgg/t3code/pull/29794
- fix(evals): resume browser verification after unavailable status by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30298
- fix(shared): saving one source control token no longer drops the other hosts' tokens by @yordis in https://github.com/pingdotgg/t3code/pull/29554
- fix(desktop): a policy that stops startup no longer points at another release by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30319
- docs: pin an absolute binary path under a permission cap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29916
- fix(mobile): Android follow-up menu shows in full with the keyboard open by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29263
- fix(web): deleting the open thread no longer opens a snoozed or settled thread by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29643
- fix(web): closing Settings or Usage no longer jumps back to a quote's source by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29013
- fix(server): squash-merged branches no longer offer push & create PR by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/28494
- fix(mobile): settings providers show the ACP registry icon by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/28135
- fix(server): Grok usage limits tell Legacy-mode xAI accounts to switch to Privacy Mode by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/28097
- fix(usage): label a proxied Claude account by its e-mail, and drop .json from hub rows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/28065
- fix(gitlab): a signed-out default glab host no longer hides other signed-in hosts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/27840
- perf(server): prune events the projections already cover by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29806
- fix(server): GPT-6.1 Sol no longer compacts after every tool call on managed Codex by @maria-rcks in https://github.com/pingdotgg/t3code/pull/30004
- feat(policy): admins set managed policy from a Group Policy template by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29862
- perf(server): bound streaming recovery reads by active runs by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30357
- perf(server): read pull request metadata from a lightweight snapshot by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30356
- fix(server): cancelling worktree setup no longer leaves its new branch behind by @saphid in https://github.com/pingdotgg/t3code/pull/29781
- feat(mobile): add on-device Android dictation by @PixPMusic in https://github.com/pingdotgg/t3code/pull/26734
- feat(server): read usage limit source keys from a secret provider by @yordis in https://github.com/pingdotgg/t3code/pull/27760
- feat(device): read the EAS access token from a secret provider by @yordis in https://github.com/pingdotgg/t3code/pull/27763
- fix(server): route missing read-only queries to readers by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30366
- perf(server): index delegated recovery candidates by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/30359
- feat(server,web,mobile,desktop): Copy thread copies a link that opens the thread by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/26290
- feat(mobile,web): copied thread links open the mobile app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/29815
- fix(antigravity): rate-limited turns keep their reset time by @saphid in https://github.com/pingdotgg/t3code/pull/29594
- fix(server): startup no longer hangs on a shell stuck in the kernel by @AdEx-Partners-DE in https://github.com/pingdotgg/t3code/pull/27938
- fix(server): reverting files before the first commit no longer leaves them staged by @Abhishek-B-R in https://github.com/pingdotgg/t3code/pull/28647
- fix(server): truncated Claude task output no longer starts with a replacement character by @Abhishek-B-R in https://github.com/pingdotgg/t3code/pull/28643
- fix(shared): relative file links with routing punctuation open as files by @Abhishek-B-R in https://github.com/pingdotgg/t3code/pull/28637
- fix(server): messages cut by a restart no longer stay marked as streaming by @Abhishek-B-R in https://github.com/pingdotgg/t3code/pull/28646
- fix(server): Antigravity Auto asks instead of approving every request by @parmartejass in https://github.com/pingdotgg/t3code/pull/23698
- fix(server): Codex threads open in another client are no longer silently replaced by @derektrimm in https://github.com/pingdotgg/t3code/pull/21045
- fix(server): WSL servers avoid ports already used by Windows by @tylerjenningsw in https://github.com/pingdotgg/t3code/pull/22962
- perf(web): reuse repeated inline skill lookups by @luke2x in https://github.com/pingdotgg/t3code/pull/29008
- fix(opencode): expand home-relative executable paths by @voltcrash in https://github.com/pingdotgg/t3code/pull/29326
- fix(server): title regeneration works after a thread's worktree is cleaned up by @saphid in https://github.com/pingdotgg/t3code/pull/29606
- fix(server): dev servers a Codex agent starts show under its thread by @saphid in https://github.com/pingdotgg/t3code/pull/29687
- fix(server): status no longer fetches a remote named after a local tracked branch by @saphid in https://github.com/pingdotgg/t3code/pull/29670
- fix(server): preview snapshots no longer cut an emoji in half by @saphid in https://github.com/pingdotgg/t3code/pull/29600
- fix(server): restart notes no longer split an emoji in a long background task label by @saphid in https://github.com/pingdotgg/t3code/pull/29647
- fix(acp): Always allow no longer cancels the turn when an agent only offers allow-once by @MarcoDotIO in https://github.com/pingdotgg/t3code/pull/29463
- fix(server): forking a Codex thread archived outside T3 Code no longer fails by @saphid in https://github.com/pingdotgg/t3code/pull/29618
- perf(shared): stop single-token message search at the best hit by @hieu-lee in https://github.com/pingdotgg/t3code/pull/28930
- fix(preview): a dropped stream withdraws its stale file picker by @saphid in https://github.com/pingdotgg/t3code/pull/29655
- fix(provider-acp): ACP threads keep receiving events after a rollback by @trevoedwards in https://github.com/pingdotgg/t3code/pull/28987
- perf(opencode): provider event logs skip per-token reply deltas by @saphid in https://github.com/pingdotgg/t3code/pull/29673
- fix(web): open files from Claude and ACP tool-call diffs by @Jo2234 in https://github.com/pingdotgg/t3code/pull/29309
- fix(server): files tree labels ignored folders inside git submodules by @saphid in https://github.com/pingdotgg/t3code/pull/29650
- fix(server): server updates reclaim partial database backups left by killed updates by @MarcoDotIO in https://github.com/pingdotgg/t3code/pull/29464
- fix(server): PR watch wakes no longer split an emoji in a long comment by @saphid in https://github.com/pingdotgg/t3code/pull/29633
- fix(server): pinning a settled thread stamps its return to the active list by @saphid in https://github.com/pingdotgg/t3code/pull/29602
- fix(server): Claude's commands no longer run Electron apps as Node by @u9g in https://github.com/pingdotgg/t3code/pull/29413
- docs: keybindings guide lists the rightPanelOpen when key by @saphid in https://github.com/pingdotgg/t3code/pull/29677
- perf(shared): avoid redundant visibility work on status updates by @hieu-lee in https://github.com/pingdotgg/t3code/pull/28965
- fix(desktop): failed settings saves no longer leave temp files behind by @saphid in https://github.com/pingdotgg/t3code/pull/29635
- fix(acp): a final agent message without a trailing newline is no longer dropped by @saphid in https://github.com/pingdotgg/t3code/pull/29605
- fix(server): terminal history keeps output after an unterminated OSC by @saphid in https://github.com/pingdotgg/t3code/pull/29604
- fix(cli): t3 up's pairing hint keeps --base-dir by @saphid in https://github.com/pingdotgg/t3code/pull/29684
- fix(shared): preserve omitted components in zero-major caret ranges by @Jo2234 in https://github.com/pingdotgg/t3code/pull/29335
- fix(server): thread titles use linked PR context when the URL is followed by a colon or bold markers by @saphid in https://github.com/pingdotgg/t3code/pull/29656
- fix(source-control): remotes like github.com:owner/repo reach their host by @MarcoDotIO in https://github.com/pingdotgg/t3code/pull/29457
- fix(server): terminal history keeps text with C1 characters by @saphid in https://github.com/pingdotgg/t3code/pull/29649
- fix(server): worktree handoff follows the project's start-from-origin setting by @saphid in https://github.com/pingdotgg/t3code/pull/29810
- fix(server): review keeps tracked changes when untracked files overflow the listing by @saphid in https://github.com/pingdotgg/t3code/pull/29615
- fix(server): browser setup advice names the server's T3 home by @saphid in https://github.com/pingdotgg/t3code/pull/29646
- fix: honor generic MIME aliases in attachment previews by @Jo2234 in https://github.com/pingdotgg/t3code/pull/29360
- fix(client-runtime): terminals fit their pane again after a reconnect by @saphid in https://github.com/pingdotgg/t3code/pull/29696
- fix(server): Run now on a scheduled task says why it was refused by @saphid in https://github.com/pingdotgg/t3code/pull/29620
- fix(server): a preview_open whose first load fails no longer leaves a hidden tab behind by @saphid in https://github.com/pingdotgg/t3code/pull/29865
- fix(cursor): Cursor text generation names usage-limit failures by @saphid in https://github.com/pingdotgg/t3code/pull/29748
- fix(server): review diffs keep working with untracked files outside the sparse cone by @saphid in https://github.com/pingdotgg/t3code/pull/29880
- fix(opencode): nested custom commands like /git/commit run as commands by @saphid in https://github.com/pingdotgg/t3code/pull/29765
- fix(source-control): renamed files in GitHub, GitLab and Azure DevOps diffs show as renames by @saphid in https://github.com/pingdotgg/t3code/pull/29774
- fix(opencode): a command that exits non-zero is stored as failed, not completed by @saphid in https://github.com/pingdotgg/t3code/pull/29824
- fix(server): linked environments pick up the other machine's new name by @saphid in https://github.com/pingdotgg/t3code/pull/29779
- fix(server): document text skips tracked deletions and field codes by @saphid in https://github.com/pingdotgg/t3code/pull/29796
- fix(server): OTLP export settings survive a saved token streaming mode by @saphid in https://github.com/pingdotgg/t3code/pull/29786
- fix(server): Word text boxes are no longer extracted twice for agents by @saphid in https://github.com/pingdotgg/t3code/pull/29827
- fix(server): new projects are created when core.safecrlf refuses LF files by @saphid in https://github.com/pingdotgg/t3code/pull/29843
- fix(web): drafts saved by older versions load instead of being wiped by @saphid in https://github.com/pingdotgg/t3code/pull/29828
- fix(server): Antigravity text generation shows sign-in and setup errors by @saphid in https://github.com/pingdotgg/t3code/pull/29823
- fix(web): picking a custom model named like a Codex alias keeps that model by @saphid in https://github.com/pingdotgg/t3code/pull/29789
- fix(server): turn checkpoints keep LF files when core.safecrlf is true by @saphid in https://github.com/pingdotgg/t3code/pull/29826
- fix(shared): find in thread matches a word typed with a curly apostrophe by @saphid in https://github.com/pingdotgg/t3code/pull/29759
- fix(server): review rows for nested repositories load in large diffs by @saphid in https://github.com/pingdotgg/t3code/pull/29693
- fix(server): t3_worktree_list lists refs after storage cleanup removes a thread's worktree by @saphid in https://github.com/pingdotgg/t3code/pull/29645
- fix(provider-core): text generation context cuts no longer split an emoji by @saphid in https://github.com/pingdotgg/t3code/pull/29653
- fix(server): html_preview no longer splits an emoji in a long console line by @saphid in https://github.com/pingdotgg/t3code/pull/29844
- fix(server): diffs keep submodule changes under diff.submodule=log by @saphid in https://github.com/pingdotgg/t3code/pull/29852
- fix(opencode): OpenCode 2 titles for image messages skip images the server cannot open by @saphid in https://github.com/pingdotgg/t3code/pull/29819
- fix(server): orchestrator_capabilities no longer offers providers the project turned off by @saphid in https://github.com/pingdotgg/t3code/pull/29842
- fix(web): big terminal selections no longer break sending by @saphid in https://github.com/pingdotgg/t3code/pull/29804
- test(web): file editor dismissal test waits for the editor to render by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30350
- test(web): worked-for heading test clicks once the list is revealed by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30404
- fix(azure-devops): legacy DefaultCollection pull request URLs can be pasted to check out by @saphid in https://github.com/pingdotgg/t3code/pull/29763
- fix(shared): preview_open reports about: and mailto: as unsupported instead of misreading them by @saphid in https://github.com/pingdotgg/t3code/pull/29614
- fix(server): delegated threads no longer share one provider event log by @onlydole in https://github.com/pingdotgg/t3code/pull/29770
- fix(server): a queued provider switch no longer ends background work by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30401
- fix(kiro): slow kiro-cli starts no longer show Kiro as unavailable by @saphid in https://github.com/pingdotgg/t3code/pull/29841
- fix(client): mark unread sticks on a thread reopened within ten minutes by @saphid in https://github.com/pingdotgg/t3code/pull/29814
- fix(pi): extension errors name folder extensions instead of "index" by @saphid in https://github.com/pingdotgg/t3code/pull/29768
- fix(github): Enterprise Server pull request URLs can be pasted to check out by @saphid in https://github.com/pingdotgg/t3code/pull/29892
- fix(server): a peer refusing one call no longer marks its link as failing by @saphid in https://github.com/pingdotgg/t3code/pull/29914
- perf(server): Claude skill discovery resolves each repository root once by @onlydole in https://github.com/pingdotgg/t3code/pull/29757
- fix(server): t3 service uninstall leaves another T3 home's service alone by @saphid in https://github.com/pingdotgg/t3code/pull/29872
- fix(server): PR watches wake again when a push leaves the branch conflicting by @saphid in https://github.com/pingdotgg/t3code/pull/29767
- fix(muse): the thread error banner no longer shows unredacted failure text by @saphid in https://github.com/pingdotgg/t3code/pull/29910
- fix(server): provider settings changed mid-refresh no longer revert to the old status by @saphid in https://github.com/pingdotgg/t3code/pull/29894
- fix(shared): accept whitespace after engine range operators by @romil-bijarnia in https://github.com/pingdotgg/t3code/pull/29730
- perf(server): stop tracing per-event live coalescer work by @onlydole in https://github.com/pingdotgg/t3code/pull/29758
- test(desktop): the Windows shell kill test waits for each spawn before advancing the clock by @maria-rcks in https://github.com/pingdotgg/t3code/pull/30463
- fix(shared): ignore unsupported command output control parameters by @romil-bijarnia in https://github.com/pingdotgg/t3code/pull/29736
- fix(cli): t3 update no longer says a service awaiting restart runs the new version by @saphid in https://github.com/pingdotgg/t3code/pull/29901
- fix(mcp): accept CR and mixed line endings in response streams by @romil-bijarnia in https://github.com/pingdotgg/t3code/pull/29727
- fix(server): preview tabs that fail during setup no longer leave their page open by @saphid in https://github.com/pingdotgg/t3code/pull/29885
- fix(provider-core): long subagent titles no longer end in a broken character by @saphid in https://github.com/pingdotgg/t3code/pull/29906
- fix(shared): ignore unsupported command output erase modes by @romil-bijarnia in https://github.com/pingdotgg/t3code/pull/29737
- fix(server): a failed scheduled run shows its error without a stack trace by @saphid in https://github.com/pingdotgg/t3code/pull/29889
- perf(web): long threads stream with 70% less work-row derivation by @Entrpi in https://github.com/pingdotgg/t3code/pull/29971
- fix(pi): send SIGTERM before closing Pi's stdin on teardown by @yaacovcorcos in https://github.com/pingdotgg/t3code/pull/30025
- fix(server): clean up child worktrees after their parent settles by @voltcrash in https://github.com/pingdotgg/t3code/pull/30026
- fix(server): Claude context meter shows the window for models outside the catalog by @hahhforest in https://github.com/pingdotgg/t3code/pull/30051
- fix(server): quitting no longer waits on an unreachable telemetry endpoint by @levelorbit in https://github.com/pingdotgg/t3code/pull/30033
- fix(client): keep snoozed failures hidden without completion times by @voltcrash in https://github.com/pingdotgg/t3code/pull/30063
- perf(server): PR sync stops reading pull requests closed over a day ago by @advaitpaliwal in https://github.com/pingdotgg/t3code/pull/30071
- fix(acp): file changes show the patch of every diff in a tool call by @Abhishek-B-R in https://github.com/pingdotgg/t3code/pull/28631
- fix(server): Antigravity sign-in no longer blames the network while the runtime starts by @wenshen18643 in https://github.com/pingdotgg/t3code/pull/30079
- fix(relay): read migrations in checkout paths with spaces by @domvox in https://github.com/pingdotgg/t3code/pull/30080
- fix(cli): validate npm runtime before caching it by @voltcrash in https://github.com/pingdotgg/t3code/pull/30099
- fix(server): SSH device host no longer reconnects on a single slow health probe by @gyurix in https://github.com/pingdotgg/t3code/pull/30159
- fix(server): read continued core.bare values during onboarding by @imharjot in https://github.com/pingdotgg/t3code/pull/30174
- fix(server): published repos fall back to HTTPS when SSH is refused by @saphid in https://github.com/pingdotgg/t3code/pull/30142
- fix(opencode): fail stalled event subscriptions promptly by @voltcrash in https://github.com/pingdotgg/t3code/pull/30201
- fix(server): a link card the user moved past no longer blocks auto-settle by @saphid in https://github.com/pingdotgg/t3code/pull/29847
- fix(server): deleting a thread also removes its agent preview recordings by @saphid in https://github.com/pingdotgg/t3code/pull/29853
- fix(server): review guides no longer fail on the repository's checkout hooks by @saphid in https://github.com/pingdotgg/t3code/pull/29907
- fix(desktop): bump Electron to 44.10.1 for October Chromium security backports by @valuin in https://github.com/pingdotgg/t3code/pull/30161
- chore(repos): sync reference repos from shallow clones by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30472
- chore(repos): sync Effect 4.1.2 and Alchemy beta.85, rename effect-smol by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30481
- Revert "fix(web): terminal controls no longer cover the first line" by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30493
- feat(web): show a newly created pairing link without expanding the client list by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/30498
New Contributors
- @LVC-Chakresh made their first contribution in #28090
- @birosrichard made their first contribution in #21678
- @jnunemaker made their first contribution in #22328
- @robrab2000 made their first contribution in #22941
- @thepriceisright made their first contribution in #23437
- @AkiVonAkira made their first contribution in #23621
- @Dananz made their first contribution in #24050
- @mayesidev made their first contribution in #25375
- @brandon-julio-t made their first contribution in #25384
- @egefeyzioglu made their first contribution in #25659
- @Michaelihc made their first contribution in #25746
- @DarlingtonDeveloper made their first contribution in #25974
- @ianrowe12 made their first contribution in #26651
- @hieu-lee made their first contribution in #26717
- @treiber made their first contribution in #27151
- @Gieveppix made their first contribution in #27191
- @nibarAhmed made their first contribution in #27249
- @Geuni620 made their first contribution in #27384
- @drdator made their first contribution in #27472
- @WalshyDev made their first contribution in #27511
- @melbaldove made their first contribution in #27519
- @BelKed made their first contribution in #27593
- @NathanGlasby made their first contribution in #27635
- @AbdelrahmanTamer21 made their first contribution in #27662
- @willadamskeane made their first contribution in #27722
- @juuulianx made their first contribution in #27741
- @xlurie made their first contribution in #27836
- @trevoedwards made their first contribution in #27924
- @Pyseph made their first contribution in #27980
- @tuanvumaihuynh made their first contribution in #27983
- @Dreighto made their first contribution in #27990
- @jtatum made their first contribution in #28005
- @morahan made their first contribution in #28243
- @wrymn made their first contribution in #28244
- @mozzius made their first contribution in #28660
- @hbw00111 made their first contribution in #7295
- @Rish-it made their first contribution in #23782
- @Zacharon made their first contribution in #24005
- @Srijan-D made their first contribution in #25002
- @msfeldstein made their first contribution in #25275
- @abdulsalamgs made their first contribution in #25591
- @diddletime made their first contribution in #26027
- @GisTypical made their first contribution in #26077
- @ahmedverona34-bot made their first contribution in #26095
- @Vikas-Maur made their first contribution in #26398
- @oss96 made their first contribution in #26877
- @tyler-b4innova made their first contribution in #25438
- @melvinmng made their first contribution in #27175
- @jagrat7 made their first contribution in #27231
- @SparshKaushik made their first contribution in #27381
- @Narayan201120 made their first contribution in #27405
- @atatter made their first contribution in #27434
- @Byntham made their first contribution in #27468
- @wagner-deoliveira made their first contribution in #27614
- @LukeCommits made their first contribution in #27651
- @DimaMishchenko made their first contribution in #27794
- @snnbotchway made their first contribution in #27822
- @fatihozdil made their first contribution in #28326
- @Motaghi made their first contribution in #28343
- @sergiiopm made their first contribution in #28428
- @wSedlacek made their first contribution in #28439
- @kimkhoi2202 made their first contribution in #28460
- @iXab3r made their first contribution in #28482
- @shkumbinhasani made their first contribution in #28521
- @BilalIrfanContact made their first contribution in #28610
- @SevenWhite made their first contribution in #28604
- @serhiyhvala made their first contribution in #29419
- @ebrahimHakimuddin made their first contribution in #27438
- @astarktc made their first contribution in #30187
- @Abhishek-B-R made their first contribution in https://github.com/pingdotgg/t3code/pull/28647
- @tylerjenningsw made their first contribution in https://github.com/pingdotgg/t3code/pull/22962
- @Jo2234 made their first contribution in https://github.com/pingdotgg/t3code/pull/29309
- @u9g made their first contribution in https://github.com/pingdotgg/t3code/pull/29413
- @onlydole made their first contribution in https://github.com/pingdotgg/t3code/pull/29770
- @romil-bijarnia made their first contribution in https://github.com/pingdotgg/t3code/pull/29730
- @Entrpi made their first contribution in https://github.com/pingdotgg/t3code/pull/29971
- @hahhforest made their first contribution in https://github.com/pingdotgg/t3code/pull/30051
- @levelorbit made their first contribution in https://github.com/pingdotgg/t3code/pull/30033
- @advaitpaliwal made their first contribution in https://github.com/pingdotgg/t3code/pull/30071
- @wenshen18643 made their first contribution in https://github.com/pingdotgg/t3code/pull/30079
- @domvox made their first contribution in https://github.com/pingdotgg/t3code/pull/30080
- @gyurix made their first contribution in https://github.com/pingdotgg/t3code/pull/30159
- @imharjot made their first contribution in https://github.com/pingdotgg/t3code/pull/30174
- @valuin made their first contribution in https://github.com/pingdotgg/t3code/pull/30161
Full Changelog: v0.1.6...v0.1.7