Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1254 commits
Select commit Hold shift + click to select a range
afff0d3
fix(clients): answer history no longer shows provider context from re…
juliusmarminge Nov 13, 2026
274474d
fix(server): refresh sync status after agent merges (#35919)
Yash-Singh1 Nov 13, 2026
7556047
fix(web): copying an image with a spaced path keeps it an image (#35914)
juliusmarminge Nov 13, 2026
2e0bd97
fix(server): Force stop no longer tears down a queued follow-up that …
juliusmarminge Nov 13, 2026
5f7bfe5
fix(azure-devops): TF400733 throttling fails diffs as rate-limited (#…
juliusmarminge Nov 13, 2026
ed5afae
fix(acp): v2 tool updates clear nulled fields and replace raw input (…
juliusmarminge Nov 13, 2026
004f7a7
fix(server): interrupted SSH device bootstrap no longer leaks its for…
juliusmarminge Nov 13, 2026
bedc865
fix(mobile): Files search no longer carries into another workspace (#…
juliusmarminge Nov 13, 2026
b62e80e
fix(web): copying an alert callout keeps its alert Markdown (#35932)
juliusmarminge Nov 13, 2026
0a333a6
fix(server): Codex shadow home shares the instance environment CODEX_…
juliusmarminge Nov 13, 2026
97cfc07
fix(preview): remote viewers recover from stalled first captures (#25…
juliusmarminge Nov 13, 2026
0c4b1d8
fix(server): new turns wait for overlapping checkpoint file restores …
juliusmarminge Nov 13, 2026
67d91a0
fix(server): preview_navigate returns the committed page when load is…
juliusmarminge Nov 13, 2026
ec91827
fix(server): unchanged-worktree cleanup waits for the thread to settl…
juliusmarminge Nov 13, 2026
ff1eead
fix(web): zoom shortcuts work while a desktop browser page has focus …
juliusmarminge Nov 13, 2026
0b12767
fix(server): ACP threads accept a model change after their session de…
juliusmarminge Nov 13, 2026
b2078c2
fix(server): service launcher keeps a T3 home that ends in a space (#…
juliusmarminge Nov 13, 2026
99224f0
fix(server): launcher repoints the unit the systemd manager loads (#3…
juliusmarminge Nov 13, 2026
0f5ecef
fix(server): refuse a Linux service for a T3 home systemd cannot load…
juliusmarminge Nov 13, 2026
b7a224c
perf(server): sending, editing and steering queued messages no longer…
juliusmarminge Nov 13, 2026
8fe745d
fix(server): Codex protocol records go to the log of the thread they …
juliusmarminge Nov 13, 2026
c54e5b3
fix(cli): service.env updates keep quoted multiline values intact (#3…
juliusmarminge Nov 13, 2026
a621be8
fix(web): open code blocks and diffs follow a changed word wrap defau…
juliusmarminge Nov 13, 2026
e018563
fix(desktop): keep WSL distros whose names start or end with a dot or…
juliusmarminge Nov 13, 2026
43ce395
test: run clock-free live tests on TestClock (#35868)
juliusmarminge Nov 13, 2026
939b288
fix(server): SSH device test rejects Node below agent-device's 22.12 …
juliusmarminge Nov 13, 2026
cc92740
fix(server): Simlock renewals no longer exceed the gateway's lease TT…
juliusmarminge Nov 13, 2026
ee64555
test: drop Effect.scoped wrappers that @effect/vitest already applies…
juliusmarminge Nov 13, 2026
d06ba27
fix(device): Simlock viewer stops retrying an ended lease and keeps i…
juliusmarminge Nov 13, 2026
15d1ef5
fix(server): Stop waits for the turn to settle instead of polling (#3…
juliusmarminge Nov 13, 2026
a32cdde
ci: label issues from vouched and denounced authors, denounce coygeek…
juliusmarminge Nov 13, 2026
f9cadcc
fix(scripts): dev runner ignores the parent T3 server's port and host…
juliusmarminge Nov 13, 2026
0b0a61a
perf(server): reduce allocation while reading usage history (#36009)
StiensWout Nov 13, 2026
2cb56cb
fix(web): terminal paste keeps a leading U+FEFF without bracketed pas…
juliusmarminge Nov 13, 2026
c29c26a
fix(server): BEL inside a DCS no longer ends it in terminal history (…
juliusmarminge Nov 13, 2026
431e53f
fix(server): terminal history drops the ESC Z identity query (#36024)
juliusmarminge Nov 13, 2026
2432ee1
test(server): blocked pointer-file scan test waits for the unblocked …
juliusmarminge Nov 13, 2026
1acee5b
fix(web): terminal OSC 8 file URIs open the file they name (#36025)
juliusmarminge Nov 13, 2026
73e49aa
fix(server): terminal history strips queries with embedded controls (…
juliusmarminge Nov 13, 2026
0af8be3
fix(mobile): pasted images over the size limit attach instead of vani…
juliusmarminge Nov 13, 2026
7179113
fix(mobile): Android terminal resizes the engine when only the cell s…
juliusmarminge Nov 13, 2026
6237824
fix(server): t3_thread_read results fit MCP clients' output limit (#3…
juliusmarminge Nov 13, 2026
3376c8d
fix(desktop): AppImage t3 shim no longer grows the CLI compile cache …
juliusmarminge Nov 13, 2026
d63c0ec
ci: agent context budget runs are no longer cancelled by label bursts…
juliusmarminge Nov 13, 2026
2dd207a
fix(server): a decoded U+009C no longer ends an OSC string in termina…
juliusmarminge Nov 13, 2026
a2be070
fix(server): speech worker no longer segfaults when the backend dies …
juliusmarminge Nov 13, 2026
5f85768
fix(codex): image items identified by fileId are no longer dropped (#…
juliusmarminge Nov 13, 2026
4596872
perf(server): linked-thread counts update when links change instead o…
juliusmarminge Nov 13, 2026
60f70d9
fix(scripts): scenarios reach the screen and say why they could not r…
juliusmarminge Nov 13, 2026
38c3b56
docs: AGENTS.md and the FAQ list Pi, Muse Code, Kiro, and fx (#33906)
only21mil Nov 13, 2026
b80531d
fix(web): PR Code tab previews images the host sends no patch for (#3…
juliusmarminge Nov 13, 2026
31b5549
fix(web): pull request comment tooltips follow the Time format settin…
juliusmarminge Nov 13, 2026
56e58a9
fix(server): repository identity honors the gh default remote (#21574)
juliusmarminge Nov 13, 2026
c28c6ac
fix(server): a rejected non-fast-forward push explains itself under a…
juliusmarminge Nov 13, 2026
8cb55fa
fix(web): provider rows select from anywhere in the row (#32537)
juliusmarminge Nov 13, 2026
fb2e5a0
fix(client-runtime): imported threads that never ran no longer sit in…
juliusmarminge Nov 13, 2026
dd7918e
fix(web,mobile): MCP app calls keep their tool row and result beside …
juliusmarminge Nov 13, 2026
0902adc
fix(forgejo): tea API failures keep Gitea's reason (#32244)
juliusmarminge Nov 13, 2026
e4025c8
fix(server): reap recorded Linux Claude survivors before recovery (#2…
juliusmarminge Nov 13, 2026
08544ba
fix(web): open documents no longer reload after every agent command (…
juliusmarminge Nov 13, 2026
84efa01
fix(desktop): AppImage quit no longer leaves zygotes running on an un…
juliusmarminge Nov 13, 2026
4225c9d
fix(server): a message sent after a stopped worktree setup waits inst…
Gourav224 Nov 13, 2026
7e1a058
test(server): terminal checkout test waits for the refresh's last eve…
juliusmarminge Nov 13, 2026
290182d
fix(provider-core): Vite+ provider updates respect npm's release-age …
juliusmarminge Nov 13, 2026
6790f85
fix(web): point pairing copy at Sharing & access (#27692)
PedroNavHur Nov 13, 2026
5f69cac
fix(web): turn diffs cut off at the size limit say changes are incomp…
juliusmarminge Nov 13, 2026
082a3e3
fix(web): narrow-window right panel dialog is named Workspace panel (…
juliusmarminge Nov 13, 2026
eb7e63a
fix(server): thread reads preview linked PRs and list_thread_pull_req…
juliusmarminge Nov 13, 2026
74573fc
fix(web): new project publish option tells screen readers whether it …
juliusmarminge Nov 13, 2026
ed05c0e
fix(server): preview drag moves the mouse during the drag (#36096)
juliusmarminge Nov 13, 2026
bd7d264
fix(server): a fresh-session scheduled run no longer takes over the t…
juliusmarminge Nov 13, 2026
10fbff5
fix(server): deferred-steer check and queued cancel no longer read a …
juliusmarminge Nov 13, 2026
21b0b7a
fix(composer): keep reviews from different Git hosts in suggestions (…
saphitv Nov 13, 2026
ed7e501
fix(web): terminal "Add to chat" now adds to a queued message being e…
juliusmarminge Nov 13, 2026
a044f0c
fix(mobile): a final answer followed by more work in the same run sta…
juliusmarminge Nov 13, 2026
fa9d85f
fix(web): a server updated with the app reconnects as soon as it is r…
Bil0000 Nov 13, 2026
7903b48
fix(acp): Copilot runs end when its reply is done, not when its async…
juliusmarminge Nov 13, 2026
08be782
fix(server): a link forgotten mid-resolve says it is not linked (#36132)
juliusmarminge Nov 13, 2026
4aec277
fix(server): t3_queue and handoff analytics no longer read a thread's…
juliusmarminge Nov 13, 2026
2d8a843
perf(server): shell reads of a worktree or family no longer parse eve…
juliusmarminge Nov 13, 2026
c7a3f02
fix(desktop): Local environment off survives an unreadable value in d…
juliusmarminge Nov 13, 2026
095611d
fix(mobile): a sub-agent opened from its parent on a narrow iPad keep…
juliusmarminge Nov 13, 2026
8610b31
fix(server): Codex usage answering after three seconds is no longer d…
juliusmarminge Nov 13, 2026
9a35ab0
fix(mobile): iOS terminal font and theme changes no longer replay out…
shivamhwp Nov 13, 2026
f313d0a
fix(server): stop device daemon alongside slow hub shutdown (#33566)
shivamhwp Nov 13, 2026
3ac8b1f
fix(acp): bound unread notification retention by size (#23217)
juliusmarminge Nov 13, 2026
00f617d
fix(client-runtime): recover subscriptions that stop on a healthy con…
juliusmarminge Nov 13, 2026
e419417
fix(server): stopping the service during the pre-update backup ends t…
juliusmarminge Nov 13, 2026
928dd04
fix(server): preview browser downloads Chrome 157.0.8103.78 with its …
juliusmarminge Nov 13, 2026
d0957bc
fix(opencode): restarted server stops an orphaned OpenCode server sta…
juliusmarminge Nov 13, 2026
c398b46
fix(server): Codex text generation runs when launch args define an MC…
juliusmarminge Nov 13, 2026
759e649
fix(server): agent recordings keep up with the page instead of the en…
juliusmarminge Nov 13, 2026
9b6dde9
fix(server): session import finds compressed Codex rollouts (#34947)
juliusmarminge Nov 13, 2026
148612e
fix(opencode): usage scans reuse unchanged rows and run off the event…
juliusmarminge Nov 13, 2026
d3ef7e8
fix(cursor): send the catalog's default model parameters on every Cur…
juliusmarminge Nov 13, 2026
0568a63
fix(server): agents point to Settings → Labs when the link tools are …
juliusmarminge Nov 13, 2026
139ec80
fix(server): Claude no longer dispatches skill mentions from handoff …
juliusmarminge Nov 13, 2026
4b316fd
fix(web): clear deleted checkout labels from the sidebar (#25063)
juliusmarminge Nov 13, 2026
4582a3b
fix(server): MacPorts-owned agent CLIs are no longer updated through …
juliusmarminge Nov 13, 2026
286eeea
test(desktop): AppImage shim test no longer writes into its temp dir …
juliusmarminge Nov 13, 2026
f62fa29
fix(web): Add to another machine can find ignored files past the firs…
juliusmarminge Nov 13, 2026
b5c0ee5
fix(mobile): Android Back from Pulls or Usage returns to Threads (#36…
juliusmarminge Nov 13, 2026
d19467a
fix(server): a thread visit stores only its read state (#36233)
juliusmarminge Nov 13, 2026
5cbdf00
fix(web): mostly vertical trackpad scrolls no longer navigate back or…
juliusmarminge Nov 13, 2026
8bf0dc4
fix(opencode): a resumed task subagent's turn no longer collides with…
juliusmarminge Nov 13, 2026
a4a8c61
fix(server): preview click, hover and drag survive a target replaced …
juliusmarminge Nov 13, 2026
0f13d63
fix(browser): Stop cancels loading pages (#29475)
voltcrash Nov 13, 2026
713731f
fix(server): a timed-out preview call no longer evicts the shared ser…
juliusmarminge Nov 13, 2026
5aea99a
fix(server): turns recreate a worktree folder that lost its checkout …
juliusmarminge Nov 13, 2026
beb528c
fix(server): queued scheduled deliveries follow the thread's current …
Ali-Al1 Nov 13, 2026
350753a
fix(usage): Claude accounts with a $0 monthly cap no longer leave a b…
cardoso-neto Nov 13, 2026
93aaad5
fix(web): PR conversation headers wrap instead of overflowing (#36211)
BeLazy167 Nov 13, 2026
c5dfb8f
fix(mobile): new thread starts in the thread list's filtered project …
juliusmarminge Nov 13, 2026
a877d40
fix(opencode): models load once OpenCode 2 finishes activating its pl…
juliusmarminge Nov 13, 2026
497aac2
fix(server): include Cursor team usage in account history (#36237)
Yash-Singh1 Nov 13, 2026
764c047
fix(web): terminal TypeScript links preserve error locations (#36174)
saphitv Nov 13, 2026
79dd6d7
fix(web): terminal TypeScript links preserve error locations (#36174)
saphitv Nov 13, 2026
daed1dd
fix(server): a follow-up delegated task waits for the subagents its c…
juliusmarminge Nov 13, 2026
9b5d997
fix(opencode): native forks no longer multiply usage (#23120)
juliusmarminge Nov 13, 2026
d70bfe6
fix(server): a send to a thread whose worktree can't be recreated now…
juliusmarminge Nov 13, 2026
1ea5236
fix(mobile): HTML file previews play video inline on iPhone (#32343)
juliusmarminge Nov 13, 2026
2953fda
fix(server): Antigravity skill bodies no longer exhaust the skill sca…
juliusmarminge Nov 13, 2026
76d0fff
fix(server): include symlinks in workspace search (#24578)
juliusmarminge Nov 13, 2026
7ab4650
fix(mobile): Work on PR keeps its worktree when switching machines (#…
juliusmarminge Nov 13, 2026
a09e54a
fix(server): proxied usage limits take their reset time from the CLIP…
juliusmarminge Nov 13, 2026
2d5e0ae
fix(server): session import brings in the linked-worktree sessions th…
juliusmarminge Nov 13, 2026
571b319
fix(server): a remote delegated task no longer stays running when its…
juliusmarminge Nov 13, 2026
445d32c
fix(server): preview clicks fail within their timeout and say why (#3…
juliusmarminge Nov 13, 2026
daed91f
fix(shared): batch SQLite worker result transfers (#36067)
Yash-Singh1 Nov 13, 2026
78b654f
fix(server): Stop clears a finished delegated child's row held by a s…
juliusmarminge Nov 13, 2026
ff30b16
fix(desktop): clicking above the Settings or Usage modal closes it ag…
juliusmarminge Nov 13, 2026
065aca4
test(web): code block highlight test waits for the highlighter, not a…
juliusmarminge Nov 13, 2026
be5f805
fix(web): new desktop browser tabs open at the default zoom and appea…
juliusmarminge Nov 13, 2026
8cd8a3c
fix(server): file search no longer freezes the server while fff's wat…
juliusmarminge Nov 13, 2026
8171cd0
fix(desktop): mouse back and forward stay inside the browser tab (#33…
juliusmarminge Nov 13, 2026
fcd0687
fix(web): removing a checkout moves its open draft to a remaining che…
juliusmarminge Nov 13, 2026
9efd960
fix(mobile): a Settings link sent to the running app opens the Settin…
juliusmarminge Nov 13, 2026
c83e78f
fix(web): Shift+Return after closed inline code or bold starts a plai…
juliusmarminge Nov 13, 2026
e94db17
fix(mobile): adding a folder that is already a project opens it (#34942)
juliusmarminge Nov 13, 2026
41e69ff
fix(contracts): agents keep working after starting an async delegate …
juliusmarminge Nov 13, 2026
1a4a299
fix(server): reverting to a checkpoint restores skip-worktree files (…
juliusmarminge Nov 13, 2026
66ec370
fix(shared): hosted thread URLs inside other links stay as written (#…
juliusmarminge Nov 13, 2026
c165587
fix(provider-cursor): Cursor threads report token usage and context f…
juliusmarminge Nov 13, 2026
3521634
fix(server): review diffs no longer read oversized untracked files (#…
juliusmarminge Nov 13, 2026
fa6326b
fix(web): closing a composer menu on a touch tablet no longer opens t…
juliusmarminge Nov 13, 2026
ca6e09c
fix(mobile): Duo feed scroll indicator stays left of the vertical bar…
juliusmarminge Nov 13, 2026
7bd9134
fix(server): turn diffs follow branch switches (#36343)
juliusmarminge Nov 13, 2026
b009582
fix(web): picking the previous branch after an outside checkout switc…
juliusmarminge Nov 13, 2026
0c28045
fix(server): systemd service starts again after its start limit tripp…
juliusmarminge Nov 13, 2026
eb81855
fix(server): branches in a fork checkout no longer show the fork main…
juliusmarminge Nov 13, 2026
f8dc37d
fix(web): floating preview resize holds its shape and ends when inter…
juliusmarminge Nov 13, 2026
250d372
fix(web): images in expanded tool rows page through the group's viewe…
juliusmarminge Nov 13, 2026
6bb9b7b
fix(web): auto-settle days save when the edit is finished, not on eve…
juliusmarminge Nov 13, 2026
e07585e
fix(desktop): AppImage updates keep their filename (#36306)
juliusmarminge Nov 13, 2026
51e1346
fix(relay): an iPad no longer gets a Done alert for every unrelated p…
juliusmarminge Nov 13, 2026
96a4d2f
fix(web): pasted URLs and paths keep their underscores (#36363)
juliusmarminge Nov 13, 2026
af28467
fix(mobile): reference links resolve across folds and artifact cards …
juliusmarminge Nov 13, 2026
4115648
fix(server): a folder that only holds a repository's worktrees is ref…
juliusmarminge Nov 13, 2026
65e4272
fix(server): a hung network mount no longer freezes the server when i…
juliusmarminge Nov 13, 2026
cfc71e1
fix(web): preview annotations in question answers reach the agent wit…
juliusmarminge Nov 13, 2026
1721f18
fix(web): clearing a running terminal keeps its screen and input mode…
juliusmarminge Nov 13, 2026
1da05a8
fix(server): a default branch the remote deleted no longer starts wor…
juliusmarminge Nov 13, 2026
38072bd
fix(desktop): new tabs the agent opens from links no longer steal com…
juliusmarminge Nov 13, 2026
9a455f0
fix(ssh): a renamed SSH connection keeps managing its remote server (…
juliusmarminge Nov 13, 2026
af9b4e4
fix(server): a worktree handoff on Claude or Pi completes its run and…
juliusmarminge Nov 13, 2026
0a6b3eb
fix(forgejo): Gitea branch PR lookups no longer read the whole pull r…
juliusmarminge Nov 13, 2026
9402dc3
fix(checkpoint): fetched upstream commits no longer show as agent cha…
juliusmarminge Nov 13, 2026
d772115
fix(server): terminal history keeps text after a CSI cut off by non-A…
juliusmarminge Nov 13, 2026
7ea6db4
fix(web): a mounted chat view no longer keeps every thread copy it re…
juliusmarminge Nov 13, 2026
b5b4705
fix(server): a Codex Stop that never completes offers Force stop (#36…
juliusmarminge Nov 13, 2026
0517d15
fix(web): provider sign-in links only open web addresses (#36392)
juliusmarminge Nov 13, 2026
aab388d
fix(server): Claude can show the user mid-turn text in full (#36384)
juliusmarminge Nov 13, 2026
9f94a87
fix(cli): tagged source builds report the release version (#36350)
juliusmarminge Nov 13, 2026
0b5f35c
fix(server): storage cleanup prunes idle No project folders under ~/.…
juliusmarminge Nov 13, 2026
93cbca3
fix(terminal): trimmed history no longer replays half of a control se…
juliusmarminge Nov 13, 2026
9ced4f1
fix(usage): a re-emitted Codex snapshot is no longer billed as a coun…
juliusmarminge Nov 13, 2026
931cd3a
fix(server): a Claude Monitor line no longer wakes a delegated child'…
juliusmarminge Nov 13, 2026
b35819c
fix(opencode): a lost subagent report no longer leaves a resumed call…
juliusmarminge Nov 13, 2026
bc7fe11
fix(web): a new worktree thread opened during a clone bases on the re…
juliusmarminge Nov 13, 2026
4ee3b60
fix(server): unauthenticated token requests no longer write DPoP repl…
juliusmarminge Nov 13, 2026
94aa3d7
fix(server): other sites can no longer frame the web app (#36395)
juliusmarminge Nov 13, 2026
5df5b44
fix(server): a server browser tab survives a renderer crash, and a se…
juliusmarminge Nov 13, 2026
1219f62
fix(web): T3 Connect sign-in offers Retry after Clerk fails to load (…
juliusmarminge Nov 13, 2026
dd2678d
fix(ci): macOS PR previews no longer run the PR's bundle next to sign…
juliusmarminge Nov 13, 2026
134ab31
fix(mobile): a new thread's first message no longer returns to the co…
juliusmarminge Nov 13, 2026
48cdefe
fix(web): size markdown media whose width and height carry a px unit …
juliusmarminge Nov 13, 2026
36f011d
fix(web): file links the agent cited from a checkout it cd'd into ope…
juliusmarminge Nov 13, 2026
70b0529
ci(mobile): iOS jobs run on macos-27, store builds require the final …
juliusmarminge Nov 13, 2026
5f95653
fix(server): Claude context meter no longer shows an auto-compact poi…
juliusmarminge Nov 13, 2026
c8db8be
fix(web): a run waiting on foreground subagents says so instead of Th…
juliusmarminge Nov 13, 2026
aaa3dba
fix(server): a follow-up to a delegated child waits for its awaited b…
juliusmarminge Nov 13, 2026
08b8689
fix(provider-grok): Grok follow-ups queue instead of cancelling the r…
juliusmarminge Nov 13, 2026
b537916
fix(server): thread list builds metadata only for the page it returns…
juliusmarminge Nov 13, 2026
3c1be11
fix(web): middle-clicking empty chat space on Linux no longer pastes …
juliusmarminge Nov 13, 2026
ab9e6a2
fix(web): closing Settings no longer leaves it as a back/forward stop…
juliusmarminge Nov 13, 2026
eb14ddb
fix(opencode): OpenCode 1.x threads report context-window usage (#36430)
juliusmarminge Nov 13, 2026
2d68968
fix(web): bare @ in the composer lists workspace files (#36435)
juliusmarminge Nov 13, 2026
6b47939
fix(mobile): thread list project filter lists recently active project…
juliusmarminge Nov 13, 2026
2d80cb6
fix(clients): live working timers count on the host's clock (#36420)
juliusmarminge Nov 13, 2026
770028f
perf(relay): lighter Postgres load and PS-160 cluster (#36442)
juliusmarminge Nov 13, 2026
a6d9140
fix(mobile): mobile:install --session works on pooled devices (#36447)
juliusmarminge Nov 13, 2026
9d8998b
fix(native): KDE SnapShot no longer loses the first reply from KWin (…
t3dotgg Nov 14, 2026
6689a04
fix(server): t3 connect status no longer reports a publish-only link …
juliusmarminge Nov 14, 2026
7ae21bf
fix(web): don't label Windows paths outside the workspace as relative…
ValeraZSD Nov 14, 2026
6bce222
fix(server): multi-line guest messages are no longer refused or store…
juliusmarminge Nov 14, 2026
88d4d06
perf(desktop): provider checks no longer compete with server startup …
t3dotgg Nov 14, 2026
cf382b0
fix(web,mobile): explain missing file access for host videos (#24637)
juliusmarminge Nov 14, 2026
44fefbc
fix(scripts): iOS scenarios prepare the dev client before leasing a d…
juliusmarminge Nov 14, 2026
4bab2f3
perf(server): a new thread's first turn starts sooner (#35710)
t3dotgg Nov 14, 2026
f5ae808
fix(provider-pi): running shell output no longer stores a snapshot ro…
juliusmarminge Nov 14, 2026
2a1caac
fix(web): NVDA browse mode reads the current thread's branch, not the…
nibarAhmed Nov 14, 2026
99e10f0
fix(server): T3 Connect clients are named "T3 Connect", not "T3 Conne…
juliusmarminge Nov 14, 2026
cbf0f0a
fix(web): screen readers read the Update everything machine list as a…
juliusmarminge Nov 14, 2026
42057b8
feat: agents can restyle T3 Code with theme colors and CSS (#35247)
t3dotgg Nov 14, 2026
e4f066d
fix(mobile): long-pressed iOS blockquotes no longer draw over the thr…
juliusmarminge Nov 14, 2026
9a4ec17
fix(cli): npm launcher no longer leaves a runtime running after a sto…
juliusmarminge Nov 14, 2026
a2edd28
feat(connect): require approval for new T3 Connect devices (#36419)
juliusmarminge Nov 14, 2026
ca1a028
fix(server): run the Azure CLI in UTF-8 on Windows (#25801)
PHSebastiao Nov 14, 2026
a37715c
fix(server): preview navigation leaves a page whose script never yiel…
juliusmarminge Nov 14, 2026
2a468ac
fix(server): the auto-settle sweep no longer rereads every idle branc…
juliusmarminge Nov 14, 2026
dea07a1
fix(web): rewind no longer offers file restore in project-folder thre…
juliusmarminge Nov 14, 2026
913181c
fix(server): stop the relay client a crashed server left running (#36…
juliusmarminge Nov 14, 2026
a7fd432
fix(server): read Azure DevOps pull request templates (#22881)
juliusmarminge Nov 14, 2026
67699df
perf(azure-devops): PR Code tab loads a page's files in one az run in…
Kieren-Foenander Nov 14, 2026
a9fd0b2
fix(web): copying a file preview selection returns the selected lines…
juliusmarminge Nov 14, 2026
da7ebc2
fix(mobile): push-token failures no longer report notifications as en…
juliusmarminge Nov 14, 2026
e371543
fix(provider-core): mise updates a tool configured by its backend nam…
juliusmarminge Nov 14, 2026
2a21f41
fix(server): parent turns no longer duplicate delegated task thread i…
juliusmarminge Nov 14, 2026
6fe782c
fix(server): Windows drive paths open under WSL (#26030)
juliusmarminge Nov 14, 2026
757f71a
fix(client-runtime): new T3 Connect machines appear without signing i…
juliusmarminge Nov 14, 2026
83ee1f5
fix(azure-devops): local pull request checkout no longer fails on --d…
Tabonx Nov 14, 2026
525f5b2
fix(usage): count shared Windows and WSL transcripts once (#24319)
juliusmarminge Nov 14, 2026
1a12c4a
fix(azure-devops): pull requests report build validation as checks (#…
Tabonx Nov 14, 2026
e5835c9
fix(desktop): WSL backend starts in distros without automounted drive…
juliusmarminge Nov 14, 2026
db2cc20
fix(server): t3 browser setup reloads an AppArmor profile that is on …
juliusmarminge Nov 14, 2026
44a8e95
fix(web): model settings no longer re-render every row on each star, …
juliusmarminge Nov 14, 2026
3ea253f
fix(server): suppress redundant keybindings change emission on unchan…
playlikeboy Nov 14, 2026
4c76857
fix(web): clicking a label in an inline HTML render no longer jumps t…
juliusmarminge Nov 14, 2026
37714a8
perf(desktop): revealing a file on Windows no longer waits on PowerSh…
lyn1dev Nov 14, 2026
0aeb945
fix(acp): preserve Windows shim stdio pipes (#30544)
ElliotDrel Nov 14, 2026
fcf50ff
fix(connect): T3 Connect recovers when its tunnel is routed to a dead…
ishaanko Nov 14, 2026
6bc105f
fix(editors): find JetBrains IDEs whose Toolbox script is named idea1…
only21mil Nov 14, 2026
580b526
fix(server): respect the default Windows file manager (#28205)
prov3ntus Nov 14, 2026
34cf030
fix(web): pull requests error names the environment that failed (#27882)
juliusmarminge Nov 14, 2026
eea9d15
fix(desktop): Windows folders dropped on a WSL backend insert their W…
juliusmarminge Nov 14, 2026
be78ee4
fix(server): stopping an agent's server no longer wakes Codex as if i…
juliusmarminge Nov 14, 2026
d9619ad
fix(web): stop offering T3 Connect routes for the desktop's own WSL b…
juliusmarminge Nov 14, 2026
a472342
fix(web): screen readers no longer say "Message" twice entering the c…
nibarAhmed Nov 14, 2026
a35fd81
fix(server): settlement sweep reads quiet open pull requests every 5 …
juliusmarminge Nov 14, 2026
1c4cf3a
Merge upstream/main into collin/main (fork sync 2026-11-14)
collissimo Nov 14, 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
  •  
  •  
  •  
61 changes: 31 additions & 30 deletions .agents/skills/contribution-triage/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,12 @@ from evidence you could not access. Do not run untrusted PR code merely to decid
Read the guide's linked sections before applying these checks. Inspect enough source to substantiate
scope and behavioral claims; leave the full correctness, security, and performance audit to code review.

- Under [prior approval](../../../CONTRIBUTING.md#prior-approval), identify the actual failure and
intended behavior. Inspect maintainer responses in the linked issue or discussion, including what
direction and scope they approved. A link, label, or acknowledgment alone is not approval. Judge a
claimed obvious-bug exception by purpose, impact, and necessary changes, without numeric cutoffs.
Separately assess focused configuration of an established capability: identify what already exists,
what the option controls, and its effects and necessary scope. This route does not require a proven
obvious bug. Adding a setting alone establishes neither a new feature nor an approval exemption.
- Under [fix a bug](../../../CONTRIBUTING.md#prior-approval), identify the actual failure and
intended behavior. A feature, or anything on the guide's not-interested list, warrants closure
unless a maintainer in the trusted exemption list asked for that PR. Inspect the request and the
direction and scope it covers. A link, label, or acknowledgment alone is not a request. Judge a
claimed bug fix by purpose, impact, and necessary changes, without numeric cutoffs. A setting that
adds a workflow or changes a default is a feature.
Check whether an alleged fix intentionally changes product behavior or overlooks an existing workflow.
Preserve any useful documentation, onboarding, or discoverability problem when declining the solution.
- Under [one problem](../../../CONTRIBUTING.md#one-problem), trace how each material change contributes
Expand All @@ -90,27 +89,18 @@ scope and behavioral claims; leave the full correctness, security, and performan
as the guide requires them. Do not demand unrelated evidence or repo-wide tests. An unavailable local
platform does not defeat adequate contributor evidence. Do not infer fabrication or AI authorship
from writing style, suspicion, or a check you cannot reproduce.
- Under [models](../../../CONTRIBUTING.md#models), use only the model and harness the PR names,
usually in its closing attribution line.

### Configuration and workflow examples

- Hosting CLI-path configuration in [#11653](https://github.com/pingdotgg/t3code/pull/11653) is eligible
for deeper review under the maintainer's ruling: it makes an existing capability configurable.
It need not qualify as an obvious-bug repair or obtain prior feature approval on that basis.
Still assess one underlying problem, necessary scope and credible verification. Deeper review can
reject the configuration mechanism or its implementation.
- Preserving Files as an independent tab in [#14436](https://github.com/pingdotgg/t3code/pull/14436)
changes tab lifetime and navigation. The maintainer classified it as a broader workflow change
requiring prior product-direction approval, which is absent. Propose closure for missing approval
in a dry run, or carry out closure in authorized enforcement. Its good evidence does not make it
eligible or justify keeping it pending after that ruling. The remedy is to obtain scope approval.

Use these examples to distinguish effects, not to exempt every configuration option. Apply current
trusted policy and reassess changed submission evidence; neither example grants permanent eligibility.
Bans in the guide are a maintainer decision. Report suspected spam to maintainers; do not ban or
threaten a ban.

## Apply the outcome

Do not automatically close a PR if a maintainer in the trusted `TRIAGE_EXEMPTIONS.td` list has
commented or submitted a review, including on earlier heads, or if `triage:keep-open` is present.
Comments that triage itself posted, such as an earlier notice or question, are not maintainer
involvement, even when they were posted from a maintainer's account on that maintainer's behalf.
Leave protected PRs open for maintainer decision. This does not grant an author exemption,
eligibility, or review approval.

Expand All @@ -126,20 +116,30 @@ comment text but do not write to GitHub. Keep the eligibility finding separate f
This is a routing exception, not a claim that the PR passed eligibility or correctness review.
- **Closure warranted.** The assessment is complete and establishes a specific policy violation.
Prepare a clear explanation under [closure and reconsideration](../../../CONTRIBUTING.md#closure-and-reconsideration),
post it, and close the PR. Verify that the explanation is present and the PR is closed. The comment
post it, then read the repository variable `PR_LIMITS_ENFORCE`
(`gh variable get PR_LIMITS_ENFORCE -R pingdotgg/t3code`). When it prints `true`, apply
`triage:closing` as the last thing you do to the PR, verify that the explanation and the label
are present, and do not close the PR yourself:
[pr-limits.yml](../../../.github/workflows/pr-limits.yml) closes it 72 hours after the label. Any
activity on the PR after the label, including a further comment or label from you, removes the
label; treat an author's reply or push as new evidence, reassess, and apply the label again only
if the finding still holds. When the command prints any other value, or fails saying the variable
was not found, the variable is off and nothing would close a labeled PR: close it yourself and
verify that the explanation is present and the PR is closed. Only another failure, such as a
permission error, means the variable cannot be read; then report the closure as incomplete. The comment
must name the violated rule, cite supporting submission evidence, link the maintained guide section,
and give a concrete remedy. Missing contributor evidence can warrant closure; explain what must be
established. Missing product approval calls for maintainer discussion, not an agent's product decision.
established. The remedy for a feature is an Ideas discussion, not an agent's product decision.
Close for multiple problems only when the independence of those changes is supported. Closing a PR
does not require a configured Macroscope label.
- **Needs explanation or maintainer decision.** Name the unresolved question and who can resolve it.
Post the specific question on the PR when commenting is within the authorized scope, and verify it
was posted. If tracing the source leaves an extra diff's necessity unclear, request the causal
explanation needed. If established facts leave a product-direction choice to maintainers, identify
that choice. Leave the PR open and pending that answer; do not mark it eligible. Do not substitute
"the agent was uncertain" for a violated rule. Once maintainers establish that a workflow change
requires approval and that approval is absent, apply the closure outcome instead of retaining a
pending classification. Good verification does not cure missing approval.
"the agent was uncertain" for a violated rule. Once a change is established as a feature with no
maintainer request, apply the closure outcome instead of retaining a pending classification. Good
verification does not make a feature eligible.
- **Incomplete; retry required.** State the failed retrieval, missing access, truncated diff, or unfinished
assessment and what is needed to resume. Do not convert operational failures into policy violations
or hand the PR off as having passed. An inaccessible artifact is different from an omitted artifact.
Expand Down Expand Up @@ -173,9 +173,10 @@ description, evidence, approvals, existing triage comments, PR open/closed state
label when relevant. Reassess changes that could invalidate the finding. Reuse an existing explanation
only if it still matches the current finding; avoid duplicate comments, closures, or label applications.

For closure, establish that the required explanation is posted before closing. If posting fails or its
result is ambiguous, read back the comments before retrying or proceeding. If the comment succeeds but
closure fails, preserve the comment and retry only the unfinished closure after checking current state.
For closure, establish that the required explanation is posted before applying `triage:closing` or
closing. If posting fails or its result is ambiguous, read back the comments before retrying or
proceeding. If the comment succeeds but the label or the closure fails, preserve the comment and retry
only that unfinished step after checking current state.
Handle a failed or ambiguous label application the same way: inspect labels before any retry. If access
or state still cannot be verified, report an incomplete action and the step needed to resume. Do not
retry blindly or claim success for an unverified action.
Expand Down
13 changes: 9 additions & 4 deletions .agents/skills/test-t3-mobile/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,15 @@ prints one JSON line; on failure it names the next command. Mobile verification
includes that step unless the user prohibits it.

For a device you opened in an agent-device session elsewhere (a device pool,
cloud, or remote host), run `vp run mobile:install <ios|android> --session <s>`
from the directory you opened the session in. It installs the cached build into
that session (`--abi arm64-v8a` for an ARM Android device; `--metro <url>` also
opens it against Metro) and never builds.
cloud, or remote host), run `vp run mobile:install <ios|android> --session <s>
--config <file>` from the directory you opened the session in, passing the
`--config` file from `device_open`'s `targetArgs`. Without it, a device pool's
gateway refuses the install, wrongly saying agent-device is too old. It installs
the cached build into that session (`--abi arm64-v8a` for an ARM Android device;
pool Android emulators are x86_64, the default; `--metro <url>` also opens it
against Metro). Without a cached build for this checkout it builds first, which can
outlast the lease, so run `vp run mobile:install <ios|android> --prepare` (with
the same `--abi`) before you open the device.

Start `vp run dev:client` from `apps/mobile`, or reuse a healthy Metro belonging
to this checkout. Open its printed development-client URL with AgentDevice
Expand Down
2 changes: 2 additions & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ github:btsouth
github:cestercian
github:chrisdeeming
github:chuks-qua
-github:coygeek Filed over 270 automated issues, about 50 a day at peak, far past what maintainers can triage
github:cursoragent
github:D3OXY
github:dbalders
Expand Down Expand Up @@ -83,6 +84,7 @@ github:tris203
github:tsouth89
github:UtkarshUsername
github:vitalyiegorov
-github:wSedlacek Opened over 130 unapproved PRs in 12 days, far past the open PR limit
github:Yash-Singh1
github:yashranaway
github:Ymit24
Expand Down
12 changes: 6 additions & 6 deletions .github/actions/setup-ci-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ runs:
- name: Cache Vite+
id: vp_cache
if: steps.vp.outputs.version != ''
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.vite-plus
key: vite-plus-home-v2-${{ runner.os }}-${{ runner.arch }}-${{ steps.vp.outputs.version }}-node${{ steps.vp.outputs.node }}-${{ steps.vp.outputs.pnpm }}
Expand All @@ -56,7 +56,7 @@ runs:
# partial bytes, so a shorter limit costs a slow download only a retry.
- name: Setup Vite+
if: steps.vp_cache.outputs.cache-hit != 'true'
uses: voidzero-dev/setup-vp@250f29ce396baf5e8f24498e17c0dfdebabc26eb # v1
uses: voidzero-dev/setup-vp@250f29ce396baf5e8f24498e17c0dfdebabc26eb # v1.15.0
env:
VP_DOWNLOAD_TIMEOUT: "120"
with:
Expand Down Expand Up @@ -92,7 +92,7 @@ runs:
- name: Restore pnpm store
id: pnpm_cache
if: inputs.install == 'true'
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm_store.outputs.path }}
key: pnpm-${{ steps.pnpm_store.outputs.namespace }}-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json') }}
Expand All @@ -106,7 +106,7 @@ runs:
- name: Restore lockfile verification
id: pnpm_verified
if: inputs.install == 'true'
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm_store.outputs.verified }}
key: pnpm-verified-v1-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json') }}
Expand All @@ -121,7 +121,7 @@ runs:

- name: Save lockfile verification
if: inputs.install == 'true' && steps.pnpm_verified.outputs.cache-hit != 'true'
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm_store.outputs.verified }}
key: ${{ steps.pnpm_verified.outputs.cache-primary-key }}
Expand All @@ -138,7 +138,7 @@ runs:
steps.pnpm_cache.outputs.cache-hit != 'true' &&
(steps.pnpm_store.outputs.namespace == 'full' ||
steps.pnpm_cache.outputs.cache-matched-key != format('pnpm-full-v1-{0}-{1}-{2}', runner.os, runner.arch, hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json')))
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm_store.outputs.path }}
key: ${{ steps.pnpm_cache.outputs.cache-primary-key }}
Expand Down
15 changes: 5 additions & 10 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,11 @@ reproduction steps or environment where relevant. -->
<!-- Explain how this fixes the problem. If it spans components or clients,
explain why those changes are needed for the same fix. Split independent fixes. -->

## Scope and approval

<!-- Link the triaged bug issue or the discussion with explicit maintainer approval
of direction and scope, including the approval comment. For a very small, focused
fix of an obvious bug, explain why it qualifies without a prior issue or discussion.
For focused configuration of an established capability, explain what already exists,
what the option controls, and why its effects stay within that capability. Adding a
setting alone is not a new feature or an approval exemption; broader workflow or
behavior changes still need approval. Scope and verification requirements still apply.
There is no line-count or file-count cutoff. -->
## Scope

<!-- We accept bug fixes, not features. Link the issue that shows the bug. For a
small fix of an obvious bug, say why it needs no issue. If a maintainer asked for
this PR, link the request. -->

## Verification

Expand Down
Binary file added .github/readme/hero.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions .github/scripts/check-nightly-release.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,54 @@ async function resolveLatestNightlyCommit({ github, context, core }) {
return { tag, sha: commit.sha, version };
}

// The two places a nightly install looks for an update: the `update-feed` pointer, and
// releases.atom, which holds the 10 newest git tags of any kind. Older installs take the first
// nightly in the feed. Reports what each names beside the newest published nightly.
async function readNightlyUpdateFeed({ github, context, fetch = globalThis.fetch }) {
const latest = await findLatestNightly({ github, context });
if (!latest) return {};

const base = `https://github.com/${context.repo.owner}/${context.repo.repo}`;
// Only a missing or malformed pointer is stale. Rewriting deletes the old file first, so a
// GitHub outage must not look like one.
// Node waits five minutes for a stalled response, which is this job's whole time limit.
const signal = () => AbortSignal.timeout(30_000);
const pointer = await fetch(`${base}/releases/download/update-feed/nightly.json`, {
signal: signal(),
});
if (!pointer.ok && pointer.status !== 404) {
throw new Error(`The update-feed pointer answered HTTP ${pointer.status}.`);
}
let pointerTag;
if (pointer.ok) {
// A body that fails to arrive throws here; only one that is not JSON counts as malformed.
const body = await pointer.text();
try {
pointerTag = JSON.parse(body)?.tag_name;
} catch {}
}

// An unreadable feed leaves `feedTags` unset, so the pointer is still repaired. An error page
// can answer HTTP 200, so only an Atom document counts as read.
let feedTags;
try {
const feed = await fetch(`${base}/releases.atom`, { signal: signal() });
const body = feed.ok ? await feed.text() : "";
if (/<feed[\s>]/.test(body)) {
feedTags = Array.from(body.matchAll(/href="[^"]*\/releases\/tag\/([^"]+)"/g), (match) =>
decodeURIComponent(match[1]),
);
}
} catch {}
const feedNightly = feedTags?.find((tag) => /^v?\d+\.\d+\.\d+-nightly\./.test(tag));

return { tag: latest.tagName, pointerTag, feedNightly, feedTags };
}

module.exports = {
assertCommitOnDefaultBranch,
assertReleaseSource,
shouldReleaseNightly,
resolveLatestNightlyCommit,
readNightlyUpdateFeed,
};
Loading
Loading