Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
785 commits
Select commit Hold shift + click to select a range
f8b4c46
test(web): cancel pending highlight fixture frames during cleanup (#1…
juliusmarminge Sep 5, 2026
e2e6ce6
feat(server): report image dimensions with signed asset URLs (#10198)
juliusmarminge Sep 5, 2026
7451d17
fix(mobile): size a chat image's frame before its bytes arrive (#10199)
juliusmarminge Sep 5, 2026
d0f855b
fix(web): size the chat image slot from server-reported dimensions (#…
juliusmarminge Sep 5, 2026
0671e34
refactor(shared): remove unused runtime helpers and exports (#10166)
juliusmarminge Sep 5, 2026
dbfd517
refactor(client-runtime): remove unused runtime exports and helpers (…
juliusmarminge Sep 5, 2026
5716dec
refactor(contracts): keep RPC implementation exports private (#10168)
juliusmarminge Sep 5, 2026
50bc62a
refactor(contracts): trim unused client API runtime exports (#10169)
juliusmarminge Sep 5, 2026
2ae3b71
refactor(contracts): keep unused settings and relay exports private (…
juliusmarminge Sep 5, 2026
5fe5c6f
ci: enforce runtime exports while allowing types and schemas (#10171)
juliusmarminge Sep 5, 2026
54441e6
fix(web): copy provider update commands from compact rows (#9888)
MatthewFeroz Sep 5, 2026
3be90ce
fix(web): align provider header action sizes and spacing (#9890)
MatthewFeroz Sep 5, 2026
3fb8942
fix(mobile): restore live tool shimmer and add a Thinking row (#10173)
juliusmarminge Sep 5, 2026
1cb49c3
fix(mobile): even out the working pill's spacing (#10209)
juliusmarminge Sep 5, 2026
7eda989
fix(mobile): only make work rows expandable when the body adds someth…
juliusmarminge Sep 5, 2026
579a775
fix(mobile): fold subagent lifecycle rows into one batch per spawn (#…
juliusmarminge Sep 5, 2026
89cc743
fix(mobile): stop clipping expanded tool groups (#10212)
juliusmarminge Sep 5, 2026
c2cfe59
fix(web): defer browser discovery in integrations (#9797)
zortos293 Sep 5, 2026
88fc41c
refactor(web): test file cache identity through its public helpers (#…
juliusmarminge Sep 5, 2026
748fe0f
refactor(web): test favicon fallback through the component (#10220)
juliusmarminge Sep 5, 2026
183c343
feat: show provider usage limits with /usage-limits (#9875)
chrisdeeming Sep 5, 2026
585ce2c
refactor(web): test formatted timestamps instead of formatter options…
juliusmarminge Sep 5, 2026
be53bbd
feat(usage): show remaining quota instead of used (#9889)
chrisdeeming Sep 5, 2026
f12d393
fix(ui): unify loading and refresh feedback across clients (#9561)
StiensWout Sep 5, 2026
bd16b86
fix(client-runtime): report terminated thread loads (#10216)
juliusmarminge Sep 6, 2026
050690d
fix(server): settle threads using actual pull request terminal timest…
maria-rcks Sep 6, 2026
eee0557
fix(clients): persist project icons across reloads and reconnects (#1…
StiensWout Sep 6, 2026
b438447
fix(mobile): use selected theme across input forms and controls (#10239)
juliusmarminge Sep 6, 2026
bfba778
fix(mobile): keep the new-task draft when switching environment (#10247)
juliusmarminge Sep 6, 2026
2c33535
fix(web): keep timestamp tooltip dates in English (#10256)
Lucenx9 Sep 6, 2026
3da9399
fix(web): let authorized clients scrolling reach settings (#10080)
flamboh Sep 6, 2026
add8c3a
fix(web): remember usage page selection (#10189)
extoci Sep 6, 2026
c8872fd
fix(server): keep the Antigravity Google sign-in across server restar…
t3dotgg Sep 6, 2026
ab67795
fix(antigravity): load user skills from ~/.gemini for every project (…
t3dotgg Sep 6, 2026
84aebb7
fix(web): respect reduced motion in shared disclosures (#10258)
saphid Sep 6, 2026
b2e1518
feat(marketing): add a Windows 95 landing page (#10286)
t3dotgg Sep 6, 2026
fdcc491
refactor(web): remove unused runtime wrappers and exports (#10225)
juliusmarminge Sep 6, 2026
226abe5
refactor(web): keep feature component helpers private (#10226)
juliusmarminge Sep 6, 2026
1200f53
refactor(web): keep app utilities private and remove dead helpers (#1…
juliusmarminge Sep 6, 2026
da2ba5b
ci: enforce unused runtime exports in the web app (#10228)
juliusmarminge Sep 6, 2026
76f686d
test(desktop): cover Clerk setup through the service (#10284)
juliusmarminge Sep 6, 2026
cabac78
test(desktop): cover WSL hashes through runtime resolution (#10285)
juliusmarminge Sep 6, 2026
181e451
test(desktop): cover password store through startup (#10287)
juliusmarminge Sep 6, 2026
0c200c5
test(desktop): cover WSL paths through public behavior (#10289)
juliusmarminge Sep 6, 2026
b4040d9
test(desktop): exercise WSL cache safety through public scripts (#10301)
juliusmarminge Sep 6, 2026
f93aafc
test(web): cover file classification through diff ordering (#10304)
juliusmarminge Sep 6, 2026
a9fc4dc
test(web): focus command palette tests on search behavior (#10302)
juliusmarminge Sep 6, 2026
fc7ad2e
fix(web): add project settings to legacy sidebar project menu (#10021)
hwanseoc Sep 6, 2026
b972f1c
test(web): keep Markdown gutter styling private (#10306)
juliusmarminge Sep 6, 2026
9f40b2f
feat(settings): add shared project defaults and scoped overrides (#9754)
maria-rcks Sep 6, 2026
420fd76
feat(connections): balance new threads across connected machines (#9895)
maria-rcks Sep 6, 2026
f1e84c2
test(web): keep settings viewport comparison private (#10307)
juliusmarminge Sep 6, 2026
4f782be
fix(web): prevent file tree search focus ring clipping (#10175)
GuilhermeVieiraDev Sep 6, 2026
b7465a3
fix(mobile): stop the work log flickering during subagent runs and fa…
juliusmarminge Sep 6, 2026
a495385
fix(mobile): save linked media from chat (#10271)
juliusmarminge Sep 6, 2026
272d6d7
feat(markdown): show the GitHub mark for github.com links (#10324)
juliusmarminge Sep 6, 2026
d924fe2
fix(marketing): show a real preview card when t3.codes is shared (#10…
t3dotgg Sep 6, 2026
b273d1c
feat(usage): pool subscription limits per provider across accounts an…
juliusmarminge Sep 6, 2026
00d6109
chore(web): remove usage limits demo fixtures (#10330)
juliusmarminge Sep 6, 2026
127efae
fix(web): expose error disclosure state (#10125)
saphid Sep 6, 2026
bc02873
fix(web): name the editor picker accurately (#10124)
saphid Sep 6, 2026
aea9ecb
fix(web): make task row states readable (#10128)
saphid Sep 6, 2026
8268978
fix(web): explain hosted connection prerequisites (#10129)
saphid Sep 6, 2026
5533383
fix(web): name combobox chip removal targets (#10127)
saphid Sep 6, 2026
e5d086c
fix(marketing): present the Git workflow as an illustration (#10130)
saphid Sep 6, 2026
b155c21
feat(mobile): pool usage limits across selected environments (#10334)
juliusmarminge Sep 6, 2026
7544d3d
fix(release): space automatic nightlies at least six hours apart (#10…
t3dotgg Sep 6, 2026
dd64072
refactor(web): share bulk thread deletion between sidebars (#10106)
t3dotgg Sep 6, 2026
ac11bd2
refactor(client): share tool outcome rules (#10122)
t3dotgg Sep 6, 2026
4c7cd17
refactor(server): share Claude result status and error mapping (#10296)
t3dotgg Sep 6, 2026
f66cfe2
fix(server): settle inactive threads without a PR lookup (#10103)
t3dotgg Sep 6, 2026
60e6fa3
fix(ssh): report remote stop failures without losing ownership (#10105)
t3dotgg Sep 6, 2026
281b92b
perf(server): stop scanning old OpenCode parts (#10116)
t3dotgg Sep 6, 2026
17490c0
perf(server): avoid full thread reads on turn start (#10108)
t3dotgg Sep 6, 2026
076d753
perf(web): skip checkpoint map rebuilds while streaming (#10118)
t3dotgg Sep 6, 2026
eb8ed80
perf(server): skip plan bodies in thread summaries (#10341)
t3dotgg Sep 6, 2026
62f568b
fix(server): skip disabled provider instances for text generation fal…
t3dotgg Sep 6, 2026
e0adcc8
fix(server): capture checkpoints before refreshing PR status (#10347)
t3dotgg Sep 6, 2026
bccad27
fix(web): keep manual panel choices during a turn (#10113)
t3dotgg Sep 6, 2026
e63ddb4
fix(threads): keep completed requests closed across clients (#10123)
t3dotgg Sep 6, 2026
e4e9fa9
perf(server): finish runtime messages without full thread reads (#10120)
t3dotgg Sep 6, 2026
5fa35d2
refactor(server): let adapters declare context compaction (#10112)
t3dotgg Sep 6, 2026
223ff44
fix(server): link thread PRs without an open client (#10101)
t3dotgg Sep 6, 2026
72cb638
fix(web): show Tux icon for WSL environments (#8511)
UtkarshUsername Sep 6, 2026
64fafbd
perf(web): speed up folder menu sorting (#10190)
AksharP5 Sep 6, 2026
29d03ec
style(web): fix inconsistencies in new settings layouts (#10177)
extoci Sep 6, 2026
2d645df
feat(threads): persist manual active thread order (#9729)
juliusmarminge Sep 6, 2026
6766e68
feat(mobile): arrange active threads from both thread lists (#9730)
juliusmarminge Sep 6, 2026
4023d93
feat(web): drag threads across sections with consistent motion (#9731)
juliusmarminge Sep 6, 2026
9a47c7b
feat(web): simplify sidebar drag destination cues (#9750)
juliusmarminge Sep 6, 2026
36c48a6
fix(mobile): keep pending tasks queued when a send fails in flight (#…
juliusmarminge Sep 6, 2026
c0bf354
feat(mobile): show new-task drafts alongside pending tasks in the thr…
juliusmarminge Sep 6, 2026
8e129a0
feat(mobile): allow several new-task drafts per project (#10327)
juliusmarminge Sep 6, 2026
9846915
fix(mobile): slide settled threads out before collapsing (#10345)
StiensWout Sep 6, 2026
95d9937
fix(clients): show feedback results in composer banners (#10398)
juliusmarminge Sep 6, 2026
ea646c0
fix(server): stop Windows terminal polling from spiking CPU (#9476)
UtkarshUsername Sep 6, 2026
c2c4185
fix(web): onboarding installs agents without needing Node or npm (#10…
t3dotgg Sep 6, 2026
7ac93e3
fix(server): allow settling threads with unanswered async questions (…
t3dotgg Sep 6, 2026
001f06d
feat(ci): ship stable releases from the latest nightly commit (#10410)
t3dotgg Sep 6, 2026
075a86e
feat(marketing): add a nightly channel to the download page (#10408)
t3dotgg Sep 6, 2026
9c96ac2
fix(web): keep settings inputs focused during IME composition (#10262)
Lucenx9 Sep 6, 2026
f1a0811
fix(server): preserve Codex reset credits during usage updates (#10308)
yashranaway Sep 6, 2026
e15ffb9
docs: link the repository security reporting policy (#10303)
yashranaway Sep 6, 2026
2d6a379
fix(web): only show auto balance errors after failed checks (#10407)
maria-rcks Sep 6, 2026
3941c2a
fix(web): improve preview recording frame delivery (#10403)
maria-rcks Sep 6, 2026
3cd2cbb
Modify model and budget settings in ui-consistency.md
juliusmarminge Sep 6, 2026
f5a1ec5
Update model and effort in effect-service-conventions
juliusmarminge Sep 6, 2026
0032892
Fix duplicate maxBudgetPerRun entry in UI consistency
juliusmarminge Sep 6, 2026
ac4f1a2
fix(server): preserve inline provider secrets on redacted saves (#10054)
maxwellyoung Sep 6, 2026
d57bdf3
Fix formatting of maxBudgetPerPR in conventions file
juliusmarminge Sep 6, 2026
2108996
fix(web, mobile): replace Apple desktop machine labels (#10396)
extoci Sep 6, 2026
7e8ae6b
fix(web): hide browser when the right panel starts closing (#10385)
Neel2107 Sep 6, 2026
4538770
fix(web): keep settings section headings description-free (#10415)
maria-rcks Sep 6, 2026
0a89364
fix(usage): read and redeem hub reset credits through CLIProxyAPI (#1…
juliusmarminge Sep 6, 2026
7939415
fix(web): deduplicate expanded tool labels and keep errors expandable…
Yash-Singh1 Sep 6, 2026
86070cb
fix(server): skip git status scans while the index is locked (#9845)
Gigioxx Sep 6, 2026
29c5ecd
fix(mcp): allow text-only preview snapshots (#10232)
juliusmarminge Sep 6, 2026
3d00cfd
fix(claude): name the expired login or usage limit instead of a gener…
vitalyiegorov Sep 6, 2026
66a24d6
feat(mobile): queue a message while its attachment is still uploading…
juliusmarminge Sep 6, 2026
d6aa179
feat(mobile): show when an existing thread has a message waiting in t…
juliusmarminge Sep 6, 2026
9513925
fix(codex): accept misalignment policy errors on thread resume (#10373)
realbakari Sep 6, 2026
d3d4ea4
fix(server): skip disabled settlement lookups (#10424)
t3dotgg Sep 6, 2026
9ab0635
fix(server): run OpenCode CLI commands sequentially (#10427)
t3dotgg Sep 7, 2026
5b0c923
feat(web): name the drop action while dragging sidebar threads (#10378)
SunkenInTime Sep 7, 2026
252df77
perf(web): keep the sidebar responsive during bulk thread updates (#1…
t3dotgg Sep 7, 2026
ec36176
fix(web): onboarding wizard now supports light mode (#10432)
t3dotgg Sep 7, 2026
7112697
feat(threads): dismiss async questions without replying (#10431)
t3dotgg Sep 7, 2026
a12589d
fix(web): stop collapsing the composer when it loses focus (#10437)
t3dotgg Sep 7, 2026
1abc717
fix(server): keep interrupted threads resumable after restarts (#10421)
maria-rcks Sep 7, 2026
efeac14
fix(web): show load balancing note for a single machine (#10433)
maria-rcks Sep 7, 2026
1e740e4
fix(server): follow placeholder branches after checkout updates (#10441)
Yash-Singh1 Sep 7, 2026
8c9a49a
fix(mobile): expand single-line tool details in work logs (#10442)
Yash-Singh1 Sep 7, 2026
95f9b14
fix(server): import transcripts with oversized tool records (#10430)
Yash-Singh1 Sep 7, 2026
0860cea
fix(marketing): deploy site with nightly releases (#10443)
t3dotgg Sep 7, 2026
a07715c
fix(web): preserve multiline composer drafts during timeline scrollin…
Yash-Singh1 Sep 7, 2026
52b2bf7
fix(server): handle JSON-wrapped titles and verbose Claude output (#1…
Noojuno Sep 7, 2026
da976cf
fix(marketing): restore continuous endorsement scrolling (#10450)
t3dotgg Sep 7, 2026
bd280de
Revert "fix(marketing): restore continuous endorsement scrolling" (#1…
t3dotgg Sep 7, 2026
b22646c
fix(marketing): bring back the endorsement marquee (#10455)
t3dotgg Sep 7, 2026
de28fa1
chore: enable CodeRabbit automatic reviews (#10457)
t3dotgg Sep 7, 2026
1c1d38f
fix(codex): keep Spark limits from replacing the main allowance (#10458)
Yash-Singh1 Sep 7, 2026
7e03dcf
fix(marketing): send 95 nightly downloads to the downloads page (#10460)
t3dotgg Sep 7, 2026
ecf3716
fix(web): composer regains focus when you tab back into T3 Code (#10463)
t3dotgg Sep 7, 2026
4e969f3
fix(web): keep sidebar drag dividers clear and gestures smooth (#10453)
juliusmarminge Sep 7, 2026
6134b90
fix(server): mark Cursor transport error answers as failed (#10337)
shivamhwp Sep 7, 2026
f5fb056
fix(web): clear stuck panel resize cursor (#10461)
t3dotgg Sep 7, 2026
490eb17
fix(web): clarify sidebar drag dividers and empty targets (#10464)
juliusmarminge Sep 7, 2026
f729e8f
fix(web): make onboarding a shared multi-computer wizard (#10465)
juliusmarminge Sep 7, 2026
6abdf37
fix(shared): redeem reset credits through the hub when it holds the a…
juliusmarminge Sep 7, 2026
e1230d6
fix(mobile): keep pending messages in the chat timeline (#10449)
juliusmarminge Sep 7, 2026
bb5748b
fix(mobile): show connection status in the floating pill instead of a…
juliusmarminge Sep 7, 2026
a7028f1
fix: use Pierre icons consistently for attachments (#10475)
juliusmarminge Sep 7, 2026
08c715e
chore(release): prepare v0.0.39
t3-code[bot] Sep 7, 2026
5b68b2c
feat(mobile): open the thread screen as soon as a new task is submitt…
juliusmarminge Sep 7, 2026
7376536
fix(devcontainer): make repository setup work (#7875)
saphid Sep 7, 2026
d8bc683
fix(projects): prevent invalid script IDs from crashing threads (#10019)
saphid Sep 7, 2026
bc3dc26
fix(mobile): hide changed-files navigator and restore refresh in raw …
lnieuwenhuis Sep 7, 2026
e3b644c
fix(ios): scroll short source files from blank space (#10178)
juliusmarminge Sep 7, 2026
7dda0b1
feat(mobile): start a new thread on an existing branch (#10359)
StiensWout Sep 7, 2026
062987b
fix(mobile): improve font-size slider performance and prevent maximum…
bbernag Sep 7, 2026
b919d63
fix(web): keep composer toolbar controls anchored during transitions …
juliusmarminge Sep 7, 2026
f57d383
fix(web): resize the floating preview from any edge (#10467)
juliusmarminge Sep 7, 2026
7129797
fix(mobile): prevent chat from disappearing when scrolling (#10479)
juliusmarminge Sep 7, 2026
b248f5a
fix(mobile): smooth composer status pill resizing (#10484)
juliusmarminge Sep 7, 2026
c0d4e95
fix(mobile): release initial scroll target after dragging (#10483)
juliusmarminge Sep 7, 2026
e32dd42
fix(mobile): animate thread lifecycle transitions consistently (#10487)
juliusmarminge Sep 7, 2026
b717537
fix(mobile): restore assistant message bottom padding (#10491)
juliusmarminge Sep 7, 2026
dc39615
fix(mobile): preserve chat rows when toggling commands (#10492)
juliusmarminge Sep 7, 2026
8b2838e
feat(web): group onboarding project import by repository (#10493)
t3dotgg Sep 7, 2026
fe07ffe
fix(web): remove inserted citations on cancel (#10518)
extoci Sep 7, 2026
357b8d5
fix(mobile): match Working status color to desktop
baptisteArno Sep 7, 2026
8d7f781
fix(mobile): wait for native thread scroll before reveal (#10486)
juliusmarminge Sep 7, 2026
1d1bf50
chore(mobile): bump app version to 1.1.0
t3-code[bot] Sep 7, 2026
62fbbe0
fix(web): tolerate servers that predate git identity in project impor…
juliusmarminge Sep 7, 2026
72d9408
fix(web): restore settled PR colors on hover (#10023)
flamboh Sep 7, 2026
9cc9839
fix(web): keep popup triggers steady when pressed (#10468)
dominic-r Sep 7, 2026
0d34579
fix(web): keep project favicon shape consistent across sizes (#10502)
sameerr03 Sep 7, 2026
3bf74eb
fix(claude): report usage limits on retried turns (#10549)
StiensWout Sep 7, 2026
5b8a69c
refactor(desktop): classify backend exports (#10265)
juliusmarminge Sep 7, 2026
5a853a4
refactor(desktop): classify electron exports (#10266)
juliusmarminge Sep 7, 2026
89dd9ab
refactor(desktop): classify app exports (#10267)
juliusmarminge Sep 7, 2026
e279e40
refactor(desktop): classify preview exports (#10268)
juliusmarminge Sep 7, 2026
b491e41
ci(knip): enforce desktop exports (#10269)
juliusmarminge Sep 7, 2026
577b6cc
fix(web): remove excess sidebar thread spacing (#10569)
maria-rcks Sep 7, 2026
c8ec7df
fix(web): make settings project scopes searchable and scrollable (#10…
maria-rcks Sep 7, 2026
5ec6f77
fix(web): use `tabular-nums` with the ui font for sidebar timer (#10592)
extoci Sep 7, 2026
12f5604
fix(web): correct pending question attachment message (#10599)
dominic-r Sep 7, 2026
c0cad74
fix(mobile): restore brand artwork in the Android adaptive icon (#10598)
juliusmarminge Sep 7, 2026
0244333
fix(mobile): configure iOS Keychain access group (#3665)
VedankPurohit Sep 7, 2026
dadba6d
fix(web): remember Composer Fast mode across new chats (#2981)
aravhawk Sep 7, 2026
95834d6
fix(server): disable executable capabilities in Claude metadata gener…
maxwellyoung Sep 7, 2026
09e8de9
Add stop thread keybinding command (#4308)
jakeleventhal Sep 7, 2026
2c8e95a
fix(mobile): show the provider account badge on thread rows (#9899)
vitalyiegorov Sep 7, 2026
d64335b
fix(codex): name the usage limit and its reset instead of relaying "o…
vitalyiegorov Sep 7, 2026
ea2983a
fix(web): copy selected pull request link from PR page (#10615)
maria-rcks Sep 7, 2026
d67157a
fix(web): keep ref picker steady when opening (#9472)
Adamulek123 Sep 7, 2026
569a8cd
fix(web): play pull request videos inline (#10617)
maria-rcks Sep 7, 2026
8de9169
chore(release): prepare v0.0.40
t3-code[bot] Sep 8, 2026
e0e0bcb
fix(desktop): preserve browser editing shortcuts (#10621)
juliusmarminge Sep 8, 2026
d081ab7
fix(web): open pull request markdown links in the panel (#10623)
juliusmarminge Sep 8, 2026
892de47
fix(mobile): fit the Android splash icon to its circular mask (#10620)
juliusmarminge Sep 8, 2026
299404a
feat(desktop): add cross-platform window capture (#8103)
Bil0000 Sep 8, 2026
8588d7f
fix(web): open proactive panels when entering threads (#10610)
maria-rcks Sep 8, 2026
9fe4d65
fix(native): wait for the KDE feedback test listener (#10645)
juliusmarminge Sep 8, 2026
a01b227
fix(desktop): resolve local media linked from remote threads (#10619)
maria-rcks Sep 8, 2026
b7c002f
fix(web): add bottom padding to project actions header (#10634)
flamboh Sep 8, 2026
15193df
fix(web): update machines together in auto balance (#10596)
maria-rcks Sep 8, 2026
9e37f0c
fix(preview): transfer recordings to the agent environment (#10572)
maria-rcks Sep 8, 2026
f0bd43e
Add 'macroscope-review' label to conventions
juliusmarminge Sep 8, 2026
5a18fb9
Add 'macroscope-review' label to UI consistency
juliusmarminge Sep 8, 2026
6df0add
fix(web): navigate markdown images as galleries (#10625)
maria-rcks Sep 8, 2026
a37c664
chore: upgrade to TypeScript 7.0.2 (#10663)
juliusmarminge Sep 8, 2026
6ba15c0
fix: hide email-bearing account labels in usage limits (#10668)
juliusmarminge Sep 8, 2026
50a76ce
fix(web): keep scroll-to-end button close to composer (#10543)
Bil0000 Sep 8, 2026
bd56e92
chore(deps): upgrade Effect to rc.112 and Alchemy to beta.76 (#10652)
juliusmarminge Sep 8, 2026
458f502
chore(refs): sync Effect reference to rc.112 (#10653)
juliusmarminge Sep 8, 2026
9d345fa
chore(refs): sync Alchemy reference to beta.76 (#10654)
juliusmarminge Sep 8, 2026
bc4b006
fix: generate thread titles with the selected model across connection…
Bil0000 Sep 8, 2026
b5f7fa0
fix(desktop): enable context menus in the browser (#10670)
juliusmarminge Sep 8, 2026
bc88fdf
fix(desktop): stop generating declarations during bundling (#10679)
juliusmarminge Sep 8, 2026
349ce30
fix(desktop): restore layout control hit targets (#10673)
juliusmarminge Sep 8, 2026
7220dfe
feat(chat): attach files to question answers (#9871)
shivamhwp Sep 8, 2026
9915263
feat(desktop): refresh macOS installer with aurora artwork (#10632)
saphid Sep 8, 2026
430fbd1
fix(server): give completed turns a full session idle window (#10689)
StiensWout Sep 8, 2026
7d9aaf6
feat(web): add pull request merge defaults (#8088)
Bil0000 Sep 8, 2026
1f14d6d
fix(usage): keep account columns aligned across limit rows (#10690)
juliusmarminge Sep 8, 2026
11601da
fix(web): chat text no longer shows through a 1px gap under composer …
vitalyiegorov Sep 8, 2026
6f4cd07
refactor(server): classify runtime exports (#10274)
juliusmarminge Sep 8, 2026
0af04f1
refactor(server): classify orchestration exports (#10275)
juliusmarminge Sep 8, 2026
161715b
refactor(server): classify service exports (#10276)
juliusmarminge Sep 8, 2026
77d9ffc
refactor(server): classify telemetry exports (#10277)
juliusmarminge Sep 8, 2026
060c576
refactor(server): classify provider exports (#10278)
juliusmarminge Sep 8, 2026
3b6ce93
refactor(server): classify source control exports (#10279)
juliusmarminge Sep 8, 2026
7cdeb69
refactor(server): classify source control registry API (#10280)
juliusmarminge Sep 8, 2026
1f0a14c
refactor(server): classify preview toolkit exports (#10281)
juliusmarminge Sep 8, 2026
b284715
chore(mobile): bump app version to 1.1.1
t3-code[bot] Sep 8, 2026
7d62050
ci(knip): enforce server exports (#10282)
juliusmarminge Sep 8, 2026
134b719
feat(web): add previous/next turn navigation in minimap (#8531)
UtkarshUsername Sep 8, 2026
d6dbe8d
fix(web): stop the settings sidebar shifting when switching pages (#1…
t3dotgg Sep 8, 2026
83b865f
fix(web): copy terminal selection with Ctrl+Insert (#8541)
iamshadmantaqi Sep 8, 2026
82451ee
fix(web): show the same project icon in the command palette as everyw…
t3dotgg Sep 8, 2026
d7a59c6
fix(web): stop sidebar rows flashing and shifting on click (#10713)
t3dotgg Sep 8, 2026
eb11506
refactor(web): pass the project record to ProjectFavicon so icons can…
t3dotgg Sep 8, 2026
bde39d4
feat(web): accept file drops into sidebar threads (#7892)
UtkarshUsername Sep 8, 2026
b5d8903
feat(web): accept file drops into sidebar threads (#7892)
UtkarshUsername Sep 8, 2026
061543e
fix(mcp): keep preview snapshots usable by the agent and let it save …
t3dotgg Sep 8, 2026
47eed9f
fix(server): stop Windows terminal processes when closing (#10771)
SunkenInTime Sep 8, 2026
579266c
feat(mobile): use Android wallpaper colors (#10691)
juliusmarminge Sep 8, 2026
4664c57
feat(mobile): add optional Material You layout (#10692)
juliusmarminge Sep 8, 2026
2a00445
feat(server): resume unavailable provider sessions with mobile-safe s…
rix1337 Sep 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.
2 changes: 1 addition & 1 deletion .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
reviews:
review_status: false
auto_review:
enabled: false
enabled: true
82 changes: 63 additions & 19 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,73 @@
// Dev container for T3 Code. Mirrors CI (ubuntu-24.04, Node 24, Rust stable)
// and the canonical setup in docs/operations/development.md: global `vp`, `vp i`.
// Contributor doc: docs/internals/devcontainer.md
{
"name": "T3 Code Dev",
"image": "debian:bookworm",
"name": "T3 Code",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers-extra/features/bun:1": {
"version": "1.3.11"
// 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"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "24.13.1"
},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.10",
"installTools": false
}
// native/resource-monitor (edition 2024, needs stable >= 1.85). The server
// degrades gracefully without the binary, but CI checks cargo fmt + test.
"ghcr.io/devcontainers/features/rust:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"hostRequirements": {
"cpus": 4,
"memory": "8gb",
"storage": "32gb"
},
"containerEnv": {
// Keep all runtime state inside the (gitignored) workspace .t3, matching
// the worktree default. An explicit --home-dir still wins.
"T3CODE_HOME": "${containerWorkspaceFolder}/.t3"
},
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/git",
"ghcr.io/devcontainers-extra/features/bun"
"mounts": [
// vp keeps the pnpm content-addressable store and metadata cache under
// ~/.cache/pnpm (verified: the v11 store dir lives there); mounting a
// volume there lets installs survive container rebuilds.
"source=t3code-pnpm-store,target=/home/vscode/.cache/pnpm,type=volume",
// Root node_modules holds the whole pnpm virtual store (.pnpm), so one
// volume keeps the heavy tree off the slow macOS/Windows bind mount.
// Scoped by devcontainerId so parallel checkouts do not share it.
// Codespaces note: prebuild snapshots exclude volumes; drop these mounts
// if prebuilt codespaces become the primary workflow.
"source=t3code-node-modules-${devcontainerId},target=${containerWorkspaceFolder}/node_modules,type=volume"
],
"postCreateCommand": {
"bun-install": "bun install --backend=copyfile --frozen-lockfile"
"onCreateCommand": "bash .devcontainer/on-create.sh",
"updateContentCommand": "bash .devcontainer/update-content.sh",
"forwardPorts": [5733, 13773],
"portsAttributes": {
"5733": {
"label": "t3 web (open via the pairing URL, not the bare origin)",
"onAutoForward": "notify"
},
"13773": {
"label": "t3 server",
"onAutoForward": "silent"
}
},
"customizations": {
"codespaces": {
"openFiles": ["docs/internals/devcontainer.md"]
},
"vscode": {
"extensions": ["oxc.oxc-vscode"]
"extensions": ["oxc.oxc-vscode", "rust-lang.rust-analyzer"],
"settings": {
// .repos is a large vendored read-only reference tree; watching it
// burns CPU and file handles.
"files.watcherExclude": {
"**/.repos/**": true,
"**/.t3/**": true
},
"search.exclude": {
"**/.repos": true
}
}
}
}
},
"remoteUser": "vscode"
}
38 changes: 38 additions & 0 deletions .devcontainer/on-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
# One-time container setup, baked into prebuilds. Content-dependent work
# (dependency install, Chromium) lives in update-content.sh.
set -euo pipefail

# The Vite+ CLI is the repo task runner (vp i, vp run dev, vp test run).
# Download to a file first: a curl failure inside $( ) would yield an empty
# script and a false success. VP_NODE_MANAGER=no skips the installer's node
# shims; Node comes from the devcontainer feature. The VP_*_DIR group (set
# together, absolute) pins the install location instead of the installer's
# XDG platform defaults, which moved the binary from ~/.vite-plus/bin to
# ~/.local/share/vite-plus/bin between releases and would break the check
# below either way.
export VP_BIN_DIR="$HOME/.local/share/vite-plus/bin"
export VP_DATA_DIR="$HOME/.local/share/vite-plus"
export VP_CACHE_DIR="$HOME/.cache/vite-plus"
installer=$(mktemp)
curl -fsSL https://vite.plus -o "$installer"
VP_NODE_MANAGER=no bash "$installer"
rm -f "$installer"

# Non-login lifecycle shells never source the profile the installer edits,
# so expose vp on the default PATH. test -x keeps a bad install loud.
test -x "$VP_BIN_DIR/vp"
sudo ln -sf "$VP_BIN_DIR/vp" /usr/local/bin/vp

# First-run terminal notice, rendered by the devcontainers base image.
sudo mkdir -p /usr/local/etc/vscode-dev-containers
sudo tee /usr/local/etc/vscode-dev-containers/first-run-notice.txt >/dev/null <<'EOF'
T3 Code devcontainer

vp run dev start server + web, then open the pairing URL it
prints (the bare forwarded port will not authenticate)
cp .env.example .env optional: enable T3 Connect cloud features
(public identifiers, not secrets)

Details: docs/internals/devcontainer.md
EOF
19 changes: 19 additions & 0 deletions .devcontainer/update-content.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Runs at creation and on every prebuild content refresh, so codespaces start
# with deps installed and caches warm. Everything here is idempotent.
set -euo pipefail

# Volume mounts (pnpm store, node_modules) and the directories docker creates
# for them arrive root-owned; hand them to the dev user before installing.
for dir in "$HOME/.cache" "$HOME/.cache/pnpm" node_modules; do
if [ -d "$dir" ] && [ "$(stat -c %U "$dir")" != "$(id -un)" ]; then
sudo chown "$(id -un):$(id -gn)" "$dir"
fi
done

CI=true vp i
# Repairs electron's path.txt and exec bits after install, same as CI.
vp run --filter @t3tools/desktop ensure:electron
# Pre-warms Vite's dep optimizer (cache is keyed on the absolute path, which
# is stable inside the container).
node apps/web/scripts/warm-dep-cache.ts
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# git autocrlf=true converts LF to CRLF on Windows, causing issues with oxfmt
* text=auto eol=lf
# Batch files need CRLF for cmd.exe to parse them reliably.
*.cmd text eol=crlf
*.bat text eol=crlf
8 changes: 8 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Security policy

Report security vulnerabilities affecting T3 Code or T3 Tools-operated infrastructure to
[security@ping.gg](mailto:security@ping.gg). Please do not disclose them publicly until we have had
a reasonable opportunity to investigate and remediate them.

See the [full security policy](https://t3.codes/security-policy) for reporting details, scope,
and safe harbor terms for good-faith research.
18 changes: 18 additions & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,51 @@
# -github:username reason for denouncement
#
# Keep entries sorted alphabetically.
github:0x4bs3nt
github:Adamulek123
github:adityavardhansharma
github:aoright
github:arhxam
github:bil0000
github:binbandit
github:Brechard
github:btsouth
github:chrisdeeming
github:chuks-qua
github:cursoragent
github:D3OXY
github:dbalders
github:eggfriedrice24
github:extoci
github:flamboh
github:FllipEis
github:gbarros-dev
github:gfsaaser24
github:github-actions[bot]
github:gsimone
github:GuilhermeVieiraDev
github:hwanseoc
github:inayayousfi
github:ipanasenko
github:jakeleventhal
github:jamesx0416
github:jappyjan
github:jasonLaster
github:JoeEverest
github:justsomelegs
github:kridaydave
github:lgwacker
github:lnieuwenhuis
github:Lucenx9
github:mackinleysmith
github:maria-rcks
github:MatthewFeroz
github:maxwellyoung
github:mwolson
github:myacoub91
github:naMqe-h
github:nateEc
github:naveed949
github:nmggithub
github:Noojuno
github:notkainoa
Expand All @@ -57,7 +73,9 @@ github:StiensWout
github:SunkenInTime
github:tarik02
github:tris203
github:tsouth89
github:UtkarshUsername
github:vitalyiegorov
github:Yash-Singh1
github:yashranaway
github:Ymit24
22 changes: 22 additions & 0 deletions .github/actions/setup-apt-mirrors/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Setup APT mirrors
description: Configure Ubuntu package downloads with automatic mirror failover.
runs:
using: composite
steps:
- shell: bash
run: |
# Replace the existing Blacksmith mirror list as well as direct sources.
printf '%s\tpriority:%s\n' \
https://archive.ubuntu.com/ubuntu 1 \
https://mirrors.edge.kernel.org/ubuntu 2 \
https://mirror.math.princeton.edu/pub/ubuntu 3 \
| sudo tee /etc/apt/blacksmith-ubuntu-mirrors.txt > /dev/null

# APT's mirror transport retries each file against the next server.
sudo find /etc/apt -maxdepth 2 -type f \( -name '*.list' -o -name '*.sources' \) \
-exec sed -i -E \
's#https?://(([^/]+\.)?archive|security)\.ubuntu\.com/ubuntu/?#mirror+file:/etc/apt/blacksmith-ubuntu-mirrors.txt#g' {} +

# Move on to a fallback before an unreachable server exhausts the job.
printf '%s\n' 'Acquire::http::Timeout "15";' 'Acquire::https::Timeout "15";' \
| sudo tee /etc/apt/apt.conf.d/80-mirror-timeouts > /dev/null
67 changes: 67 additions & 0 deletions .github/scripts/check-nightly-release.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
const MINIMUM_RELEASE_GAP_MS = 6 * 60 * 60 * 1000;

const isNightlyTag = (tag) => /^v.*-nightly\./.test(tag) || tag.startsWith("nightly-v");

// Newest published nightly by publication time, or undefined when none exists.
async function findLatestNightly({ github, context }) {
const releases = await github.paginate(github.rest.repos.listReleases, {
...context.repo,
per_page: 100,
});
return releases
.filter((release) => !release.draft && release.published_at && isNightlyTag(release.tag_name))
.sort((a, b) => Date.parse(b.published_at) - Date.parse(a.published_at))[0];
}

// Runs after the workflow acquires the nightly concurrency lock.
async function shouldReleaseNightly({ github, context, core, now = Date.now() }) {
const lastNightly = await findLatestNightly({ github, context });

if (!lastNightly) {
core.info("No published nightly found. Proceeding with release.");
return true;
}

if (now - Date.parse(lastNightly.published_at) < MINIMUM_RELEASE_GAP_MS) {
core.info(`Nightly ${lastNightly.tag_name} was published less than six hours ago. Skipping.`);
return false;
}

const { data: comparison } = await github.rest.repos.compareCommitsWithBasehead({
...context.repo,
basehead: `${lastNightly.tag_name}...${context.sha}`,
per_page: 1,
});
if (comparison.status !== "ahead") {
core.info(
`Candidate commit is ${comparison.status} relative to ${lastNightly.tag_name}. Skipping.`,
);
return false;
}

core.info(`New commits since ${lastNightly.tag_name}, and the six-hour gap has passed.`);
return true;
}

// Stable releases build the commit the latest nightly shipped, so the stable
// build is one nightly users already ran. Returns the nightly tag, its commit,
// and the stable version that nightly was a preview of.
async function resolveLatestNightlyCommit({ github, context, core }) {
const lastNightly = await findLatestNightly({ github, context });
if (!lastNightly) {
throw new Error("No published nightly found. Stable releases build the latest nightly commit.");
}

const tag = lastNightly.tag_name;
// repos.getCommit dereferences annotated tags, so this is the commit either way.
const { data: commit } = await github.rest.repos.getCommit({ ...context.repo, ref: tag });
const version = /^(?:nightly-)?v(\d+\.\d+\.\d+)-nightly\./.exec(tag)?.[1];
if (!version) {
throw new Error(`Cannot derive a stable version from nightly tag ${tag}.`);
}

core.info(`Latest nightly ${tag} shipped ${commit.sha} as a preview of ${version}.`);
return { tag, sha: commit.sha, version };
}

module.exports = { shouldReleaseNightly, resolveLatestNightlyCommit };
Loading
Loading