Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
497 commits
Select commit Hold shift + click to select a range
87cfd08
fix(server): Antigravity no longer delays server startup by deleting …
LukeCommits Nov 1, 2026
abcff3e
fix(web): the undo notice no longer pushes the update button out of t…
Derpedyea Nov 1, 2026
c894d79
fix(providers): Antigravity API-key setup says Connect (#27759)
voltcrash Nov 1, 2026
7e01b54
fix(effect-acp): honor advertised session delete capability (#27771)
Kamkmgamer Nov 1, 2026
58f8ab4
fix(web): bare URL links keep trailing underscores and tildes (#27794)
DimaMishchenko Nov 1, 2026
8a18bbf
perf(client): repeated server settings keep the same settings object …
MarcoDotIO Nov 1, 2026
dcc31b8
fix(server): preview browser picks up Chrome 156.0.8078.79 security f…
snnbotchway Nov 1, 2026
16f35ce
fix(shared): truncate keeps emoji whole (#27841)
samkelly880 Nov 1, 2026
d7171d3
fix(shared): inverted terminal ranges emit no fake lines (#27843)
samkelly880 Nov 1, 2026
742a3bc
fix(mobile): markdown images no longer shake on Android (#27943)
voida6 Nov 1, 2026
67ff912
fix(shared): opening a database waits for another process's lock (#28…
yaacovcorcos Nov 1, 2026
b5c83cd
Show the full title in lineage/side-chat row tooltips (#28326)
fatihozdil Nov 1, 2026
3735eb1
fix(server): look up a run's turn-start items by run, not by walking …
Motaghi Nov 1, 2026
5806aff
fix(web): skip star prompt when the server check is unavailable (#28364)
t3-code-bot[bot] Nov 1, 2026
b0d2a86
perf(server): reuse untracked paths in Git status (#28374)
gchen0002 Nov 1, 2026
f460136
perf(server): avoid building unused peer HTTP clients (#28405)
Adamulek123 Nov 1, 2026
8918a65
fix(provider): show exit details when ACP session startup crashes (#2…
shivamhwp Nov 1, 2026
52715df
fix(web): folder rows no longer jump at larger interface font sizes (…
sergiiopm Nov 1, 2026
716e1c0
fix(web): Changes row no longer shows +0 while Diff has edits (#28439)
wSedlacek Nov 1, 2026
52d755f
fix(clients): pasting a path copied from Finder or Explorer adds that…
kimkhoi2202 Nov 1, 2026
2101c6f
fix: paste-as-text shortcut on non-Latin layouts (#28470)
ValeraZSD Nov 1, 2026
8195530
fix(server): let slow worktree submodule checkouts finish (#28482)
iXab3r Nov 1, 2026
625b9ac
fix(server): an old link card no longer keeps a thread asking for inp…
georgenijo Nov 1, 2026
433bff1
fix(web): clicking a file in the Files tree keeps focus on that row (…
shkumbinhasani Nov 1, 2026
156d187
docs(claude): explain idle compaction fallback (#28532)
voltcrash Nov 1, 2026
6879da8
perf(shared): strip plan prefixes in linear time (#28537)
hieu-lee Nov 1, 2026
6ef66b6
perf(shared): count terminal resume lines without allocations (#28539)
hieu-lee Nov 1, 2026
0c0de57
perf(web): terminal updates no longer re-render every sidebar row and…
Yuruzuu Nov 1, 2026
bcc6c08
perf(web): chat view redraws no longer re-render the composer or side…
Yuruzuu Nov 1, 2026
74003bd
perf(server): worktree creation spawns fewer git processes (#28582)
hieu-lee Nov 1, 2026
46e90ba
fix(web): many automations no longer hide the thread details Automati…
Mnigos Nov 1, 2026
95d4da5
fix(clients): open a delegated child's approval on the environment it…
robrab2000 Nov 1, 2026
f3ccba8
fix(web): finished replies keep their hover timestamp while commands …
BilalIrfanContact Nov 1, 2026
93d110a
fix(server): treat a repository's only non-origin remote as its prima…
only21mil Nov 1, 2026
6a241ea
perf(server): sort the working-tree file list once per status read (#…
only21mil Nov 1, 2026
435cda9
fix(web): keep theme color alpha when a hex value is typed (#23136)
only21mil Nov 1, 2026
2a93356
fix(web): keep saved sensitive variables from losing their value (#23…
only21mil Nov 1, 2026
5c7e4f2
perf(server): t3_thread_read loads a page's items in one query (#23176)
only21mil Nov 1, 2026
cd04747
fix(mobile): use loaded branch for untouched worktree base (#23241)
only21mil Nov 1, 2026
cb79cfb
fix(server): report a created PR as created when its lookup fails (#2…
only21mil Nov 1, 2026
f14fa03
fix(opencode): steers keep the turn's agent, variant and instructions…
only21mil Nov 1, 2026
0997948
perf(ci): skip PR vouch jobs for ordinary comments (#23387)
only21mil Nov 1, 2026
5884d43
fix(web): sort pull request lists and timelines by time (#23588)
only21mil Nov 1, 2026
fc1d604
perf(ci): thread transfer report stops paging all main CI runs (#23633)
only21mil Nov 1, 2026
80a5ffa
fix(server): T3 Connect keeps a log file of its tunnel connector (#24…
only21mil Nov 1, 2026
a0d08d7
fix(server): saving a shortcut no longer deletes rules it can't read …
only21mil Nov 1, 2026
52b65aa
fix(web): installing two providers at once starts both (#24655)
only21mil Nov 1, 2026
3e0d877
fix(server): Codex switches respect each instance's CODEX_HOME variab…
only21mil Nov 1, 2026
eb129c0
fix(server): dev seeding accepts migration histories the server boots…
only21mil Nov 1, 2026
b8badda
fix(web): interval settings save when editing ends, not per keystroke…
only21mil Nov 1, 2026
3f69542
fix(web): a failed plan follow-up no longer overwrites the next draft…
only21mil Nov 1, 2026
cf5e6d3
fix(server): selected-file commits stop when the index reset fails (#…
only21mil Nov 1, 2026
ede41df
fix(opencode): OpenCode installs T3 can't identify no longer get an U…
only21mil Nov 1, 2026
f5fe88b
perf(server): MCP calls skip the caller's message history (#28282)
only21mil Nov 1, 2026
d05e4f8
fix(web): streamed replies render a list's code block as the finished…
only21mil Nov 1, 2026
3d10957
fix(ci): a providerEnv.ts change runs every package's tests (#28286)
only21mil Nov 1, 2026
5d0de82
fix(opencode): OpenCode 1.x text generation deletes its scratch sessi…
only21mil Nov 1, 2026
99be504
fix(scripts): check:changed no longer passes failing .github/scripts …
only21mil Nov 1, 2026
4c3808a
fix(web): Diagnostics memory no longer reads "1024.0 MB" (#28300)
only21mil Nov 1, 2026
b796da9
perf(server): sending a message no longer rereads the thread from the…
only21mil Nov 1, 2026
09ace62
fix(web): device tools keep the typed text when a command fails (#28323)
only21mil Nov 1, 2026
f2527c2
fix(server): turn diffs keep the agent's files when git's diff.relati…
only21mil Nov 1, 2026
dcbe9a6
fix(server): tracked clones keep an explicit SSH protocol on fallback…
only21mil Nov 1, 2026
638947e
fix(claude): Claude text generation stops saving throwaway transcript…
only21mil Nov 1, 2026
cfe2e97
fix(desktop): bound the Linux xdg-mime registration like its sibling …
only21mil Nov 1, 2026
de6830f
fix(opencode): OpenCode 1.x text generation gives up after 3 minutes …
only21mil Nov 1, 2026
8670378
fix(server): a fork no longer inherits the source thread's pin, auto-…
only21mil Nov 1, 2026
1c0cc43
fix(web): deleting a thread clears its saved right-panel, diff-panel …
only21mil Nov 1, 2026
b08d559
fix(server): command projection failures keep their cause (#28389)
only21mil Nov 1, 2026
1c748ed
fix(providers): slow Grok, Pi and fx starts no longer show as unavail…
only21mil Nov 1, 2026
3edf0f4
fix(evals): GPT eval summaries no longer call a proxied run free (#28…
EtanHey Nov 1, 2026
8513287
fix(server): truncated text stays the same when projected again (#28418)
only21mil Nov 1, 2026
6014358
fix(desktop): a settings relaunch no longer replays the link that lau…
only21mil Nov 1, 2026
fa31b66
fix(server): Codex sessions get T3CODE_THREAD_ID like Claude sessions…
SevenWhite Nov 1, 2026
e6e2ab0
feat(usage): filter Usage totals by provider and model (#28952)
t3dotgg Nov 2, 2026
e925dd6
fix(web): allow folder references on saved local desktop servers (#27…
shivamhwp Nov 2, 2026
05c0ed7
fix(web): clarify the waiting label for background work (#28969)
Yash-Singh1 Nov 2, 2026
dd6c05e
fix(preview): agent browser use no longer steals composer focus (#28613)
t3dotgg Nov 2, 2026
b92c8f4
fix(server): token telemetry counts each request once and only confir…
t3dotgg Nov 2, 2026
ddfc4a9
update the claude entrypoint identifier for accuracy (#28410)
t3dotgg Nov 2, 2026
4a5251b
fix(web): keep pending pull request actions scoped to each request (#…
Yash-Singh1 Nov 2, 2026
7a760a9
fix(desktop): load the renderer while the backend starts (#28715)
Yash-Singh1 Nov 2, 2026
91f66f8
fix(web): settings search no longer jumps or clears on an IME Enter o…
only21mil Nov 2, 2026
d890e5c
fix(mobile): explain why voice input is unavailable (#28698)
shivamhwp Nov 2, 2026
0c4454c
perf(server): Codex calls t3_thread_wait directly instead of from Cod…
t3dotgg Nov 2, 2026
23075af
refactor(server): name Codex's direct-only T3 MCP server t3-code-dire…
t3dotgg Nov 2, 2026
b12ab30
fix(mobile): files with brackets in their names attach on Android (#2…
juliusmarminge Nov 2, 2026
5f2c27e
fix(server): Stop ends a run whose provider turn already finished (#2…
juliusmarminge Nov 2, 2026
83d2b8e
fix(server): a linked retry closes the waiting link card it names (#2…
juliusmarminge Nov 2, 2026
1973e0a
fix(server): a stored boolean settledOverride no longer stops startup…
juliusmarminge Nov 2, 2026
da2d6ec
fix(server): remote updates no longer fail when the staged preflight …
juliusmarminge Nov 2, 2026
79f3ee1
fix(server): idle compaction survives a late update for an earlier ru…
juliusmarminge Nov 2, 2026
a51164c
fix(server): usage prices bare model names at the maker's rate when a…
juliusmarminge Nov 2, 2026
72f05f6
fix(web): model picker uses the full window height in short windows (…
t3dotgg Nov 2, 2026
5fc5a1d
fix(server): open clients no longer stay on "Updating" after a provid…
juliusmarminge Nov 2, 2026
333f7a6
ci(release): preview releases run from any branch (#27828)
juliusmarminge Nov 2, 2026
0338e99
fix(desktop): save and copy any image the app can show (#29079)
t3dotgg Nov 2, 2026
c65f8d5
feat(chat): threads show when you switch models or effort (#28995)
t3dotgg Nov 2, 2026
ab8e488
feat(antigravity): runtime 1.4.5 with real turn failures and subagent…
t3dotgg Nov 2, 2026
30654b3
feat: tag threads and hide tagged threads while recording (#29053)
t3dotgg Nov 2, 2026
d01b92c
perf(cli): short commands like t3 --version no longer load the whole …
Yuruzuu Nov 2, 2026
a852de0
fix(web): play completion sounds without delay (#29146)
Yash-Singh1 Nov 2, 2026
ec3ebdb
fix(web): preserve scroll position when expanding work details (#29166)
Yash-Singh1 Nov 2, 2026
47f2c8d
fix(server): Claude threads no longer join the Claude session that la…
t3dotgg Nov 2, 2026
701e13c
fix(web): hide image action tooltip in expanded viewer (#29329)
Yash-Singh1 Nov 2, 2026
22b5252
feat(server): log fast and ultrafast service tiers in analytics (#29348)
t3dotgg Nov 2, 2026
ac8dce0
fix(marketing): show 40k+ GitHub stars (#29362)
t3dotgg Nov 2, 2026
edc37c9
fix(web): center authorized client settings rows (#29382)
Yash-Singh1 Nov 2, 2026
5e966bc
fix(mobile): keep One UI navigation and Compose on one row (#29203)
none23 Nov 2, 2026
d833184
perf(server): bound runtime recovery reads by thread ownership (#29429)
Yash-Singh1 Nov 2, 2026
7cf653b
perf(server): narrow delegated recovery reads to delivery records (#2…
Yash-Singh1 Nov 2, 2026
c8a601c
fix(cursor): /compact compacts with the SDK's summarize (#29398)
SunkenInTime Nov 2, 2026
ed8833f
fix(mobile): pending auto-merge shows in the merge button (#29465)
juliusmarminge Nov 2, 2026
8657eec
fix(server): defer Tailscale endpoint discovery during startup (#29432)
Yash-Singh1 Nov 2, 2026
ff80fb3
chore(coil): merge upstream/main 8657eecb28 (361 commits)
radroid Nov 2, 2026
0847a44
fix(mobile): merge button names merged, closed, draft, and conflict s…
juliusmarminge Nov 2, 2026
1416947
test(evals): guard how agents tell threads from tasks and subagents (…
gabrielelpidio Nov 2, 2026
9bcf753
fix(server): background agent asks go to delegate_task, not a backgro…
gabrielelpidio Nov 2, 2026
84537c4
feat(server): read source control host tokens from a secret provider …
yordis Nov 2, 2026
a497f7b
fix(web): confirm before removing a provider instance's saved setting…
juliusmarminge Nov 2, 2026
3ddd398
fix(server): settled threads no longer re-send relay clears on every …
juliusmarminge Nov 2, 2026
a821f03
fix(client-runtime): connection diagnosis no longer blames the host w…
juliusmarminge Nov 2, 2026
6f41364
fix(opencode): Claude usage limits through OpenCode keep their reset …
juliusmarminge Nov 2, 2026
bdf5806
fix(desktop): prepare macOS x64 bytecode under Rosetta (#29484)
Yash-Singh1 Nov 2, 2026
cc59f99
fix(server): keep PR watches active after host failures (#29450)
Yash-Singh1 Nov 2, 2026
af00cf7
fix(cursor): show Cursor usage after signing in with Cursor (#29419)
serhiyhvala Nov 2, 2026
cbd3e14
perf(server): skip redundant claude session naming (#28910)
maria-rcks Nov 2, 2026
a9ac1e8
fix(mobile): keep the conversation steady during layout changes (#29545)
juliusmarminge Nov 2, 2026
60aec28
feat(marketing): fetch GitHub stars at build time (#29555)
juliusmarminge Nov 2, 2026
065a433
perf(server): pin the index for the unscoped agent event high-water (…
juliusmarminge Nov 2, 2026
30084f0
perf(web): the pull request code tab derives its file model once per …
juliusmarminge Nov 2, 2026
ea16fcb
perf(server): stop tracing project enrichment cache reads (#29640)
juliusmarminge Nov 2, 2026
8648aea
perf(server): seek live nodes for the subagent recovery probe (#29644)
juliusmarminge Nov 2, 2026
55e2538
feat(provider-kiro): add Kiro as an ACP provider (#14693)
juliusmarminge Nov 2, 2026
a036489
revert(web): undo hover timestamp change from #28610 (#29680)
maria-rcks Nov 2, 2026
bad610b
perf(server): idle compaction reads only the latest run, live work an…
juliusmarminge Nov 2, 2026
71646e0
perf(server): cancelling a task reads only the tasks and runs it uses…
juliusmarminge Nov 2, 2026
5b9731c
fix(web): screen readers can browse and Tab through the threads sideb…
nibarAhmed Nov 3, 2026
57cd059
chore(deps): upgrade Effect to 4.1.2 and alchemy to beta.85 (#26833)
juliusmarminge Nov 3, 2026
d8a829e
perf(web): PDF previews reload without starting a new pdf.js worker (…
saphid Nov 3, 2026
f6503f0
fix(mobile): shorten the iOS undo toast and balance its insets (#29775)
shivamhwp Nov 3, 2026
2d2299a
fix(web): file save session browser test no longer hangs on the disco…
juliusmarminge Nov 3, 2026
92dee20
fix(server): Changes totals no longer diff against a guessed base aft…
tris203 Nov 3, 2026
3c59595
perf(server): skip unused parent history in linked task status (#27913)
Adamulek123 Nov 3, 2026
6a61904
fix(server): native Claude updates use the native release feed (#27958)
NathanGlasby Nov 3, 2026
e2d3aa9
fix(tailscale): escalate hung serve commands to SIGKILL (#28529)
rishabhx29 Nov 3, 2026
948433d
refactor(server): provider registry owns explicit model cache invalid…
tris203 Nov 3, 2026
0b2c13a
perf(server): bound ordinal recovery to selected messages (#27495)
Motaghi Nov 3, 2026
1d80d0e
fix(client-runtime): branch picker shows branches changed outside T3 …
ebrahimHakimuddin Nov 3, 2026
f981b7a
perf(client): skip idle inbox placement serialization (#27460)
UtkarshUsername Nov 3, 2026
8430db6
fix(server): project content search finds matches past a line's first…
saphid Nov 3, 2026
ab06e2a
fix(clients): attachment sizes just under 1 MB no longer read "1024 K…
saphid Nov 3, 2026
a4f4741
fix(gitlab): merge request links keep an HTTP remote's port and schem…
saphid Nov 3, 2026
064cf8f
fix(server): an upstream shadowed by a local origin/<branch> branch k…
saphid Nov 3, 2026
5815442
fix(server): turn diffs keep signed commits' files under log.showSign…
saphid Nov 3, 2026
50106ef
fix(server): generated commit and PR text no longer reads colored git…
saphid Nov 3, 2026
4494faa
fix(client-runtime): checking out a pull request refreshes cached bra…
saphid Nov 3, 2026
5fa0d0b
fix(clients): cancel oversized project icon responses (#29006)
luke2x Nov 3, 2026
d1e5044
fix(shared): context chip labels no longer split an emoji at the 200-…
saphid Nov 3, 2026
448c1ac
fix(server): create_threads titles no longer end in a broken characte…
saphid Nov 3, 2026
6739dd7
perf(server): thread snapshots skip serializing a row past the row li…
Yuruzuu Nov 3, 2026
071660e
fix(server): Uncommitted review keeps a staged deletion that git pair…
saphid Nov 3, 2026
a565d89
fix(cli): t3 thread start titles no longer end in a broken character …
saphid Nov 3, 2026
89c2a5c
perf(client-runtime): expanding deferred work skips an unused timelin…
Yuruzuu Nov 3, 2026
b1913b9
fix(server): honor relocated systemd user configuration (#29244)
voltcrash Nov 3, 2026
5231459
fix(web): review comments keep a trailing blank line in their diff (#…
saphid Nov 3, 2026
dfbafee
fix(server): side chat and merge-back context no longer cut an emoji …
saphid Nov 3, 2026
a5e7e5b
perf(server): loading a file's diff skips unused repository lookups (…
Yuruzuu Nov 3, 2026
87e13d3
fix(cli): make relative install homes produce working commands (#29241)
voltcrash Nov 3, 2026
c3cfb5e
fix(forgejo): dismissed reviews no longer read as requested changes o…
saphid Nov 3, 2026
efcb937
fix(shared): Linux file links preserve literal backslashes (#29245)
voltcrash Nov 3, 2026
5349ecb
fix(gitcafe): PR link previews show a GitHub-merged pull request as m…
saphid Nov 3, 2026
ba962f2
fix(codex): restoring a checkpoint works after the Codex session was …
saphid Nov 3, 2026
cf48ea8
perf(acp): ACP agents skip decoding output twice for unused diagnosti…
Yuruzuu Nov 3, 2026
35af849
fix(server): diffs keep blank context lines under diff.suppressBlankE…
saphid Nov 3, 2026
f639c15
fix(scripts): check:changed passes when only lint-ignored code change…
saphid Nov 3, 2026
a6a921c
perf(client): streamed row updates no longer rescan question history …
Yuruzuu Nov 3, 2026
5eb8154
perf(desktop): keep Linux MIME helpers off the startup path (#29247)
voltcrash Nov 3, 2026
e051363
perf(server): shell updates read a burst of threads once (#29101)
Yuruzuu Nov 3, 2026
ae1ccb1
fix(opencode): forks from compacted threads no longer fail (#29221)
voltcrash Nov 3, 2026
8cebee4
fix(scripts): check:changed lints Astro components and runs knip for …
saphid Nov 3, 2026
e72a0c7
fix(desktop): Linux .deb no longer installs files any local user can …
shivamhwp Nov 3, 2026
9f63268
fix(desktop): native builds prepare server bytecode again after the E…
maria-rcks Nov 3, 2026
30b9c4a
fix(codex): a background command's wake no longer hangs when its outp…
saphid Nov 3, 2026
07846fc
test(scripts): expect the unmatched-pattern flag in the Astro check:c…
maria-rcks Nov 3, 2026
927a2c6
fix(mobile): drafts on threads with colons in their ids upload attach…
juliusmarminge Nov 3, 2026
d0f5ae6
fix(server): provider refresh no longer reverts an enriched sign-in s…
juliusmarminge Nov 3, 2026
ff73c4c
fix(server): forked Claude threads keep their compaction chain (#27577)
juliusmarminge Nov 3, 2026
709cfb3
fix(server): Claude subagents left by a stopped process no longer sta…
juliusmarminge Nov 3, 2026
95414cf
fix(server): usage-limit auto-resume no longer arms children of settl…
juliusmarminge Nov 3, 2026
727a502
fix(cursor): a write-after-end in the Cursor SDK no longer stops the …
juliusmarminge Nov 3, 2026
65aaf97
fix(server): avoid reparsing streamed replies for timestamps (#25252)
juliusmarminge Nov 3, 2026
f2513bd
fix(web): project settings can set a checkout's grouping rule again (…
juliusmarminge Nov 3, 2026
42ca7c0
fix(server): reject oversized goal objectives before dispatch (#23033)
juliusmarminge Nov 3, 2026
07a1e79
fix(server): checkpoints no longer rehash every file when one entry i…
juliusmarminge Nov 3, 2026
e0f69e9
fix(web,mobile): chat images reload when the agent rewrites the file …
juliusmarminge Nov 3, 2026
e1e520c
fix(web): show the project pin before the remote badge (#29704)
maria-rcks Nov 3, 2026
84547b9
fix(server): Codex usage keeps requests from interrupted turns (#29415)
juliusmarminge Nov 3, 2026
1436c45
fix(client-runtime): connect to the primary environment while the bro…
juliusmarminge Nov 3, 2026
48c8cf7
fix(server): a failed worktree add no longer leaves its new branch be…
juliusmarminge Nov 3, 2026
8c9945d
fix(provider-acp): Kiro's html_render pages show in the thread (#28253)
juliusmarminge Nov 3, 2026
f80be8e
fix(server): streamed Browser clicks no longer wait behind queued whe…
juliusmarminge Nov 3, 2026
997e3f3
fix(server): Codex turns that fail with an unlisted error code no lon…
juliusmarminge Nov 3, 2026
503488d
fix(opencode): sessions open through OpenCode 2 after an in-place upg…
juliusmarminge Nov 3, 2026
607e373
fix(server): T3 Connect not-linked fix no longer tells Desktop users …
juliusmarminge Nov 3, 2026
371e945
fix(server): anchor Claude wake cooldowns to result arrival (#25061)
juliusmarminge Nov 3, 2026
16fd1a4
fix(web): match new-thread hero to selected checkout (#25064)
juliusmarminge Nov 3, 2026
d3d7f03
fix(server): stop PR lookups in emptied worktree folders (#24803)
juliusmarminge Nov 3, 2026
71a7bf9
fix(server): agent session scans no longer hang the server on an unre…
juliusmarminge Nov 3, 2026
371c9a9
docs(connect): held webhooks are kept per managed link (#23612)
juliusmarminge Nov 3, 2026
0ad3dc1
fix(server): delegated children keep replies after their parent settl…
juliusmarminge Nov 3, 2026
6e58094
fix(preview): explain invalid URLs and locators (#23396)
juliusmarminge Nov 3, 2026
296b089
fix(web): terminal controls no longer cover the first line (#23373)
juliusmarminge Nov 3, 2026
93a3e8f
fix(server): stop maintaining the unused event correlation index (#23…
juliusmarminge Nov 3, 2026
46212dd
docs(mcp): document existing recurring-task tools (#23199)
juliusmarminge Nov 3, 2026
c0ec87a
fix(server): release the previous session when sending to another ins…
juliusmarminge Nov 3, 2026
692dd9c
fix(claude): a background-task wake run no longer hangs after a user …
maria-rcks Nov 3, 2026
78aee8a
fix(server): OpenCode no longer drops a $skill read before its direct…
juliusmarminge Nov 3, 2026
b492e28
fix(server): coalesced webhook runs use the prompt saved before dispa…
juliusmarminge Nov 3, 2026
d5afb1a
fix(server): slow forge CLI calls no longer delay checkpoints and tur…
juliusmarminge Nov 3, 2026
0c863d6
fix(relay): T3 Connect repairs tunnel ingress that drifted from a mat…
juliusmarminge Nov 3, 2026
6f4bc77
fix(provider-core): npm-installed Claude in ~/.local gets npm updates…
juliusmarminge Nov 3, 2026
acd2db9
fix(server): git hooks keep the user's locale (#27778)
juliusmarminge Nov 3, 2026
18ac394
fix(pi): hold messages until compaction ends (#24388)
juliusmarminge Nov 3, 2026
fd63914
fix(server): show why Claude refuses full access as root (#23804)
juliusmarminge Nov 3, 2026
10f3657
fix(server): preview click timeouts identify the target (#23489)
juliusmarminge Nov 3, 2026
30767c2
fix(cursor): supporting files no longer hide sibling skills (#23326)
juliusmarminge Nov 3, 2026
689bdb8
fix(web): usage-limit retry notice shows the timezone (#23029)
juliusmarminge Nov 3, 2026
bb221f0
fix(server): preserve nested Claude subagent completion across turns …
juliusmarminge Nov 3, 2026
c3e1e0a
fix(opencode): publish ordered pending-work snapshots (#21460)
juliusmarminge Nov 3, 2026
53e168f
fix(opencode): decode compaction history from OpenCode 2.1 (#22661)
juliusmarminge Nov 3, 2026
3e1e776
fix(server): import valid conversations within each transcript record…
juliusmarminge Nov 3, 2026
61c3794
fix(server): imported Claude sessions resume on their first turn (#23…
juliusmarminge Nov 3, 2026
5d3d78a
feat(web): ask for a GitHub star when idle, and star in one click (#2…
t3dotgg Nov 3, 2026
e2bb9e6
fix(server): subagent questions reach a busy parent agent (#29909)
t3dotgg Nov 3, 2026
cefb544
feat(web): celebrate a GitHub star with confetti (#29987)
t3dotgg Nov 3, 2026
8be19ed
fix(pi): short-lived Pi processes no longer lose rotated OAuth tokens…
astarktc Nov 3, 2026
e27e12d
feat(web): add refresh to provider status banners (#24861)
UtkarshUsername Nov 3, 2026
55ea365
fix(server): side chats no longer open with a model switch from the p…
saphid Nov 3, 2026
b7ab02e
fix(web): copied code blocks keep their blank lines in lists, quotes …
saphid Nov 3, 2026
42cf5a1
fix(web): compact model picker row indicators (#26415)
UtkarshUsername Nov 3, 2026
911212b
fix(web): open project picker from boring sidebar's header (#26495)
UtkarshUsername Nov 3, 2026
171f78b
fix(client): project removal counts only listed threads, not side cha…
saphid Nov 3, 2026
68c38b9
fix(opencode): text generation errors explain known provider failures…
saphid Nov 3, 2026
bec3f2d
fix(mobile): multi-file patches show every changed file (#29878)
saphid Nov 3, 2026
e5d0710
fix(server): handoff context names every file of a multi-file patch (…
saphid Nov 3, 2026
e86dc78
fix(server): commits and PR text see changes outside a subfolder proj…
saphid Nov 3, 2026
12ec17c
fix(web): opening a project from the command palette no longer lands …
saphid Nov 3, 2026
1698d8d
Merge remote-tracking branch 'upstream/main' into coil/sync-41316960169
radroid Nov 3, 2026
d6dbacd
test(coil): provide CoilUpdateDelivery to upstream's DesktopApp start…
radroid Nov 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 5 additions & 3 deletions .github/scripts/ci-changes.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const INERT = [

// Shared test setup and vendored mobile dependencies affect every package.
const RUNS_EVERYTHING = [
/^packages\/shared\/src\/(HostProcess|testing\/longTempDir)\.ts$/,
/^packages\/shared\/src\/(HostProcess|testing\/(longTempDir|providerEnv))\.ts$/,
/^apps\/mobile\/deps\//,
];

Expand All @@ -27,6 +27,8 @@ const EXTRA_OWNERS = [
[/^native\/browser-secret\//, ["@t3tools/desktop"]],
[/^native\/kde-snap-shot\//, ["@t3tools/desktop"]],
[/^native\/libghostty-vt\//, ["@t3tools/web"]],
// apps/server/src/cloud/ConnectReachability.test.ts checks the guide's headings.
[/^docs\/user\/t3-connect-troubleshooting\.md$/, ["t3"]],
];
const RUST = /^native\/(resource-monitor|kde-snap-shot|hyprland-snap-shot)\//;

Expand Down Expand Up @@ -92,11 +94,11 @@ function readWorkspace() {

// [] means inert; null means unknown and requires every job.
function ownersOf(file, packages) {
if (INERT.some((pattern) => pattern.test(file))) return [];
const extra = EXTRA_OWNERS.flatMap(([pattern, names]) => (pattern.test(file) ? names : []));
if (INERT.some((pattern) => pattern.test(file))) return extra;
// A manifest can change dependencies or versions other packages read.
if (path.posix.basename(file) === "package.json") return null;
if (RUNS_EVERYTHING.some((pattern) => pattern.test(file))) return null;
const extra = EXTRA_OWNERS.flatMap(([pattern, names]) => (pattern.test(file) ? names : []));
// scripts/build-desktop-artifact.test.ts reads the crates' sources.
if (RUST.test(file)) return ["@t3tools/scripts", ...extra];

Expand Down
32 changes: 21 additions & 11 deletions .github/scripts/thread-transfer-report.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -300,18 +300,28 @@ async function resolve({ github, context, core }) {
core.setOutput("publish", "false");
return;
}
const workflowRuns = await github.paginate(github.rest.actions.listWorkflowRuns, {
owner,
repo,
workflow_id: source.workflow_id,
branch: pull.base.ref,
event: "push",
status: "success",
per_page: 100,
});
// One page each for the exact base and the newest runs; paging through
// every successful main run costs up to ten requests to keep 20.
const listRuns = async (filters) => {
const { data } = await github.rest.actions.listWorkflowRuns({
owner,
repo,
workflow_id: source.workflow_id,
branch: pull.base.ref,
event: "push",
status: "success",
per_page: 20,
...filters,
});
return data.workflow_runs;
};
const [baseRuns, recentRuns] = await Promise.all([
listRuns({ head_sha: pull.base.sha }),
listRuns({}),
]);
const orderedRuns = [
...workflowRuns.filter((run) => run.head_sha === pull.base.sha),
...workflowRuns.filter((run) => run.head_sha !== pull.base.sha),
...baseRuns,
...recentRuns.filter((run) => run.head_sha !== pull.base.sha),
].slice(0, 20);

let baselineRun;
Expand Down
18 changes: 13 additions & 5 deletions .github/scripts/thread-transfer-report.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,18 @@ test("validates the fixed artifact schema", () => {
test("resolves a fallback PR with a redacted head repo and exact main baseline", async () => {
const outputs = {};
const listWorkflowRunArtifacts = () => {};
const listWorkflowRuns = () => {};
// The exact base run sits far past the newest page of main CI runs.
const mainRuns = Array.from({ length: 1_000 }, (_, index) => ({
id: 1_000 - index,
head_sha: index === 900 ? "base-sha" : `main-sha-${index}`,
}));
const listWorkflowRuns = async ({ head_sha, per_page }) => ({
data: {
workflow_runs: mainRuns
.filter((run) => head_sha === undefined || run.head_sha === head_sha)
.slice(0, per_page),
},
});
const listPullRequestsAssociatedWithCommit = () => {};
const github = {
paginate: async (method, input) => {
Expand All @@ -77,9 +88,6 @@ test("resolves a fallback PR with a redacted head repo and exact main baseline",
},
];
}
if (method === listWorkflowRuns) {
return [{ id: 1, head_sha: "base-sha" }];
}
throw new Error("unexpected pagination call");
},
rest: {
Expand Down Expand Up @@ -123,7 +131,7 @@ test("resolves a fallback PR with a redacted head repo and exact main baseline",
assert.equal(outputs.publish, "true");
assert.equal(outputs.pull_number, "5350");
assert.equal(outputs.pr_artifact, "true");
assert.equal(outputs.baseline_run_id, "1");
assert.equal(outputs.baseline_run_id, "100");
assert.equal(outputs.baseline_matches_base, "true");
});

Expand Down
2 changes: 1 addition & 1 deletion .macroscope/check-run-agents/ui-consistency.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ The reference for how this codebase wants UI built is the composer banner system

- `ComposerBanner.tsx` exports one object of small slot components (`Root`, `Row`, `Icon`, `Content`, `Actions`, `Dismiss`, `Children`, and so on). Each slot owns its own Tailwind classes, exposes a `data-slot` attribute, takes `className` and spreads the rest of its props, and uses `cn` so callers can adjust without overriding. Variants and density are props on `Root`, not ad hoc class strings at call sites. Where a slot needs a real control it renders `Button` from `ui/` rather than a styled `<button>`.
- `ComposerBannerStack.tsx` composes those slots into the ordered stack and owns only stack behavior (priority, expand and collapse, dismiss transitions).
- Consumers such as `ComposerActivityStatus.tsx`, `ComposerStashBadge.tsx`, and `ComposerPlanFollowUpBanner.tsx` are a few lines of `<ComposerBanner.Row><ComposerBanner.Icon/><ComposerBanner.Content>…` with no styling of their own.
- Consumers such as `ComposerPlanFollowUpBanner.tsx` are a few lines of `<ComposerBanner.Row><ComposerBanner.Icon/><ComposerBanner.Content>…` and style only their own content.

Hold new and changed UI to that shape:

Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# T3 Code

T3 Code is a minimal GUI for coding agents. A Node WebSocket server wraps provider CLIs and agents (Codex, Claude Code, Cursor, Grok, OpenCode, Antigravity) and serves web, desktop, and mobile clients.
T3 Code is a minimal GUI for coding agents. A Node WebSocket server wraps provider CLIs and agents (Codex, Claude Code, Cursor, Grok, OpenCode, Antigravity, Kiro) and serves web, desktop, and mobile clients.

You can think of T3 Code as an open source "bring-your-own-subscription" alternative to apps like Claude Desktop, Codex App, Cursor Glass and Conductor.

Expand Down Expand Up @@ -68,7 +68,7 @@ The most common defect in this repo is a change that works on the path you teste

- **Entry points.** A behavior reachable from the chat view is usually also reachable from Settings, the command palette, and a keybinding. Fixing one is not fixing the feature.
- **Clients.** Web, desktop (wraps web, adds Electron shell/IPC), and mobile (React Native, separate navigation). Shared logic lives in `packages/client-runtime`
- **Providers.** Codex, Claude, Cursor, Grok, OpenCode, and Antigravity each have an adapter. Provider-shaped features need a decision per adapter, even if the decision is "not supported here".
- **Providers.** Codex, Claude, Cursor, Grok, OpenCode, Antigravity, and Kiro each have an adapter. Provider-shaped features need a decision per adapter, even if the decision is "not supported here".
- **Agents.** A capability a user can trigger is usually one an agent should reach through MCP tools, and scheduled tasks run the same paths. That only works when it is a service method, not handler code.
- **Contracts.** Anything crossing the wire is typed in `packages/contracts`. Change the schema and the server, web, mobile, and desktop all follow.
- **Reverse states.** If you added a way in, add the way out and the way to see it. Snooze needs unsnooze. Close needs reopen. A one-way door is a bug.
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

T3 Code is an "agent harness control surface". It enables control of the agents on your machine with a best-in-class mobile app ([iOS](https://apps.apple.com/us/app/t3-code-remote-claude-more/id6787819824), [Android](https://play.google.com/store/apps/details?id=com.t3tools.t3code)), [web app](https://app.t3.codes) and [Electron-based desktop app](https://t3.codes).

Works with your subscriptions on Claude Code, Codex, Cursor, Grok Build, OpenCode, and Google Antigravity. If they're set up on your computer, T3 Code can control them.
Works with your subscriptions on Claude Code, Codex, Cursor, Grok Build, OpenCode, Google Antigravity, and fx. If they're set up on your computer, T3 Code can control them.

## "Wait, what are you selling me?"

Expand All @@ -13,14 +13,15 @@ We wanted something performant, remote-ready, and truly open. If we ever go the
## Installation

> [!WARNING]
> T3 Code currently supports Codex, Claude, Cursor, Grok Build, OpenCode, and Antigravity. Install and authenticate at least one provider before use:
> T3 Code currently supports Codex, Claude, Cursor, Grok Build, OpenCode, Antigravity, and fx. Install and authenticate at least one provider before use:
>
> - Codex: install [Codex CLI](https://developers.openai.com/codex/cli) and run `codex login`
> - Claude: install [Claude Code](https://claude.com/product/claude-code) and run `claude auth login`
> - Cursor: install [Cursor CLI](https://cursor.com/cli) and run `agent login`
> - Grok Build: install [Grok Build CLI](https://x.ai/cli) and run `grok login`
> - OpenCode: install [OpenCode](https://opencode.ai) and run `opencode auth login`
> - Antigravity: enable it in Settings, then use **Install Antigravity** and **Sign in with Google**. No CLI is required.
> - fx: install [fx](https://fx.sh) and run `fx login` on the machine running the T3 Code server ([setup guide](./docs/user/providers-fx.md))
### Command line

Expand Down
11 changes: 5 additions & 6 deletions apps/desktop/scripts/main-process-bundle.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import * as NodeFSP from "node:fs/promises";
import * as NodeOS from "node:os";
import * as NodePath from "node:path";
import * as NodeVM from "node:vm";
import * as NodeURL from "node:url";
import { build } from "vite-plus/pack";
import { assert, it } from "vite-plus/test";

Expand Down Expand Up @@ -114,18 +115,16 @@ it("loads the emitted packaged boot entry and backend cache preload", async () =
const directory = await NodeFSP.mkdtemp(NodePath.join(NodeOS.tmpdir(), "t3-desktop-boot-"));
try {
const entries = ["src/boot.ts", "src/compileCache.ts"];
await NodeFSP.mkdir(NodePath.join(directory, "src"));
await Promise.all(
entries.map((entry) =>
NodeFSP.copyFile(new URL(`../${entry}`, import.meta.url), NodePath.join(directory, entry)),
),
);
assert.ok(Array.isArray(desktopConfig.pack));
for (const packConfig of desktopConfig.pack) {
if (!Array.isArray(packConfig.entry)) continue;
if (!packConfig.entry.some((entry) => entries.includes(entry))) continue;
await build({
...packConfig,
entry: packConfig.entry.map((entry) =>
NodeURL.fileURLToPath(new URL(`../${entry}`, import.meta.url)),
),
outDir: NodePath.join(directory, "dist-electron"),
config: false,
cwd: directory,
tsconfig: false,
Expand Down
Loading
Loading