Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
526 commits
Select commit Hold shift + click to select a range
9ccfd9d
fix(desktop): allow updater-controlled relaunch (#4721)
0x4bs3nt Jul 28, 2026
3c50a64
fix(web): prevent diff panel scroll jumping (#4724)
0x4bs3nt Jul 28, 2026
55dd016
Link inline code file paths in chat markdown (#4726)
juliusmarminge Jul 28, 2026
f1a68ac
Fix Android showcase capture and rebuild v2 queued rows (#4730)
juliusmarminge Jul 28, 2026
887dd6e
perf(server): negotiate permessage-deflate on the websocket (#4705)
t3dotgg Jul 28, 2026
b64ae88
docs: overhaul agent guidance (#4782)
t3dotgg Jul 28, 2026
2deea7a
Prevent sidebar row labels from truncating (#4789)
juliusmarminge Jul 28, 2026
8829e2f
perf(server): gzip large thread snapshots (#4788)
t3dotgg Jul 28, 2026
f2d2fb2
fix(web): stashed prompts now survive switching providers (#4787)
t3dotgg Jul 28, 2026
38a6e3c
Fix Git ref refresh resource storms (#4727)
juliusmarminge Jul 28, 2026
5fcdefd
perf(server): trim stale context-window rows and drop dead replay RPC…
t3dotgg Jul 28, 2026
1ba3d01
fix(web): defer command palette filesystem navigation (#2109)
juliusmarminge Jul 28, 2026
2919147
fix(release): skip scripts during Vercel installs (#4796)
t3dotgg Jul 28, 2026
936593c
refactor(client): share filesystem browse navigation (#4797)
juliusmarminge Jul 28, 2026
8fe8f9a
fix(mobile): defer filesystem navigation (#4799)
juliusmarminge Jul 28, 2026
8650f05
refactor(server): use native HTTP compression streams (#4798)
juliusmarminge Jul 29, 2026
60af905
Remove Connect waitlist and add GA announcement tooling (#4691)
juliusmarminge Jul 29, 2026
1b61ce1
Fix Connect sign-in settings label (#4806)
juliusmarminge Jul 29, 2026
694f8d1
chore(release): prepare v0.0.30
t3-code[bot] Jul 29, 2026
1b4830f
fix(desktop): restore T3 Connect sign-in (#4809)
PixPMusic Jul 29, 2026
08e4932
Simplify files panel header (#4828)
juliusmarminge Jul 29, 2026
72b960f
build(desktop): reduce installed app size by ~300MB (#4824)
wukko Jul 29, 2026
c3e8fb6
Update model version from claude-opus-4-8 to claude-opus-5 (#4832)
juliusmarminge Jul 29, 2026
3137c2b
Preserve the thread shell while detail loads (#4830)
juliusmarminge Jul 29, 2026
49c0d96
Reduce idle work and disk churn with native resource diagnostics (#2679)
juliusmarminge Jul 29, 2026
d19039a
fix(server): detect repositories after initialization (#4848)
StiensWout Jul 29, 2026
faea70a
perf(server): merge separate staged/unstaged numstat calls into singl…
UtkarshUsername Jul 29, 2026
85a8986
fix(git): disable external diff for review diff previews (#4854)
ohbentos Jul 29, 2026
fc28abf
Fix editable file focus and live syntax highlighting (#3979)
jakeleventhal Jul 29, 2026
e698796
fix(web): remember the rendered-markdown choice across threads (#4853)
Sy-D Jul 29, 2026
a8e05cb
chore(release): prepare v0.0.31
t3-code[bot] Jul 29, 2026
9e3e9bb
fix(mobile): reduce thread feed scroll jank (#4874)
gabrielelpidio Jul 30, 2026
35a6840
fix(web): restore sidebar v2 thread actions and terminal icon (#4712)
Noojuno Jul 30, 2026
2d9066e
fix(web): settle button now works on hover, not just right-click (#4905)
t3dotgg Jul 30, 2026
758deca
fix(clients): disable add project while disconnected (#4834)
StiensWout Jul 30, 2026
b125b76
fix(composer): hide default Codex service tier (#4784)
maxktz Jul 30, 2026
748203e
docs: link iOS and Android app store downloads (#4902)
t3dotgg Jul 30, 2026
6efcf3e
fix(web): align remote server update action (#4731)
StiensWout Jul 30, 2026
6ab2f16
fix(connect): suggest a serve command that matches how you ran connec…
t3dotgg Jul 30, 2026
00da6b5
fix(mobile): stop shared content errors in Personal Team builds (#4943)
t3dotgg Jul 30, 2026
f0f16e4
perf(mobile): sends respond instantly, thread opens stop freezing (#4…
t3dotgg Jul 30, 2026
9146ed2
fix(web): show Codex fast mode as a bolt (#4947)
t3dotgg Jul 30, 2026
2f466ff
docs: seed worktrees with a copy of real userdata instead of banning …
t3dotgg Jul 30, 2026
2652fee
fix(mobile): support dragged images in the composer (#4953)
t3dotgg Jul 30, 2026
90f3913
fix(mobile): stop long iOS threads from jumping while scrolling up (#…
t3dotgg Jul 30, 2026
f0c6ba9
fix(web): keep worktree default when switching a draft's machine (#4964)
t3dotgg Jul 30, 2026
69a18ce
perf(mobile): reconnect environments immediately on resume (#4878)
t3dotgg Jul 30, 2026
cbe8052
feat(web): pasting a huge screenshot now compresses it instead of err…
t3dotgg Jul 30, 2026
5c9358a
feat(web): regenerate thread titles from sidebar (#4810)
t3dotgg Jul 30, 2026
197d348
fix(web): show server update progress through reconnect (#4903)
t3dotgg Jul 30, 2026
4b71a2a
feat(search): find threads by conversation content (#4959)
t3dotgg Jul 30, 2026
50871eb
fix: marketing site Vercel builds no longer die after ~100 deploys (#…
t3dotgg Jul 30, 2026
9dd425b
docs: split user and maintainer docs, fix 100+ stale claims (#4807)
t3dotgg Jul 30, 2026
e0513d2
fix(web): server updates no longer look like warnings (#4992)
t3dotgg Jul 30, 2026
1877237
fix(connect): reboots no longer strand the relay link, 403s now say w…
t3dotgg Jul 30, 2026
abc409c
Add project file picker (⌘P) and project content search (⇧⌘F) (#4855)
jakeleventhal Jul 30, 2026
6154b46
Check for mobile app updates on launch (#4958)
juliusmarminge Jul 30, 2026
323dc32
fix(mobile): support pre-Liquid-Glass iOS bottom toolbar (#4984)
gabrielelpidio Jul 30, 2026
edc503a
fix(server): restore PR detection without HOME (#4985)
StiensWout Jul 30, 2026
4ba4871
fix(web): fill fast mode icon (#5004)
maria-rcks Jul 30, 2026
1d77cec
fix: cache project favicons across web and mobile (#4767)
gabrielelpidio Jul 30, 2026
e482960
perf(ci): cut stale runs and redundant setup (#4802)
t3dotgg Jul 30, 2026
bc142f8
chore(mobile): bump app version to 1.0.1
juliusmarminge Jul 30, 2026
5b2577f
style(web): make scroll-to-end pill translucent (#5036)
maria-rcks Jul 30, 2026
4029b85
fix(ci): drop sparse-checkout from EAS workflows
juliusmarminge Jul 30, 2026
fbecb73
fix(desktop): bump Clerk Electron SDK to 0.0.24 and register t3code:/…
juliusmarminge Jul 30, 2026
34b15a9
perf(server): cache default branch name and origin existence across s…
UtkarshUsername Jul 30, 2026
063ed71
feat(shared): support shorthand (major-only) versions in the semver h…
arhxam Jul 30, 2026
162e774
fix(mobile): remove unnecessary photo library permission (#4929)
skjiisa Jul 30, 2026
32407df
fix(shared): lenient JSON parser deletes commas inside string values …
arhxam Jul 30, 2026
1d694dc
fix(mobile): default bare IP pairing to HTTP (#4990)
Lucenx9 Jul 30, 2026
cb293fe
fix(mobile): restore iOS Threads branding (#4862)
PixPMusic Jul 30, 2026
b0b2752
chore: add mobile issue template area (#4895)
MaxAnderson95 Jul 30, 2026
41124c7
fix(desktop): link release notes from the update downloaded toast (#4…
Sy-D Jul 30, 2026
cb11a71
fix(mobile): accept Android clipboard images in composer (#4836)
adityavardhansharma Jul 30, 2026
605c2bb
fix(mobile): show the correct build channel in Android's Threads page…
PixPMusic Jul 30, 2026
df78cda
fix(contracts): decode growing config unions forward-compatibly (#5055)
juliusmarminge Jul 30, 2026
e259dd2
fix(mobile): server model, worktree, and origin preferences now apply…
t3dotgg Jul 31, 2026
50a3d6b
fix(ci): repair the mobile showcase screenshots workflow (#5057)
juliusmarminge Jul 31, 2026
fccec9f
fix(ci): capture iPad App Store screenshots in landscape (#5065)
PixPMusic Jul 31, 2026
894d6d6
fix(oxlint-plugin): Resolve the oxlint bin without assuming a pnpm la…
mwolson Jul 31, 2026
61514c1
feat(cli): `npx t3 pair` - generate QR code from a running server (#4…
t3dotgg Jul 31, 2026
ef4ec2a
fix(server): self-update no longer rolls itself back on restart (#5095)
t3dotgg Jul 31, 2026
ab8182c
fix(ci): rotate iPad showcase captures without Simulator UI scripting…
juliusmarminge Jul 31, 2026
acf761b
feat(web): render terminals with libghostty-vt (#4860)
StiensWout Jul 31, 2026
964cc27
refactor: move the canonical libghostty-vt vendor to the repository r…
StiensWout Jul 31, 2026
a041981
feat(mobile): add thread snoozing (#5053)
gabrielelpidio Jul 31, 2026
916cff7
feat(mobile): make settled threads collapsible (#5056)
PixPMusic Jul 31, 2026
03adf21
follow-up normalization after #4700. (#4498)
shivamhwp Jul 31, 2026
bfc3150
feat(web): search threads from the sidebar (#4769)
shivamhwp Jul 31, 2026
e5c7547
feat(web): add settings sidebar search (#4682)
shivamhwp Jul 31, 2026
491219b
fix: threads with open PRs no longer auto-settle (#5151)
t3dotgg Jul 31, 2026
ca72e38
fix(server): bound thread catch-up replay and stop full-DB snapshot h…
t3dotgg Jul 31, 2026
0ad91b6
fix(server): follow branch drift in dedicated worktrees so PRs link t…
t3dotgg Aug 1, 2026
d303706
fix(server): make remote updates rollback-safe (#5181)
t3dotgg Aug 1, 2026
78eb3ec
fix(web): stop settle controls overlapping the status label (#4574)
ipanasenko Aug 1, 2026
283c7ac
fix: normalize app icon glyph sizing (#5202)
t3-code[bot] Aug 1, 2026
5192f77
fix(server): surface cloudflared FTL/PNC relay logs as warnings, not …
arhxam Aug 1, 2026
64bf016
fix(server): stop npx service updates from silently leaving the old s…
t3dotgg Aug 2, 2026
e60821f
feat: fold legacy models into separate menus (#5190)
t3dotgg Aug 2, 2026
69dfb7f
fix(desktop): claim the t3code:// scheme default on Linux at startup …
juliusmarminge Aug 2, 2026
30c9622
fix(web): polish interface spacing (#5252)
maria-rcks Aug 3, 2026
6f04a5c
fix(desktop): Niri/Hyprland - Linux secret storage backend (#2916)
mwolson Aug 3, 2026
a261a64
fix(web): match loading screen to dark theme (#5303)
t3-code[bot] Aug 3, 2026
11639bf
fix(web): blink the terminal cursor again (#5314)
StiensWout Aug 4, 2026
5538672
fix(terminal): protect held Ctrl/Cmd+W close shortcut (#5322)
StiensWout Aug 4, 2026
1cbd88a
fix(server): strip replayable terminal queries from history (#5319)
StiensWout Aug 4, 2026
966cc05
fix(contracts): decode ServerProviders forward-compatibly (#5327)
Brechard Aug 4, 2026
25ec0b9
fix(web): simplify chat code blocks (#5301)
t3-code[bot] Aug 4, 2026
cec1bb9
fix(web): align multiline error alert controls (#5304)
t3-code[bot] Aug 4, 2026
2b1d4fe
Upgrade Effect to beta.103 (#5331)
juliusmarminge Aug 4, 2026
8a16cad
fix(web): increase tooltip z-index to overlay popovers and menus (#5326)
naMqe-h Aug 4, 2026
82b76e2
fix(server): use a Cursor todo's title when its content is blank (#5073)
arhxam Aug 4, 2026
37ae1ab
fix(ssh): isolate managed tunnel processes (#4347)
nateEc Aug 4, 2026
c30a6d9
fix(server): scrub AppImage XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR fr…
arhxam Aug 4, 2026
94331c5
fix(mobile): show correct provider icons for Grok, Cursor, and OpenCo…
Wraient Aug 4, 2026
90e3778
fix(web): stop the chat timeline reading through the provider status …
Bil0000 Aug 4, 2026
36caf34
fix(desktop,web): contain renderer memory growth and recover from ren…
t3dotgg Aug 4, 2026
d7950ac
fix(server): generate durable thread titles (#5357)
t3dotgg Aug 4, 2026
4fb03af
fix(web): better right panel (new diffs styling) (#5260)
maria-rcks Aug 4, 2026
9bd2a4c
fix(server): keep regenerated titles on topic (#5365)
t3dotgg Aug 4, 2026
2fa1fec
refactor(server): make title prompts plaintext (#5368)
t3dotgg Aug 4, 2026
8eca200
feat(web): configurable fonts and sizes under Settings → Appearance (…
StiensWout Aug 4, 2026
da6e1a9
feat(sidebar-v2): thread pinning for sidebar v2 (#5312)
t3dotgg Aug 4, 2026
fff6a5b
feat(web): make pairing QR codes actually scannable, with endpoint ch…
t3dotgg Aug 4, 2026
94696b0
fix(desktop,web): improve in-app browser shortcuts and URL behavior (…
t3dotgg Aug 5, 2026
7537adc
fix(web): prevent legacy model picker layout shift (#5349)
FllipEis Aug 5, 2026
7b38fb5
fix(server): allow remote updates with database migrations (#5374)
t3dotgg Aug 5, 2026
3d42966
fix(mcp): unblock Kimi models in OpenCode with preview tools (#5128)
hwanseoc Aug 5, 2026
41ebf22
fix(web): clear main branch lint warnings (#5384)
t3dotgg Aug 5, 2026
47dfc65
fix(mobile): preserve grouped project workspaces (#4642)
shivamhwp Aug 5, 2026
70de6e1
fix(mobile): prevent Android thread search crash (#5386)
shivamhwp Aug 5, 2026
3c5bdb8
fix(web): truncate long project switcher names (#5348)
FllipEis Aug 5, 2026
e0c85a2
fix(mobile): avoid double dividers between thread sections (#5391)
shivamhwp Aug 5, 2026
9235c83
fix(web): keep the composer command menu anchored to the composer (#5…
StiensWout Aug 5, 2026
9d9a872
fix(web): restore terminal link hover styles (#5382)
StiensWout Aug 5, 2026
9697b76
fix(ci): isolate releases from shared API rate limits (#5394)
t3dotgg Aug 5, 2026
37d3667
fix(web): keep model picker shortcuts in sync (#5400)
t3dotgg Aug 5, 2026
2a04db1
fix(web): keep terminal font settings reliable (#5397)
StiensWout Aug 5, 2026
de592a0
Enrich terminal font previews (#5428)
juliusmarminge Aug 5, 2026
30e4715
fix(web): preserve terminal font size when splitting (#5444)
t3-code[bot] Aug 5, 2026
7251f1a
Prevent terminal loading flash (#5432)
juliusmarminge Aug 5, 2026
990bb0b
fix: reconnect faster after remote server updates (#5404)
t3dotgg Aug 6, 2026
a2ca89a
feat: native subagent & workflow observability (#5219)
t3dotgg Aug 6, 2026
3da315e
perf(server): stop shipping full MCP tool results in thread payloads …
t3dotgg Aug 6, 2026
1ffba70
fix(web): closed plan sidebar stays closed when returning to a thread…
t3dotgg Aug 6, 2026
a483337
fix: respect time format for sidebar snooze (#4438)
huxcrux Aug 6, 2026
80720ad
fix(web): calm one-row server update status and banner
t3dotgg Aug 5, 2026
808d685
fix(server): keep the managed tunnel across remote update restarts
t3dotgg Aug 6, 2026
8f341f2
test(server): use the launcher state writer in release tests
t3dotgg Aug 6, 2026
f9e8236
fix(server): release the tunnel when an explicit stop interrupts an u…
t3dotgg Aug 6, 2026
df2f127
fix(server): clean up interrupted update trials
t3dotgg Aug 6, 2026
8b2ea57
fix(server): order explicit service shutdown
t3dotgg Aug 6, 2026
48e2c27
fix(web): make update version tooltips accessible
t3dotgg Aug 6, 2026
64a3cd6
fix(server): separate trial cleanup from handoff retention
t3dotgg Aug 6, 2026
b7d1981
fix(server): drop superseded tool updates from snapshots
t3dotgg Aug 6, 2026
e4abc31
docs(server): pin interleaved-collapse divergence as intentional with…
t3dotgg Aug 6, 2026
ab3b55e
fix(web): clarify auto permission fallback (#5431)
t3-code[bot] Aug 6, 2026
99d91dd
fix(acp): keep unknown approvals actionable (#5430)
t3-code[bot] Aug 6, 2026
470d4eb
fix(mobile): stop thread messages reading through pending cards (#5450)
carlosricojr Aug 6, 2026
aa16c18
fix(web): align composer inline chips with prompt text (#5495)
StiensWout Aug 6, 2026
4f5834b
fix(web): clear woke state on explicit thread actions (#5486)
StiensWout Aug 6, 2026
331c6dc
fix(server): skip origin fetch when creating worktrees in repos witho…
t3dotgg Aug 7, 2026
ea50b69
fix(web): update tooltip no longer dismisses when scrolling release n…
t3dotgg Aug 7, 2026
0ec4fbc
fix(server): stop showing commit/push/PR notices as errors in the wor…
t3dotgg Aug 7, 2026
64a991a
fix(web): show remote environment for non-Git projects (#5555)
t3dotgg Aug 7, 2026
c471145
fix(server): stopping a Claude thread no longer shows an ede_diagnost…
t3dotgg Aug 7, 2026
6da9224
fix(web): show one toast when snoozing threads in bulk (#5560)
t3dotgg Aug 7, 2026
7aad791
fix(server): let stopped threads settle immediately (#5553)
t3dotgg Aug 7, 2026
6b73b3d
feat: paginate thread loading with user-anchored turn windows (#5493)
t3dotgg Aug 7, 2026
ae7b27d
fix: prevent reconnect loops during server stalls (#5561)
gfsaaser24 Aug 7, 2026
6fa4576
fix(server): settle stopped Claude subagents (#5568)
t3dotgg Aug 7, 2026
1c7d059
fix: scrolling up during a running thread no longer snaps back to the…
t3dotgg Aug 7, 2026
9547cf2
fix(server): one disconnecting client no longer blocks every reconnec…
t3dotgg Aug 7, 2026
ddfe45c
test(server): catch client transfer regressions in CI (#5350)
t3dotgg Aug 7, 2026
2288d41
fix(web): stop the "requests are slow" warning from firing on every p…
t3dotgg Aug 7, 2026
cf5c994
fix(web): keep agent panel rows stable (#5569)
t3dotgg Aug 7, 2026
4a07c1c
docs: ship production T3 Connect public config in .env.example (#5573)
t3dotgg Aug 7, 2026
a8cd2ad
fix(web): plans stop hijacking the UI, fold into chat instead (#5558)
t3dotgg Aug 7, 2026
48aa875
feat(web): remove Build/Plan toggle from the composer (#5551)
t3dotgg Aug 7, 2026
95305c3
feat(web): per-device provider settings (#4479)
t3dotgg Aug 7, 2026
b98a0f0
fix(mobile): invisible T3 Connect devices can now be seen and removed…
t3dotgg Aug 7, 2026
220efad
fix: add missing space before 'GitHub releases page' link on download…
Mateleo Aug 7, 2026
3ffe84f
fix(web): stop the sidebar "Working" label from pulsing (#5580)
t3dotgg Aug 7, 2026
85b1734
feat(web): add modular theme library (#5226)
StiensWout Aug 7, 2026
23f0a1a
fix(web): reading a thread clears Done; Woke is dismissible (#5579)
t3dotgg Aug 7, 2026
388b43a
perf(dev): faster cold-start for dev web serving (#5584)
t3dotgg Aug 7, 2026
a1762fd
fix(dev): Improve instructions for --share (#5586)
t3dotgg Aug 7, 2026
8100062
fix(mobile): improve keyboard avoiding (#5451)
jmeistrich Aug 7, 2026
2e66b1f
fix(web): live background-work banner no longer hides behind the upda…
t3dotgg Aug 7, 2026
b792ed9
fix(web): stabilize chat timeline positioning (#5449)
jmeistrich Aug 7, 2026
7963cc7
feat(server): record runtime mode per turn and on mode changes (#5593)
t3dotgg Aug 7, 2026
b2ee17d
feat(web): thread actions from the chat header title (#5592)
t3dotgg Aug 7, 2026
a17459e
fix(mobile): avoid iOS terminal reset on clear (#5440)
justynleung Aug 7, 2026
33a03c8
fix(mobile): pad scroll views above Android nav bar (#5415)
StoneCotton Aug 7, 2026
bd422fd
fix(mobile): keep Android chat text from showing through the composer…
PollyGlot Aug 7, 2026
af281c9
fix(mobile): repair Clerk auth navigation headers (#5140)
gabrielelpidio Aug 7, 2026
bfc69e4
Bump mobile app version to 1.0.2 (#5588)
juliusmarminge Aug 7, 2026
61b51ae
feat(web): click the pin icon to unpin a thread (#5578)
UtkarshUsername Aug 7, 2026
239ef1c
fix(web): show the correctly matching shortcut in new thread button's…
UtkarshUsername Aug 7, 2026
be1a836
chore(release): prepare v0.0.32
t3-code[bot] Aug 7, 2026
6d70e6d
fix(mobile): reconnects no longer shift the thread list (#5372)
t3dotgg Aug 7, 2026
5661c61
feat(web): drag pinned threads into your own order (#5581)
t3dotgg Aug 7, 2026
e2cd238
chore(ci): vouch StiensWout (#5637)
t3-code[bot] Aug 7, 2026
72d673a
feat(desktop): remember recently used sites in the Browser panel (#5270)
chrisdeeming Aug 7, 2026
82406bc
chore: vouch chrisdeeming (#5641)
t3-code[bot] Aug 7, 2026
f0fb406
feat(web): make sidebar artwork theme-aware (#5636)
maria-rcks Aug 7, 2026
7a84f6c
fix(web): reconnect the composer seam for remote non-Git projects (#5…
caezium Aug 7, 2026
45d9aa9
fix(web): show Stop button while input is pending (#5554)
ipanasenko Aug 7, 2026
31891a1
feat(web): fold plan mode and token-by-token output into Legacy featu…
t3dotgg Aug 8, 2026
0de9540
feat: sidebar v2 is now the default sidebar (#5672)
t3dotgg Aug 8, 2026
4eaf5ef
fix(server): stop PR status lookups amplifying GitHub rate limits (#5…
t3dotgg Aug 8, 2026
ed886fe
fix(web): delay transient reconnect warnings (#5670)
t3-code[bot] Aug 8, 2026
daf8ee0
fix(web): inherit terminal size in simple typography (#5628)
chrisdeeming Aug 8, 2026
2c7267a
fix(server): stop the reaper from silently killing live background su…
t3dotgg Aug 8, 2026
0640410
fix(desktop): zoom shortcuts no longer die when the preview browser h…
t3dotgg Aug 8, 2026
30164cb
feat(mobile): one sheet for model and thread settings (#5625)
t3dotgg Aug 8, 2026
8101cd0
feat(usage): usage page reading provider transcripts across environme…
t3dotgg Aug 8, 2026
a20923c
fix(web): usage chart no longer makes Claude look like the bigger spe…
t3dotgg Aug 8, 2026
89ee692
fix(web): persist diff view mode (#5731)
leorivastech Aug 8, 2026
c2f8cb7
feat(web): show how many subagents are running at a glance (#5745)
t3dotgg Aug 8, 2026
be01b28
fix(web): add missing cursor-pointer styling to dropdowns and interac…
naMqe-h Aug 9, 2026
e70cdb4
fix(server): stop Claude resume handshakes from completing turns that…
gfsaaser24 Aug 9, 2026
49964e3
chore: vouch gfsaaser24 (#5761)
t3dotgg Aug 9, 2026
7b2cf43
chore: vouch saphid (#5763)
t3dotgg Aug 9, 2026
89c320d
fix(server): stop Codex threads with queued follow-ups (#5762)
t3dotgg Aug 9, 2026
70c423a
fix(web): usage page loses the cost quality panel, gains a back butto…
t3dotgg Aug 9, 2026
a6c9b41
feat(server): agents can now open the images you paste into chat (#5757)
t3dotgg Aug 9, 2026
5208bde
fix(web): pinned reorder no longer reshuffles while writes land (#5767)
t3dotgg Aug 9, 2026
288d8e3
feat(web): overhaul project settings into a real settings page (#5768)
t3dotgg Aug 9, 2026
886195e
fix(web): usage totals no longer jump while devices report in (#5772)
t3dotgg Aug 9, 2026
5bb8c03
fix(server): settle no longer leaves monitors and dev servers running…
t3dotgg Aug 9, 2026
6dbffa0
feat: pick worktree or current checkout per project (#5766)
t3dotgg Aug 9, 2026
6f69b44
fix(web): sidebar rows show the branch again, not a truncated plan st…
t3dotgg Aug 9, 2026
ddaa6af
feat(server): vp run migrate-dev-db seeds worktree dev dbs with real …
t3dotgg Aug 9, 2026
05eb051
feat(web): keep unsent drafts one click away in the sidebar (#5777)
t3dotgg Aug 9, 2026
076e904
feat(web): project icons can be chosen manually (#5775)
t3dotgg Aug 9, 2026
ba9c9ae
fix(server): one greedy agent process no longer takes down the whole …
t3dotgg Aug 9, 2026
963ebf5
ci: label-gated hosted-web preview deploys (#5465)
t3dotgg Aug 9, 2026
1a003e3
Add cross-platform mobile usage dashboard (#5743)
juliusmarminge Aug 9, 2026
1d4f59b
merge upstream main (2026-08-09 big-bang sync)
wizzoapp[bot] Aug 9, 2026
1529ff4
fix repository agent context symlink
wizzoapp[bot] Aug 9, 2026
a70f186
fix hosted desktop build after upstream sync
wizzoapp[bot] Aug 9, 2026
ef6f8b1
fix credentialed PWA build probe
wizzoapp[bot] Aug 9, 2026
15eb9ac
ci: use fork-supported runners
wizzoapp[bot] Aug 10, 2026
28949e6
fix(ci): resolve post-sync deterministic failures
wizzoapp[bot] Aug 10, 2026
3dd6668
test(ci): align release assertions with upstream
wizzoapp[bot] Aug 10, 2026
b0d3c7a
test(web): budget slow image compression case
wizzoapp[bot] Aug 10, 2026
e58d6ad
ci: size aggregate test budget for fork runners
wizzoapp[bot] Aug 11, 2026
cfcebae
fix(server): restore atomic git ref snapshots
wizzoapp[bot] Aug 11, 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.
1 change: 0 additions & 1 deletion .agents/skills/linear-issue-fix

This file was deleted.

1 change: 0 additions & 1 deletion .agents/skills/report-t3-bug

This file was deleted.

1 change: 0 additions & 1 deletion .agents/skills/t3-e2e-testing

This file was deleted.

1 change: 0 additions & 1 deletion .agents/skills/t3-test-server

This file was deleted.

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."
2 changes: 1 addition & 1 deletion .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
1 change: 1 addition & 0 deletions .claude
1 change: 0 additions & 1 deletion .claude/skills/test-t3-app

This file was deleted.

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
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ body:
- apps/web
- apps/server
- apps/desktop
- apps/mobile
- packages/contracts or packages/shared
- Build, CI, or release tooling
- Docs
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ body:
- apps/web
- apps/server
- apps/desktop
- apps/mobile
- packages/contracts or packages/shared
- Build, CI, or release tooling
- Docs
Expand Down
39 changes: 39 additions & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Trust list for this repository.
#
# External contributors listed here are treated as trusted by the vouch
# workflow. Collaborators with write access are automatically trusted and
# do not need to be duplicated in this file.
#
# Syntax:
# github:username
# -github:username reason for denouncement
#
# Keep entries sorted alphabetically.
github:adityavardhansharma
github:binbandit
github:chrisdeeming
github:chuks-qua
github:cursoragent
github:gbarros-dev
github:gfsaaser24
github:github-actions[bot]
github:hwanseoc
github:jamesx0416
github:jasonLaster
github:JoeEverest
github:maria-rcks
github:nmggithub
github:Noojuno
github:notkainoa
github:PatrickBauer
github:realAhmedRoach
github:saphid
github:shiroyasha9
github:StiensWout
github:Yash-Singh1
github:eggfriedrice24
github:Ymit24
github:shivamhwp
github:jappyjan
github:justsomelegs
github:UtkarshUsername
Loading
Loading