T3 Code is an open-source application that provides a unified interface for managing AI coding resources. Developed by the team behind the T3 ecosystem, it allows developers to run coding resources on their own devices and control them through desktop, web, and mobile applications.
Instead of introducing a new AI coding model, T3 Code works with agents already used by developers, such as Claude Code, OpenAI Codex, Cursor, OpenCode, Grok Build, and Google Antigravity. The application essentially serves as a control center for various existing coding tools, allowing users to manage their work sessions without having to constantly switch between different interfaces.
Features
Multiple AI Coding Agents
T3 Code supports several popular coding agents through their existing installations and authentication systems.
Supported providers include:
Claude Code
OpenAI Codex
Cursor
OpenCode
Grok Build
Google Antigravity
Pi
Muse Code
fx
This bring-your-own-agent approach means users can use their existing subscriptions and authentication rather than purchasing another AI coding service specifically for T3 Code.
Each provider runs in the environment where it is installed. Developers can configure multiple provider instances and accounts, making it easier to switch between different models and coding tools.
Desktop, Web, and Mobile Access
One of T3 Code's strongest features is its cross-platform control system.
The desktop application uses Electron, while the web interface provides browser-based access. Dedicated mobile applications for iOS and Android allow developers to monitor and control coding sessions from their phones.
This is particularly useful when an agent is performing a lengthy task. Developers can start work on their computer and continue monitoring progress from another device.
Remote Development
T3 Code supports remote environments through T3 Connect, direct network pairing, and SSH connections.
This allows developers to run coding agents on a workstation or remote Linux machine while controlling them from another computer or mobile device.
The actual execution remains on the host machine. Project files, provider credentials, terminals, and agent processes stay in their original environment rather than being transferred to the client.
For developers with dedicated development servers, this provides a convenient way to manage AI-assisted coding without keeping the desktop application open on their primary computer.
Parallel Agent Workflows
T3 Code organizes development work into projects and threads. Developers can create separate tasks, manage multiple conversations, and run agents against different projects.
This makes it easier to delegate independent tasks to different agents instead of relying on one conversation for everything.
Project management and thread organization also help keep development context separate, especially when working on several repositories simultaneously.
Permission Management
Running AI coding agents with access to project files and terminal commands requires proper permission controls.
T3 Code provides several permission modes:
Supervised: Requests approval for commands and file changes.
Auto-accept edits: Automatically approves file edits while other actions can still require approval.
Auto: Uses the provider's automatic review capabilities where supported.
Full access: Allows commands and edits without approval prompts.
These settings can be configured for individual threads, with project and environment defaults available.
Permission behavior can differ between providers, so users should not assume that every agent implements the same restrictions.
Git and Source Control Integration
T3 Code includes source control functionality for working with Git repositories and pull requests.
It supports GitHub, GitLab, Forgejo, Gitea, Bitbucket, Azure DevOps, and GitCafe.
Developers can clone repositories, review changes, create branches, commit modifications, push code, and create pull requests through the application.
This integration makes T3 Code more than a simple interface for agent conversations. It also provides tools for managing the development workflow around those agents.
MCP Integration
T3 Code includes an MCP server that allows external AI agents to interact with its projects and threads.
This is useful for developers who want to connect additional AI tools or automation systems to their existing T3 Code environment.
It also supports workflows involving agents that were not originally launched by T3 Code, extending its functionality beyond the built-in provider integrations.
Download T3 Code v0.1.7 - Software Mirrors |
|---|
T3 Code v0.1.7 for WindowsT3-Code-0.1.7-x64.exe | 277.51 MB T3-Code-0.1.7-arm64.exe | 263.5 MB t3-0.1.7-win32-x64.zip | 108.07 MB t3-0.1.7-win32-arm64.zip | 97.54 MB |
T3 Code v0.1.7 for macOST3-Code-0.1.7-x64.zip | 181.35 MB T3-Code-0.1.7-x64.dmg | 188.24 MB T3-Code-0.1.7-arm64.zip | 172.78 MB T3-Code-0.1.7-arm64.dmg | 179.61 MB t3-0.1.7-darwin-arm64.tar.gz | 104.92 MB |
T3 Code v0.1.7 for LinuxT3-Code-0.1.7-x86_64.AppImage | 181.69 MB T3-Code-0.1.7-arm64.deb | 142.91 MB T3-Code-0.1.7-arm64.AppImage | 177.96 MB T3-Code-0.1.7-amd64.deb | 152.27 MB t3-0.1.7-linux-x64.tar.gz | 117.98 MB t3-0.1.7-linux-arm64.tar.gz | 113.65 MB |
T3 Code v0.1.7 Source Code
T3 Code v0.1.7 Source code (zip)
T3 Code v0.1.7 Source code (tar.gz)
|
T3 Code v0.1.7 Release Notes: 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.ts file 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 #29912
- feat(web): open full access menu from the new thread context strip by @Yash-Singh1 in #30275
- fix(web): long server lists in thread details now page 4 at a time by @Bil0000 in #28684
- fix(web): keep the project filter menu aligned with its trigger by @Yash-Singh1 in #30282
- fix(github): Rebase stack no longer conflicts after a lower layer is squash-merged by @saphid in #29919
- fix(server): changing a task's wake policy no longer reverts a checkpointed parent run by @juliusmarminge in #25662
- perf(server): settled PR lookups stop re-spawning git every sweep by @juliusmarminge in #29721
- fix(server): generated commit and PR text ignores git signature output by @saphid in #29580
- fix(web): picking a branch in a subfolder project keeps the thread in the project folder by @saphid in #29908
- fix(mobile): close and reopen pull requests from the actions menu by @juliusmarminge in #29962
- fix(web): mouse wheel over the thread minimap glides instead of jumping by @flamboh in #29038
- fix(server): managed policy covers Kiro by @juliusmarminge in #29915
- fix(server): t3 update installs from the policy's update mirror by @juliusmarminge in #29911
- fix(desktop): Ctrl+R on macOS reaches the preview page instead of reloading it by @saphid in #29893
- fix(server): native forks after an undo no longer copy later turns by @saphid in #29902
- fix(server): idle compaction still runs after a queued message is removed or steered by @saphid in #29904
- fix(server): guests of a forked thread can open files on the messages it inherited by @saphid in #29794
- fix(evals): resume browser verification after unavailable status by @Yash-Singh1 in #30298
- fix(shared): saving one source control token no longer drops the other hosts' tokens by @yordis in #29554
- fix(desktop): a policy that stops startup no longer points at another release by @juliusmarminge in #30319
- docs: pin an absolute binary path under a permission cap by @juliusmarminge in #29916
- fix(mobile): Android follow-up menu shows in full with the keyboard open by @juliusmarminge in #29263
- fix(web): deleting the open thread no longer opens a snoozed or settled thread by @juliusmarminge in #29643
- fix(web): closing Settings or Usage no longer jumps back to a quote's source by @juliusmarminge in #29013
- fix(server): squash-merged branches no longer offer push & create PR by @juliusmarminge in #28494
- fix(mobile): settings providers show the ACP registry icon by @juliusmarminge in #28135
- fix(server): Grok usage limits tell Legacy-mode xAI accounts to switch to Privacy Mode by @juliusmarminge in #28097
- fix(usage): label a proxied Claude account by its e-mail, and drop .json from hub rows by @juliusmarminge in #28065
- fix(gitlab): a signed-out default glab host no longer hides other signed-in hosts by @juliusmarminge in #27840
- perf(server): prune events the projections already cover by @juliusmarminge in #29806
- fix(server): GPT-6.1 Sol no longer compacts after every tool call on managed Codex by @maria-rcks in #30004
- feat(policy): admins set managed policy from a Group Policy template by @juliusmarminge in #29862
- perf(server): bound streaming recovery reads by active runs by @Yash-Singh1 in #30357
- perf(server): read pull request metadata from a lightweight snapshot by @Yash-Singh1 in #30356
- fix(server): cancelling worktree setup no longer leaves its new branch behind by @saphid in #29781
- feat(mobile): add on-device Android dictation by @PixPMusic in #26734
- feat(server): read usage limit source keys from a secret provider by @yordis in #27760
- feat(device): read the EAS access token from a secret provider by @yordis in #27763
- fix(server): route missing read-only queries to readers by @Yash-Singh1 in #30366
- perf(server): index delegated recovery candidates by @Yash-Singh1 in #30359
- feat(server,web,mobile,desktop): Copy thread copies a link that opens the thread by @juliusmarminge in #26290
- feat(mobile,web): copied thread links open the mobile app by @juliusmarminge in #29815
- fix(antigravity): rate-limited turns keep their reset time by @saphid in #29594
- fix(server): startup no longer hangs on a shell stuck in the kernel by @AdEx-Partners-DE in #27938
- fix(server): reverting files before the first commit no longer leaves them staged by @Abhishek-B-R in #28647
- fix(server): truncated Claude task output no longer starts with a replacement character by @Abhishek-B-R in #28643
- fix(shared): relative file links with routing punctuation open as files by @Abhishek-B-R in #28637
- fix(server): messages cut by a restart no longer stay marked as streaming by @Abhishek-B-R in #28646
- fix(server): Antigravity Auto asks instead of approving every request by @parmartejass in #23698
- fix(server): Codex threads open in another client are no longer silently replaced by @derektrimm in #21045
- fix(server): WSL servers avoid ports already used by Windows by @tylerjenningsw in #22962
- perf(web): reuse repeated inline skill lookups by @luke2x in #29008
- fix(opencode): expand home-relative executable paths by @voltcrash in #29326
- fix(server): title regeneration works after a thread's worktree is cleaned up by @saphid in #29606
- fix(server): dev servers a Codex agent starts show under its thread by @saphid in #29687
- fix(server): status no longer fetches a remote named after a local tracked branch by @saphid in #29670
- fix(server): preview snapshots no longer cut an emoji in half by @saphid in #29600
- fix(server): restart notes no longer split an emoji in a long background task label by @saphid in #29647
- fix(acp): Always allow no longer cancels the turn when an agent only offers allow-once by @MarcoDotIO in #29463
- fix(server): forking a Codex thread archived outside T3 Code no longer fails by @saphid in #29618
- perf(shared): stop single-token message search at the best hit by @hieu-lee in #28930
- fix(preview): a dropped stream withdraws its stale file picker by @saphid in #29655
- fix(provider-acp): ACP threads keep receiving events after a rollback by @trevoedwards in #28987
- perf(opencode): provider event logs skip per-token reply deltas by @saphid in #29673
- fix(web): open files from Claude and ACP tool-call diffs by @Jo2234 in #29309
- fix(server): files tree labels ignored folders inside git submodules by @saphid in #29650
- fix(server): server updates reclaim partial database backups left by killed updates by @MarcoDotIO in #29464
- fix(server): PR watch wakes no longer split an emoji in a long comment by @saphid in #29633
- fix(server): pinning a settled thread stamps its return to the active list by @saphid in #29602
- fix(server): Claude's commands no longer run Electron apps as Node by @u9g in #29413
- docs: keybindings guide lists the rightPanelOpen when key by @saphid in #29677
- perf(shared): avoid redundant visibility work on status updates by @hieu-lee in #28965
- fix(desktop): failed settings saves no longer leave temp files behind by @saphid in #29635
- fix(acp): a final agent message without a trailing newline is no longer dropped by @saphid in #29605
- fix(server): terminal history keeps output after an unterminated OSC by @saphid in #29604
- fix(cli): t3 up's pairing hint keeps --base-dir by @saphid in #29684
- fix(shared): preserve omitted components in zero-major caret ranges by @Jo2234 in #29335
- fix(server): thread titles use linked PR context when the URL is followed by a colon or bold markers by @saphid in #29656
- fix(source-control): remotes like github.com:owner/repo reach their host by @MarcoDotIO in #29457
- fix(server): terminal history keeps text with C1 characters by @saphid in #29649
- fix(server): worktree handoff follows the project's start-from-origin setting by @saphid in #29810
- fix(server): review keeps tracked changes when untracked files overflow the listing by @saphid in #29615
- fix(server): browser setup advice names the server's T3 home by @saphid in #29646
- fix: honor generic MIME aliases in attachment previews by @Jo2234 in #29360
- fix(client-runtime): terminals fit their pane again after a reconnect by @saphid in #29696
- fix(server): Run now on a scheduled task says why it was refused by @saphid in #29620
- fix(server): a preview_open whose first load fails no longer leaves a hidden tab behind by @saphid in #29865
- fix(cursor): Cursor text generation names usage-limit failures by @saphid in #29748
- fix(server): review diffs keep working with untracked files outside the sparse cone by @saphid in #29880
- fix(opencode): nested custom commands like /git/commit run as commands by @saphid in #29765
- fix(source-control): renamed files in GitHub, GitLab and Azure DevOps diffs show as renames by @saphid in #29774
- fix(opencode): a command that exits non-zero is stored as failed, not completed by @saphid in #29824
- fix(server): linked environments pick up the other machine's new name by @saphid in #29779
- fix(server): document text skips tracked deletions and field codes by @saphid in #29796
- fix(server): OTLP export settings survive a saved token streaming mode by @saphid in #29786
- fix(server): Word text boxes are no longer extracted twice for agents by @saphid in #29827
- fix(server): new projects are created when core.safecrlf refuses LF files by @saphid in #29843
- fix(web): drafts saved by older versions load instead of being wiped by @saphid in #29828
- fix(server): Antigravity text generation shows sign-in and setup errors by @saphid in #29823
- fix(web): picking a custom model named like a Codex alias keeps that model by @saphid in #29789
- fix(server): turn checkpoints keep LF files when core.safecrlf is true by @saphid in #29826
- fix(shared): find in thread matches a word typed with a curly apostrophe by @saphid in #29759
- fix(server): review rows for nested repositories load in large diffs by @saphid in #29693
- fix(server): t3_worktree_list lists refs after storage cleanup removes a thread's worktree by @saphid in #29645
- fix(provider-core): text generation context cuts no longer split an emoji by @saphid in #29653
- fix(server): html_preview no longer splits an emoji in a long console line by @saphid in #29844
- fix(server): diffs keep submodule changes under diff.submodule=log by @saphid in #29852
- fix(opencode): OpenCode 2 titles for image messages skip images the server cannot open by @saphid in #29819
- fix(server): orchestrator_capabilities no longer offers providers the project turned off by @saphid in #29842
- fix(web): big terminal selections no longer break sending by @saphid in #29804
- test(web): file editor dismissal test waits for the editor to render by @juliusmarminge in #30350
- test(web): worked-for heading test clicks once the list is revealed by @juliusmarminge in #30404
- fix(azure-devops): legacy DefaultCollection pull request URLs can be pasted to check out by @saphid in #29763
- fix(shared): preview_open reports about: and mailto: as unsupported instead of misreading them by @saphid in #29614
- fix(server): delegated threads no longer share one provider event log by @onlydole in #29770
- fix(server): a queued provider switch no longer ends background work by @juliusmarminge in #30401
- fix(kiro): slow kiro-cli starts no longer show Kiro as unavailable by @saphid in #29841
- fix(client): mark unread sticks on a thread reopened within ten minutes by @saphid in #29814
- fix(pi): extension errors name folder extensions instead of "index" by @saphid in #29768
- fix(github): Enterprise Server pull request URLs can be pasted to check out by @saphid in #29892
- fix(server): a peer refusing one call no longer marks its link as failing by @saphid in #29914
- perf(server): Claude skill discovery resolves each repository root once by @onlydole in #29757
- fix(server): t3 service uninstall leaves another T3 home's service alone by @saphid in #29872
- fix(server): PR watches wake again when a push leaves the branch conflicting by @saphid in #29767
- fix(muse): the thread error banner no longer shows unredacted failure text by @saphid in #29910
- fix(server): provider settings changed mid-refresh no longer revert to the old status by @saphid in #29894
- fix(shared): accept whitespace after engine range operators by @romil-bijarnia in #29730
- perf(server): stop tracing per-event live coalescer work by @onlydole in #29758
- test(desktop): the Windows shell kill test waits for each spawn before advancing the clock by @maria-rcks in #30463
- fix(shared): ignore unsupported command output control parameters by @romil-bijarnia in #29736
- fix(cli): t3 update no longer says a service awaiting restart runs the new version by @saphid in #29901
- fix(mcp): accept CR and mixed line endings in response streams by @romil-bijarnia in #29727
- fix(server): preview tabs that fail during setup no longer leave their page open by @saphid in #29885
- fix(provider-core): long subagent titles no longer end in a broken character by @saphid in #29906
- fix(shared): ignore unsupported command output erase modes by @romil-bijarnia in #29737
- fix(server): a failed scheduled run shows its error without a stack trace by @saphid in #29889
- perf(web): long threads stream with 70% less work-row derivation by @Entrpi in #29971
- fix(pi): send SIGTERM before closing Pi's stdin on teardown by @yaacovcorcos in #30025
- fix(server): clean up child worktrees after their parent settles by @voltcrash in #30026
- fix(server): Claude context meter shows the window for models outside the catalog by @hahhforest in #30051
- fix(server): quitting no longer waits on an unreachable telemetry endpoint by @levelorbit in #30033
- fix(client): keep snoozed failures hidden without completion times by @voltcrash in #30063
- perf(server): PR sync stops reading pull requests closed over a day ago by @advaitpaliwal in #30071
- fix(acp): file changes show the patch of every diff in a tool call by @Abhishek-B-R in #28631
- fix(server): Antigravity sign-in no longer blames the network while the runtime starts by @wenshen18643 in #30079
- fix(relay): read migrations in checkout paths with spaces by @domvox in #30080
- fix(cli): validate npm runtime before caching it by @voltcrash in #30099
- fix(server): SSH device host no longer reconnects on a single slow health probe by @gyurix in #30159
- fix(server): read continued core.bare values during onboarding by @imharjot in #30174
- fix(server): published repos fall back to HTTPS when SSH is refused by @saphid in #30142
- fix(opencode): fail stalled event subscriptions promptly by @voltcrash in #30201
- fix(server): a link card the user moved past no longer blocks auto-settle by @saphid in #29847
- fix(server): deleting a thread also removes its agent preview recordings by @saphid in #29853
- fix(server): review guides no longer fail on the repository's checkout hooks by @saphid in #29907
- fix(desktop): bump Electron to 44.10.1 for October Chromium security backports by @valuin in #30161
- chore(repos): sync reference repos from shallow clones by @juliusmarminge in #30472
- chore(repos): sync Effect 4.1.2 and Alchemy beta.85, rename effect-smol by @juliusmarminge in #30481
- Revert "fix(web): terminal controls no longer cover the first line" by @juliusmarminge in #30493
- feat(web): show a newly created pairing link without expanding the client list by @juliusmarminge in #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 #28647
- @tylerjenningsw made their first contribution in #22962
- @Jo2234 made their first contribution in #29309
- @u9g made their first contribution in #29413
- @onlydole made their first contribution in #29770
- @romil-bijarnia made their first contribution in #29730
- @Entrpi made their first contribution in #29971
- @hahhforest made their first contribution in #30051
- @levelorbit made their first contribution in #30033
- @advaitpaliwal made their first contribution in #30071
- @wenshen18643 made their first contribution in #30079
- @domvox made their first contribution in #30080
- @gyurix made their first contribution in #30159
- @imharjot made their first contribution in #30174
- @valuin made their first contribution in #30161
Full Changelog: v0.1.6...v0.1.7
|
Performance and Compatibility
T3 Code uses a local server architecture with web, desktop, and mobile clients communicating through HTTP and WebSocket connections.
The server handles agent execution, project files, terminals, provider credentials, and persistent state. This architecture allows remote clients to control development environments without moving the actual coding workload onto mobile devices.
The desktop application is available for Windows, macOS, and Linux. Mobile applications are available for iOS and Android, while the web interface can be accessed through a compatible browser.
Performance is an important design consideration, particularly when managing multiple active threads and remote environments. However, actual responsiveness also depends on the host machine, network connection, and coding agent being used.
The project is actively evolving and its documentation explicitly warns that users should expect bugs. Some features and provider integrations may also behave differently depending on their respective implementations.
System Requirements
T3 Code requires at least one supported coding agent to be installed and authenticated before developers can start using it for coding tasks.
The requirements depend on the chosen installation method:
Desktop: Install the appropriate application package for Windows, macOS, or Linux.
CLI: Use the supplied installer for supported operating systems.
Web: Run the T3 Code server on a machine accessible through a browser.
Mobile: Connect to an existing T3 Code server or remote environment.
Remote SSH environments require a supported Linux or Apple Silicon macOS host with the necessary runtime utilities.
Individual coding agents have their own system requirements and authentication procedures.
Pros and Cons
Pros
Supports multiple popular AI coding agents.
Works with existing agent subscriptions.
Provides desktop, web, and mobile interfaces.
Supports remote development environments.
Includes multiple permission modes.
Offers Git and pull request integration.
Supports MCP connections with external agents.
Open-source and MIT licensed.
Cons
Still in early development and may contain bugs.
Requires separately installed and authenticated coding agents.
Provider capabilities and permission behavior are not completely uniform.
Remote access requires a running and reachable host.
Some advanced features require additional configuration.
Not a standalone AI coding model or replacement for an agent provider.
How to Install
The easiest way to install T3 Code is through its official command-line installer.
On Linux and macOS:
curl -fsSL https://t3.codes/install.sh | sh
On Windows PowerShell:
irm https://t3.codes/install.ps1 | iex
After installation, start T3 Code with:
t3
This starts the server and opens the local web interface.
To keep the server running in the background on supported systems:
t3 service install
Alternatively, developers can use the Electron desktop application.
On Windows, installation through Winget is available:
winget install T3Tools.T3Code
On macOS:
brew install --cask t3-code
Ubuntu and Debian users can download the DEB package from the GitHub Releases page and install it using:
sudo apt install ./T3-Code-*.deb
After installing T3 Code, configure at least one supported provider and complete its authentication process.
Final Verdict
T3 Code is a compelling open-source solution for developers who already use multiple AI coding agents. Instead of competing directly with Claude Code, Codex, or Cursor, it provides a unified environment for controlling them.
Its strongest advantages are remote access, mobile support, permission management, parallel development workflows, and Git integration. These capabilities make it particularly useful for developers who run coding agents on dedicated workstations or servers.
The requirement to install and authenticate external agents may be inconvenient for beginners, and the project is still evolving. Nevertheless, its architecture and broad provider support make it an interesting alternative to proprietary agent management applications.
T3 Code is worth trying if you want to manage multiple AI coding agents from one interface without abandoning your existing subscriptions.
Sources