Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
668 commits
Select commit Hold shift + click to select a range
afca73d
fix(server): keep provider notification consumers alive past startSes…
btsouth Aug 15, 2026
7547280
fix(server): treat removed Bitbucket permissions endpoint as unknown,…
lnieuwenhuis Aug 15, 2026
672216d
fix(ssh): let cold remote servers finish starting (#6168)
gb1095 Aug 15, 2026
1e87029
fix(web): preserve Claude insight line breaks (#4344)
nateEc Aug 15, 2026
a6ac27e
feat(web): accept file drops across the chat workspace (#6636)
dbalders Aug 15, 2026
eaa6c47
fix(web): widen ordered-list marker gutter for 3+ digit item numbers …
lnieuwenhuis Aug 15, 2026
71c6f82
fix(server): bound thread activity hydration (#6153)
t3-code[bot] Aug 15, 2026
48cba7d
fix(web): restore the Archive action in the default sidebar thread me…
lnieuwenhuis Aug 15, 2026
9f26656
fix(web): open diff files from nested projects (#6174)
gb1095 Aug 15, 2026
b277cc6
fix(mobile): use tryOpenExternalUrl for markdown links in ThreadFeed …
mohamedmastouri-hue Aug 15, 2026
2cb1a26
fix(web): open the file a bare filename reference names (#6297)
Brechard Aug 15, 2026
ddee418
fix(server): stop the provider title mirror from overwriting real thr…
repparw Aug 15, 2026
178da6b
fix(shared): match source-control providers by DNS label (#6175)
gb1095 Aug 15, 2026
b7dbbba
feat(desktop): Chrome-style hold-to-quit (#5508)
Bil0000 Aug 15, 2026
d94fbda
fix(gitlab): submit review comments on context lines (#6348)
tarik02 Aug 15, 2026
db3278f
fix(marketing): keep Grok mark clear of mobile hero copy (#4542)
NicL9923 Aug 15, 2026
3bc4fdf
fix(mobile): recover the QR pairing scanner when camera access is den…
hey-jj Aug 15, 2026
a38cac8
fix(web): keep a long path from running under the folder picker butto…
Sy-D Aug 15, 2026
270489b
fix(terminal): right-click paste works in the terminal (#5240)
StiensWout Aug 15, 2026
4db5075
fix(mobile): explain iOS-only settings on Android (#4981)
danvernon Aug 15, 2026
9bdd912
fix(web): stop counting a workflow coordinator as a working agent (#6…
Rishet11 Aug 15, 2026
6e6d1b4
fix(web): keep floating preview anchored after panel closes (#6547)
AksharP5 Aug 15, 2026
a7c5ad5
fix(web): unstick /connect after in-modal sign-in by redirecting to t…
TorbenWetter Aug 15, 2026
7afa184
fix(web): keep send reachable while a turn is running on mobile (#4781)
AMohamedAakhil Aug 15, 2026
34a12bc
fix(web): reject unsupported composer image types at attach time (#6574)
mdshzb04 Aug 15, 2026
5ffbf3c
Make ClaudeTextGeneration tests hermetic on Windows (#4508)
mihneaptu Aug 15, 2026
143f713
fix(web): show command output in work log (#4083)
LikoKiko Aug 15, 2026
06dd999
fix(web): reserve sibling column width when resizing the right panel …
Lasdw6 Aug 15, 2026
9e61d0f
fix(web): replace whitespace in new ref names with dashes (#6270)
jorj-pineda Aug 15, 2026
c7b14a8
fix(client-runtime): branch list no longer resets while paging throug…
a20hek Aug 15, 2026
b0de385
fix(web): support Shift+Insert terminal paste (#5982)
aoright Aug 15, 2026
d79f975
fix(web): keep the composer glass aligned with the context strip at a…
Williawar Aug 15, 2026
135dc15
fix(codex): keep background memory out of chats (#5468)
AksharP5 Aug 15, 2026
51c6daa
fix(server): treat a missing Codex rollout as a recoverable resume er…
Rishet11 Aug 15, 2026
3cde99b
fix(web): hide provider Update toast action while an update is runnin…
mrmg Aug 15, 2026
e204f5a
fix(desktop): agent shells inherit a UTF-8 locale on macOS (#6236)
Linus-Boehm Aug 15, 2026
474cc5f
fix(server): ignore Claude command lifecycle messages (#6606)
naveed949 Aug 15, 2026
402c9e0
docs: mention Bitbucket user read scope needed by auth probe (#6291)
thamrx Aug 15, 2026
551f4c9
fix(server): return valid preview action results (#5966)
duncan-vc Aug 15, 2026
e9e4697
fix(claude): make "Always allow for session" stick, and only for the …
kakismash Aug 15, 2026
9d0f2fc
fix(ssh): surface a failed remote t3 install instead of a silent 0-by…
TorbenWetter Aug 15, 2026
f075a58
perf(server): persist the wire projection for streaming tool.updated …
mInrOz Aug 15, 2026
c4556ab
fix(web): stop wrapping partial code block selections in markdown fen…
JoeJoeflyn Aug 15, 2026
efe1773
fix(web): hide T3 Connect toggle in web app settings (#5068)
JoeJoeflyn Aug 15, 2026
a5d3532
fix(web): show provider account accent badge in sidebar rows and hove…
vitalyiegorov Aug 15, 2026
c0f9d91
fix(server): wait for concurrent SQLite writers instead of failing wi…
ostapondo Aug 15, 2026
7c55e86
fix(web): reject oversized prompts before provider turn start (#6602)
naveed949 Aug 15, 2026
40ab7bf
feat(web): collapse the question prompt from its header (#6773)
Jardo-51 Aug 15, 2026
684d703
fix(shared): degrade an unknown system time zone to UTC in usage wind…
Rishet11 Aug 15, 2026
ad47d23
fix(claude): discover repo-local .agents/skills in skill discovery (#…
RoshanMhatre Aug 15, 2026
d715c2e
fix(server): let slow provider CLIs raise their discovery probe budge…
CDVolvik Aug 15, 2026
d5465ae
fix(web): retain terminal PR badges after checkout switch (#4755)
sebbonit Aug 15, 2026
ca37b19
fix(web): show selected model in context window tooltip (#4772)
nqrwhal Aug 15, 2026
5e14737
fix(web): scale command details with code font (#6510)
Serendeep Aug 15, 2026
cf7bfd1
fix(web): preserve XML-like tags in user messages (#4133)
0utsights Aug 15, 2026
7c8848e
fix(desktop): route mouse thumb buttons to the in-app browser (#4459)
akosbalogh Aug 15, 2026
f915320
fix(web): keep the final segment of directory paths with a trailing s…
jorvarea Aug 15, 2026
7083bce
Keep block code plain when copying from rendered markdown (#4468)
yashranaway Aug 15, 2026
21b6fb5
fix(web): add web app manifest so installed app keeps its scope (#4306)
Albro3459 Aug 15, 2026
db02c6b
Skip user hooks during Claude capability probes (#4466)
yashranaway Aug 15, 2026
31d0fb6
fix(mobile): use Android monospace font family (#4609)
tastelessjolt Aug 15, 2026
b72d5d7
fix(desktop): timestamps follow the OS locale instead of en-US (#6190)
brzzdev Aug 15, 2026
1a5ff42
fix(web): keep multi-select questions open after the first click (#6646)
RaitP1 Aug 15, 2026
d550b82
fix(web): stop clipping the changed-files expand hover on Windows (#6…
mrmg Aug 15, 2026
86fb47a
fix(server): allow long-running git pushes (#6499)
devchaudhary24k Aug 15, 2026
160c76c
fix(desktop): keep probing backend readiness while the process is ali…
lgwacker Aug 15, 2026
dc0ff8f
fix(server): allow install scripts in npm-global provider updates (#5…
hey-jj Aug 15, 2026
7ce4194
fix: detect SSH remotes with non-git user prefixes (e.g. gitlab@) (#3…
JackatDJL Aug 15, 2026
39167eb
fix(web): describe what Ultracode does in the Reasoning picker (#6092)
delltrak Aug 15, 2026
3b54a2a
fix(server): settle pending user-input requests when a Claude session…
AaronAbuUsama Aug 15, 2026
4fc80fc
fix(server): stop replaying a command receipt for a different aggrega…
ostapondo Aug 15, 2026
07e668d
fix(server): settle snoozed threads immediately (#5379)
0bkevin Aug 15, 2026
277a7cb
fix(mobile): prevent crash on sign out in settings (#4899)
shubhu121 Aug 15, 2026
f8bb92b
fix(mobile): local-checkout threads record their branch so PR badges …
Zeus-Deus Aug 15, 2026
62bb974
fix(web): contain long approval commands (#6503)
Serendeep Aug 15, 2026
e17f244
feat(web): make right panel maximize bindable (#5091)
husseinraoouf Aug 15, 2026
61b2e74
fix(server): respect inherited OPENCODE_CONFIG_CONTENT (#4242)
jonocodes Aug 15, 2026
04f2309
fix(marketing): detect Mac chip on homepage download button (#4197)
mahdibm-dev Aug 15, 2026
931e915
Keep the server alive when a response write hits a dead socket (#4470)
yashranaway Aug 15, 2026
664499c
Limit physical key fallback to non-Latin layout output (#4469)
yashranaway Aug 15, 2026
2fc6762
fix: restore CLAUDE.md symlink target (#3929)
NgoQuocViet2001 Aug 15, 2026
ec141c1
fix(clients): default clone destination to folder plus repo name (#5989)
inayayousfi Aug 15, 2026
20a7042
fix(web): keep timestamp date and time in the same locale (#7081)
juliusmarminge Aug 15, 2026
ad11723
feat(desktop): add signal macOS DMG installer background (#6201)
Brechard Aug 15, 2026
a5e29ed
feat(web): send PR line requests to agent (#6597)
Bil0000 Aug 15, 2026
e58cbb9
fix(web): restore dark theme palette (#6663)
eddy-naboulet Aug 15, 2026
2f486ab
refactor(web): simplify advanced theme controls (#7107)
StiensWout Aug 15, 2026
d484735
fix(web): keep highlighted command menu items clear of the scroll fad…
PollyGlot Aug 15, 2026
2773229
test: remove redundant and stale tests (#6267)
t3-code[bot] Aug 16, 2026
3583cd2
test: favor behavior over implementation details (#7157)
t3-code[bot] Aug 16, 2026
d23b181
feat(mobile): add built-in themes (#6619)
chrisdeeming Aug 16, 2026
4cb676c
docs: point CLAUDE.md at AGENTS.md with an @import instead of a symli…
UtkarshUsername Aug 16, 2026
4c1d99d
fix(web): show filenames when commit dialog paths overflow (#6392)
frarredondo Aug 16, 2026
89c52a3
fix(mobile): keep sheet actions below status bar (#6635)
NitayRabi Aug 16, 2026
bab4b6f
fix(web): align Windows update confirmation copy (#7208)
StiensWout Aug 16, 2026
fee10de
feat(lint): ban native title tooltips and migrate to styled Tooltip (…
UtkarshUsername Aug 16, 2026
ba46f92
fix(pull-requests): protect provider API budgets (#6466)
Bil0000 Aug 16, 2026
949feb6
feat(web): configurable browser defaults in Settings → Integrations (…
juliusmarminge Aug 16, 2026
13458e6
fix(web): center the context usage meter (#7296)
StiensWout Aug 17, 2026
cd096b9
feat(server): let users withhold browser access from agents (#7083)
juliusmarminge Aug 17, 2026
c7e6d71
feat(web): make review verdicts legible in the pull request detail (#…
Bil0000 Aug 17, 2026
33a8b07
fix(mobile): rotate snoozed and settled shelf chevrons (#7276)
lnieuwenhuis Aug 17, 2026
a4cc136
fix(web): show all usage breakdown periods (#7219)
tris203 Aug 17, 2026
3723722
test(web): remove duplicate lookup assertion (#7364)
t3-code[bot] Aug 18, 2026
cebac35
fix(mobile): show structured input option descriptions (#7321)
none23 Aug 18, 2026
82b8a93
fix(orchestration): do not revive idle tasks from status-free progres…
maslinedwin Aug 18, 2026
1896f39
refactor(server): simplify error transformation with Effect.mapError …
aoright Aug 18, 2026
a87f691
fix(preview): open local environment ports on localhost (#7300)
gb1095 Aug 18, 2026
f3cb7f5
fix(desktop): prevent quit shortcut spillover (#7397)
Bil0000 Aug 18, 2026
3b5d476
fix(desktop): stop overwriting a custom dock icon on launch (#7125)
Rishet11 Aug 18, 2026
fda740a
feat(web): show project location in new thread picker (#7392)
StiensWout Aug 18, 2026
db0659f
fix(packaging): install AUR launcher icons where icon themes look (#7…
AugusDogus Aug 18, 2026
26af903
fix(web): label pull request merge actions (#7381)
tarik02 Aug 18, 2026
636caf4
fix(server): avoid PRs inherited from default upstreams (#7317)
gsimone Aug 18, 2026
6a687ee
fix(desktop): stop the passkey dialog from popping as soon as sign-in…
t3dotgg Aug 18, 2026
3a02c9c
feat(desktop): mute a browser tab (#7252)
chrisdeeming Aug 18, 2026
bcfd485
fix(web): improve disconnected composer placeholder (#7122)
inayayousfi Aug 18, 2026
fe281c5
fix(desktop): throttle hidden preview rendering (#7445)
t3-code[bot] Aug 19, 2026
e7f6a30
fix(server): stop probing Grok, Cursor, and OpenCode unless turned on…
t3dotgg Aug 19, 2026
efcf7d1
fix(desktop): boot the main window unthrottled so cold start paints a…
t3dotgg Aug 19, 2026
f21b47e
fix(threads): a merged PR settles its thread only once (#7454)
t3dotgg Aug 19, 2026
324ddda
feat(cli): npx t3 triage hands broken installs to your own coding age…
t3dotgg Aug 19, 2026
5ea5a80
fix(marketing): Safari gets the arm64 Mac download (#7473)
t3dotgg Aug 19, 2026
3b8e7bb
feat(web): add shortcuts to the surface dropdown (#7318)
gsimone Aug 19, 2026
67e2fe7
fix(marketing): never serve the Intel build to Apple Silicon Macs (#7…
t3dotgg Aug 19, 2026
36f4314
fix(web): animate command palette when closing (#5169)
tarik02 Aug 19, 2026
7441b36
fix(desktop): upgrade Clerk OAuth transport (#7479)
t3dotgg Aug 19, 2026
2aa5f09
feat(server): run the background service on macOS via launchd (#6286)
t3dotgg Aug 19, 2026
8bbbab5
fix(web): align sidebar statuses with project names (#7491)
RakshithBhat03 Aug 19, 2026
24c4ba6
fix(desktop): close the window before quit cleanup (#6562)
t3dotgg Aug 19, 2026
f2d5fc9
fix(desktop): stop automatic passkey prompts (#7522)
t3dotgg Aug 19, 2026
68d5691
fix(web): align version text with its label (#7521)
RakshithBhat03 Aug 19, 2026
4347f14
fix(web): refresh open file with the file tree (#7490)
StiensWout Aug 19, 2026
cf251c3
Add OpenCode skill discovery (#3154)
dbalders Aug 19, 2026
07f8027
feat(web): unify workspace navigation (#7153)
maria-rcks Aug 19, 2026
80c37f1
fix(web): hide opencode's plan agent when legacy plan mode is off (#6…
UtkarshUsername Aug 19, 2026
3c06655
feat: refine thread action menus (#7476)
maria-rcks Aug 19, 2026
8c85b49
feat(web): redesign usage insights (#7147)
maria-rcks Aug 19, 2026
51341f2
fix(server): outdated gh no longer reads as "not authenticated" (#7588)
t3dotgg Aug 19, 2026
a354dd9
fix(desktop): refresh queued updates before install (#6269)
SunkenInTime Aug 19, 2026
0508792
feat(web): confirm before closing a terminal (#7592)
maria-rcks Aug 19, 2026
a850895
feat(web): refresh pull request details (#7148)
maria-rcks Aug 19, 2026
62654d2
fix(web): usage hourly breakdown lists every hour chronologically (#7…
lgwacker Aug 19, 2026
105cd5e
fix(web): remove the terminal pane's app-canvas gutter (#6222)
jakeleventhal Aug 19, 2026
792a140
feat(web): attach composer state drawers (#7150)
maria-rcks Aug 20, 2026
b2e2ccf
fix(server): preserve tool lifecycle identity (#7151)
maria-rcks Aug 20, 2026
9027d62
chore(desktop): use stable Clerk Electron release (#7602)
t3dotgg Aug 20, 2026
4a9edff
feat(web): collapse tool activity into one line (#7152)
maria-rcks Aug 20, 2026
f708f63
test(web): remove redundant timestamp assertions (#7633)
t3-code[bot] Aug 20, 2026
beab688
fix(web): import dependency-heavy Open VSX themes (#7642)
t3-code[bot] Aug 20, 2026
8824f8f
fix(web): retry failed thread bootstraps with a fresh id (#7664)
SunkenInTime Aug 20, 2026
21e80a0
fix(web): copy terminal selection instead of a blank clipboard (#7678)
sethwebster Aug 20, 2026
aa17ec6
revert(web): restore sparse hourly usage breakdown (#7718)
t3-code[bot] Aug 20, 2026
0929907
fix(server): reconcile orphaned provider sessions (#7719)
t3-code[bot] Aug 20, 2026
490f48e
fix(web): fix subagent row left border being cut off (#7207)
sameerr03 Aug 20, 2026
cd14b3e
fix(web): unify composer control rounding (#5957)
kototok903 Aug 20, 2026
5ff5f73
fix(web): show pointer on add project button (#5545)
incognitojam Aug 20, 2026
730ce9e
fix(server): enable the Cursor provider by default like every other p…
Rishet11 Aug 20, 2026
1afe554
fix(web): fix thread jumping after reorder (#7103)
ipanasenko Aug 20, 2026
4bdbd8c
fix(server): keep Daybreak models out of legacy models (#7659)
cn0ss Aug 20, 2026
fe87502
fix(contracts): reconcile provider default tests (#7725)
t3-code[bot] Aug 20, 2026
f0fb83a
fix(web): polish theme library buttons, search, and import dialog (#7…
UtkarshUsername Aug 20, 2026
7107a98
chore: vouch Seth Webster and pcstyle (#7728)
t3dotgg Aug 20, 2026
68966c1
fix(web): add space above composer task tabs (#7740)
Bil0000 Aug 21, 2026
e723501
feat(composer): list skills with slash commands (#7737)
maria-rcks Aug 21, 2026
6d3bf01
fix(web): show the full path in file link tooltips (#7741)
s243a Aug 21, 2026
820e563
fix(server): serve html assets with utf-8 charset (#6409)
talkingdonkeyz Aug 21, 2026
12c4970
fix(vcs): give `git worktree add` a longer timeout on large repos (#6…
ChamaruAmasara Aug 21, 2026
9167622
chore: move implementation plans out of repository (#7665)
t3-code[bot] Aug 21, 2026
45a2c4b
Update user count in AGENTS.md (#7658)
saphid Aug 21, 2026
20e5a33
fix(desktop): restrict editor deep links (#7697)
Lucenx9 Aug 21, 2026
6d5c6c4
fix(web): prevent pinned threads reshuffling after drop (#7676)
tarik02 Aug 21, 2026
18f6d03
fix(web): encode shifted characters correctly in the terminal (#7485)
chrisdeeming Aug 21, 2026
f3fcfe1
fix(web): resolve sidebar provider icons from the thread's own enviro…
vitalyiegorov Aug 21, 2026
ce8ca5b
fix(web): hide thread jump hints while the terminal is focused (#7277)
lnieuwenhuis Aug 21, 2026
e2697d6
fix(web): keep following the stream after scrolling back to the live …
lnieuwenhuis Aug 21, 2026
d7b9a68
perf(ci): parallelize the test suite and split out Rust checks (#7286)
t3dotgg Aug 21, 2026
8f7da3b
ci: only boot the macOS native lint runner when native sources change…
t3dotgg Aug 21, 2026
9f12eab
chore: stop committing pull request assets (#7762)
t3-code[bot] Aug 21, 2026
549201f
fix(clients): default GitHub clones to HTTPS (#7760)
t3-code[bot] Aug 21, 2026
be7d35a
perf(web): stop preview loading rerenders (#7561)
Bil0000 Aug 21, 2026
0a46daa
fix(web): keep messages clear of composer banners (#7792)
Bil0000 Aug 21, 2026
837f6b8
feat(web): double-click chat header title to rename thread (#7817)
UtkarshUsername Aug 21, 2026
292c6dd
fix(web): model picker no longer shows a double border (#7772)
RakshithBhat03 Aug 21, 2026
9b5d416
fix(web): give sidebar un-settle button a tooltip (#7796)
UtkarshUsername Aug 21, 2026
c3e3709
fix(web): render oversized terminal graphemes without crashing (#7809)
Lucenx9 Aug 21, 2026
e0b4f46
feat(web): cmd+enter to create thread in background (#7821)
extoci Aug 21, 2026
b381fdb
fix(web): launcher shortcuts no longer hijack the empty composer (#7794)
Lucenx9 Aug 21, 2026
44e4a70
feat(desktop): choose external project icons (#7823)
Bil0000 Aug 21, 2026
592c598
perf(web): dedupe terminal mouse motion reports (#7845)
t3-code[bot] Aug 21, 2026
421088c
fix(search): oversized thread queries no longer crash clients (#6633)
Lucenx9 Aug 22, 2026
035058a
fix(mobile): stop a directly-saved backend from hiding its T3 Connect…
Rishet11 Aug 22, 2026
11f0513
feat(analytics): threads and turns now know which client started them…
t3dotgg Aug 22, 2026
ce91284
fix(web): stop marking mixed tool runs as failed (#7893)
t3dotgg Aug 22, 2026
f34b9d3
fix(web): command-click spaced folder links (#6439)
SunkenInTime Aug 22, 2026
2274444
fix(chat): stop pushing follow-up messages to the top (#7897)
t3dotgg Aug 22, 2026
0ede2ed
test(desktop): remove redundant release note assertion (#7873)
t3-code[bot] Aug 22, 2026
2c4158f
fix(web): handle wide ordered-list marker edge cases (#7856)
abcdmku Aug 22, 2026
49c2b44
fix(ssh): restore user PATH for remote servers (#7213)
gb1095 Aug 22, 2026
d9c1732
fix(desktop): keep tailscale spawn defects from breaking advertised e…
Rishet11 Aug 22, 2026
dedcd99
fix(web): keep Codex service tier labels readable (#4503)
PixPMusic Aug 22, 2026
77c9d1e
fix: render workspace images in chat markdown (#6433)
SunkenInTime Aug 22, 2026
6c693ba
fix(clients): keep opening responses visible after turns settle (#7723)
t3dotgg Aug 22, 2026
6e9c57f
feat(web): add appearance contrast control (#7906)
t3-code[bot] Aug 22, 2026
4e00471
fix(server): stop completed Codex threads from staying stuck on worki…
t3dotgg Aug 22, 2026
5a7a7cf
fix(mobile): preserve markdown image dimensions (#7940)
SunkenInTime Aug 22, 2026
4e169df
fix(web): remove duplicate provider update progress (#7761)
naveed949 Aug 23, 2026
30be311
fix(server): fall back to the remote default branch instead of assumi…
Rishet11 Aug 23, 2026
fdd1572
fix(web): give sidebar project menu rows the same side padding as oth…
ishaanko Aug 23, 2026
afa8309
fix(clients): reconnect after credentials fail during remote server u…
t3dotgg Aug 23, 2026
3db38b8
feat(codex): submit thread feedback to OpenAI (#7949)
t3dotgg Aug 23, 2026
4d12e52
fix(server): stop kills lingering Claude work (#5891)
t3dotgg Aug 23, 2026
2433f4c
fix(ci): let Macroscope approve pull requests again (#7970)
t3dotgg Aug 23, 2026
f70eeee
fix(clients): move settled pinned threads into the settled section (#…
t3dotgg Aug 23, 2026
25dcee0
perf(ci): speed up release builds and Windows packaging (#7975)
t3dotgg Aug 23, 2026
ea8c9e5
fix(web): stop tool calls from leaving a blank page in threads (#7971)
t3dotgg Aug 23, 2026
b1670ac
fix(web): stop recovered tool failures from marking work logs red (#7…
t3dotgg Aug 23, 2026
55c9093
fix(mobile): isolate markdown image requests (#7942)
SunkenInTime Aug 23, 2026
9da0fab
feat(web): redesign skills in `$` menu and in `/` menu (#8009)
extoci Aug 23, 2026
09df91f
fix(web): restore right panel toggle clicks after closing on desktop …
UtkarshUsername Aug 23, 2026
5427ca0
fix(web): keep server update banners flush with the composer (#8000)
t3dotgg Aug 23, 2026
fa21900
perf(web): reuse work log rows during streaming (#8006)
Bil0000 Aug 23, 2026
a9cd94e
fix(web): keep provider badge legible in dark themes (#7968)
RakshithBhat03 Aug 23, 2026
69e5ad8
fix(web): treat configured urls with uppercase schemes as secure (#8005)
Lucenx9 Aug 23, 2026
b4be33f
fix(desktop): keep release notes visible while downloading (#6412)
extoci Aug 23, 2026
17dbe8d
fix(web): show only providers with usage in usage views (#7563)
tris203 Aug 24, 2026
643daa5
fix(web): prevent expanded tool calls from hiding thread content (#8052)
t3dotgg Aug 24, 2026
b60a2c0
test(server): remove no-op live activity tests (#8056)
t3-code[bot] Aug 24, 2026
10626c5
fix(web): clarify terminal sidebar grouping (#7967)
StiensWout Aug 24, 2026
7c6163c
fix(codex): show app access approval prompts (#8058)
t3dotgg Aug 24, 2026
e9f50c3
feat(web): upload image attachments before sending (#8048)
t3dotgg Aug 24, 2026
58ba559
fix(server): bound OpenCode skill discovery output (#7675)
Lucenx9 Aug 24, 2026
9eba125
fix(mobile): persist thread shelf collapse state (#5152)
PixPMusic Aug 24, 2026
2d2efff
fix(mobile): restore Android tablet thread controls, clean up header …
PixPMusic Aug 24, 2026
f9a726e
fix(mobile): land the first thread open above the composer on Android…
PollyGlot Aug 24, 2026
be3da50
fix(server): check out submodules in a new worktree (#7674)
Brechard Aug 24, 2026
ba30177
fix(server): preserve merged PR badges after branch deletion (#6216)
tris203 Aug 24, 2026
229b05d
fix(server): return fresh live pull request reads (#6472)
Adamulek123 Aug 24, 2026
6f5c951
fix(web): compare client and server versions as semver, not strings (…
spiky02plateau Aug 24, 2026
c0047c2
fix(web): stop follow-ups from leaving giant blank space (#8068)
t3dotgg Aug 24, 2026
e31e568
fix(marketing): stop automatic Vercel deployments on pull requests (#…
t3dotgg Aug 24, 2026
a002187
chore: vouch repeat contributors (#8071)
t3dotgg Aug 24, 2026
6a26082
fix(server): keep the authoritative subagent model when snapshots rac…
spiky02plateau Aug 24, 2026
04df98d
fix(server): honor auto-accept edits for the OpenCode provider (#7100)
Rishet11 Aug 24, 2026
3fd5064
fix(server): run the CLI on Node versions without import.meta.main (#…
CDVolvik Aug 24, 2026
17822fa
fix(server): recover from provider interrupt failures (#7412)
mrmg Aug 24, 2026
01fc7d2
fix(server): recreate a thread's worktree before starting a turn (#7839)
mackinleysmith Aug 24, 2026
e6a109b
fix(server): thread delete no longer fails on already-removed worktre…
t3dotgg Aug 24, 2026
f035a0f
fix(web): stop update notices showing through the composer (#8083)
t3dotgg Aug 24, 2026
7f97b00
feat(desktop): add global window capture
Bil0000 Aug 24, 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.
31 changes: 15 additions & 16 deletions .agents/skills/test-t3-app/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,25 @@ 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`. 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.
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.
Expand All @@ -30,7 +40,7 @@ Treat the overall testing or implementation loop—not an assistant turn or one
- 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. Never include a pairing token.
- 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

Expand All @@ -40,24 +50,13 @@ Treat the overall testing or implementation loop—not an assistant turn or one
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. A worktree-local `.t3` counts as explicit, so its state lives in `<worktree>/.t3/userdata`. 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 Down
34 changes: 17 additions & 17 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 Down Expand Up @@ -125,31 +125,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 @@ -183,6 +181,8 @@ Keep local verification focused. Do not turn this workflow into a full repositor
- **Old UI or an old error appears:** verify Metro's worktree, variant, URL, and port before diagnosing the app.
- **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."
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
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.
101 changes: 0 additions & 101 deletions .github/ISSUE_TEMPLATE/feature_request.yml

This file was deleted.

Loading
Loading