Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2201 commits
Select commit Hold shift + click to select a range
9f01c58
fix(server): preserve antigravity ipv6 startup diagnostics (#15629)
maria-rcks Oct 20, 2026
c8e2407
fix(relay): preserve provisioning failure stage in client errors (#14…
ECuteri Oct 20, 2026
0d10c36
fix(server): older probes no longer overwrite live usage limits (#18723)
bitmvk Oct 20, 2026
b14120f
fix(threads): preserve snooze when an existing run completes (#17118)
yasinkavakli Oct 20, 2026
984df7f
fix(preview): preserve actionable native capture errors (#17244)
Quicksaver Oct 20, 2026
353d8c5
fix(server): refuse to share a T3 home with an older background servi…
arun279 Oct 20, 2026
8f947a3
fix(server): queued preview actions no longer start after their deadl…
hogeheer499-commits Oct 20, 2026
77ed46a
fix(web): keep composer toolbar visible after worktree failure (#14753)
t3dotgg Oct 20, 2026
310f80f
fix(desktop): align bundled versions with the artifact version (#12768)
rohan-patnaik Oct 20, 2026
acf7043
fix(web): project settings no longer dead-ends on environments withou…
5knnbdwm Oct 20, 2026
7e10144
fix(web): scrolling over an inline HTML render no longer snaps back t…
josephv123 Oct 20, 2026
d1cac66
fix(server): an idle terminal no longer scans the process table every…
tiliakoos Oct 20, 2026
2e8b5b9
fix(server): desktop-drawn preview snapshots match the page's scale a…
ScottN-PV Oct 20, 2026
cefe45b
fix(web): returning to a thread no longer jumps to its pull request t…
sairajchouhan Oct 20, 2026
2d62f7d
fix(server): Claude subagents resumed after a missed launch get their…
Gigioxx Oct 20, 2026
78d095a
fix(opencode): keep workspace commands retryable after probe timeouts…
Marve10s Oct 20, 2026
0c39430
fix(server): rolling back a Claude fork's first run keeps its inherit…
fixfon Oct 20, 2026
acf5f3b
fix(server): onboarding offers worktrees of a bare repository (#16688)
chris-allen Oct 20, 2026
a3635a1
fix(server): a slow server update download no longer fails at a 10-mi…
Marve10s Oct 20, 2026
b0ed393
fix(clients): show Waiting when a turn waits on another thread (#21500)
juliusmarminge Oct 20, 2026
3a69f7a
fix(web): keep subagent links visible in long background-work banners…
ThreshHNS Oct 20, 2026
03fe16a
fix: ~/ file links open in the file panel for projects outside the ho…
AngeloTadeucci Oct 20, 2026
ab638a6
fix(web): opening a just-created thread no longer bounces to the star…
Fr4nzz Oct 20, 2026
6b2188a
fix(server): re-inject T3 instructions into ACP sessions after compac…
antonsxh Oct 20, 2026
055a841
fix(web): terminal drawer no longer pushes the composer into the head…
rywible Oct 20, 2026
d1066d2
fix(server): GitHub only offers auto-merge when it can wait (#19947)
PiquelChips Oct 20, 2026
6e45544
fix(server): stop caching failed or signed-out Claude usage probes (#…
saphid Oct 20, 2026
ec967f3
fix(server): run_scheduled_task_now returns the thread the run launch…
sbansal1999 Oct 20, 2026
8c8e187
fix(pi): fork and revert past turns whose session entry was never cap…
henrychu04 Oct 20, 2026
c154d41
fix(web): use the draft appearance when highlighting code (#18827)
saphid Oct 20, 2026
eca0e05
fix(web): interrupted SSH pairing retries reuse unfinished setup (#19…
im-kvijay Oct 20, 2026
a9af48a
fix(web,mobile): no pending handoff for a provider the next send woul…
JaiiR320 Oct 20, 2026
4af6618
fix(web): pass sshTarget to resolveRemoteOpenState (#22144)
juliusmarminge Oct 20, 2026
d243b09
fix(server): recover missing initial Codex usage tiers (#21899)
juliusmarminge Oct 20, 2026
3819eb3
fix(desktop): saved connections survive the Beta rename on macOS and …
jeprecated Oct 20, 2026
3b7d39e
fix(mobile): new threads reuse the worktree that already holds a bran…
shivamhwp Oct 20, 2026
d445fdb
fix(desktop): restart prompt returns after relaunching with a downloa…
RakshithBhat03 Oct 20, 2026
9257b10
fix(server): threads swept by old desktop builds show their real sett…
shivamhwp Oct 20, 2026
35086ee
fix(web): edit from here works after a previous rewind (#18982)
voltcrash Oct 20, 2026
0b84aa3
fix(claude): honor effective bypass restrictions (#21806)
juliusmarminge Oct 20, 2026
ba47b16
fix(github): read pull requests when GitHub refuses a requested revie…
ScottN-PV Oct 20, 2026
3c18818
fix(desktop): capture fresh pixels from background previews (#19931)
Quicksaver Oct 20, 2026
f8bcc3c
fix(server): queued PR updates follow the takeover provider (#21314)
voltcrash Oct 20, 2026
09548f6
fix(server): retain Codex authentication when discovery times out (#2…
ScottN-PV Oct 20, 2026
888a6a0
fix(server): include thread context in generated pull requests (#18291)
luhagel Oct 20, 2026
4de822c
fix(desktop): let lifecycle shutdown finish before exiting (#20303)
spencermorris04 Oct 20, 2026
bda042a
fix(server): subagent task updates reach Claude task lists (#20985)
TonybynMp4 Oct 20, 2026
71b2ac4
fix(server): pull requests load for credentials that cannot read /use…
LannyBose Oct 20, 2026
cfa6944
fix(gitlab): show authentication and rate-limit errors from activity …
saphid Oct 20, 2026
a752363
fix(provider-muse): workflow child approvals no longer flash in full …
ScottN-PV Oct 20, 2026
5d3875d
feat(server): compact idle Claude threads before the prompt cache exp…
t3dotgg Oct 20, 2026
31be0c4
fix(web): diff panel keeps collapsed files when switching right-panel…
JaiiR320 Oct 20, 2026
adda1db
fix(web): remember the pull request tab when switching threads (#18823)
SamuelBarnholdt Oct 20, 2026
115e405
fix(desktop): avoid temporary icon copies on Linux launches (#19589)
only21mil Oct 20, 2026
5b15a64
test(server): skip the flaky viewport capture test added by #19913 (#…
juliusmarminge Oct 20, 2026
44f977f
feat(server): let MCP agents inspect thread diffs and respond to appr…
maria-rcks Oct 20, 2026
2777514
fix(mobile): don't send or paste attached threads a machine can't rea…
NikitaMGrimm Oct 20, 2026
4296624
fix(acp): Droid answers no longer cancel AskUser (#20417)
travelvector Oct 20, 2026
8c51e4e
fix(server): Claude append-system-prompt launch arguments reach the m…
only21mil Oct 20, 2026
c2b127f
fix(claude): discover enabled installed plugin skills (#15662)
maria-rcks Oct 20, 2026
2bc2d80
revert: #15464 (MCP agents respond to approvals) (#22152)
juliusmarminge Oct 20, 2026
70a869d
fix(web): keep review thread replies with their finding in pull reque…
MarconLP Oct 20, 2026
23b550d
fix(vcs): stop Check out here from discarding local pull request work…
saphid Oct 20, 2026
a5b3de0
fix(acp): Antigravity html_render pages show in the thread (#19796)
neo-clon Oct 20, 2026
2767012
fix(composer): drafts follow model changes made on other clients (#20…
none23 Oct 20, 2026
1ba3c78
fix(web): Claude task lists stay in the composer between turns (#18392)
TonybynMp4 Oct 20, 2026
9482773
fix(server): coalesce queued shell updates for slow clients (#14859)
maria-rcks Oct 20, 2026
571d3bc
fix(server): viewport capture test waits for the requested size, not …
juliusmarminge Oct 20, 2026
aac2865
fix(server): OpenCode 2 turns show provider retries instead of silent…
nexxeln Oct 20, 2026
801dbf6
fix(server): persist run failures after storage recovers (#19646)
Alb11747 Oct 20, 2026
8866e8f
fix(web): align composer chip cleanup with undo history (#18466)
Gigioxx Oct 20, 2026
f57cfe1
fix(clients): copy filesystem paths with native separators (#19201)
tonyjosephsebastians Oct 20, 2026
bce474e
fix(web): constrain minimap highlights to visible rows (#16191)
UtkarshUsername Oct 20, 2026
b874ff6
fix(web): SnapShots taken during a question attach to that question (…
tiliakoos Oct 20, 2026
04ab2fc
fix(acp): explain rejected model selections (#19699)
StiensWout Oct 20, 2026
5d2406b
fix(web): release orphaned diff comment drafts (#18430)
saphid Oct 20, 2026
ce2815d
fix(server): re-read stack layers for every member when the stack gro…
only21mil Oct 20, 2026
b39f456
fix(server): Homebrew installs no longer run brew info with update ch…
tris203 Oct 20, 2026
ec736e3
test(server): skip the viewport capture test again, still flaky after…
juliusmarminge Oct 20, 2026
4836fa7
test(web): make the favicon picker offscreen-preview test determinist…
juliusmarminge Oct 20, 2026
069e63b
fix(web): VCS status refresh no longer trips the slow-request toast (…
t3dotgg Oct 20, 2026
03bc6b8
fix: repair fork seams after the upstream 2026-10-19 merge
bk-agent-01 Oct 20, 2026
3c74ea2
Merge origin/stage (#330) into the upstream merge branch
bk-agent-01 Oct 20, 2026
b232fa9
fix(desktop): grant camera and microphone entitlements to the signed …
t3dotgg Oct 20, 2026
4f5ff17
fix(server): deliver subagent results without history handoffs (#22117)
juliusmarminge Oct 20, 2026
1efe762
chore(mobile): upgrade Uniwind to 1.13.0 (#22173)
Brentlok Oct 20, 2026
02b899b
fix(web): keep draft project names readable (#22177)
Yash-Singh1 Oct 20, 2026
b69703c
fix(server): verify the native display viewport capture without a win…
juliusmarminge Oct 20, 2026
bc515df
Merge upstream pingdotgg/t3code main (069e63b117) into stage
bk-agent-01 Oct 20, 2026
d9e54c6
chore: mark fork edits displaced by the upstream merge
bk-agent-01 Oct 20, 2026
e009276
fix(connect): show which part of a T3 Connect connection failed and h…
t3dotgg Oct 20, 2026
e287582
feat(server): analytics records a stable install id and who owns each…
t3dotgg Oct 20, 2026
5a86fe4
fix(mobile): Android no longer freezes when you go back from a runnin…
shivamhwp Oct 20, 2026
effb433
feat(web,server): add a project to another machine from Run on, .env …
t3dotgg Oct 20, 2026
e5c6083
fix(mobile): thread links long-press to Open thread or Copy link (#22…
flamboh Oct 20, 2026
83e0f7a
refactor(server): device hosts own their device operations (#21835)
juliusmarminge Oct 20, 2026
6dc63bd
feat(device): stream iOS devices that serve WebRTC only (#21841)
juliusmarminge Oct 20, 2026
c273a8f
feat(contracts): device hosts as a tagged union with EAS hosts (#21842)
juliusmarminge Oct 20, 2026
99209c7
feat(server): Expo credentials, EAS Simulator API, and EAS project lo…
juliusmarminge Oct 20, 2026
aee25ac
feat(server): EAS Simulator device hosts (#21844)
juliusmarminge Oct 20, 2026
d18352e
feat(web): set up EAS Simulator hosts in Settings (#21846)
juliusmarminge Oct 20, 2026
92a6f6d
feat(web): show how much of a PR is code vs tests, mocks, and generat…
t3dotgg Oct 20, 2026
500a52e
fix(web): HTML visualizations show their full height instead of cropp…
t3dotgg Oct 20, 2026
d3415f3
fix(mobile): skill chips in messages open their instructions (#22120)
flamboh Oct 20, 2026
b7b53d4
fix(server): preview downloads no longer echo data: URL contents (#22…
juliusmarminge Oct 20, 2026
72bdf1e
perf(web): pre-bundle startup chunks when a shared dev server starts …
t3dotgg Oct 20, 2026
91d7bf3
feat(connect): t3 connect checks that other devices can reach this ma…
t3dotgg Oct 20, 2026
d2fb83a
fix(threads): snoozed threads stay hidden through background wakes (#…
t3dotgg Oct 20, 2026
41b513d
revert: "fix(desktop): saved connections survive the Beta rename on m…
juliusmarminge Oct 20, 2026
2d11196
revert: "fix(web): pinned thread marker stays put when hovering the r…
t3dotgg Oct 20, 2026
8fc72da
revert: fourteen unverified desktop fixes from the takeover campaign …
juliusmarminge Oct 20, 2026
90c3f83
revert: "fix(web): worktree threads warn when the checkout branch cha…
t3dotgg Oct 20, 2026
b14ae64
fix(ci): recover from transient download and stale report failures (#…
t3dotgg Oct 20, 2026
8eafe05
revert: "fix(clients): show question option previews" (#21933) (#22229)
t3dotgg Oct 20, 2026
818f096
revert: "fix(web): stop composer banner glass overlap" (#8034) (#22227)
t3dotgg Oct 20, 2026
bd65988
revert: "fix(web): keep subagent links visible in long background-wor…
t3dotgg Oct 20, 2026
86729b4
revert: "fix(scheduler): label fixed-time tasks with the server timez…
t3dotgg Oct 20, 2026
23dd7e7
revert: "fix(web): preserve snapshot thumbnail context and detail" (#…
t3dotgg Oct 20, 2026
5547d7c
revert: "fix(web): show idle server updates on environment controls" …
t3dotgg Oct 20, 2026
45ad8d9
fix(client): a frozen host no longer shows a heartbeat as slow or bla…
t3dotgg Oct 20, 2026
d7bc3a2
feat(server,web,mobile): a host that drops because it froze now says …
t3dotgg Oct 20, 2026
774c6c1
revert(web): restore grouped projects in the new thread selector (#22…
t3dotgg Oct 20, 2026
729c56c
test(ssh): wait for server exit during handover (#22252)
t3dotgg Oct 20, 2026
54346a6
fix(web,server): adding a project to another machine takes you there,…
t3dotgg Oct 20, 2026
962428d
feat(clients): every PR +/- shows its code, tests, and docs split, wi…
t3dotgg Oct 20, 2026
30afc56
test(web): isolate diff worker idle clock (#22259)
t3dotgg Oct 20, 2026
e9a5974
ci(release): build macOS desktop on GitHub macos-26-xlarge runners (#…
t3dotgg Oct 20, 2026
d36b7da
fix(desktop): macOS release signing works on macOS 26.6 runners (#22277)
t3dotgg Oct 20, 2026
67c0fc0
fix(web): pinned threads' pin icon stays put on hover (#22303)
t3dotgg Oct 20, 2026
72ebd98
fix(web): show pointer cursors on changed-file controls (#22266)
UtkarshUsername Oct 20, 2026
b5a0696
fix(web): use the shared markdown scrollbar width (#22200)
UtkarshUsername Oct 20, 2026
573d376
revert: limit bars with many accounts no longer clip names to one let…
juliusmarminge Oct 20, 2026
8ecb607
fix(mobile): pin expo-modules-core so the release smoke patch stays i…
Project516 Oct 20, 2026
2b28b46
fix(server): updates no longer keep every old runtime on disk (#22253)
juliusmarminge Oct 20, 2026
cdaaa74
fix(mobile): chat chips match desktop and the composer again (#22169)
flamboh Oct 20, 2026
2229efc
fix(web): normalize disabled terminal button opacity (#22389)
UtkarshUsername Oct 20, 2026
d652490
fix(contracts): settings save again when the writing style has defaul…
MatiasGadeberg Oct 20, 2026
758d773
fix(relay): run the relay Worker next to its database (#22065)
juliusmarminge Oct 20, 2026
81dea78
test(web): disposable render helper and lint rule for browser tests (…
juliusmarminge Oct 20, 2026
be5a5cd
fix(mobile): use native sheet headers and toolbar filters (#22390)
juliusmarminge Oct 20, 2026
2893437
test(ssh): unreaped-server test no longer loses its zombie fixture (#…
juliusmarminge Oct 20, 2026
6ab39ff
test(web): require-disposable-render is now an error (#22410)
juliusmarminge Oct 20, 2026
f7f9e21
test(web): migrate the last .ts browser tests and stop wrapping userE…
juliusmarminge Oct 20, 2026
5d4c202
fix(web,mobile): Limits bars show the even-pace mark as a tick in a g…
juliusmarminge Oct 20, 2026
7e289ae
test(web): pooled Limits segments narrower than 6px draw no pace mark…
juliusmarminge Oct 20, 2026
dac3437
fix(mobile): the composer stays one row until the draft wraps (#20812)
juliusmarminge Oct 20, 2026
8c59547
Merge origin/stage (#328, #334) into the upstream merge branch
bk-agent-01 Oct 20, 2026
860e6d2
fix(web): restore left-aligned markdown table cells (#22482)
t3-code-bot[bot] Oct 20, 2026
c11f92e
Merge upstream pingdotgg/t3code main (dac3437d94) into stage
bk-agent-01 Oct 20, 2026
f965403
chore: mark the project-mutation scope seam
bk-agent-01 Oct 20, 2026
56def63
fix: repair server tests, lint and member scopes after the upstream m…
bk-agent-01 Oct 20, 2026
0c85b0d
feat(scheduled-tasks): event filters for webhook deliveries (#22194)
juliusmarminge Oct 20, 2026
ec58572
fix(mobile): prevent update checker from crashing iOS at launch (#22488)
juliusmarminge Oct 20, 2026
2ebe280
feat(scheduled-tasks): replay dedupe and coalescing for webhook deliv…
juliusmarminge Oct 20, 2026
14b47ee
ci(release): Make Windows arm64 CI job 50% faster (#22428)
jahands Oct 20, 2026
4c48118
ci(release): Windows arm64 verify no longer runs the crashing ARM Pow…
t3dotgg Oct 20, 2026
ca140c4
refactor(source-control): GitCafe creates repositories and pull reque…
juliusmarminge Oct 20, 2026
5bcc90e
test(web): fix release browser test failures (#22508)
t3dotgg Oct 20, 2026
c8667fd
fix(mobile): connecting an environment no longer crashes the header (…
juliusmarminge Oct 20, 2026
4af3231
fix(mobile): folded Back clears the detail route before the next sele…
juliusmarminge Oct 20, 2026
fe27e8e
ci(release): release tests stop timing out and finish in about 5 minu…
t3dotgg Oct 20, 2026
5d27ecd
test(server): Claude steer test no longer hangs for 120s under CI loa…
t3dotgg Oct 20, 2026
bd94020
fix(web): repair web tests, lint and compiler coverage after the upst…
bk-agent-01 Oct 20, 2026
262fcae
fix: third CI round after the upstream merge
bk-agent-01 Oct 20, 2026
f9dd259
test: remove the timing races behind recurring CI and release failure…
t3dotgg Oct 20, 2026
fcb20e4
feat(web): render Mermaid diagrams with pele (#21472)
maria-rcks Oct 20, 2026
14ce722
fix: fourth CI round after the upstream merge
bk-agent-01 Oct 20, 2026
327f3fc
fix(mobile): keep home brand visible during secondary retries (#21388)
maria-rcks Oct 21, 2026
043c9c3
fix(mobile): collapse pull request repository errors (#21389)
maria-rcks Oct 21, 2026
e27fffa
fix(mobile): show terminal arrow keys before secondary controls (#21398)
maria-rcks Oct 21, 2026
145d73b
fix(mobile): update outdated servers and respect provider permissions…
maria-rcks Oct 21, 2026
2f6755b
fix(mobile): live activity tracks thread status and settlement (#21405)
maria-rcks Oct 21, 2026
4db2533
fix(mobile): use current checkout for non-git projects (#21404)
maria-rcks Oct 21, 2026
0dc38c7
fix(mobile): add project and checkout removal (#21409)
maria-rcks Oct 21, 2026
77e4f56
fix(mobile): show plans and fold settled progress notes (#21393)
maria-rcks Oct 21, 2026
afc33ff
fix(mobile): open transcript file links at the resolved path (#21403)
maria-rcks Oct 21, 2026
834ae4f
fix(mobile): lock the composer while queued edits save (#21390)
maria-rcks Oct 21, 2026
f16251f
fix(mobile): bring model controls in line with web (#21406)
maria-rcks Oct 21, 2026
6efe9a0
fix(mobile): restore archive and thread action undo (#21401)
maria-rcks Oct 21, 2026
fe414eb
fix(mobile): expose background work and thread status actions (#21395)
maria-rcks Oct 21, 2026
d356059
fix(web): keep approval menu actions compact (#22566)
Yash-Singh1 Oct 21, 2026
c3540a7
fix(web): main typecheck passes again after the Mermaid switch to pel…
t3dotgg Oct 21, 2026
05696c6
test: delete 11k low-signal tests so CI runs faster and flakes less (…
t3dotgg Oct 21, 2026
7fd5aea
fix(server): typecheck after the upstream merge
bk-agent-01 Oct 21, 2026
2085ea3
fix(mobile): thread rows show wake status and elapsed time (#21394)
maria-rcks Oct 21, 2026
8cd561e
fix(web,mobile): list database space for all machines in one notice (…
juliusmarminge Oct 21, 2026
533374d
fix(server): orchestration http test passes an explicit context; ci: …
bk-agent-01 Oct 21, 2026
b280e7d
test(lint): ban per-test timeouts and unreasoned skips (#22560)
juliusmarminge Oct 21, 2026
7895a2b
test(web): ban frame and transition waits in browser tests (#22561)
juliusmarminge Oct 21, 2026
dd4506a
test: ban wall-clock readings in tests (#22562)
juliusmarminge Oct 21, 2026
bde6206
test(server): ban real-clock waits in tests (#22564)
juliusmarminge Oct 21, 2026
08dbf83
test: warn on polling loops in tests and make adapter test harnesses …
juliusmarminge Oct 21, 2026
3719fd2
fix(mobile): iOS new-thread skill picker stops shifting the screen (#…
flamboh Oct 21, 2026
5bc19ac
fix(web): dialogs keep their content while they close (#21960)
flamboh Oct 21, 2026
569bd02
ci(release): build Windows x64 on Linux like arm64 (#22584)
t3dotgg Oct 21, 2026
849b3f8
fix(server): idle orphaned follow-ups can be cancelled without a runn…
t3dotgg Oct 21, 2026
a01f410
chore(web): remove "use client" directives (#22587)
flamboh Oct 21, 2026
af6c256
ci: shorter temporary test timeout so the hanging package log is kept
bk-agent-01 Oct 21, 2026
7c16a40
test(mobile): prune low-value tests in mobile (second pass) (#22588)
juliusmarminge Oct 21, 2026
2edddbc
test(desktop): prune low-value tests in desktop (second pass) (#22589)
juliusmarminge Oct 21, 2026
eb10859
test(web): prune low-value tests in apps/web (second pass) (#22591)
juliusmarminge Oct 21, 2026
a2f4df0
test(server): prune low-value tests in apps/server (second pass) (#22…
juliusmarminge Oct 21, 2026
8feddd6
test(packages): prune low-value tests in packages (second pass) (#22593)
juliusmarminge Oct 21, 2026
32d8f8f
test(server): prune low-value tests in orchestration-v2 (second pass)…
juliusmarminge Oct 21, 2026
c728c8c
test(web): every browser test starts with the mouse off the page (#22…
juliusmarminge Oct 21, 2026
5b2ee39
chore(tailscale): drop parseTailscaleMagicDnsName, which nothing impo…
juliusmarminge Oct 21, 2026
31dcc7c
fix(server): make the remaining flaky server tests deterministic (#22…
juliusmarminge Oct 21, 2026
ecfe4f7
fix(mobile): composer chips match chat chips (#22518)
flamboh Oct 21, 2026
36d6607
ci: temporary per-package test limits to find the hanging package
bk-agent-01 Oct 21, 2026
bc2dfa7
fix: mobile compiler coverage, pi personal MCP test; drop temporary C…
bk-agent-01 Oct 21, 2026
8bbb85c
fix(mobile): show each turn's diffstat on its work row (#21392)
maria-rcks Oct 21, 2026
c22ace2
chore(release): prepare v0.1.1
t3-code-bot[bot] Oct 21, 2026
4741dc5
fix(web): silence notifications when stopping a watch (#22615)
Yash-Singh1 Oct 21, 2026
8bbb7f9
test(pi): allow native imports in the personal MCP test, as upstream'…
bk-agent-01 Oct 21, 2026
7387244
ci: temporary guard around the package test step to find the hang
bk-agent-01 Oct 21, 2026
e64766c
ci(release): build macOS desktop on Blacksmith runners again (#22613)
t3dotgg Oct 21, 2026
2563f31
ci: temporary guard prints the test summary even on failure
bk-agent-01 Oct 21, 2026
97f92ca
ci: temporary guard prints failure details
bk-agent-01 Oct 21, 2026
75cbf67
fix(pi): a personal MCP retry keeps T3's registered tools; upstream s…
bk-agent-01 Oct 21, 2026
4e457c5
fix(pi): keep upstream's MCP tool output shape when it already carrie…
bk-agent-01 Oct 21, 2026
1430f4c
Merge pull request #331 from iamtushar324/merge/upstream-20261019-stage
bk-agent-01 Oct 21, 2026
733a303
fix(usage): Codex compaction and resumed sessions no longer show skip…
t3dotgg Oct 21, 2026
8a9d0e0
fix(web): thread search shows the same PR badge as the sidebar (#22627)
maria-rcks Oct 21, 2026
3e250a8
Delete .github/workflows/cursor-hygiene-webhook.yml
juliusmarminge Oct 21, 2026
61e2747
fix(desktop): bump Electron to 44.9.3 to block compromised eMudhra CA…
t3dotgg Oct 21, 2026
4f651cb
test(web): ChatView's React Compiler check no longer times out on slo…
t3dotgg Oct 21, 2026
15dc7b0
fix(web): thread links render as chips, and thread chips show the pro…
flamboh Oct 21, 2026
6a6c84f
fix(server): Stop on a delegate always clears it, even when it is stu…
t3dotgg Oct 21, 2026
a93b03c
feat(web): composer stays usable during approvals, and sending declin…
maria-rcks Oct 21, 2026
73daccf
docs(agents): name the fast commands and stop polling (#22711)
t3dotgg Oct 21, 2026
a5d66e2
fix(desktop): new worktrees install Electron from the local download …
t3dotgg Oct 21, 2026
dd8452a
test(server): split replay fixtures into per-provider files (#22717)
t3dotgg Oct 21, 2026
163bdea
fix(server): delegates finish when their leftover work settles, and G…
t3dotgg Oct 21, 2026
30173c2
Merge upstream pingdotgg/t3code main (163bdeaa11) into stage
bk-agent-01 Oct 21, 2026
7e1d90b
chore: mark the mobile composer import seam
bk-agent-01 Oct 21, 2026
37028ee
fix: first CI round after the 163bdeaa11 upstream merge
bk-agent-01 Oct 21, 2026
ed0da71
fix: second CI round after the 163bdeaa11 upstream merge
bk-agent-01 Oct 21, 2026
6586cce
Merge pull request #336 from iamtushar324/merge/upstream-20261021-stage
bk-agent-01 Oct 21, 2026
629f121
Merge bkmain into the 2026-10-21 stage promotion
bk-agent-01 Oct 21, 2026
c57071a
fix(server): account policies no longer freeze the server reading the…
bk-agent-01 Oct 21, 2026
0c1f55d
fix(server): warn when listSessions falls back to the full shell read
bk-agent-01 Oct 21, 2026
d55c57d
fix(web): Claude account picker no longer jumps when the switch hint …
bk-agent-01 Oct 21, 2026
4d6aa74
Merge pull request #338 from iamtushar324/fix/bkt3-account-service-sh…
bk-agent-01 Oct 21, 2026
1dd859a
fix(server): full shell reads leave the main thread, thread usage rea…
bk-agent-01 Oct 21, 2026
6c8333a
fix(server): fork marker sits above the changed shell read pipe
bk-agent-01 Oct 21, 2026
7d035d7
test(server): type the thread usage handler fakes; AGENTS.md probe ro…
bk-agent-01 Oct 21, 2026
af6a6d6
fix(web): compact composer shows a short placeholder
bk-agent-01 Oct 21, 2026
aebd05c
Merge pull request #339 from iamtushar324/fix/bkt3-main-thread-read-g…
bk-agent-01 Oct 21, 2026
e65c637
Merge pull request #340 from iamtushar324/fix/compact-composer-short-…
bk-agent-01 Oct 21, 2026
9d75b08
Merge stage e65c6376b3 into the 2026-10-21 promotion
bk-agent-01 Oct 21, 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.
10 changes: 2 additions & 8 deletions .coderabbit.config.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { defineConfig, type CodeRabbitContext } from "@coderabbitai/config";

// Org members and collaborators merge their own pull requests. On anyone else's, CodeRabbit
// requests changes until its comments are resolved, then approves.
const UNGATED_AUTHORS = new Set(["OWNER", "MEMBER", "COLLABORATOR"]);
const isGated = ({ pr }: CodeRabbitContext) => !UNGATED_AUTHORS.has(pr?.authorAssociation ?? "");

export default defineConfig((ctx) => ({
reviews: {
high_level_summary: false,
review_status: false,
request_changes_workflow: isGated(ctx),
request_changes_workflow: false,
allow_author_approval: !isGated(ctx),
auto_review: {
enabled: true,
Expand All @@ -18,11 +16,7 @@ export default defineConfig((ctx) => ({
docstrings: { mode: "off" },
override_requested_reviewers_only: isGated(ctx),
},
path_filters: [
// Vendored read-only reference checkouts of upstream Effect and Alchemy
// (see scripts/lib/reference-repos.ts). Nothing imports from them.
"!.repos/**",
],
path_filters: ["!.repos/**"],
path_instructions: [
{
path: "{apps,packages,infra}/**/*.ts",
Expand Down
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@
# Batch files need CRLF for cmd.exe to parse them reliably.
*.cmd text eol=crlf
*.bat text eol=crlf
# GitHub's and Expo's GraphQL schemas and the operations graphqlgen writes from them.
packages/source-control-github/schema/** linguist-generated
apps/server/schema/** linguist-generated
**/*.graphql.ts linguist-generated
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/via-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ body:
id: version
attributes:
label: Version
description: Installed t3 version or commit.
description: Version the bug happened on (not the `t3 triage` CLI version), or unknown.
placeholder: 0.0.33
validations:
required: true
Expand Down
2 changes: 2 additions & 0 deletions .github/VOUCHED.td
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ github:aoright
github:arhxam
github:bil0000
github:binbandit
github:bompus
github:Brechard
github:btsouth
github:cestercian
Expand Down Expand Up @@ -52,6 +53,7 @@ github:mackinleysmith
github:maria-rcks
github:MatthewFeroz
github:maxwellyoung
github:mweinbach
github:mwolson
github:myacoub91
github:naMqe-h
Expand Down
63 changes: 63 additions & 0 deletions .github/actions/ci-changes/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: CI changes
description: Decide which CI jobs a change needs. See .github/scripts/ci-changes.cjs.
outputs:
typecheck:
value: ${{ steps.detect.outputs.typecheck }}
build:
value: ${{ steps.detect.outputs.build }}
test:
value: ${{ steps.detect.outputs.test }}
test_packages:
value: ${{ steps.detect.outputs.test_packages }}
test_web:
value: ${{ steps.detect.outputs.test_web }}
test_server:
value: ${{ steps.detect.outputs.test_server }}
rust:
value: ${{ steps.detect.outputs.rust }}
release_smoke:
value: ${{ steps.detect.outputs.release_smoke }}
mobile_native:
value: ${{ steps.detect.outputs.mobile_native }}
runs:
using: composite
steps:
- id: detect
shell: bash
env:
EVENT_NAME: ${{ github.event_name }}
BEFORE_SHA: ${{ github.event.before }}
run: |
set -uo pipefail

decide() {
node .github/scripts/ci-changes.cjs "$@" | tee -a "$GITHUB_OUTPUT"
exit "${PIPESTATUS[0]}"
}

fail_open() {
echo "$* Running every job."
decide
}

# Reads the change from git rather than the REST API: every job that
# runs this shares the repository's 1,000 requests/hour GITHUB_TOKEN quota.
if [[ "$EVENT_NAME" == pull_request ]]; then
# A pull request checks out GitHub's merge commit with fetch-depth: 2,
# so its first parent is the base branch and the diff is the PR's change.
base=HEAD^1
mode=()
else
base=$BEFORE_SHA
git fetch --quiet --no-tags --depth=1 --filter=blob:none origin "$base" \
|| fail_open "Could not fetch ${base}."
# main keeps a full run as the backstop for anything the gate misses.
mode=(--full)
fi

# --no-renames lists a rename as its old and new path: renaming a file out
# of a package changes that package just like editing it. It also keeps
# git from fetching file contents to score renames.
git diff --name-only --no-renames "$base" HEAD > "$RUNNER_TEMP/changed-paths" \
|| fail_open "Could not diff against ${base}."
decide --paths "$RUNNER_TEMP/changed-paths" "${mode[@]}"
51 changes: 51 additions & 0 deletions .github/actions/setup-ci-deps/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Setup CI dependencies
description: Install Vite+ and the workspace dependencies from cache.
runs:
using: composite
steps:
# setup-vp reuses an installed exact version, so restoring its home skips the
# installer download on every job.
- name: Resolve Vite+ version
id: vp
shell: bash
run: |
echo "version=$(sed -nE 's/^ vite-plus: ([0-9][^ ]*)$/\1/p' pnpm-workspace.yaml)" >> "$GITHUB_OUTPUT"

- name: Cache Vite+
if: steps.vp.outputs.version != ''
uses: actions/cache@v6
with:
path: ~/.vite-plus
key: vite-plus-home-v1-${{ runner.os }}-${{ runner.arch }}-${{ steps.vp.outputs.version }}

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

- name: Resolve pnpm store path
id: pnpm_store
shell: bash
run: |
store_path="$(vp pm cache dir)"
echo "path=$store_path" >> "$GITHUB_OUTPUT"

# setup-vp's shared cache key ignores install filters. Keep full installs in a
# separate namespace, including fallback restores.
# The pnpm store stays a cache tarball on the runner's own disk. A store on a
# Blacksmith sticky disk mounts in under a second, but pnpm then copies every
# package across filesystems instead of hard-linking it: install took 28-49s
# against 9s plus an 11s restore.
- name: Cache full pnpm store
uses: actions/cache@v6
with:
path: ${{ steps.pnpm_store.outputs.path }}
key: pnpm-full-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'package.json') }}
restore-keys: |
pnpm-full-v1-${{ runner.os }}-${{ runner.arch }}-

- name: Install dependencies
shell: bash
run: vp install
6 changes: 0 additions & 6 deletions .github/scripts/check-nightly-release.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ async function assertReleaseSource({ github, context, releaseChannel }) {

const isNightlyTag = (tag) => /^v.*-nightly\./.test(tag) || tag.startsWith("nightly-v");

// Newest published nightly by publication time, or undefined when none exists.
async function findLatestNightly({ github, context }) {
const releases = await github.paginate(github.rest.repos.listReleases, {
...context.repo,
Expand All @@ -51,7 +50,6 @@ async function findLatestNightly({ github, context }) {
.sort((a, b) => Date.parse(b.published_at) - Date.parse(a.published_at))[0];
}

// Runs after the workflow acquires the nightly concurrency lock.
async function shouldReleaseNightly({ github, context, core, now = Date.now() }) {
const lastNightly = await findLatestNightly({ github, context });

Expand Down Expand Up @@ -81,17 +79,13 @@ async function shouldReleaseNightly({ github, context, core, now = Date.now() })
return true;
}

// Stable releases build the commit the latest nightly shipped, so the stable
// build is one nightly users already ran. Returns the nightly tag, its commit,
// and the stable version that nightly was a preview of.
async function resolveLatestNightlyCommit({ github, context, core }) {
const lastNightly = await findLatestNightly({ github, context });
if (!lastNightly) {
throw new Error("No published nightly found. Stable releases build the latest nightly commit.");
}

const tag = lastNightly.tag_name;
// repos.getCommit dereferences annotated tags, so this is the commit either way.
const { data: commit } = await github.rest.repos.getCommit({ ...context.repo, ref: tag });
const version = /^(?:nightly-)?v(\d+\.\d+\.\d+)-nightly\./.exec(tag)?.[1];
if (!version) {
Expand Down
45 changes: 0 additions & 45 deletions .github/scripts/check-nightly-release.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,6 @@ for (const releaseChannel of ["stable", "nightly"]) {
);
assert.equal(calls.length, 0);
});

test(`allows a manual ${releaseChannel} release from main`, async () => {
const { options, calls } = releaseSourceFixture();
await assertReleaseSource({ ...options, releaseChannel });
assert.equal(calls[0].basehead, "candidate...main");
});
}

for (const comparisonStatus of ["behind", "diverged"]) {
Expand All @@ -79,13 +73,6 @@ for (const comparisonStatus of ["behind", "diverged"]) {
});
}

test("accepts a release commit already contained in main", async () => {
for (const comparisonStatus of ["ahead", "identical"]) {
const { options } = releaseSourceFixture({ comparisonStatus, eventName: "push" });
await assertCommitOnDefaultBranch({ ...options, sha: "release-commit" });
}
});

function fixture({ releases = [nightly(7)], comparisonStatus = "ahead" } = {}) {
const calls = [];
return {
Expand Down Expand Up @@ -119,26 +106,6 @@ test("releases the first nightly when no nightly is published", async () => {
assert.equal(await shouldReleaseNightly(options), true);
});

test("waits six hours after publication, including manual nightlies", async () => {
for (const age of [0, 3, 6 - 1 / 3600]) {
const { options, calls } = fixture({ releases: [nightly(age)] });
assert.equal(await shouldReleaseNightly(options), false);
assert.equal(calls.length, 0);
}
});

test("releases new commits at six hours and after an idle period", async () => {
for (const age of [6, 7, 24]) {
const { options } = fixture({ releases: [nightly(age)] });
assert.equal(await shouldReleaseNightly(options), true);
}
});

test("skips unchanged commits after the gap", async () => {
const { options } = fixture({ comparisonStatus: "identical" });
assert.equal(await shouldReleaseNightly(options), false);
});

test("uses publication time, not release order or the tagged commit date", async () => {
const { options } = fixture({
releases: [nightly(10), nightly(1), nightly(20, { tag_name: "nightly-v0.9.0" })],
Expand All @@ -153,13 +120,6 @@ test("ignores stable releases and drafts when checking the gap", async () => {
assert.equal(await shouldReleaseNightly(options), true);
});

test("compares against the published tag, including legacy nightly tags", async () => {
const tag = "nightly-v0.9.0";
const { options, calls } = fixture({ releases: [nightly(7, { tag_name: tag })] });
assert.equal(await shouldReleaseNightly(options), true);
assert.equal(calls[0].basehead, `${tag}...new`);
});

test("fails instead of releasing when GitHub cannot supply release state", async () => {
const { options } = fixture();
options.github.paginate = async () => {
Expand Down Expand Up @@ -211,8 +171,3 @@ test("stable releases derive the version from legacy nightly tags", async () =>
});
assert.equal((await resolveLatestNightlyCommit(options)).version, "0.9.0");
});

test("stable releases fail without a published nightly", async () => {
const { options } = nightlyCommitFixture({ releases: [nightly(0, { tag_name: "v1.0.0" })] });
await assert.rejects(resolveLatestNightlyCommit(options), /No published nightly/);
});
Loading
Loading