Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4127 commits
Select commit Hold shift + click to select a range
0743ba5
fix(shared): branch names keep accented letters as plain letters (#27…
MarcoDotIO Nov 1, 2026
1a2983f
fix(provider-core): provider updates find npm on the provider's custo…
ashx-j Nov 1, 2026
e0fa102
fix(web): changing the sidebar project filter starts the list at the …
Mnigos Nov 1, 2026
cae3ced
fix(web): find the fallback model in Settings search (#27376)
voltcrash Nov 1, 2026
868524f
fix(web): Backspace no longer re-nests a checkbox under a bullet (#27…
Geuni620 Nov 1, 2026
6d584fa
perf(server): reuse compiled modules for CLI commands (#27433)
voltcrash Nov 1, 2026
fbe137d
fix(server): preview tab list shows desktop tabs that loaded before t…
camchis Nov 1, 2026
e71f414
fix(web): Esc in the theme color picker restores the previous color (…
drdator Nov 1, 2026
6977721
fix(shared): preserve escaped trailing whitespace in CLI arguments (#…
macodev00 Nov 1, 2026
c018660
fix(shared): preserve surrogate pairs in truncated CSV cells (#27497)
macodev00 Nov 1, 2026
84ad7ae
fix(gitlab): report an expired glab OAuth login as an auth error (#27…
WalshyDev Nov 1, 2026
854247e
fix(web): expanded SVG diagrams fill the image viewer (#27519)
melbaldove Nov 1, 2026
cb1de7b
fix(web): configure reasoning for the fallback model (#27593)
BelKed Nov 1, 2026
dc9b1a5
fix(web): keep diff base selector available after errors (#27635)
NathanGlasby Nov 1, 2026
cbb0417
fix(mobile): resume continues a usage-limited thread before its queue…
AbdelrahmanTamer21 Nov 1, 2026
f702f89
fix(client): a new thread's content no longer stays blank after an ea…
willadamskeane Nov 1, 2026
aa8dbbe
fix(web): skill labels show the skill's own name (#27741)
juuulianx Nov 1, 2026
5cc1985
fix(server): disclose truncated history in imported threads (#27743)
voltcrash Nov 1, 2026
6843eff
fix(opencode): recover Go limits after a startup timeout (#27757)
voltcrash Nov 1, 2026
1917c8a
fix(server): worktree threads get their generated branch name when a …
MarcoDotIO Nov 1, 2026
5bb50dc
fix(server): restart continuation checks before repeating side effect…
xlurie Nov 1, 2026
6dddccb
fix(shared): /Model with a query still opens the model picker (#27837)
samkelly880 Nov 1, 2026
aa33734
fix(server): empty primary cookie no longer blocks bearer auth (#27848)
samkelly880 Nov 1, 2026
a62452a
perf(mobile): text files open in half the time on a remote host (#27850)
camchis Nov 1, 2026
bc448b8
fix(web): composer fallback keeps the effort of a model saved under a…
mkantautas Nov 1, 2026
dabab45
perf(server): skip no-op settlement decisions (#27897)
omar7550 Nov 1, 2026
34cfd24
fix(codex): a failed write to the app-server no longer leaves request…
trevoedwards Nov 1, 2026
626d602
perf(server): projects without a repository stop spawning git on ever…
Pyseph Nov 1, 2026
4773ab7
fix(server): scheduled tasks start from the default branch, not alway…
tuanvumaihuynh Nov 1, 2026
ef4c658
fix(server): subagent threads no longer inherit a pending title job (…
Dreighto Nov 1, 2026
77a728e
fix(web): show mixed automatic defaults across environments (#28005)
jtatum Nov 1, 2026
1794830
fix(client): the folder browser shows folders added or removed while …
Umais-Adeed Nov 1, 2026
fad507c
fix(mobile): chat folds stay closed until tapped, as on web and deskt…
Umais-Adeed Nov 1, 2026
71d52eb
fix(web): align composer context icons and space their labels (#28083)
voltcrash Nov 1, 2026
5651d76
fix(web): horizontal scrolling inside diff and file panes no longer s…
EtanHey Nov 1, 2026
1f9d4de
fix(server): remember T3 Connect HTTP/2 fallback across restarts (#28…
voltcrash Nov 1, 2026
7f443ab
fix(server): provider updates no longer time out mid-download (#28132)
Ajraba04 Nov 1, 2026
4c91892
fix(server): delegate_task accepts the inherited options orchestrator…
EtanHey Nov 1, 2026
be58795
fix(mobile): finished threads leave Working once the grace ends (#28169)
playcations Nov 1, 2026
c77f755
fix(web): sidebar drops a deleted project's filter with the local env…
NotAnNvidiaFan Nov 1, 2026
f513369
fix(web): terminal URLs like redis:// no longer become broken file li…
tiliakoos Nov 1, 2026
dc102e5
fix(web): skill menus show loading while project skills arrive (#28209)
NotAnNvidiaFan Nov 1, 2026
77c885e
fix(desktop): SnapShots keep working on Hyprland after an app update …
Rhinomcd Nov 1, 2026
6717d92
fix(web): Tab completes folder names in the add-project browser (#28243)
morahan Nov 1, 2026
9ff0fac
fix(web): make Changes and PR Code file lists resizable (#28244)
wrymn Nov 1, 2026
2f777bd
perf(web): main thread updates no longer re-render an open side chat …
Yuruzuu Nov 1, 2026
6d25fa1
perf(server): skip unused parent data when forking threads (#28265)
Yuruzuu Nov 1, 2026
13c3c2e
perf(server): stop summarizing side chat context at its cap (#28266)
Yuruzuu Nov 1, 2026
39bca53
perf(web): typing in a thread no longer re-renders sidebar drafts (#2…
Yuruzuu Nov 1, 2026
ee29f11
fix(scripts): Alchemy reference sync reads the catalog version (#28268)
only21mil Nov 1, 2026
96b0377
docs(mobile): mobile README links the store apps instead of calling t…
only21mil Nov 1, 2026
35df72f
perf(web): render minimap highlights without extra nodes (#28270)
Yuruzuu Nov 1, 2026
906156b
fix(ci): a change to the T3 Connect troubleshooting guide runs the se…
only21mil Nov 1, 2026
cc5760a
fix(scripts): report:renders works on machines without ~/.cache (#28274)
only21mil Nov 1, 2026
c9f47c1
docs: composer banner guidance names a consumer that still exists (#2…
only21mil Nov 1, 2026
5732bbe
docs(mobile): name the Android 16 Agent Live Updates switch in the no…
only21mil Nov 1, 2026
ce48e45
fix(web): prevent composer image thumbnail flicker (#28499)
Yash-Singh1 Nov 1, 2026
955e2bf
fix(clients): questions always move a thread out of Working (#28515)
t3dotgg Nov 1, 2026
4ac97be
feat(scheduler): run a scheduled task once at a specific date and tim…
t3dotgg Nov 1, 2026
7195b69
fix(server): stopping a Claude turn no longer hangs without an acknow…
yaacovcorcos Nov 1, 2026
6328c84
feat(mcp): preview_open goes straight to a dev-server port (#28027)
maria-rcks Nov 1, 2026
ce9e016
fix(server): interrupted scheduled task runs no longer stay busy (#28…
t3dotgg Nov 1, 2026
37d7615
fix(desktop): preserve host focus on preview pointer presses (#28549)
Yash-Singh1 Nov 1, 2026
b50d8a1
fix(web): add spacing above PR detail metadata (#28573)
Yash-Singh1 Nov 1, 2026
0bc95fc
feat(dev): add startup profiling for cold-start diagnosis (#28566)
Yash-Singh1 Nov 1, 2026
70f475f
feat(clients): surface child approvals in parent threads (#28516)
Yash-Singh1 Nov 1, 2026
460b88b
feat(release): update notes lead with up to 7 highlights (#28593)
t3dotgg Nov 1, 2026
1280ccd
test(server): pin clock in saved-usage window test (#28603)
t3dotgg Nov 1, 2026
da21606
fix(web): sidebar project filter no longer refocuses after a pick (#2…
t3dotgg Nov 1, 2026
58a407c
feat(desktop): prepare server bytecode cache in native builds (#28572)
Yash-Singh1 Nov 1, 2026
8b4de61
fix(desktop): discover shell environment without blocking startup (#2…
Yash-Singh1 Nov 1, 2026
8760d06
fix(server): refresh Changes totals after remote polls (#28600)
Yash-Singh1 Nov 1, 2026
2b1021c
perf(codex): trace app server request latency (#28666)
Yash-Singh1 Nov 1, 2026
82b10d5
fix(web): align pull request file viewed checkboxes (#28665)
Yash-Singh1 Nov 1, 2026
80120b1
fix(desktop): skip prepared server bytecode on Linux (#28700)
Yash-Singh1 Nov 1, 2026
1d626d0
fix(cli): close legacy database before deleting it on Windows (#27629)
UtkarshUsername Nov 1, 2026
3fd2b85
perf(cursor): load the agent SDK only when needed (#28718)
Yash-Singh1 Nov 1, 2026
965291e
fix(mobile): restore the reserved compose space on Android (#28819)
PixPMusic Nov 1, 2026
976a231
fix(mobile): thread links show their thread's title (#26485)
juliusmarminge Nov 1, 2026
57d764e
fix(web): ChatView browser test no longer times out on CI (#28834)
juliusmarminge Nov 1, 2026
1db31d0
fix(mobile): sent messages rise into place instead of dropping in (#2…
mozzius Nov 1, 2026
d897d3f
feat: managed policy for organization-wide T3 Code configuration (#27…
juliusmarminge Nov 1, 2026
123e5ba
fix(server): force-stop timed out login shell probes (#7295)
hbw00111 Nov 1, 2026
88483a5
fix(server): finish short reads before returning workspace text (#14989)
saphid Nov 1, 2026
1915569
perf(client-runtime): merge shell deltas once per received batch (#18…
saphid Nov 1, 2026
2148331
perf(web): coalesce overlapping file tree refreshes (#18421)
saphid Nov 1, 2026
3f105e0
perf(clients): bound subagent preview processing to the visible prefi…
luke2x Nov 1, 2026
ad38be3
fix(server): avoid transient GitHub mergeability sync churn (#22022)
saphid Nov 1, 2026
ba49642
test(server): stopped-queue steering test no longer races queue promo…
tris203 Nov 1, 2026
5e19105
fix(mobile): single-comment PR discussions say "1 comment", not "1 co…
MarcoDotIO Nov 1, 2026
4ed4950
fix(client): reject incomplete GitHub owner paths before lookup (#23024)
naveed949 Nov 1, 2026
a8a32bb
fix(server): accept case-insensitive MCP bearer schemes (#23782)
Rish-it Nov 1, 2026
7a633ce
fix(shared): keep Azure clone URLs valid when switching protocols (#2…
Zacharon Nov 1, 2026
fcb1d0b
fix(web): honor editableFocus in shortcut conditions (#24134)
unmanbearpig Nov 1, 2026
bc57ebf
fix(scripts): launch check:changed on Windows without a vp shim (#24164)
Zacharon Nov 1, 2026
35c7696
fix(web,mobile): time out client activity reports that never settle (…
skyhong2002 Nov 1, 2026
aa056f7
fix(web): the welcome wizard keeps the project selection when you go …
Jacksondr5 Nov 1, 2026
cf4514d
fix(forgejo): merged and closed pull request lists only return their …
rishabhx29 Nov 1, 2026
41b3b0b
fix(clients): background work Stop stays pending until the stopped ta…
Srijan-D Nov 1, 2026
4306e77
fix(server): device list warnings keep the hub's error detail (#25248)
Jacksondr5 Nov 1, 2026
ea95364
perf(client-runtime): index checkpoint answers in one bounded scan (#…
saphid Nov 1, 2026
a48a076
fix(desktop): allow pointer lock in the built-in browser (#25275)
msfeldstein Nov 1, 2026
e7c375d
fix(desktop): keep preview download settings out of app exports (#25428)
mayesidev Nov 1, 2026
f482dc5
fix(web): PDF previews keep their page across thread switches (#25496)
ashx-j Nov 1, 2026
6856500
fix(server): unlink_pull_request reports a dismissed stack PR as not …
MarcoDotIO Nov 1, 2026
aa46f7a
fix(client-runtime): re-pairing at a new address uses the new token (…
abdulsalamgs Nov 1, 2026
d14074f
docs(orchestration-v2): Codex rollback uses thread/revert on paginate…
SouthCarpet Nov 1, 2026
b5d9f85
fix(web): keep inward mini browser resizes from growing (#26027)
diddletime Nov 1, 2026
5b5bd16
fix(web): PR merge buttons stay in place while the stack loads (#26077)
GisTypical Nov 1, 2026
510aa5a
fix(web): Arabic paragraphs with many English terms now read right to…
ahmedverona34-bot Nov 1, 2026
b46a4ed
fix(web): dark-mode <picture> images load instead of showing "Image u…
Vikas-Maur Nov 1, 2026
4f8b6ee
fix(server): foreground Claude forks no longer show as finished the m…
henrychu04 Nov 1, 2026
b65a64b
perf(server): hydrate only the requested project page (#26655)
Adamulek123 Nov 1, 2026
4d7cb9b
perf(effect-acp): frame large ACP stdout lines in linear time (#26686)
hieu-lee Nov 1, 2026
c2985a7
perf(shared): fold command output without copying scrollback per chun…
hieu-lee Nov 1, 2026
0da2bb6
perf(web): composer serializes each draft doc once per keystroke (#26…
hieu-lee Nov 1, 2026
7039d90
fix(gitlab): merge requests show their approval state (#26877)
oss96 Nov 1, 2026
f2dd1a4
test: remove unreachable sidebar helper suites (#26920)
t3-code-bot[bot] Nov 1, 2026
9504a09
perf(clients): thread search reuses per-thread fields across keystrok…
hieu-lee Nov 1, 2026
0366a19
perf(mobile): reuse chat lists across navigation renders (#27026)
PixPMusic Nov 1, 2026
01a93e7
test(web): pass stale to the stack menu refusal test (#28887)
maria-rcks Nov 1, 2026
88f6113
fix(server): keep a gateway's Claude reset time on a direct 429 (#25438)
tyler-b4innova Nov 1, 2026
e8b0856
perf(shared): skip parsing cached terminal styles (#27041)
UtkarshUsername Nov 1, 2026
e4d1eda
perf(web): compact changed-file directories once (#27073)
UtkarshUsername Nov 1, 2026
6b3b3b7
fix(web): chat text can be cited while file search is open (#27131)
abhijeetsingh-22 Nov 1, 2026
a8ea3c2
fix(mobile): Home list no longer opens scrolled down (#27155)
camchis Nov 1, 2026
ff46c6b
fix(server): clean unchanged worktrees without a remote (#27175)
melvinmng Nov 1, 2026
e2ad07a
fix(web): settled shelf no longer crashes with several projects filte…
jagrat7 Nov 1, 2026
febd377
fix(server): t3_thread_read pages no longer split an emoji in half (#…
MarcoDotIO Nov 1, 2026
0bccd29
fix(desktop): disable blocked t3 CLI installation (#27286)
NathanGlasby Nov 1, 2026
41588d4
fix(claude): approval cards close when Claude withdraws the request (…
ashx-j Nov 1, 2026
0c6c721
fix(server): Claude threads revert to the message after a /compact (#…
SparshKaushik Nov 1, 2026
9b72088
fix(server): show why Codex hooks stopped a turn (#27399)
voltcrash Nov 1, 2026
bd90732
fix(client): a resume no longer re-renders every home row five times …
ahalekelly Nov 1, 2026
a2a1f2b
perf(server): stop measuring replay bytes once over budget (#27405)
Narayan201120 Nov 1, 2026
7816a0f
fix(web): Enter selects the first branch search result (#27434)
atatter Nov 1, 2026
a4b6afe
fix(client-runtime): threads with many images no longer flood a remot…
voida6 Nov 1, 2026
4ff9a32
fix(web): format inline code typed with a dead-key backtick (#27457)
WalshyDev Nov 1, 2026
db7db4d
fix(server): Claude no longer tries to update itself through a mise c…
Gourav224 Nov 1, 2026
a98b624
perf(client): avoid temporary arrays in inbox snapshots (#27467)
UtkarshUsername Nov 1, 2026
9650541
fix(mobile): give drafts the current thread card layout (#28789)
PixPMusic Nov 1, 2026
aac4c15
fix(server): delegated tasks finish even when the child leaves a watc…
Byntham Nov 1, 2026
5e2a331
fix(server): preserve surrogate pairs in generated thread titles (#27…
macodev00 Nov 1, 2026
7c511b3
fix(shared): preserve files outside log rotation naming (#27503)
macodev00 Nov 1, 2026
cb7fb7a
fix(server): a preview navigation that fails mid-load keeps its failu…
camchis Nov 1, 2026
220bc7c
fix(web): Settings search finds rows by their titles (#27540)
davisonio Nov 1, 2026
7e8b40f
docs(opencode): say where compaction is configured (#27614)
wagner-deoliveira Nov 1, 2026
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
d763ad3
chore(sync): merge upstream main into the fork
Noext Nov 2, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
13 changes: 13 additions & 0 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,19 @@ Test with meaningful project and thread data. Read
[references/sqlite-fixtures.md](references/sqlite-fixtures.md) only when
inspecting or seeding SQLite. Stop the test server before direct fixture writes.

## Drive agent turns for free

Do not spend a paid model to see a turn render. `vp run dev` registers the
`Replay (dev)` provider, which replays recorded turns with simulated streaming
through the real adapter and orchestration. Its models are scenarios:
`showcase` covers thinking, a plan, tool calls, an approval, and markdown.
Press `Ctrl+Alt+Shift+R` for a picker (GNOME takes that key for screen
recording), call `window.t3dev.replay("showcase")`
with `preview_evaluate`, or run
`node apps/server/src/bin.ts thread start --base-dir .t3 --provider devReplay --model showcase <project> "go"`.
When the test needs real provider behavior, use that provider's cheapest
model, such as Haiku for Claude or Luna for Codex.

## Use the Browser panel

Call `preview_status`, then `preview_open` if the Browser panel is
Expand Down
16 changes: 13 additions & 3 deletions .agents/skills/test-t3-mobile/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,21 @@ when inspecting or seeding SQLite. Stop the test server before fixture writes.
From the checkout being tested on the selected device host, run:

```bash
node scripts/mobile-native-client.ts ensure <ios|android> <device-id>
vp run mobile:install <ios|android> <device-id>
```

This reuses a matching native client or builds and installs one. Authorized
mobile verification includes that build step unless the user prohibits it.
This installs the dev client for the checkout's native fingerprint: from the
device, the local cache, or the shared cache in seconds, building once only
when no machine has that fingerprint yet (5-15 minutes, logged to the file it
names). The device id may be omitted when exactly one device is booted. It
prints one JSON line; on failure it names the next command. Mobile verification
includes that step unless the user prohibits it.

For a device you opened in an agent-device session elsewhere (a device pool,
cloud, or remote host), run `vp run mobile:install <ios|android> --session <s>`
from the directory you opened the session in. It installs the cached build into
that session (`--abi arm64-v8a` for an ARM Android device; `--metro <url>` also
opens it against Metro) and never builds.

Start `vp run dev:client` from `apps/mobile`, or reuse a healthy Metro belonging
to this checkout. Open its printed development-client URL with AgentDevice
Expand Down
37 changes: 8 additions & 29 deletions .coderabbit.config.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,22 @@
import { defineConfig, type CodeRabbitContext } from "@coderabbitai/config";

const approvability = `Fail when a maintainer should read this pull request before CodeRabbit approves it, and name the rule and file. Fail if it:

- Changes a product default: a setting's default value, or what users get without opting in. Making a feature do what it already promises is a bug fix, not a default change.
- Adds or broadens a directive that disables or suppresses a lint, type-checker, LSP, or other static-analysis diagnostic, including file-level, line-level, and configuration-level overrides.
- Adds a subsystem or user workflow, or is a large refactor across apps or packages.
- Changes packages/contracts or persisted data in a way that existing clients or stored data might not accept.
- Changes authentication, pairing, credentials, secrets, or remote connection trust.
- Adds or changes an external side effect, such as acting on GitHub, publishing a release, or calling a webhook.
- Adds, upgrades, or patches a dependency.
- Changes CI or release configuration, agent or contributor instructions, or any review tool's configuration, including .github/, AGENTS.md, CONTRIBUTING.md, .agents/, and .coderabbit.config.ts.

Otherwise pass. A focused bug fix, copy or layout fix, revert, or docs-only or test-only change passes unless a rule above applies. If you cannot decide, fail rather than report inconclusive. When failing, say that the pull request needs a maintainer's review.
`;

// Org members and collaborators merge their own pull requests. On anyone else's, CodeRabbit
// requests changes until its comments are resolved and its checks pass, then approves.
const UNGATED_AUTHORS = new Set(["OWNER", "MEMBER", "COLLABORATOR"]);
const isGated = ({ pr }: CodeRabbitContext) => !UNGATED_AUTHORS.has(pr?.authorAssociation ?? "");

export default defineConfig((ctx) => ({
reviews: {
high_level_summary: false,
review_status: false,
request_changes_workflow: isGated(ctx),
request_changes_workflow: false,
allow_author_approval: !isGated(ctx),
auto_review: {
enabled: true,
},
pre_merge_checks: {
docstrings: { mode: "off" },
override_requested_reviewers_only: isGated(ctx),
custom_checks: [
{
name: "Approvability",
mode: isGated(ctx) ? "error" : "off",
instructions: approvability,
},
],
},
path_filters: [
// Vendored read-only reference checkouts of upstream Effect and Alchemy
// (see scripts/lib/reference-repos.ts). Nothing imports from them.
"!.repos/**",
],
path_filters: ["!.repos/**"],
path_instructions: [
{
path: "{apps,packages,infra}/**/*.ts",
Expand All @@ -53,13 +26,19 @@ export default defineConfig((ctx) => ({
path: "apps/web/src/**/*.{tsx,css}",
instructions: "Hold changed code to the rules in docs/internals/web-ui.md.",
},
{
path: "**/*.test.*",
instructions:
"Hold changed tests to the rules in docs/internals/testing.md. Request tests only as those rules allow.",
},
],
},
knowledge_base: {
code_guidelines: {
filePatterns: [
{ files: "docs/internals/effect-services.md", applyTo: "{apps,packages,infra}/**/*.ts" },
{ files: "docs/internals/web-ui.md", applyTo: "apps/web/src/**/*.{tsx,css}" },
{ files: "docs/internals/testing.md", applyTo: "{apps,packages,infra}/**/*.{ts,tsx}" },
],
},
},
Expand Down
4 changes: 2 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Dev container for T3 Code. Mirrors CI (ubuntu-24.04, Node 24, Rust stable)
// Dev container for T3 Code. Mirrors CI (ubuntu-24.04, Node 26, Rust stable)
// and the canonical setup in docs/operations/development.md: global `vp`, `vp i`.
// Contributor doc: docs/internals/devcontainer.md
{
Expand All @@ -8,7 +8,7 @@
// nodeGypDependencies (default true) brings python3/make/g++, which Linux
// needs for node-pty's node-gyp fallback (its prebuilds are mac/win only).
"ghcr.io/devcontainers/features/node:2": {
"version": "24"
"version": "26"
},
// native/resource-monitor (edition 2024, needs stable >= 1.85). The server
// degrades gracefully without the binary, but CI checks cargo fmt + test.
Expand Down
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@
# Batch files need CRLF for cmd.exe to parse them reliably.
*.cmd text eol=crlf
*.bat text eol=crlf
# GitHub's and Expo's GraphQL schemas and the operations graphqlgen writes from them.
packages/source-control-github/schema/** linguist-generated
apps/server/schema/** linguist-generated
**/*.graphql.ts linguist-generated
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/via-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ body:
id: version
attributes:
label: Version
description: Installed t3 version or commit.
description: Version the bug happened on (not the `t3 triage` CLI version), or unknown.
placeholder: 0.0.33
validations:
required: true
Expand Down
3 changes: 3 additions & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ github:aoright
github:arhxam
github:bil0000
github:binbandit
github:bompus
github:Brechard
github:btsouth
github:cestercian
Expand Down Expand Up @@ -52,11 +53,13 @@ github:mackinleysmith
github:maria-rcks
github:MatthewFeroz
github:maxwellyoung
github:mweinbach
github:mwolson
github:myacoub91
github:naMqe-h
github:nateEc
github:naveed949
github:nexxeln
github:nmggithub
github:Noojuno
github:notkainoa
Expand Down
63 changes: 63 additions & 0 deletions .github/actions/ci-changes/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: CI changes
description: Decide which CI jobs a change needs. See .github/scripts/ci-changes.cjs.
outputs:
typecheck:
value: ${{ steps.detect.outputs.typecheck }}
build:
value: ${{ steps.detect.outputs.build }}
test:
value: ${{ steps.detect.outputs.test }}
test_packages:
value: ${{ steps.detect.outputs.test_packages }}
test_web:
value: ${{ steps.detect.outputs.test_web }}
test_server:
value: ${{ steps.detect.outputs.test_server }}
rust:
value: ${{ steps.detect.outputs.rust }}
release_smoke:
value: ${{ steps.detect.outputs.release_smoke }}
mobile_native:
value: ${{ steps.detect.outputs.mobile_native }}
runs:
using: composite
steps:
- id: detect
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
BEFORE_SHA: ${{ github.event.before }}
run: |
set -uo pipefail

decide() {
node .github/scripts/ci-changes.cjs "$@" | tee -a "$GITHUB_OUTPUT"
exit "${PIPESTATUS[0]}"
}

fail_open() {
echo "$* Running every job."
decide
}

# Reads the change from git rather than the REST API: every job that
# runs this shares the repository's 1,000 requests/hour GITHUB_TOKEN quota.
if [[ "$EVENT_NAME" == pull_request ]]; then
# A pull request checks out GitHub's merge commit with fetch-depth: 2,
# so its first parent is the base branch and the diff is the PR's change.
base=HEAD^1
mode=()
else
base=$BEFORE_SHA
git fetch --quiet --no-tags --depth=1 --filter=blob:none origin "$base" \
|| fail_open "Could not fetch ${base}."
# main keeps a full run as the backstop for anything the gate misses.
mode=(--full)
fi

# --no-renames lists a rename as its old and new path: renaming a file out
# of a package changes that package just like editing it. It also keeps
# git from fetching file contents to score renames.
git diff --name-only --no-renames "$base" HEAD > "$RUNNER_TEMP/changed-paths" \
|| fail_open "Could not diff against ${base}."
decide --paths "$RUNNER_TEMP/changed-paths" "${mode[@]}"
153 changes: 153 additions & 0 deletions .github/actions/setup-ci-deps/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: Setup CI dependencies
description: Install Vite+ and the workspace dependencies from cache.
inputs:
task-cache-read-token:
description: Read-only credential for the private maintainer task cache
required: false
default: ""
install:
description: Set to "false" to set up Vite+ only, with no pnpm store or install
required: false
default: "true"
install-args:
description: Arguments for `vp install`, such as filters. Empty installs the whole workspace.
required: false
default: ""
runs:
using: composite
steps:
# ~/.vite-plus holds vp, the Node.js runtime, and pnpm. A cache entry never
# updates, so the key names all three versions; otherwise a pnpm or Node.js
# bump makes every job download them from npm again.
- name: Resolve Vite+ version
id: vp
shell: bash
run: |
echo "version=$(sed -nE 's/^ vite-plus: ([0-9][^ ]*)$/\1/p' pnpm-workspace.yaml)" >> "$GITHUB_OUTPUT"
echo "node=$(jq -r '.engines.node' package.json)" >> "$GITHUB_OUTPUT"
echo "pnpm=$(jq -r '.packageManager' package.json)" >> "$GITHUB_OUTPUT"

# Pinned because release-desktop.yml signs builds with this action in the job.
- name: Cache Vite+
id: vp_cache
if: steps.vp.outputs.version != ''
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ~/.vite-plus
key: vite-plus-home-v2-${{ runner.os }}-${{ runner.arch }}-${{ steps.vp.outputs.version }}-node${{ steps.vp.outputs.node }}-${{ steps.vp.outputs.pnpm }}

# setup-vp always runs the installer, which fetches vp from npm even when
# this exact version is installed. A cache hit already has everything, so
# skip setup-vp and do its remaining work here. This keeps npm outages from
# failing jobs.
- name: Use cached Vite+
if: steps.vp_cache.outputs.cache-hit == 'true'
shell: bash
run: |
echo "$HOME/.vite-plus/bin" >> "$GITHUB_PATH"
"$HOME/.vite-plus/bin/vp" env use "${{ steps.vp.outputs.node }}"

# vp gives each Node.js download attempt 10 minutes by default, so one
# stalled stream holds the job that long. It retries 3 times and resumes
# partial bytes, so a shorter limit costs a slow download only a retry.
- name: Setup Vite+
if: steps.vp_cache.outputs.cache-hit != 'true'
uses: voidzero-dev/setup-vp@250f29ce396baf5e8f24498e17c0dfdebabc26eb # v1
env:
VP_DOWNLOAD_TIMEOUT: "120"
with:
node-version-file: package.json
cache: false
run-install: false

# A shared key lets whichever install saves first, often a small filtered
# one, become every job's store. Each set of install args gets its own.
- name: Resolve pnpm store
id: pnpm_store
if: inputs.install == 'true'
shell: bash
env:
INSTALL_ARGS: ${{ inputs.install-args }}
run: |
echo "path=$(vp pm cache dir)" >> "$GITHUB_OUTPUT"
metadata_dir="${pnpm_config_cache_dir:-$RUNNER_TEMP/pnpm-metadata}"
echo "pnpm_config_cache_dir=$metadata_dir" >> "$GITHUB_ENV"
echo "verified=$metadata_dir/lockfile-verified.jsonl" >> "$GITHUB_OUTPUT"
if [[ -z "$INSTALL_ARGS" ]]; then
echo "namespace=full" >> "$GITHUB_OUTPUT"
else
echo "namespace=filtered-$(printf '%s' "$INSTALL_ARGS" | cksum | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
fi

# Filtered installs prefer the current full store, which holds every package,
# over an older store of their own.
# The pnpm store stays a cache tarball on the runner's own disk. A store on a
# Blacksmith sticky disk mounts in under a second, but pnpm then copies every
# package across filesystems instead of hard-linking it: install took 28-49s
# against 9s plus an 11s restore.
- name: Restore pnpm store
id: pnpm_cache
if: inputs.install == 'true'
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ${{ steps.pnpm_store.outputs.path }}
key: pnpm-${{ steps.pnpm_store.outputs.namespace }}-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json') }}
restore-keys: |
pnpm-full-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json') }}
pnpm-${{ steps.pnpm_store.outputs.namespace }}-v1-${{ runner.os }}-${{ runner.arch }}-
pnpm-full-v1-${{ runner.os }}-${{ runner.arch }}-

# pnpm accepts an earlier pass for the same lockfile and policy at any age, so
# a cached record skips fetching registry metadata for every package.
- name: Restore lockfile verification
id: pnpm_verified
if: inputs.install == 'true'
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ${{ steps.pnpm_store.outputs.verified }}
key: pnpm-verified-v1-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json') }}

- name: Install dependencies
if: inputs.install == 'true'
shell: bash
env:
INSTALL_ARGS: ${{ inputs.install-args }}
# Unquoted so each filter is its own argument.
run: vp install $INSTALL_ARGS

- name: Save lockfile verification
if: inputs.install == 'true' && steps.pnpm_verified.outputs.cache-hit != 'true'
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ${{ steps.pnpm_store.outputs.verified }}
key: ${{ steps.pnpm_verified.outputs.cache-primary-key }}

# A filtered install that started from the current full store adds nothing
# worth a second copy of it.
- name: Save pnpm store
if: >-
inputs.install == 'true' &&
steps.pnpm_cache.outputs.cache-hit != 'true' &&
(steps.pnpm_store.outputs.namespace == 'full' ||
steps.pnpm_cache.outputs.cache-matched-key != format('pnpm-full-v1-{0}-{1}-{2}', runner.os, runner.arch, hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json')))
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ${{ steps.pnpm_store.outputs.path }}
key: ${{ steps.pnpm_cache.outputs.cache-primary-key }}

- name: Enable shared task cache
if: >-
github.repository == 'pingdotgg/t3code' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
hashFiles('.task-cache.json') != '' &&
inputs.task-cache-read-token != ''
shell: bash
env:
T3_TASK_CACHE_READ_TOKEN: ${{ inputs.task-cache-read-token }}
run: |
node infra/task-cache/scripts/install-ci.ts
if [[ ( "$GITHUB_EVENT_NAME" == pull_request && "$GITHUB_BASE_REF" == main ) || ( "$GITHUB_EVENT_NAME" == push && "$GITHUB_REF" == refs/heads/main ) ]]; then
echo 'VP_REMOTE_CACHE=read-write' >> "$GITHUB_ENV"
else
echo 'VP_REMOTE_CACHE=read' >> "$GITHUB_ENV"
fi
Loading
Loading