Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
248 commits
Select commit Hold shift + click to select a range
17e3477
Update model manifest with new timestamps and models
juliusmarminge Sep 22, 2026
c0490e9
refactor(web): use ghost-muted where ghost buttons restyled to muted …
juliusmarminge Sep 22, 2026
1a81ea8
refactor(web): fold repeated overrides into ui defaults (#13021)
juliusmarminge Sep 22, 2026
ce98d41
refactor(web): mark the current menu value with MenuRadioGroup (#13022)
juliusmarminge Sep 22, 2026
ed85694
refactor(web): add an active prop to CommandItem (#13023)
juliusmarminge Sep 22, 2026
bbd5cc0
chore(lint): exempt CollapsibleTrigger from no-restyle (#13024)
juliusmarminge Sep 22, 2026
9515016
refactor(web): use icon-xs where icon buttons were forced to size-6 (…
juliusmarminge Sep 22, 2026
b4f1f18
refactor(web): add radius="none" to ScrollArea (#13026)
juliusmarminge Sep 22, 2026
7b54af9
refactor(web): add font="mono" to Input (#13027)
juliusmarminge Sep 22, 2026
be80e36
refactor(web): add SidebarInput (#13028)
juliusmarminge Sep 22, 2026
8d02447
refactor(web): add a label variant to Badge (#13029)
juliusmarminge Sep 22, 2026
7d658c2
refactor(web): give Skeleton three shapes (#13030)
juliusmarminge Sep 22, 2026
aa2b25d
refactor(web): one wrap width for tooltips, plus a code variant (#13031)
juliusmarminge Sep 22, 2026
f3d3fe4
refactor(web): one vertical rhythm for dialog bodies (#13032)
juliusmarminge Sep 22, 2026
18aa703
refactor(web): ghost-muted icons follow the text; add ghost-destructi…
juliusmarminge Sep 22, 2026
4c9fbf1
refactor(web): InlineButton underlines on hover and takes a tone (#13…
juliusmarminge Sep 22, 2026
d7736e0
refactor(web): one minimum width for menus, three widths for popovers…
juliusmarminge Sep 22, 2026
da89e10
refactor(web): every textarea caps its growth; the diff comment box i…
juliusmarminge Sep 22, 2026
016cdb9
refactor(web): stacked sidebar groups share one inset (#13037)
juliusmarminge Sep 22, 2026
e420ef9
refactor(web): Collapsible stays a plain container (#13038)
juliusmarminge Sep 22, 2026
0fa4a85
refactor(web): show more / show less are ordinary sidebar sub-rows (#…
juliusmarminge Sep 22, 2026
0ee02eb
refactor(web): Empty has three sizes (#13040)
juliusmarminge Sep 22, 2026
4321aa2
refactor(web): one row height for select, combobox and radio items (#…
juliusmarminge Sep 22, 2026
1c2f933
refactor(web): render menu and popover triggers through Button (#13042)
juliusmarminge Sep 22, 2026
83bbfa7
refactor(web): sidebar alerts use the standard variants; one keycap (…
juliusmarminge Sep 22, 2026
f193a68
fix(server): bypass owned caches on explicit provider refresh (#13109)
juliusmarminge Sep 22, 2026
d7819c1
chore(devices): bump agent-device to 0.21.12 (#13124)
juliusmarminge Sep 22, 2026
bed0b4c
chore(mobile): drop dead nitro-markdown tgz override and @expo/metro-…
juliusmarminge Sep 22, 2026
242816a
feat(web): show settings scope as a sentence at the top of the page (…
juliusmarminge Sep 22, 2026
db9a067
refactor(web): move settings scope pickers into breadcrumbs (#13165)
Yash-Singh1 Sep 23, 2026
7e65b22
feat(auth): share provider sign-in flows and credential bindings (#12…
juliusmarminge Sep 23, 2026
ec28eef
refactor(mobile): git sheets use uniwind platform variants instead of…
juliusmarminge Sep 23, 2026
3409651
chore(mobile): name the two project favicon caches by their job (#13160)
juliusmarminge Sep 23, 2026
6dcde21
revert(mobile): git sheets back to Platform.OS ternaries (un-guarded …
juliusmarminge Sep 23, 2026
5d493d6
docs(mobile): document the two mobile routes that intentionally skip …
juliusmarminge Sep 23, 2026
5821b77
refactor(mobile): break module cycles with focused extractions (#13151)
juliusmarminge Sep 23, 2026
f223312
fix(server): generate PR diffs from branch changes (#13170)
Yash-Singh1 Sep 23, 2026
68607c5
fix(web): preserve nested scroll behavior in chat timeline (#13167)
Yash-Singh1 Sep 23, 2026
b954af6
test(web): cover usage model ordering without static markup (#13104)
flamboh Sep 23, 2026
e4422ee
fix(desktop): find linuxbrew node for the WSL backend (#7827)
CodyRay Sep 23, 2026
ca864a2
chore(models): use GPT-6 Luna for text generation (#13115)
extoci Sep 23, 2026
a493946
fix(mobile): keep ordinary offline outbox failures out of console.war…
juliusmarminge Sep 23, 2026
96c4bfa
feat(providers): check remote compatibility ranges (#13130)
juliusmarminge Sep 23, 2026
2eaff08
chore(lint): keep mobile theme escape-hatch allowlist honest (#13146)
juliusmarminge Sep 23, 2026
6975efd
fix(web): the pull request badge reads at the meta size again (#13175)
juliusmarminge Sep 23, 2026
b919961
fix(mobile): uniwind platform variants stay guarded on both platforms…
juliusmarminge Sep 23, 2026
21be723
refactor(mobile): git sheets use uniwind platform variants instead of…
juliusmarminge Sep 23, 2026
db898a3
refactor(mobile): remaining className platform ternaries become class…
juliusmarminge Sep 23, 2026
219c1d2
fix(web): align provider emails without clipping (#13174)
Derpedyea Sep 23, 2026
151324b
perf(mobile): recycle the default v2 home list and scope the snooze m…
juliusmarminge Sep 23, 2026
0c91f68
refactor(mobile): retire the legacy grouped thread list (#13183)
juliusmarminge Sep 23, 2026
5975ec7
fix(server): background PR checks spend less GitHub quota (#13189)
juliusmarminge Sep 23, 2026
18de6bb
fix(server): background PR sync reads summaries in batches (#13198)
juliusmarminge Sep 23, 2026
eafb4a9
fix(server): GitHub PR lookups stop probing owner-qualified heads (#1…
juliusmarminge Sep 23, 2026
aca3c87
chore(mobile): clear the legacy-list deletion fallout (#13203)
juliusmarminge Sep 23, 2026
29931dd
hatch/variant functions (#13191)
juliusmarminge Sep 23, 2026
266d70c
refactor(web): context chips render through one ContextChip component…
juliusmarminge Sep 23, 2026
361b047
refactor(web): ui components drop their secondary className props (#1…
juliusmarminge Sep 23, 2026
866fc90
refactor(web): menu triggers and items stop restyling ui/menu (#13205)
juliusmarminge Sep 23, 2026
2107939
refactor(web): field controls stop restyling Input, Select, Combobox …
juliusmarminge Sep 23, 2026
f465227
refactor(web): app code stops restyling sidebar, popover, table and m…
juliusmarminge Sep 23, 2026
71c9b69
refactor(web): Button consumers outside the composer stop restyling i…
juliusmarminge Sep 23, 2026
0e512db
refactor(web): composer controls own their look instead of restyling …
juliusmarminge Sep 23, 2026
10882be
chore(web): no-restyle fails lint, and the ceiling gate goes (#13210)
juliusmarminge Sep 23, 2026
23c7ab9
fix(mobile): recover from screen render errors (#13197)
juliusmarminge Sep 23, 2026
829af7b
feat(web): navigate back and forward with mod+[ and mod+] (#13212)
juliusmarminge Sep 23, 2026
b21c545
fix(web): sort title matches by recent activity (#13219)
Yash-Singh1 Sep 23, 2026
eb6c170
test(desktop): remove redundant keyring module-load test (#13220)
t3-code[bot] Sep 23, 2026
f5ef0dd
chore(mobile): bump app version to 1.3.1
t3-code[bot] Sep 23, 2026
11e91f1
feat(mobile): capture Live Activities and agent notifications in show…
juliusmarminge Sep 23, 2026
68fb7f4
feat(mobile): manage environment and provider updates (#13302)
juliusmarminge Sep 23, 2026
e407f9b
fix(ci): shard release tests like pull request CI (#13321)
juliusmarminge Sep 23, 2026
effaab9
fix(web): show previous worktree branch on second line (#13314)
Yash-Singh1 Sep 23, 2026
d4cd7d5
fix(providers): restore compatibility ranges for every harness (#13328)
juliusmarminge Sep 24, 2026
894d334
fix(preview): use the visible browser for new agent sessions (#13064)
Bil0000 Sep 24, 2026
e4eb997
fix(server): stop replaying old agent alerts on restart (#13340)
juliusmarminge Sep 24, 2026
c0912de
fix(web): use a brain icon for the effort dropdown (#13309)
t3-code[bot] Sep 24, 2026
6b4b190
fix(desktop): SnapShot shortcut helper no longer adds a Dock icon on …
Gigioxx Sep 24, 2026
9030a60
fix(web): composer chip rings no longer clip at the editor edge (#13301)
flamboh Sep 24, 2026
21e2b7d
fix(web): switches announce their real state to screen readers (#11580)
Leos-Khai Sep 24, 2026
f1add18
fix(shared): preserve final quoted empty CSV records (#11425)
Lucenx9 Sep 24, 2026
78af372
feat(web): add an interactive 3D device workspace (#12787)
juliusmarminge Sep 24, 2026
9383f4a
chore: add scratchyone to vouched list (#13353)
t3-code[bot] Sep 24, 2026
e67abcf
feat(observability): honor the OpenTelemetry kill switch (#13355)
juliusmarminge Sep 24, 2026
b2b43be
fix(server): preserve racy edits in review diff previews (#12613)
tris203 Sep 24, 2026
cb1a3f3
fix(web): show repository names on linked pull requests (#13061)
Bil0000 Sep 24, 2026
80fc23a
lint/unknown and static (#13366)
juliusmarminge Sep 24, 2026
315fcca
fix(web): web colors come from theme tokens (#13371)
juliusmarminge Sep 24, 2026
f26ee08
fix(web): appearance classes use theme tokens and scale values (#13397)
juliusmarminge Sep 24, 2026
ffb5fcc
fix(server): keep Codex's reset answer when the re-probe fails (#13363)
juliusmarminge Sep 24, 2026
84c436b
fix(mobile): branch search finds remote and space-typed branches (#13…
Bil0000 Sep 24, 2026
7cfb498
chore(ci): use GPT 6 Sol Max for check agents (#13473)
juliusmarminge Sep 24, 2026
3412097
feat(server): show and redeem Claude banked resets (#13118)
Bil0000 Sep 24, 2026
87d8428
fix(observability): a malformed OTEL_RESOURCE_ATTRIBUTES no longer st…
yordis Sep 24, 2026
cdb26fe
fix(antigravity): let Stop end commands that outlived their turn (#13…
juliusmarminge Sep 24, 2026
f61f979
fix(web,mobile): drop the baked-in tile from the Antigravity icon (#1…
flamboh Sep 24, 2026
53456bc
fix(marketing): use the official OpenCode and Antigravity logos (#13365)
flamboh Sep 24, 2026
e759847
fix(acp): keep one answer when a running tool reports progress (#13386)
juliusmarminge Sep 24, 2026
66129c6
feat(web): run shell commands from chat in the thread terminal (#13060)
Bil0000 Sep 24, 2026
f3cb2a1
fix(antigravity): keep Windows runtime unpacking under MAX_PATH (#13389)
juliusmarminge Sep 24, 2026
567783e
fix(codex): the protocol generator runs again on Effect rc.115 (#13480)
juliusmarminge Sep 24, 2026
d5d4874
feat(codex): require Codex 0.156 and regenerate its protocol (#13481)
juliusmarminge Sep 24, 2026
0109670
feat(threads): add per-thread auto-settle switch (#11846)
t3dotgg Sep 24, 2026
8251c8d
fix(web): working and monitoring threads fade in the sidebar again (#…
t3dotgg Sep 24, 2026
a36af06
fix(server): streamed section titles wait for the text under them (#1…
t3dotgg Sep 24, 2026
720490a
fix(web): normalize disabled control opacity (#11441)
t3-code[bot] Sep 24, 2026
9a91177
fix(web): sidebar Back always returns to the main app (#13516)
t3dotgg Sep 24, 2026
d4a3345
fix(desktop): desktop updates reconnect in seconds, not minutes (#12006)
t3dotgg Sep 24, 2026
8d7b5e9
fix(connect): remove tunnels after hosts go offline (#9386)
t3dotgg Sep 25, 2026
9c524d5
fix(mobile): capture a lit 6.9-inch lock screen in the agent-activity…
juliusmarminge Sep 25, 2026
72447f2
feat(grok): offer one-click updates through `grok update` (#13523)
juliusmarminge Sep 25, 2026
59abcd6
fix(mobile): make Android subscription usage widgets scrollable (#13474)
tris203 Sep 25, 2026
fd46510
fix(web): keep sidebar terminal pulses in sync (#12962)
t3dotgg Sep 25, 2026
46f3c2c
feat(web): add iPhone Duo 3D controls (#12813)
juliusmarminge Sep 25, 2026
d23eab1
fix(relay): export tunnel cleanup counters to Axiom (#13528)
juliusmarminge Sep 25, 2026
0cab7d5
fix(server): Grok accounts with no usage yet no longer vanish from Li…
jakeleventhal Sep 25, 2026
91e53e5
fix(server): report the Grok account email so usage limits merge acro…
jakeleventhal Sep 25, 2026
3e2370f
feat(web): add usage page keybinding (#9434)
jakeleventhal Sep 25, 2026
568c9bc
chore: clear Effect language service suggestions (#13536)
juliusmarminge Sep 25, 2026
fc46b8c
ci(relay): add a forced manual relay deploy (#13550)
juliusmarminge Sep 25, 2026
ebdcda1
fix(web): selected text stays visible on a revealed file line (#13548)
t3dotgg Sep 25, 2026
29abbf9
fix(web): collapsed composer bar stops flipping its labels while you …
t3dotgg Sep 25, 2026
ab70c89
fix(clients): sync status no longer flickers when opening running thr…
t3dotgg Sep 25, 2026
6391be2
fix(server): newer Codex models get T3 Code's instructions again (#13…
t3dotgg Sep 25, 2026
9957349
feat(web): control Android foldables in the Device panel (#13534)
juliusmarminge Sep 25, 2026
4f27a84
fix(mcp): preview snapshots fit in the agent's tool output again (#13…
t3dotgg Sep 25, 2026
0c84b42
fix(web): paste after clicking away from the composer lands in it aga…
t3dotgg Sep 25, 2026
99641fd
feat(desktop): keep running threads synced in the background (#13554)
t3dotgg Sep 25, 2026
1e192b2
fix(mcp): preview errors tell agents what to do instead (#13559)
t3dotgg Sep 25, 2026
df9826f
feat(web): agents working banner links to the Agents panel (#13572)
t3dotgg Sep 25, 2026
7b84431
fix(web): size the Android fold model from the inner display (#13574)
juliusmarminge Sep 25, 2026
a107f8a
fix(clients): a preview app no longer knocks the desktop's own server…
t3dotgg Sep 25, 2026
20f0ff1
fix(web): keep nested task states out of parent bullets (#11477)
dominic-r Sep 25, 2026
c13f7d9
feat(release): ship a Linux .deb that updates itself (#13575)
t3dotgg Sep 25, 2026
d10bd13
perf(desktop): cache compiled JavaScript between launches (#13501)
t3dotgg Sep 25, 2026
b3de243
fix(dev): one t3.json setup action that works on every OS (#13589)
t3dotgg Sep 25, 2026
13d6b30
fix(web): new worktree threads no longer say "checkout" during setup …
t3dotgg Sep 25, 2026
86054b6
fix(desktop): `t3 app` keeps working after a second desktop app quits…
t3dotgg Sep 25, 2026
e3e7cc3
fix(usage): price Claude fast-mode requests at the fast rate (#13599)
t3dotgg Sep 25, 2026
e55e731
fix: update OpenAI logo to current brand asset (#13611)
aaditagrawal Sep 25, 2026
1c12706
fix(mobile): render assigned project icons in chat list (#12810)
SunkenInTime Sep 25, 2026
e5a46d6
feat(usage): read cursor, opencode, and antigravity history (#10409)
maria-rcks Sep 25, 2026
d06f0ff
fix(sqlite): retry failed statement preparations (#10584)
yashranaway Sep 25, 2026
7a12aff
fix(mobile): scale Android controls with appearance text size (#13356)
none23 Sep 25, 2026
a4f6078
fix(web): return focus to the composer after saving a citation note (…
mackinleysmith Sep 25, 2026
fd996d1
feat(observability): honor the standard OTLP endpoint, headers, and p…
yordis Sep 25, 2026
1a0c915
fix(terminal): settling a thread closes its idle shells (#13673)
t3dotgg Sep 25, 2026
f5bd2fd
fix(server): load Cursor keyring with createRequire (#13678)
Yash-Singh1 Sep 25, 2026
4293433
perf(server): avoid rereading unchanged files in review previews (#13…
shivamhwp Sep 25, 2026
2598ce7
feat(desktop): honor the standard OTLP variables in the main process …
yordis Sep 25, 2026
ed809f7
fix(web): restore compact provider instance badges (#13700)
t3-code[bot] Sep 25, 2026
525af2d
perf(mobile): lighter Home rows away from the viewport (#13702)
AKolenda Sep 26, 2026
aade3a6
fix(usage): price Cursor cache savings by base model (#13731)
Yash-Singh1 Sep 26, 2026
595a1e1
perf(mobile): render Home rows further ahead while scrolling (#13705)
AKolenda Sep 26, 2026
2a9832b
refactor(observability): name each service after its application (#13…
yordis Sep 26, 2026
c216ba4
perf(server): stop remapping every thread on each thread event (#13720)
t3dotgg Sep 26, 2026
5660ab5
Remove unused items tracking from Claude adapter state (#13718)
t3dotgg Sep 26, 2026
20885ce
feat(observability): name the command on subprocess spans (#13701)
t3dotgg Sep 26, 2026
7c901a3
fix(cli): t3 triage points agents at log files that exist (#13685)
t3dotgg Sep 26, 2026
8aa5be2
fix(server): the SQLite WAL file shrinks back after large writes (#13…
t3dotgg Sep 26, 2026
75bf92e
feat(cli): summarize the server trace file from the command line (#13…
t3dotgg Sep 26, 2026
6530de0
perf(server): pull request sync reads only threads with linked pull r…
t3dotgg Sep 26, 2026
1dc8cbe
feat(observability): write a server heap snapshot on SIGUSR2 (#13694)
t3dotgg Sep 26, 2026
574b180
perf(server): shutdown no longer rewrites every stopped session row (…
t3dotgg Sep 26, 2026
b6eefc9
perf(server): build the thread list snapshot without decoding it twic…
t3dotgg Sep 26, 2026
b2577d6
fix(client): slow servers finish loading the thread list instead of l…
t3dotgg Sep 26, 2026
6989856
perf(web): hidden terminal drawers no longer keep full thread history…
t3dotgg Sep 26, 2026
3b0a495
perf(server): per-thread settlement and PR checks no longer rebuild t…
t3dotgg Sep 26, 2026
ecd3237
fix(mobile): running threads open at the latest message (#13530)
AKolenda Sep 26, 2026
ee18e56
feat(observability): record event loop stalls in the server trace (#1…
t3dotgg Sep 26, 2026
999161e
perf(server): stop re-running git for every project each minute (#13689)
t3dotgg Sep 26, 2026
94c4216
fix(usage): hide the Cursor keychain prompt when Cursor isn't set up …
Gigioxx Sep 26, 2026
04c15f3
feat(web): add chat width setting for wide screens (#11594)
otavio Sep 26, 2026
4408bf5
fix(opencode): accept v2 serve ready line when spawning server (#13651)
shirishpothi Sep 26, 2026
1e844a3
fix(editors): stop treating the agy CLI as the Antigravity IDE (#7079)
ishaanko Sep 26, 2026
eeea71a
fix(web): make the empty workspace draggable on desktop (#13713)
otavio Sep 26, 2026
dd8332d
fix(server): installed editors no longer vanish when discovery is slo…
bfowler Sep 26, 2026
29a3266
fix(git): exclude SSH ports from provider URLs (#12537)
GaMeRaM Sep 26, 2026
5d707bb
fix(web): Mod+B bolds on non-Latin layouts (#13409)
ValeraZSD Sep 26, 2026
a21b42c
fix(server): prune expired replay-protection files from the secrets d…
t3dotgg Sep 26, 2026
8bc9b78
fix(web): terminal links drop a trailing colon (#13408)
ValeraZSD Sep 26, 2026
4923ff4
fix(server): bump node-pty to 1.2.0-beta.15 for linux-arm64 prebuild …
Ephraim-9 Sep 26, 2026
92f0af2
Show a focus ring on sidebar thread and draft rows (#13344)
ryanilano Sep 26, 2026
dab9561
fix(mobile): keep composer within folded screen after resume (#13310)
PixPMusic Sep 26, 2026
2679d27
fix(server): let OpenCode generate session titles (#13368)
macodev00 Sep 26, 2026
def34c2
fix(server): let Antigravity inspect unsupported files by path (#13339)
Bil0000 Sep 26, 2026
fe6388f
fix(mobile): link URLs with ports and single-label hosts (#13795)
Yash-Singh1 Sep 26, 2026
daafcc4
feat(web): add keyboard navigation for usage (#10158)
tris203 Sep 26, 2026
99efaea
perf(observability): stop writing empty spans on spawns, projected ev…
t3dotgg Sep 26, 2026
8b873ea
perf(server): opening Diagnostics no longer loads the whole trace rin…
t3dotgg Sep 26, 2026
6f97b0f
perf(clients): sort projects and settled threads without re-parsing d…
t3dotgg Sep 26, 2026
294dd12
fix(observability): the renderer trace proxy stops tracing itself (#1…
t3dotgg Sep 26, 2026
1d6f23b
perf(server): background sweeps only read threads that can still sett…
t3dotgg Sep 26, 2026
9151ea4
perf(clients): saving the thread list cache no longer freezes the UI …
t3dotgg Sep 26, 2026
8872666
perf(server): cut idle wakeups from the Connect relay and session rea…
t3dotgg Sep 26, 2026
81e0491
fix(mobile): keep trailing underscores and tildes in autolinked URLs …
Yash-Singh1 Sep 26, 2026
295d7cb
fix(web): queued messages send while their thread is not open (#13764)
t3dotgg Sep 26, 2026
95030dc
fix(server): background git status fetches no longer fill the disk wi…
t3dotgg Sep 26, 2026
75d63d6
fix(mobile): thread list shows the pull request icon instead of # (#1…
flamboh Sep 26, 2026
393d595
fix(accessibility): correct control announcements and sidebar travers…
blinding-pixels Sep 26, 2026
10bb59b
fix(usage): tolerate newer provider variants (#10076)
tris203 Sep 26, 2026
d6802b4
fix(usage): omit Cursor warning when no login is saved (#13820)
tris203 Sep 26, 2026
3dae78f
fix(usage): identify client version mismatches (#8208)
tris203 Sep 26, 2026
dd582de
fix(web): stop mistaking offline servers for updates (#13083)
tris203 Sep 26, 2026
d110f98
test(usage): assert contract mismatch details (#13861)
Yash-Singh1 Sep 26, 2026
ea7d46a
fix(build): validate Linux node-pty prebuilds in Windows artifacts (#…
Yash-Singh1 Sep 26, 2026
679c34c
fix(clients): hide duplicate Cursor Keychain prompts (#13870)
Yash-Singh1 Sep 26, 2026
74ee515
feat(observability): honor OTEL_*_EXPORTER=none per signal (#13736)
yordis Sep 26, 2026
c9a0e8a
fix(web): align reasoning arrows with tool calls (#13850)
Adamulek123 Sep 26, 2026
cb97415
fix(server): let agents use simctl and adb alongside device tools (#1…
juliusmarminge Sep 27, 2026
ab09917
fix(web): environment status tooltip resizes when the status changes …
BearHuddleston Sep 27, 2026
a727d1d
test(relay): remove constant-restating database mode test (#13932)
t3-code[bot] Sep 27, 2026
de251fc
fix(web): continue onboarding after incomplete history imports (#13935)
t3-code[bot] Sep 27, 2026
94f92a7
fix(server): let Claude abort turns before closing sessions (#13999)
Yash-Singh1 Sep 27, 2026
d15210c
fix(web): prevent usage summary shift for unpriced records (#13991)
tris203 Sep 27, 2026
ed57bed
fix(web): skip unchanged shortcut modifier updates - 195x typing late…
callmemorgan Sep 28, 2026
ba79610
fix(web,mobile): say that removing a T3 Connect environment keeps its…
juliusmarminge Sep 28, 2026
72330e2
feat(models): add Claude Sonnet 5.5 (#14152)
arturict Sep 28, 2026
b528a70
fix(server): restore Windows terminal startup after node-pty upgrade …
SegFaultZero Sep 28, 2026
7733bc8
fix(desktop): make Linux URL handlers discoverable with the app icon …
limwa Sep 28, 2026
b21f3b7
fix(server): prevent Windows PTY helper crashes in watch mode (#14179)
UtkarshUsername Sep 28, 2026
38f3c62
fix(shared): local-path remotes no longer crash legacy PR link projec…
pujitha24 Sep 29, 2026
adfc924
fix(server): preserve usage in oversized transcript records (#13650)
shivamhwp Sep 29, 2026
e518866
fix(server): OpenCode stop no longer hangs when a turn is interrupted…
SunkenInTime Sep 29, 2026
5da5595
feat: save Bitbucket credentials from Source Control settings (#14103)
gabrielelpidio Sep 29, 2026
76fa23d
fix(provider): mark OpenCode v2 incompatible (#14198)
juliusmarminge Sep 29, 2026
d2c9281
fix(web): pull request badge sits on the sidebar row's baseline (#14007)
Jardo-51 Sep 29, 2026
27bdf1a
feat(codex): connect ChatGPT accounts with managed authentication (#1…
juliusmarminge Sep 29, 2026
5e83e99
Update currentModels in model-manifest.json
juliusmarminge Sep 29, 2026
2cbc24f
chore(release): prepare v0.0.43
t3-code[bot] Sep 29, 2026
451afcb
fix(codex): Pro Max accounts load, so Ultrafast shows up (#14304)
t3dotgg Sep 29, 2026
1a553d0
fix(shared): merge OpenCode Go limits by credential (#14209)
Yash-Singh1 Sep 29, 2026
4222485
feat(codex): regenerate protocol bindings for Codex 0.159 (#14311)
juliusmarminge Sep 29, 2026
ff1db03
chore(release): prepare v0.0.44
t3-code[bot] Sep 29, 2026
8792f95
test(server): stop pinning codex install advisory to a release range …
maria-rcks Sep 29, 2026
63b61e6
chore: stop CodeRabbit from editing PR descriptions (#14307)
t3dotgg Sep 30, 2026
60cb7d1
fix(web): unresolved pull request links use the compact link tooltip …
flamboh Sep 30, 2026
88fbc2c
fix(client-runtime): keep model ids in inline code from becoming file…
otavio Sep 30, 2026
916ec94
fix(web): show the agent's question on user-input timeline rows (#12900)
saphid Sep 30, 2026
55ec55b
fix(web): open workspace root links in the file explorer (#12449)
saphid Sep 30, 2026
050cfad
fix(grok): recover from crashed provider sessions (#10607)
saphid Sep 30, 2026
2a23c30
fix(web): let command menu descriptions use the full row width (#8865)
jakaskerjanc Sep 30, 2026
0fcd5f9
fix(web): multi-PR badges open the linked pull requests panel (#13211)
flamboh Sep 30, 2026
b7966b9
chore(turbo): ingest upstream main 0fcd5f906 (f25a8e4b7..0fcd5f906, 2…
Sep 30, 2026
9f45f53
fix(turbo): brand new upstream mobile environment-update and showcase…
Sep 30, 2026
e41341c
test(server): advance the negative-TTL retry test by the fork's expor…
Sep 30, 2026
452a70b
fix(server): bundle an OpenRouter compatibility policy
Sep 30, 2026
d4834ba
test(desktop): expect the T3 Turbo Linux desktop icon path
Sep 30, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
reviews:
high_level_summary: false
review_status: false
auto_review:
enabled: true
Expand Down
1 change: 1 addition & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ github:realAhmedRoach
github:Rishet11
github:ryanrhughes
github:saphid
github:scratchyone
github:sethwebster
github:shiroyasha9
github:shivamhwp
Expand Down
5 changes: 3 additions & 2 deletions .github/triage/PLAYBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,9 @@ different code depending on it:

Then work from evidence, not assumption. In rough order of value:

- The server log and the trace file (`server.trace.ndjson`) around the time of the
problem. Recent failures usually leave a trail here.
- The trace file (`server.trace.ndjson`) around the time of the problem, plus the
service log or desktop backend logs from the context file if they exist. Recent
failures usually leave a trail here.
- The provider event log, for problems with claude/codex/cursor sessions.
- The SQLite database. Read it freely, but only write when a write is necessary
to fix the problem the user described, and get their explicit permission
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,6 @@ jobs:
- name: Check
run: vp check

- name: Check className overrides on components/ui do not grow
run: vp run lint:restyle-ceiling

- name: Typecheck
run: vpr typecheck

Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/deploy-relay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,15 @@ on:
paths:
- "infra/relay/**"
- ".github/workflows/deploy-relay.yml"
# Alchemy does not redeploy the Worker when only a Config value read in its
# Init changes (alchemy-run/alchemy#1831), so a changed repository variable
# needs a forced deploy to reach production.
workflow_dispatch:
inputs:
force:
description: Redeploy every resource, including ones with no detected changes
type: boolean
default: true
skip_external_migrations:
description: >-
Skip the external Postgres migrations step. Use only when the runner cannot reach the
Expand All @@ -34,6 +41,8 @@ concurrency:
jobs:
deploy_relay:
name: Deploy production relay
# A manual run from another branch would deploy that branch to production.
if: github.ref == 'refs/heads/turbo'
runs-on: ubuntu-24.04
timeout-minutes: 15
environment:
Expand All @@ -51,6 +60,7 @@ jobs:
RELAY_DOMAIN: ${{ vars.RELAY_DOMAIN }}
RELAY_API_ZONE_NAME: ${{ vars.RELAY_API_ZONE_NAME }}
RELAY_TUNNEL_ZONE_NAME: ${{ vars.RELAY_TUNNEL_ZONE_NAME }}
RELAY_TUNNEL_CLEANUP_MODE: ${{ vars.RELAY_TUNNEL_CLEANUP_MODE }}
CLERK_PUBLISHABLE_KEY: ${{ vars.CLERK_PUBLISHABLE_KEY }}
CLERK_JWT_AUDIENCE: ${{ vars.CLERK_JWT_AUDIENCE }}
# Optional Android push; without FCM_SERVICE_ACCOUNT the FCM resources stay off.
Expand Down Expand Up @@ -121,7 +131,7 @@ jobs:

- name: Deploy production relay stage
if: steps.cloudflare_config.outputs.enabled == 'true'
run: vp run --filter t3code-relay deploy --stage prod --yes --no-input
run: vp run --filter t3code-relay deploy --stage prod --yes --no-input ${{ inputs.force && '--force' || '' }}
env:
# The PublishClientConfig action writes the client env here instead
# of the repo-root .env; nothing on the runner reads it.
Expand Down
14 changes: 13 additions & 1 deletion .github/workflows/mobile-eas-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,19 @@ jobs:
working-directory: apps/mobile
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
run: eas env:pull preview --non-interactive
run: |
eas env:pull preview --non-interactive
# EAS Update disables dotenv loading. Keep the downloaded native config
# in its process environment so Android build and OTA fingerprints match.
node --input-type=module <<'NODE'
import { appendFileSync, readFileSync } from "node:fs";
import { parseEnv } from "node:util";
const env = parseEnv(readFileSync(".env.local", "utf8"));
const googleServicesFile = env.T3CODE_ANDROID_GOOGLE_SERVICES_FILE;
if (googleServicesFile) {
appendFileSync(process.env.GITHUB_ENV, `T3CODE_ANDROID_GOOGLE_SERVICES_FILE=${googleServicesFile}\n`);
}
NODE

- name: Deploy with fingerprint check
if: steps.expo-token.outputs.present == 'true'
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/mobile-showcase-screenshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,17 @@ jobs:
echo "$vp_pnpm_bin" >> "$GITHUB_PATH"
"$vp_pnpm_bin/pnpm" --version

- name: Install AXe
# Locks the simulator and answers the notification prompt for the
# agent-activity scene.
# Homebrew refuses third-party tap formulae until they are trusted;
# older releases have no trust command and install them as is.
run: |
brew tap cameroncooke/axe
if brew commands | grep -qx trust; then brew trust --formula cameroncooke/axe/axe; fi
brew install cameroncooke/axe/axe
axe --version

- name: Capture iOS showcase
run: pnpm screenshots:mobile --platform ios --appearance "${{ inputs.appearance }}" --theme "${{ inputs.theme }}"

Expand Down
1 change: 1 addition & 0 deletions .github/workflows/release-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,7 @@ jobs:
"release/*.dmg"
"release/*.zip"
"release/*.AppImage"
"release/*.deb"
"release/*.exe"
)
# Preview builds have no publish config, so electron-builder writes
Expand Down
70 changes: 67 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -317,13 +317,76 @@ jobs:
- name: Typecheck
run: vp run typecheck

# Keep tests on their own runners, using the same package split and server
# shards as CI, so the release check job does not spend its budget on tests.
test:
name: Release tests
needs: [preflight]
if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }}
runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

- name: Ensure Electron runtime is installed
run: vp run --filter @t3tools/desktop ensure:electron

- uses: ./.github/actions/setup-apt-mirrors

- name: Install browser secret helper build libraries
run: sudo apt-get update && sudo apt-get install -y libsecret-1-dev pkg-config
run: |
sudo sed -i 's|http://|https://|g' /etc/apt/blacksmith-ubuntu-mirrors.txt /etc/apt/sources.list.d/ubuntu.sources
sudo apt-get update && sudo apt-get install -y libsecret-1-dev pkg-config build-essential

- name: Test
run: vp run --parallel --concurrency-limit 4 --filter '!t3' --filter '!@t3tools/monorepo' test

test_server:
name: Release server tests ${{ matrix.shard }}
needs: [preflight]
if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' }}
runs-on: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3]
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

# No Electron setup here: `t3` (apps/server) has no Electron dependency
# and none of its tests touch the runtime. Only the non-server `test`
# job, which covers @t3tools/desktop, needs the download.
- name: Test
run: vp run test
run: vp run --filter t3 test --shard ${{ matrix.shard }}/${{ strategy.job-total }}

relay_public_config:
name: Resolve T3 Connect public config
Expand Down Expand Up @@ -675,7 +738,7 @@ jobs:
# No relay stack, no tracing artifact to download.
relay_client_tracing: ${{ needs.preflight.outputs.connect_enabled == 'true' }}
label: Linux arm64
runner: ubuntu-24.04-arm
runner: ${{ github.repository == 'pingdotgg/t3code' && 'blacksmith-16vcpu-ubuntu-2404-arm' || 'ubuntu-24.04-arm' }}
platform: linux
target: AppImage
arch: arm64
Expand Down Expand Up @@ -881,6 +944,7 @@ jobs:
echo 'release-assets/*.dmg'
echo 'release-assets/*.zip'
echo 'release-assets/*.AppImage'
echo 'release-assets/*.deb'
echo 'release-assets/*.exe'
if [[ "${{ needs.preflight.outputs.release_channel }}" != "preview" ]]; then
echo 'release-assets/*.blockmap'
Expand Down
4 changes: 2 additions & 2 deletions .macroscope/check-run-agents/effect-service-conventions.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Effect Service Conventions
model: gpt-5-6-sol
effort: medium
model: gpt-6-sol
effort: max
input: incremental
tools:
- browse_code
Expand Down
4 changes: 2 additions & 2 deletions .macroscope/check-run-agents/ui-consistency.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: UI Consistency
model: gpt-5-6-sol
effort: medium
model: gpt-6-sol
effort: max
input: incremental
tools:
- browse_code
Expand Down
19 changes: 4 additions & 15 deletions .t3-turbo/customizations.json
Original file line number Diff line number Diff line change
Expand Up @@ -1175,6 +1175,10 @@
{
"path": "apps/web/src/components/chat/providerIconUtils.ts",
"markers": ["[ProviderDriverKind.make(\"openrouter\")]: OpenRouterIcon,"]
},
{
"path": "apps/server/src/provider/model-manifest.json",
"markers": ["\"driver\": \"openrouter\""]
}
]
},
Expand Down Expand Up @@ -1206,21 +1210,6 @@
}
]
},
{
"id": "restyle-ceiling-fork-delta",
"status": "implemented",
"summary": "Upstream's shadcn no-restyle ceiling counts upstream code only; the fork's own UI adds a fixed number of className overrides, expressed as UPSTREAM_RESTYLE_CEILING + TURBO_RESTYLE_OVERRIDES so upstream changes to the ceiling merge cleanly.",
"checks": [
{
"path": "scripts/lint-restyle-ceiling.ts",
"markers": [
"export const UPSTREAM_RESTYLE_CEILING = ",
"export const TURBO_RESTYLE_OVERRIDES = 6;",
"export const RESTYLE_CEILING = UPSTREAM_RESTYLE_CEILING + TURBO_RESTYLE_OVERRIDES;"
]
}
]
},
{
"id": "release-from-turbo-branch",
"status": "policy",
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ Full glossary with file links: `docs/internals/glossary.md`
## Taste

- Complexity belongs at the adapter boundary. Orchestration stays pure, UI stays dumb.
- `apps/web/src/components/ui` exports own their look. Pick a `variant` or `size`; do not restyle one with `className`. If none fits, add a variant to the component, not classes at the call site. Layout classes (width, flex, margin, position) belong on the parent. `shadcn/no-restyle` reports violations and CI caps their count.
- `apps/web/src/components/ui` exports own their look. Pick a `variant` or `size`; do not restyle one with `className`. If none fits and the look is a generic concept, add a variant to the component; a look that belongs to one feature stays in that feature's own component, not in `components/ui`. Layout classes (width, flex, margin, position) belong on the parent. `shadcn/no-restyle` fails lint on violations.
- Inferred types over annotations. `any` is the enemy.
- Comments describe how a thing is used, and move when the code moves. To be used mostly to describe functions, not to annotate every line of behavior.
- Our users drive agents all day and notice a dropped frame, a lying spinner, and a stale label. No continuously repainting animations; they peg the GPU on high-refresh displays.
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ winget install T3Tools.T3Code
brew install --cask t3-code
```

#### Debian, Ubuntu (`.deb`)

Download the `.deb` from [GitHub Releases](https://github.com/pingdotgg/t3code/releases), then:

```bash
sudo apt install ./T3-Code-*.deb
Comment on lines +83 to +86
```

#### Arch Linux (AUR)

Stable:
Expand Down
15 changes: 10 additions & 5 deletions SEAM.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ fork's change.
groups.
- **Optional** `infra/relay/alchemy.run.ts` — provider layers and tracing outputs exist only when
configured.
- **Tuned** `scripts/lint-restyle-ceiling.ts` — `RESTYLE_CEILING = UPSTREAM_RESTYLE_CEILING +
TURBO_RESTYLE_OVERRIDES` (6 fork className overrides on components/ui exports). On conflict,
take upstream's new number into `UPSTREAM_RESTYLE_CEILING` and keep the sum.
- **Retired 2026-09-29** `scripts/lint-restyle-ceiling.ts` (seam `restyle-ceiling-fork-delta`) —
upstream #13210 deleted the ceiling gate and made `shadcn/no-restyle` a lint error in
`vite.config.ts`. There is no ceiling left to tune; fork UI must use variants/sizes like upstream
code. On conflict, do not resurrect the script.
- **Additive** `infra/relay/scripts/apply-external-migrations.ts` (+ test) — applies
`infra/relay/migrations/postgres` to the self-hosted Supabase Postgres from `deploy-relay.yml`
before `alchemy deploy`, one transaction per folder, ledger table `relay_external_migrations`,
Expand Down Expand Up @@ -367,6 +368,9 @@ Built to survive orchestrator v2 (pingdotgg/t3code#2829):
`components/chat/providerIconUtils.ts`, `components/settings/providerDriverMeta.ts`,
`session-logic.ts` (picker option), `composerDraftStore.ts` (provider option keys), and
`lib/contextWindow.ts` (display name).
- **Additive** `apps/server/src/provider/model-manifest.json` — an `openrouter` bundled
compatibility policy mirroring `claudeAgent` (the driver probes the same `claude` binary), so
every built-in harness has a bundled policy.
- **Additive, V1-shim (retires at v2 cutover)** `Drivers/OpenRouterDriver.ts` — the
`ProviderDriver` registration. v2's `ClaudeAdapterV2` already imports the same
`makeClaudeEnvironment`/`mergeProviderInstanceEnvironment` plumbing and accepts per-instance
Expand All @@ -376,7 +380,8 @@ Built to survive orchestrator v2 (pingdotgg/t3code#2829):
driver identity on events and sessions, keeping the churn-heavy file merge-clean.

On a nightly-sync conflict: everything here is additive except `builtInDrivers.ts`,
`settings.ts`/`model.ts` map entries, and the six web wiring files above — re-add the fork lines
`settings.ts`/`model.ts` map entries, the `model-manifest.json` policy entry, and the six web
wiring files above — re-add the fork lines
after upstream's. If upstream ships its own OpenRouter or the ACP registry (#6071) covers it,
prefer upstream and retire the shim first.

Expand Down Expand Up @@ -536,7 +541,7 @@ settles "do nothing".
Two fork-owned constants, no product behavior change:

- **`packages/client-runtime/src/state/shellSnapshotHttp.ts`** - `DEFAULT_SHELL_SNAPSHOT_TIMEOUT_MS`
is 30s (upstream: 6s) and exported. The cached shell still renders while the request runs.
is 30s (upstream: 6s, raised to 20s and made private in the 2026-09-30 ingest) and exported. The cached shell still renders while the request runs.
- **`apps/server/src/project/RepositoryIdentityResolver.ts`** - `DEFAULT_POSITIVE_CACHE_TTL` is 12h
and `DEFAULT_NEGATIVE_CACHE_TTL` is 10min (upstream: 1min each), both exported. A repository's
remote does not change minute to minute, the identity is cosmetic (PR links, icons), and a
Expand Down
4 changes: 2 additions & 2 deletions apps/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"name": "@t3tools/desktop",
"version": "0.0.53",
"version": "0.0.54",
"private": true,
"type": "module",
"main": "dist-electron/main.cjs",
"main": "dist-electron/boot.cjs",
"scripts": {
"ensure:electron": "node scripts/ensure-electron-runtime.mjs",
"start": "node scripts/start-electron.mjs",
Expand Down
Loading
Loading