Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1297 commits
Select commit Hold shift + click to select a range
cfddb42
fix(mobile): skip unsupported shared settings targets (#9381)
Lucenx9 Sep 3, 2026
2120fbc
fix(web): avoid duplicate Antigravity install status (#9419)
RakshithBhat03 Sep 3, 2026
d4ba2a1
fix(composer): mute fast icon when collapsed (#9451)
maria-rcks Sep 3, 2026
21b9dda
fix(web): unify skeleton loading animations on one pulse (#9448)
maria-rcks Sep 3, 2026
645d585
fix(web): prioritize authored pull requests (#9453)
maria-rcks Sep 3, 2026
4e89d74
fix(web): make project icons the default (#9457)
maria-rcks Sep 3, 2026
c78f05a
fix(server): reuse pr state when settling threads (#9459)
maria-rcks Sep 3, 2026
8bd544c
fix(web): keep agent images collapsed (#9460)
maria-rcks Sep 3, 2026
126afb5
fix(web): banner buttons no longer expand the resting composer (#9452)
juliusmarminge Sep 3, 2026
d5825e1
fix(web): stop clipping the traits chevron on long Codex effort label…
zortos293 Sep 3, 2026
46e8b1a
fix(web): make right panel tabs easier to scroll (#9461)
maria-rcks Sep 3, 2026
db8d60f
fix(web): render transparent previews on white (#9463)
UtkarshUsername Sep 3, 2026
de025aa
fix(mobile): show loading and syncing in the working pill (#9466)
juliusmarminge Sep 3, 2026
36c4e9c
fix(server): keep a/ and b/ prefixes in rendered git patches (#9438)
Mnigos Sep 3, 2026
d2b6f3b
fix(server): full-access OpenCode threads no longer ask for approvals…
shivamhwp Sep 3, 2026
493fbb5
fix(web): reuse pull request list data while loading (#9467)
maria-rcks Sep 3, 2026
0372836
feat(web): let users turn off composer collapse on blur and scroll (#…
juliusmarminge Sep 3, 2026
373be93
fix(web): move workflow approval beside checks (#9465)
maria-rcks Sep 3, 2026
4b8b5d9
fix(desktop): refresh generated annotation styles (#9488)
juliusmarminge Sep 3, 2026
0869ad6
fix(web): let the PR reviewer and label search boxes take keystrokes …
juliusmarminge Sep 3, 2026
77138cf
fix(web): dont collapse composer when interacting with bottom row (#9…
extoci Sep 3, 2026
678f23a
fix(desktop): restore second-press quit fallback (#9485)
maria-rcks Sep 3, 2026
c726c30
fix(web): keep opencode icon hollow in collapsed composer (#9492)
maria-rcks Sep 3, 2026
12e8997
fix(web): keep agent browser preview visible (#9484)
maria-rcks Sep 3, 2026
409bc4f
fix(mobile): keep the machine glyph next to the environment label (#9…
juliusmarminge Sep 3, 2026
80b5373
fix(mobile): let back swipe pop from horizontal scroll edges (#9493)
juliusmarminge Sep 3, 2026
0aae1e2
fix(antigravity): discover legacy workspace skills (#9410)
Lucenx9 Sep 3, 2026
ef4cc60
fix(mobile): resolve Antigravity provider icon and normalize driver m…
Invictine Sep 3, 2026
e01c153
fix(antigravity): forward Google sign-in URLs from browser helper (#9…
WellyngtonF Sep 3, 2026
39449e5
feat(desktop): import browser cookies into a profile (#7255)
juliusmarminge Sep 3, 2026
ff58434
feat(desktop): import from Chrome, Edge, Brave, Vivaldi, Opera, Arc a…
juliusmarminge Sep 3, 2026
498ab9c
feat(desktop): resolve Chromium cookie keys on Linux (#7261)
juliusmarminge Sep 3, 2026
f25e442
fix(antigravity): allow slow runtime startup during setup (#9510)
t3dotgg Sep 3, 2026
baf67b6
fix(antigravity): keep model choices up to date (#9511)
t3dotgg Sep 3, 2026
eb334ca
fix(antigravity): handle native sign-in URLs on stderr (#9514)
t3dotgg Sep 3, 2026
8ea52c8
fix(antigravity): update managed runtime to 1.1.1 (#9509)
t3dotgg Sep 3, 2026
3653cb2
fix(desktop): address the browser import review left over from the st…
juliusmarminge Sep 3, 2026
f8a14b2
feat(antigravity): show subagent calls and results (#9515)
t3dotgg Sep 4, 2026
6382268
fix(web): let paste expand a resting composer (#9498)
juliusmarminge Sep 4, 2026
522ebe6
fix(web): keep the composer open while selecting timeline text (#9499)
juliusmarminge Sep 4, 2026
c0ebc88
fix(web): return focus to the composer after closing a media preview …
juliusmarminge Sep 4, 2026
9c9ae3d
fix(server): keep events during thread subscription startup (#9521)
t3dotgg Sep 4, 2026
44701ef
chore: forward issue/PR/discussion events to Cursor hygiene (#9518)
juliusmarminge Sep 4, 2026
9d28c21
fix(auth): keep pairing credentials out of access read models (#9523)
t3dotgg Sep 4, 2026
e3723e0
chore: drop comment events from Cursor hygiene forwarder (#9527)
juliusmarminge Sep 4, 2026
d76b24d
feat(codex): support async questions (#9512)
t3dotgg Sep 4, 2026
0a0b6be
fix(web): keep right panel controls clickable (#9517)
maria-rcks Sep 4, 2026
19d8ab2
feat(usage): show Codex and Claude subscription limits on a Limits ta…
juliusmarminge Sep 4, 2026
343db2c
feat(web): reorganize settings pages (#9354)
maria-rcks Sep 4, 2026
2b96220
fix(server): settle branch threads immediately on pull request merge …
maria-rcks Sep 4, 2026
b908980
fix(server): back off relay client restarts after rapid exits (#8788)
derektrimm Sep 4, 2026
75ab5ab
fix(codex): accept rate limit errors on thread resume (#8897)
nateEc Sep 4, 2026
6319a97
fix(desktop): preview CDP sessions no longer hard-crash the app (#9068)
sethwebster Sep 4, 2026
f54ab90
Fix worktree removal timing out on large install trees (#3902)
jakeleventhal Sep 4, 2026
0ba06a1
fix(web): settle the resting composer layout with a pixel of slack (#…
matheustimbo Sep 4, 2026
07c4ab5
fix(web): keep automatic project icons consistent (#9535)
t3dotgg Sep 4, 2026
dddc0bd
fix(server): include SQLite conditions in persistence errors
t3dotgg Sep 4, 2026
6f40537
fix(dev): keep shared dev reloads and hot updates working (#9543)
t3dotgg Sep 4, 2026
c5ba51d
feat(providers): add context compaction command (#9293)
maria-rcks Sep 4, 2026
5989de4
fix(mobile): keep store screenshots free of system banners and show d…
juliusmarminge Sep 4, 2026
54aef6f
fix(web): restore composer controls as space becomes available (#9539)
juliusmarminge Sep 4, 2026
3c3e05c
fix(web): measure collapsed model labels at their visible width (#9540)
juliusmarminge Sep 4, 2026
f239b77
fix(web): close composer menus when their controls hide (#9541)
juliusmarminge Sep 4, 2026
3e2c1a6
fix(web): thread error banner no longer shifts the chat (#9473)
flamboh Sep 4, 2026
617edab
fix(server): reveal normalized paths in File Explorer (#9551)
juliusmarminge Sep 4, 2026
232de5e
feat(marketing): fresh screenshot and floating marks on the homepage …
t3dotgg Sep 4, 2026
1641b4a
feat(usage): redeem Codex reset credits from the Limits tab (#9534)
juliusmarminge Sep 4, 2026
4e54731
fix(server): find newly opened pull requests after agent turns (#9125)
t3dotgg Sep 4, 2026
f96a220
ci: add on-demand Windows test workflow (#9538)
juliusmarminge Sep 4, 2026
710f6dc
fix(web): simplify expanded tool details (#9549)
maria-rcks Sep 4, 2026
9e1bc36
fix(web): keep the last message visible when the resting composer exp…
t3dotgg Sep 4, 2026
fee2e0f
test(web): fix flaky startup and Tailwind tests (#9558)
t3dotgg Sep 4, 2026
65f1839
fix(web): keep codex restart responses continuous (#9560)
maria-rcks Sep 4, 2026
d7884ce
fix(web): make settings sidebar sub-section buttons full width (#9562)
juliusmarminge Sep 4, 2026
2b10398
fix(web): render settings sidebar immediately (#9563)
maria-rcks Sep 4, 2026
95390ed
chore: vouch august contributors (#9557)
maria-rcks Sep 4, 2026
42bdea1
fix(web): stabilize right panel transitions (#9554)
maria-rcks Sep 4, 2026
0cb02ab
fix: better shell syntax handling for labels (#9371)
Yash-Singh1 Sep 4, 2026
bf40fa7
fix(web): align the sidebar wordmark by baseline (#9578)
maria-rcks Sep 4, 2026
2675e3c
fix(antigravity): keep subagent batches active after launch (#9579)
t3dotgg Sep 4, 2026
09b81a3
fix(mobile): render workspace images in markdown file previews (#8769)
SunkenInTime Sep 4, 2026
b34ff8f
fix(usage): deduplicate CLI proxy subscription accounts (#9584)
juliusmarminge Sep 4, 2026
07891e9
fix(web): bound disconnected send toasts (#9592)
maria-rcks Sep 4, 2026
5783280
fix(desktop): restore panel titlebar interactions (#9591)
maria-rcks Sep 4, 2026
39abb9d
fix(connect): refresh authorization without disconnecting (#9582)
maria-rcks Sep 4, 2026
f559fe0
fix(web): show context meter in compact composer (#9430)
GuilhermeVieiraDev Sep 4, 2026
5cc369b
fix(pull-requests): refresh data after thread turns (#9496)
maria-rcks Sep 4, 2026
caab2fd
fix(web): render draft PRs in gray (#9537)
extoci Sep 4, 2026
f1e90e3
refactor(web): move usage provider controls to settings (#9599)
juliusmarminge Sep 4, 2026
00f8b7c
fix: show idle subagent batches without completion marks (#9616)
t3dotgg Sep 4, 2026
61a91b6
fix(web): group image views like other tool calls (#9597)
juliusmarminge Sep 4, 2026
c3b8825
fix: preserve tool icons on failed calls (#9606)
juliusmarminge Sep 4, 2026
99e3b72
fix(connect): diagnose incomplete headless server setup (#9602)
juliusmarminge Sep 4, 2026
4cc800c
fix(web): keep command palette above composer menus (#9613)
Gigioxx Sep 4, 2026
93c3ab4
fix(web): snooze menu no longer overlaps thread details (#9601)
RakshithBhat03 Sep 4, 2026
7062315
fix(web): match composer pull request state icons (#9375)
flamboh Sep 4, 2026
2152d44
fix(server): load OpenCode workspace skills via SDK to avoid 64KB CLI…
BarryHenryJr Sep 4, 2026
ec3ec6f
fix(web): mute sidebar branch name to match worktree icon (#9622)
maria-rcks Sep 4, 2026
5f878d2
fix(web,mobile): fold context compaction under settled turn folds (#9…
maria-rcks Sep 4, 2026
09d13de
feat(mobile): make chat text selectable on Android (#8779)
SunkenInTime Sep 4, 2026
14bf3f6
fix(web): toggle a single stashed prompt with Cmd+S (#9644)
t3dotgg Sep 4, 2026
eb77683
fix(server): prevent duplicate desktop clients after restart
seeb1337 Sep 4, 2026
d487dfb
fix(web): resume Antigravity threads without repeated sign-in (#9647)
t3dotgg Sep 4, 2026
d5b9410
feat(mobile): paste the phone clipboard into the terminal (#9199)
lnieuwenhuis Sep 4, 2026
f034732
feat(web): show which sidebar threads hold an unsent draft (#9658)
t3dotgg Sep 4, 2026
01f3e50
fix(server): unblock OpenCode approvals and stop (#9653)
t3dotgg Sep 4, 2026
caa8a0d
fix(desktop): quit immediately on a second shortcut press (#9657)
t3dotgg Sep 4, 2026
560afff
fix(server): update Claude Agent SDK to 0.3.260 (#9135)
t3dotgg Sep 4, 2026
8ac5462
perf(server): stop loading message bodies for thread summaries (#9662)
t3dotgg Sep 4, 2026
cccd7e3
perf(web): speed up terminal snapshots (#9663)
t3dotgg Sep 4, 2026
082cab2
fix(web): show machine icons in the environment picker (#9668)
t3dotgg Sep 4, 2026
3b6be3e
perf(mobile): bound diff syntax highlighting work (#9673)
t3dotgg Sep 4, 2026
887ece3
perf(web): keep Markdown mounted during streaming (#9677)
t3dotgg Sep 4, 2026
7cf5b28
perf(mobile): skip unused legacy list work (#9679)
t3dotgg Sep 4, 2026
8e3aa32
perf(marketing): serve images at their display size (#9682)
t3dotgg Sep 4, 2026
27e6cc2
perf(server): cache and stream static web assets (#9669)
t3dotgg Sep 4, 2026
2263e13
perf(server): batch projector cursor writes (#9671)
t3dotgg Sep 4, 2026
f2e3764
perf(server): stop retaining unused OpenCode tool history (#9684)
t3dotgg Sep 4, 2026
44dc8ae
perf(mobile): reuse chat feed rows during streaming (#9688)
t3dotgg Sep 4, 2026
ec8b211
perf(server): omit repeated OpenCode progress logs (#9689)
t3dotgg Sep 4, 2026
2460649
perf(clients): avoid waiting to read cached relay tokens (#9691)
t3dotgg Sep 4, 2026
777f5bb
perf(mobile): reuse diff rows during comment edits (#9693)
t3dotgg Sep 4, 2026
dab5f6e
perf(web): defer composer draft serialization (#9695)
t3dotgg Sep 4, 2026
1587f24
feat(server): measure provider turn token usage (#9132)
t3dotgg Sep 4, 2026
4ee2a9d
perf(marketing): stop continuous homepage motion (#9697)
t3dotgg Sep 4, 2026
c163d50
perf(server): avoid full patches for checkpoint summaries (#9694)
t3dotgg Sep 4, 2026
b3e1d88
perf(web): defer diff workers until a code view opens (#9692)
t3dotgg Sep 4, 2026
010d6bb
perf(marketing): serve website fonts locally (#9701)
t3dotgg Sep 4, 2026
3bbbc1d
perf(server): stop rebuilding terminal history per chunk (#9703)
t3dotgg Sep 4, 2026
dffb4cd
perf(server): use one query for buffered provider events (#9706)
t3dotgg Sep 4, 2026
c75299e
perf(relay): avoid repeated activity decoding (#9708)
t3dotgg Sep 4, 2026
c7c1dfe
perf(web): stop continuous chat status animations (#9709)
t3dotgg Sep 4, 2026
7839140
fix(mobile): preserve saved work after storage read failures (#9710)
t3dotgg Sep 4, 2026
da7e46d
perf(web): stop replaying terminal buffers on rollover (#9707)
t3dotgg Sep 4, 2026
9510390
feat(web): preview pull request links (#9631)
maria-rcks Sep 4, 2026
c66f15f
perf(client): reduce thread-list update work (#9716)
t3dotgg Sep 4, 2026
d536b05
fix(server): settle inactive threads with open PRs (#9610)
Gigioxx Sep 4, 2026
108f295
fix(server): bound slow-client event buffers (#9715)
t3dotgg Sep 4, 2026
8ccb933
test(server): allow either valid file-search match (#9720)
t3dotgg Sep 4, 2026
8357eef
fix(web): match provider settings layout for disconnected devices (#9…
flamboh Sep 4, 2026
120fab1
fix(web): keep the slash menu above the composer when vertical space …
Mnigos Sep 4, 2026
9eb4d71
fix(mobile): remove provider setup (#9721)
juliusmarminge Sep 4, 2026
5eab021
perf(web): stop rendering hidden terminals (#9718)
t3dotgg Sep 4, 2026
c4353bc
fix(mobile): read file-backed image drafts before enabling them (#9713)
t3dotgg Sep 4, 2026
50bfca4
perf(server): replay only the selected thread (#9726)
t3dotgg Sep 4, 2026
7d5dc66
fix(web): mute composer helper text (#9654)
jakeleventhal Sep 4, 2026
c7bf311
feat(web): unpin threads from the sidebar multi-select menu (#9651)
gsimone Sep 4, 2026
19c1710
perf(web): reuse timeline rows while text streams (#9725)
t3dotgg Sep 4, 2026
088cc3f
fix(relay): bound stalled push requests (#9734)
t3dotgg Sep 4, 2026
c8f77e0
perf(server): stop caching unused OpenCode tool parts (#9738)
t3dotgg Sep 4, 2026
cfc9bf3
fix(web): fold single trailing activity (#9739)
maria-rcks Sep 4, 2026
cbe93e8
fix(web): show project settings for new threads (#9743)
maria-rcks Sep 4, 2026
d6e29dc
perf(mobile): bound the parsed review cache (#9749)
t3dotgg Sep 4, 2026
fec606f
perf(web): avoid repeated terminal metadata scans (#9747)
t3dotgg Sep 4, 2026
cf9729d
perf(server): bound terminal history by bytes (#9748)
t3dotgg Sep 4, 2026
a76b898
feat(web): link pull request authors to profiles (#9627)
maria-rcks Sep 4, 2026
0de956e
fix(web): refine server update notice (#9744)
maria-rcks Sep 4, 2026
d7cf8aa
perf(client): stop thread streams when unused (#9740)
t3dotgg Sep 4, 2026
77b655c
perf(mobile): defer file preview highlighter startup (#9752)
t3dotgg Sep 4, 2026
6365919
perf(server): skip history reads for metadata commands (#9758)
t3dotgg Sep 4, 2026
15eda89
perf(web): defer image URL requests for thread history (#9760)
t3dotgg Sep 4, 2026
bc03c36
fix(models): make GPT-6-Astra current (#9762)
juliusmarminge Sep 4, 2026
d115a96
fix(web): stop empty diffs replacing pull requests (#9753)
maria-rcks Sep 4, 2026
45bd3b6
fix(sidebar): mute background working threads (#9759)
maria-rcks Sep 4, 2026
f6db420
fix(web): reset automatic pull to default (#9763)
maria-rcks Sep 4, 2026
13427ec
fix(web): restore file comment focus in editable preview (#9061)
ShpetimA Sep 4, 2026
2e688a5
docs: keep internal guides focused on architecture (#9755)
juliusmarminge Sep 4, 2026
9e1fb45
docs: focus user guides on features and workflows (#9756)
juliusmarminge Sep 4, 2026
cd71367
fix(web): stop panel motion during navigation (#9766)
juliusmarminge Sep 4, 2026
8e056a0
fix(web): open composer selectors below controls (#9767)
maria-rcks Sep 4, 2026
163d86a
perf(server): skip unused Linux process detail reads (#9768)
t3dotgg Sep 4, 2026
bfef973
fix(server): remove retired Codex models after refresh (#9773)
juliusmarminge Sep 4, 2026
cc60753
test: stop path and platform tests depending on the host OS (#9564)
juliusmarminge Sep 4, 2026
4701041
test(server): skip posix executable fixtures on a Windows host (#9565)
juliusmarminge Sep 4, 2026
30f128f
test: skip symlink fixtures where the host cannot create symlinks (#9…
juliusmarminge Sep 4, 2026
5c6c1d6
test(server): run fake provider CLIs through a Node stub on every hos…
juliusmarminge Sep 4, 2026
c251e41
test(desktop): make path fixtures and timeouts host-portable (#9568)
juliusmarminge Sep 4, 2026
f083f52
fix(server): tolerate the missing directory fsync on Windows (#9569)
juliusmarminge Sep 4, 2026
12b6d02
test(server): pin git config for fixtures and compare native realpath…
juliusmarminge Sep 4, 2026
1108be0
test: skip POSIX mode-bit assertions on a Windows host (#9571)
juliusmarminge Sep 4, 2026
9af5139
test(server): keep provider fixture directories host-portable (#9572)
juliusmarminge Sep 4, 2026
9fa54ee
test: resolve the Windows temp directory to its long name (#9573)
juliusmarminge Sep 4, 2026
912276b
test(server): run the Antigravity install harness for the host platfo…
juliusmarminge Sep 4, 2026
5f4c716
fix(server): canonicalise media paths the same way their callers do (…
juliusmarminge Sep 4, 2026
b123cbb
test(server): make Windows path and async fixtures deterministic (#9576)
juliusmarminge Sep 4, 2026
781f41e
fix(server): refuse symlinked theme files on Windows too (#9580)
juliusmarminge Sep 4, 2026
0a590fa
test(scripts): keep Windows packaging checks host-portable (#9589)
juliusmarminge Sep 4, 2026
b7d6e65
fix(contracts): include tool.denied in runtime event types (#9770)
Lucenx9 Sep 4, 2026
24aef0e
feat(mobile): split the usage page into Usage and Limits tabs (#9775)
juliusmarminge Sep 4, 2026
935917f
fix(web): restore the running tool label shine (#9777)
maria-rcks Sep 4, 2026
7649465
fix(web): align provider controls with machine tabs (#9769)
maria-rcks Sep 4, 2026
5e1c23d
docs(web): document panel motion during navigation (#9778)
maria-rcks Sep 4, 2026
394e847
feat(usage): support custom model prices (#9774)
juliusmarminge Sep 4, 2026
91c66ac
fix(web): center pull request link previews (#9794)
maria-rcks Sep 4, 2026
98a29cb
fix: address usage limits and merge settlement regressions (#9784)
maria-rcks Sep 4, 2026
389bbcc
fix(web): give toggle thumbs consistent inset spacing (#9805)
maria-rcks Sep 4, 2026
5a2f3eb
fix(web): use segmented controls for mode switches (#9781)
maria-rcks Sep 4, 2026
b906ce2
fix(server): recover opted-in threads after machine restarts (#9803)
maria-rcks Sep 4, 2026
dd7bc14
fix(web): simplify changed files into a persistent folder tree (#9821)
maria-rcks Sep 4, 2026
5a43324
feat: add custom model names and option descriptors (#9807)
juliusmarminge Sep 4, 2026
087cfb8
fix(cursor): discover symlinked skills as package boundaries (#9420)
EzraBuild Sep 4, 2026
f33fdc9
fix(ssh): exec managed servers without npm wrappers (#9843)
juliusmarminge Sep 4, 2026
0dd5c64
fix(server): detect nested Git workspaces for checkpoints (#9842)
juliusmarminge Sep 4, 2026
4f1092c
fix(web): keep worktree origin preference visible (#9846)
juliusmarminge Sep 5, 2026
2e61301
fix(web): smooth settings sidebar transitions (#9811)
juliusmarminge Sep 5, 2026
4d3907f
feat(web): highlight visible settings sections (#9812)
juliusmarminge Sep 5, 2026
1963ca0
fix(web): keep the sidebar project filter across navigation (#9416)
Mnigos Sep 5, 2026
a5bbad9
fix(server): surface Claude safety model fallback notices instead of …
darahaas15 Sep 5, 2026
caf4981
fix(web): reload saved colors when reopening the theme editor (#9847)
juliusmarminge Sep 5, 2026
ed2bdbb
feat(desktop): import cookies from Safari (#7262)
juliusmarminge Sep 5, 2026
8faf031
fix(web): respect case in POSIX file links (#9309)
Michel-Liao Sep 5, 2026
fce8508
fix(server): surface a missing workspace folder instead of a spawn er…
kakismash Sep 5, 2026
b6f7268
fix: stop favicon requests for private link hosts on web and mobile (…
fe-franco Sep 5, 2026
2d5464a
fix(server): preserve native provider executable paths during updates…
juliusmarminge Sep 5, 2026
720e126
fix(web): restore composer expansion after tool calls (#9782)
t3dotgg Sep 5, 2026
2dca7a1
fix(client): explain possible network blocking for T3 Connect (#9783)
t3dotgg Sep 5, 2026
b5fb3fb
fix(desktop): isolate preview keyboard shortcuts from the host (#9840)
maria-rcks Sep 5, 2026
110bbe6
fix(prs): reuse GitHub data and defer optional reads (#9835)
maria-rcks Sep 5, 2026
c3cacea
perf(shared): skip duplicate PATH entries and per-probe tracing (#9618)
jadeva Sep 5, 2026
896fe82
fix(web): preserve focus and prioritize picker shortcuts (#9795)
maria-rcks Sep 5, 2026
82f64cd
fix(skills): support names beginning with digits (#9244)
amiralibg Sep 5, 2026
89ee69e
fix(server): advertise truecolor in the integrated terminal (#7680)
shubhxho Sep 5, 2026
940e823
fix(claude): surface usage-limit pauses in the thread (#7165)
vitalyiegorov Sep 5, 2026
ce4712d
fix: restore UX after performance improvements (#9799)
t3dotgg Sep 5, 2026
57a6b70
fix(codex): show what a file-change approval will change (#8669)
walid-baharwal Sep 5, 2026
4ade365
fix(ci): add fallback Ubuntu package mirrors (#9864)
maria-rcks Sep 5, 2026
03c6cd8
fix(web): copy text over plain HTTP (#8023)
Michel-Liao Sep 5, 2026
d7fe47f
fix(server): dismiss native questions when their turn ends (#9851)
juliusmarminge Sep 5, 2026
d28077e
fix(server): quote copied native provider update commands (#9856)
juliusmarminge Sep 5, 2026
1665d81
fix(release): install the correct Windows Spectre component (#9859)
maria-rcks Sep 5, 2026
1246146
fix(web): show retained runtime diagnostics in the work log (#9870)
juliusmarminge Sep 5, 2026
7f8cf30
fix(web): make sidebar project actions reachable by keyboard and scre…
akj Sep 5, 2026
de1b798
fix(preview): bound automation waits and screenshot captures (#4685)
juliusmarminge Sep 5, 2026
7ee52b0
fix(web): render and filter usage as environments respond (#9860)
juliusmarminge Sep 5, 2026
84b99f3
feat(web): edit usage prices across selected environments (#9861)
juliusmarminge Sep 5, 2026
ac90950
fix(mobile): keep usage tabs below the header when switching (#9876)
juliusmarminge Sep 5, 2026
363cde4
fix(connect): refresh HTTP credentials without reconnecting (#9594)
juliusmarminge Sep 5, 2026
b01771c
fix(web): keep file autosaves active after effect replay (#9878)
juliusmarminge Sep 5, 2026
a0eb239
fix(web): prioritize open panel pull request when copying (#9877)
maria-rcks Sep 5, 2026
9cb4017
fix(cli): resolve projects with missing workspace directories (#9885)
juliusmarminge Sep 5, 2026
931d41f
fix(web): sort equally merge-ready pull requests by diff size (#9887)
maria-rcks Sep 5, 2026
94cc815
fix(chat): show hours for long runs (#9894)
t3dotgg Sep 5, 2026
2fb99a7
fix(server): only run provider updates through the installer that own…
juliusmarminge Sep 5, 2026
df8e0eb
fix(web): discard stale highlights after file edits (#9902)
juliusmarminge Sep 5, 2026
fd77317
feat(web): recall sent prompts with the up arrow (#9173)
t3dotgg Sep 5, 2026
c7dc3cb
fix(server): keep mise-owned npm packages manual-only (#9927)
juliusmarminge Sep 5, 2026
f47a3fe
fix(settings): share restart continuation across environments (#9933)
maria-rcks Sep 5, 2026
7a089b2
fix(server): capture turn checkpoints after all edits finish (#9841)
juliusmarminge Sep 5, 2026
e7d2b2e
Merge upstream/main into fork (1295 commits, 2026-07-23 -> 2026-09-04)
deanjstone Sep 5, 2026
b2903fc
fix: restore fork's warning-status picker behaviour after sync
deanjstone Sep 5, 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.
55 changes: 37 additions & 18 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: test-t3-app
description: Launch and test the T3 Code web app in isolated development environments, including first-try browser authentication with one-time pairing URLs, pairing-token recovery, worktree-safe state directories, dev server lifecycle, and direct SQLite inspection or fixture seeding. Use when an agent needs to run T3 locally, test UI behavior in a browser, recover from an expired or consumed pairing token, isolate dev state, or prepare test data in state.sqlite.
description: Launch, retain, and test the T3 Code web app in isolated development environments, including first-try browser authentication with one-time pairing URLs, pairing-token recovery, worktree-safe state directories, cross-turn dev server lifecycle, and direct SQLite inspection or fixture seeding. Use when an agent needs to run T3 locally, iteratively test UI behavior with a human, recover from an expired or consumed pairing token, isolate dev state, or prepare test data in state.sqlite.
---

# Test T3 App
Expand All @@ -13,13 +13,35 @@ Use this skill for the web client. For iOS Simulator, Android Emulator, or physi
2. Choose a base directory that belongs only to the current worktree or test:
- Use the repository's ignored `.t3` directory for reusable worktree-local state.
- Use `mktemp -d /tmp/t3code-test.XXXXXX` for disposable state and retain the printed absolute path.
3. Start the full web stack with `vp run dev --home-dir <base-dir>`.
3. Start the full web stack with `vp run dev`. Add `--share` when the user needs to open it from another tailnet device. In a linked worktree it defaults to that worktree's gitignored `.t3`; pass `--home-dir <base-dir>` only when the test needs a different isolated directory.
4. Keep the terminal session alive and read the selected server port, web port, base directory, and pairing URL from its output.

Treat a base directory as disposable only when it was created or deliberately selected for the current test. Never delete or directly seed the shared `~/.t3` directory. Prefer starting with a new temporary base directory over clearing state of uncertain ownership.

The worktree-local default deliberately outranks an ambient `T3CODE_HOME`; do not pass the shared home through to a worktree dev server.

Ports are derived from the worktree path but can shift when occupied. Always read the actual values from the `[dev-runner]` line.

Shared browser dev is single-origin: Vite proxies the backend paths, so never set `VITE_HTTP_URL` or `VITE_WS_URL` for `dev`/`dev:web`.

The dev runner disables browser auto-open by default. Do not pass `--browser` during automated testing: an automatically opened page can consume the one-time bootstrap token before the controlled browser uses it.

### Verify a shared environment before human handoff

When another person will use the printed pairing URL, first open the shared origin without the pairing path or fragment in the controlled browser and confirm the T3 Code app loads. This browser navigation is required even when curl succeeds because browsers block some otherwise reachable ports before making a network request.

Do not open the other person's complete pairing URL during this reachability check; doing so consumes its one-time token. If the agent also needs an authenticated browser, create and consume a separate pairing token, then leave a fresh token for the other person.

## Preserve the environment while iterating

Treat the overall testing or implementation loop—not an assistant turn or one verification pass—as the environment lifecycle boundary.

- Keep the dev process, base directory, selected ports, authenticated browser tab, registered projects, and seeded fixtures alive while the user may inspect the result or request follow-up changes.
- Do not stop the server merely because one verification pass completed or because you are yielding a response to the user.
- Before starting another environment, check whether the existing process and browser tab still serve the task. Reuse them when healthy instead of discarding useful state.
- On a later turn, verify that the existing process is alive and reuse its printed ports and base directory. If it exited, restart with the same base directory; create a new pairing token only when the browser session is no longer valid.
- Tell the user when a test environment remains available, including its non-secret web URL when useful. Include a pairing token only when the user still needs to pair (see below).

## Authenticate the browser on the first navigation

1. Wait for the server log that says authentication is required and includes a URL ending in `/pair#token=...`.
Expand All @@ -28,24 +50,13 @@ The dev runner disables browser auto-open by default. Do not pass `--browser` du
4. Wait for the pairing exchange and redirect to finish before navigating elsewhere.
5. Continue in the same browser context so its stored bearer session remains available.

Treat pairing URLs as secrets. Do not copy them into final responses, screenshots, committed files, or durable logs. A pairing token is short-lived and single-use; opening the URL in another browser or opening it twice can consume it.
Keep pairing URLs out of screenshots, committed files, and durable logs. When the user asked for a shared environment, the deliverable IS the full pairing URL — paste it in your reply, token and all; a bare origin is useless to them. A pairing token is short-lived and single-use; opening the URL in another browser or opening it twice can consume it, so never open a URL you handed to the user.

## Recover a consumed or expired pairing token

Create another token against the same database and web URL as the running dev server:

```bash
T3CODE_PORT=<server-port> node apps/server/src/bin.ts auth pairing create \
--base-dir <base-dir> \
--dev-url <web-url> \
--base-url <web-url> \
--ttl 15m \
--label agent-ui-test
```

Use the `Pair URL` from this command once. Derive `<server-port>` and `<web-url>` from the current dev-runner output, including any automatically selected port offset. Setting `T3CODE_PORT` keeps the administrative CLI from probing for an unrelated free port.
Run `node apps/server/src/bin.ts pair` from the repository root. It discovers the running dev server (worktree `.t3` first, same precedence as the dev runner) and prints a fresh `Pair URL` against the server's current web origin, including a `--share` tailnet origin. Pass `--base-dir <base-dir>` only when the server was started with `--home-dir`, using the identical path.

Always pass `--dev-url` for a dev-runner environment so the generated pairing URL uses the current web origin. An explicit base directory stores runtime state in `<base-dir>/userdata`; the `<base-dir>/dev` fallback is only used by an implicit dev home. Use `auth pairing list` to inspect active token metadata; it intentionally cannot reveal token secrets.
Tokens from `pair` carry standard client scopes. The startup pairing URL carries admin scopes; if the user needs Settings → Connections management (`access:write`), restart the server and hand over the new startup URL instead.

## Inspect or seed SQLite state

Expand All @@ -58,9 +69,17 @@ Read [references/sqlite-fixtures.md](references/sqlite-fixtures.md) before chang

The helper refuses to write to the shared `~/.t3` directory by default and creates a database backup before each mutation.

## Finish the test
## Tear down only when the testing loop is finished

Tear down when the user explicitly asks, confirms the iteration is finished, or the overall task is genuinely complete with no pending human review. Do not infer completion from the end of an assistant turn.

When teardown is appropriate:

1. Stop the dev process with its terminal interrupt.
2. Preserve the isolated base directory when it contains useful reproduction evidence or state for a likely follow-up.
3. Otherwise remove only a path created for this test after resolving and verifying the exact target.

Stop the dev process with its terminal interrupt. Preserve the isolated base directory when it contains useful reproduction evidence; otherwise remove only a path that was created for this test after resolving and verifying the exact target. A fresh isolated base directory is the safest reset when authentication, migrations, or fixture state becomes ambiguous.
If completion is uncertain, keep the environment alive and mention that it is retained for further iteration. A fresh isolated base directory remains the safest reset when authentication, migrations, or fixture state becomes ambiguous.

## Troubleshoot predictably

Expand Down
4 changes: 2 additions & 2 deletions .agents/skills/test-t3-app/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
interface:
display_name: "T3 App Testing"
short_description: "Launch and seed isolated T3 test environments"
default_prompt: "Use $test-t3-app to launch an isolated T3 development environment and test it in the browser."
short_description: "Launch and retain isolated T3 test environments"
default_prompt: "Use $test-t3-app to launch an isolated T3 environment and iteratively test it in the browser while preserving state."
36 changes: 18 additions & 18 deletions .agents/skills/test-t3-mobile/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Use these client origins:
- Android Emulator: `http://10.0.2.2:<server-port>`
- Physical device: bind the backend to `0.0.0.0` and use the host's reachable LAN origin

Always enter the complete `http://` origin; the mobile host field otherwise assumes HTTPS. When testing web and mobile together, run `vp run dev --home-dir <base-dir> --host 127.0.0.1` instead and do not launch a second backend over the same base directory.
Enter the complete `http://` origin to make the test transport explicit. Bare IP addresses default to HTTP, while bare hostnames default to HTTPS. When testing web and mobile together, run `vp run dev --home-dir <base-dir> --host 127.0.0.1` instead and do not launch a second backend over the same base directory.

## Start or reuse Metro safely

Expand All @@ -80,7 +80,6 @@ Run Metro from `apps/mobile`.
APP_VARIANT=development vp exec expo start \
--dev-client \
--scheme t3code-dev \
--clear \
--lan \
--port <metro-port>
```
Expand Down Expand Up @@ -125,31 +124,29 @@ Do not start, stop, erase, or reconfigure an emulator owned by another task. Tra

## Pair each client once

Issue a fresh credential against the running backend's exact base directory:
Use the bundled helper from the repository root. It issues a fresh credential against the running backend's exact base directory, opens the existing Add Environment route with the credential in an encoded query parameter, and asks that route to connect once:

```bash
T3CODE_PORT=<server-port> node apps/server/src/bin.ts auth pairing create \
--base-dir <base-dir> \
--base-url <mobile-origin> \
--ttl 15m \
--label agent-mobile-<short-device-id>
.agents/skills/test-t3-mobile/scripts/pair-client.sh \
ios <simulator-udid> <server-port> <base-dir>

.agents/skills/test-t3-mobile/scripts/pair-client.sh \
android <emulator-serial> <server-port> <base-dir>
```

In PowerShell, set `$env:T3CODE_PORT = "<server-port>"` first and run the `node ... auth pairing create` command without the leading assignment.
Run only the command for the selected platform. The helper uses `http://127.0.0.1:<server-port>` for iOS and `http://10.0.2.2:<server-port>` for Android. Pass a fifth argument only when testing a non-development URL scheme.

If the visible Add Environment action is not exposed as a semantic target, open the app's registered route instead of guessing coordinates:
The helper opens this registered route:

```bash
xcrun simctl openurl <simulator-udid> 't3code-dev://connections/new'
adb -s <emulator-serial> shell am start -W \
-a android.intent.action.VIEW \
-d 't3code-dev://connections/new' \
com.t3tools.t3code.dev
```text
t3code-dev://connections/new?pairingUrl=<encoded-pairing-url>&autoConnect=1
```

Run only the command for the selected platform.
The Add Environment route owns the behavior: `pairingUrl` prefills its normal host and token inputs, while `autoConnect=1` submits once in development builds and returns to Home after success. Without `autoConnect`, the same route only prefills the form for manual inspection.

Do not enter pairing hosts or tokens through simulator keyboard automation. Xcode's semantic typer sends HID-style key events through the simulator's active keyboard state, which can corrupt uppercase tokens and punctuation even when the host Mac uses a U.S. input source. The one-shot route is the deterministic pairing path. Use the visible form only as a fallback, and paste credentials rather than typing them character by character.

In T3 Code Dev, open Add Environment and enter the complete `<mobile-origin>` and newly printed `Token`. Verify the expected seeded projects appear before exercising the affected flow.
Verify the expected seeded projects appear before exercising the affected flow.

Pairing credentials are secret, short-lived, and single-use. Create a different credential for every simulator, emulator, physical device, or browser. If an attempt fails, issue a new credential rather than retrying the old one. Do not expose tokens in screenshots, commits, or final responses.

Expand Down Expand Up @@ -181,8 +178,11 @@ Keep local verification focused. Do not turn this workflow into a full repositor
## Troubleshoot predictable failures

- **Old UI or an old error appears:** verify Metro's worktree, variant, URL, and port before diagnosing the app.
- **Metro serves stale or invalid transforms after those checks:** stop the owned Metro process and run `vp run dev:client:reset` once on the standard port. For a custom port, add `--clear` to the complete explicit `expo start` command above.
- **The environment remains empty:** verify the platform-specific HTTP origin, use a fresh token, and confirm project seeding used the identical base directory.
- **A second client cannot pair:** pairing tokens are single-use; issue another token.
- **The pairing form opens but does not connect:** confirm the deep link uses the existing `connections/new` route, includes `autoConnect=1`, and carries a freshly minted encoded `pairingUrl`.
- **Pairing text changes case or punctuation:** do not retry semantic typing. Use `scripts/pair-client.sh`; the simulator keyboard layout and HID input path are not reliable for credentials.
- **iOS semantic actions fail:** set explicit XcodeBuildMCP defaults and refresh with `snapshot_ui`.
- **Android cannot reach Metro:** verify `adb reverse` for the exact Metro port and relaunch the development-client URL.
- **Android cannot reach the backend:** use `10.0.2.2`, not `127.0.0.1`, for the Android Emulator.
72 changes: 72 additions & 0 deletions .agents/skills/test-t3-mobile/scripts/pair-client.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#!/usr/bin/env bash

set -euo pipefail

usage() {
echo "Usage: $0 <ios|android> <device-id> <server-port> <base-dir> [url-scheme]" >&2
exit 2
}

[[ $# -ge 4 && $# -le 5 ]] || usage

platform="$1"
device_id="$2"
server_port="$3"
base_dir="$4"
url_scheme="${5:-t3code-dev}"

case "$platform" in
ios)
mobile_origin="http://127.0.0.1:${server_port}"
;;
android)
mobile_origin="http://10.0.2.2:${server_port}"
;;
*)
usage
;;
esac

repo_root="$(git rev-parse --show-toplevel)"
cd "$repo_root"

if ! pairing_output="$({
T3CODE_PORT="$server_port" node apps/server/src/bin.ts auth pairing create \
--base-dir "$base_dir" \
--base-url "$mobile_origin" \
--ttl 15m \
--label "agent-mobile-${device_id:0:8}"
} 2>&1)"; then
echo "Could not mint a mobile pairing credential." >&2
exit 1
fi

pairing_url="$(printf '%s\n' "$pairing_output" | sed -n 's/^Pair URL: //p' | tail -n 1)"
if [[ -z "$pairing_url" ]]; then
echo "Could not parse the mobile pairing URL." >&2
exit 1
fi

deep_link="$(PAIRING_URL="$pairing_url" URL_SCHEME="$url_scheme" node - <<'NODE'
const query = new URLSearchParams({
pairingUrl: process.env.PAIRING_URL,
autoConnect: "1",
});
process.stdout.write(`${process.env.URL_SCHEME}://connections/new?${query}`);
NODE
)"

case "$platform" in
ios)
xcrun simctl openurl "$device_id" "$deep_link"
;;
android)
# adb shell re-joins its arguments and evaluates them through the device
# shell, so the deep link's `?`/`&` must be quoted once more for that shell.
adb -s "$device_id" shell \
"am start -W -a android.intent.action.VIEW -d '$deep_link' com.t3tools.t3code.dev" \
>/dev/null
;;
esac

echo "Opened the existing Add Environment route with a fresh pairing credential."
4 changes: 4 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
reviews:
review_status: false
auto_review:
enabled: false
21 changes: 12 additions & 9 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Optional: T3 Connect source builds
# Leave these unset to disable optional T3 Connect features in local source builds.
# Release builds inject their public values at build time. Do not add server-side
# secrets to this file.
# `cp .env.example .env` enables T3 Connect against the production deployment.
# These are the same public identifiers baked into official release builds, not
# secrets. Remove or comment them out to build with cloud features disabled.
# Do not add server-side secrets to this file.

# Get these from the Clerk Dashboard under API keys, JWT templates, and OAuth applications.
# T3CODE_CLERK_PUBLISHABLE_KEY=pk_test_...
# T3CODE_CLERK_JWT_TEMPLATE=t3-relay
# T3CODE_CLERK_CLI_OAUTH_CLIENT_ID=oauthapp_...
# Production Clerk instance. To use your own, get these from the Clerk Dashboard
# under API keys, JWT templates, and OAuth applications.
T3CODE_CLERK_PUBLISHABLE_KEY=pk_live_Y2xlcmsudDMuY29kZXMk
T3CODE_CLERK_JWT_TEMPLATE=t3-relay
T3CODE_CLERK_CLI_OAUTH_CLIENT_ID=hzxSgY2cH10sDU2r

# Optional: signed macOS passkey builds. The RP domain defaults to the Frontend API
# hostname encoded in T3CODE_CLERK_PUBLISHABLE_KEY. Set the override only when Clerk
Expand All @@ -15,8 +17,9 @@
# T3CODE_MACOS_PROVISIONING_PROFILE=/absolute/path/to/t3code.provisionprofile
# T3CODE_CLERK_PASSKEY_RP_DOMAINS=example.clerk.accounts.dev,clerk.example.com

# Get this from your relay deployment. `infra/relay` deploys update it automatically.
# T3CODE_RELAY_URL=https://relay.example.com
# Production relay. For a self-hosted relay, `infra/relay` deploys update it
# automatically.
T3CODE_RELAY_URL=https://relay.t3.codes

# Optional: hosted app origin used by the CLI's out-of-band OAuth flow.
# Defaults to https://app.t3.codes; override to test against a staging deployment.
Expand Down
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
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ body:
attributes:
value: |
Use this form for broken behavior, regressions, crashes, or reliability problems.
Feature requests belong in [Discussions](https://github.com/pingdotgg/t3code/discussions/categories/ideas).
Search existing issues first and keep the report focused on one problem.

- type: checkboxes
Expand All @@ -30,6 +31,7 @@ body:
- apps/web
- apps/server
- apps/desktop
- apps/mobile
- packages/contracts or packages/shared
- Build, CI, or release tooling
- Docs
Expand Down
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Feature request
url: https://github.com/pingdotgg/t3code/discussions/categories/ideas
about: Suggest an improvement or new capability in Discussions.
Loading
Loading