Skip to content

chore: sync upstream through 49a9e80e0b - #271

Merged
andrewcai8 merged 86 commits into
mainfrom
sync/upstream-49a9e80e0b
Oct 28, 2026
Merged

andrewcai8 merged 86 commits into
mainfrom
sync/upstream-49a9e80e0b

Conversation

@andrewcai8

@andrewcai8 andrewcai8 commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

Syncs the fork with upstream through pingdotgg/t3code@49a9e80e0b (82 commits since #270). It also fixes the CI failure on main that came after #270. That failure came from the runner image, not the merge: the runner moved to git 2.56, which reports a broken worktree gitfile as gitfile does not point to a valid repository instead of not a git repository.

Notable upstream changes

  • Linked environments (Labs beta). One environment can link to another, @-mention a machine, delegate tasks to it, and list its threads in the @ picker. Agents reach it through any T3 tool.
  • Removed 18k lines of code that nothing used (chore: delete 18k lines of code that nothing reaches pingdotgg/t3code#26238).
  • Thread links name their environment and never a title (feat(server,web,mobile): thread links name their environment and never a title pingdotgg/t3code#26239).
  • You can choose your own snooze options in settings. Users can see and stop dev servers a thread started. Queued messages show who sent them.
  • F6 moves between areas of the workspace, and the sidebar works from the keyboard. The sidebar can filter by several projects at once.
  • Replay provider for testing turns in dev for free. An issue can be triaged from the command palette.
  • Relay: delivery attempts stop growing the database, and tunnel cleanup keeps up with new idle tunnels. Cgroups are delegated to agent scopes.
  • Many mobile layout fixes. Android now trusts user-installed CA certificates.
  • Security fixes: repository lookups no longer send GitHub tokens to arbitrary hosts. Antigravity can't write outside the workspace through a linked ancestor. Shared file names can't write outside the Android cache.

Conflict resolutions (52 files)

  • MCP routing. Upstream's McpToolAccess.routed sends any call that names another environment over a link and strips environmentId. That would have silently broken the fork's Home and cloud-chat routing through FleetService.
    • New hook: McpToolAccess.routesOtherEnvironments (wrapped as viaFleet in homeRouting.ts). It keeps environmentId for fleet-routed calls. These are Home, a cloud chat whose host is connected, and a cloud chat whose host is reconnecting while links are off.
    • Which tools: capabilities, thread list/read/update/send/interrupt, pending request, organize, launch and project list. Every other tool uses link forwarding. There's a test in McpToolAccess.test.ts.
    • The FleetService tag moved to home/FleetServiceTag.ts to break a load-order cycle through RemoteDelegation. The fork's environmentId was dropped from threadMetadataMcp.ts, because it created an import cycle and upstream adds the field anyway.
  • Links. FleetService and the thread handlers emit the new environment-named links. CloudFleetHost still writes the old form for older boxes.
  • Settlement vs. upstream's config-loaded checks. Snooze, pin and reorder take upstream's rule: they need the environment config loaded. Settle and unsettle keep the fork's rule, so chats on a removed or offline cloud machine can still be settled (fix(web,mobile): removed cloud chats can be settled or deleted again #240). This applies on web (Sidebar, useThreadActions, useThreadActionMenu, entities.ts) and on mobile (useThreadListActions, ThreadArrangementSheet, thread-order).
  • Code upstream deleted that the fork still uses.
    • Restored: presentEnvironmentConnection (the "Machine removed" status), resolveSidebarV2TopStatus and SidebarV2TopStatusKind.
    • Repointed: ~/logicalProject imports now come from client-runtime/state/project-grouping.
    • The fork's SQLite worker uses fixed values for options upstream deleted.
  • Settings. The fork's account-switch and continuation settings sit next to upstream's snoozePresets. The Connections pages show both the fork's cloud-box sections and upstream's linked environments.
  • ProviderTurnStartService. Upstream's restructure wins. The fork's save-failure and cloud-machine notes are added after the native thread loads. The imported-session and resume-fallback handling stay.
  • ProjectionStore. The fork's indexed recovery read now also includes upstream's pending-question branch, matched through the request's node_id.
  • Upstream changes the fork follows.
    • The web composer's reconnecting send now goes through isSendBusy, because upstream removed isConnecting.
    • The client no longer sends continueRunningThreads with an update; the server reads the setting itself.
  • Lint and budget. Upstream renamed the lint rule react-effect-budget to no-unreasoned-state-sync, so 15 fork-only web and mobile files are updated. agentContextBudget.json mcpToolListJsonBytes is now the measured 52444.
  • Dependencies. Took upstream's enriched-markdown t3.16-29ddd424 tgz and kept the fork's protobufjs: false.

git 2.56 fix

NOT_A_REPOSITORY_PATTERN in GitVcsDriverCore.ts matches both wordings. storageCleanup, GitManager and the VCS driver all use it. The new test checks the git 2.56 wording directly, because local git (2.50) never prints it.

Review fixes

  • t3_thread_watch had no fleet routing, so Home couldn't watch or unwatch a thread in another environment. Upstream's link forwarding claimed the call and it failed with "Linked environments is off". It now goes through viaFleet like the other Home tools. There's a regression test in homeRouting.test.ts, which fails without the wrapper.
  • ForkMigrations.test.ts now lists upstream's new migrations 70–72 (PeerLinks, PeerLinkFence, WaitingLinkRequestIndex). They append to upstream's ledger; the fork's own ledger is separate and has no overlapping tables.
  • The new upstream Agent context budget check reports growth of +278 bytes in the system append and +3193 in the MCP tool list, all from upstream's new tools. Accepted with the agent-context-increase label.

Verification

  • vp run typecheck is clean in server, web, mobile, desktop, scripts, contracts, client-runtime, shared, provider-core and source-control-core.
  • vp lint --report-unused-disable-directives and vp fmt --check are clean on all 690 files the fork changes relative to upstream.
  • Targeted tests pass:
    • Server: mcp, home, peer, environmentControl, AgentContextBudget, ThreadLaunch/Management, ProjectionStore, ProviderTurnStart, recovery, adapters, plus GitVcsDriverCore/storageCleanup/GitManager (407).
    • Web: 64 non-browser files (512 tests).
    • Client-runtime: 78 tests. Mobile: 69 tests.

Not verified

  • Web, desktop and mobile weren't run in a real client.
  • Linked environments haven't been tried together with Home or cloud machines.

Follow-ups

  • On the resumed path, the turn-start context budget doesn't count the late save-failure and cloud-machine notes (a few hundred bytes).
  • Home's fleet-routed t3_thread_interrupt ignores upstream's new stop flag. Fleet-routed launch doesn't dedupe by clientRequestId.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits October 27, 2026 12:16
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tgg#26042)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#25066)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…otgg#19093)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#16653)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gdotgg#16684)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#16695)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Lenori <122464369+Lenoridev@users.noreply.github.com>
…nt (pingdotgg#17129)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… become a Labs beta (pingdotgg#17130)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… new place (pingdotgg#26096)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#19463)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…nstead of being dropped (pingdotgg#22864)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…dotgg#22542)

Co-authored-by: Guillermo <guillermolopezg00@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… desktop attach (pingdotgg#22877)

When the server falls back to headless Chromium, it marks the tab headless, so the desktop streams that page instead of mounting a second one.

Fixes pingdotgg#16901
Fixes pingdotgg#22882

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… lock (pingdotgg#25700)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
t3dotgg and others added 20 commits October 27, 2026 18:56
…#26187)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…26208)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…26135)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… Android rail holds still (pingdotgg#26241)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The scroll-edge header blur, rows under the floating tab bar, Settings' own search and
filter, unlabelled Settings groups, edge-clipped scrolling rows, and wrapping at the
largest text size were reported on every run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…25730)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… browser (pingdotgg#26267)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…size (pingdotgg#26268)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…r a title (pingdotgg#26239)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ueries (pingdotgg#26269)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Oct 28, 2026
Upstream's link forwarding claimed t3_thread_watch because its input names an
environment, so Home's watch of a cloud-box thread failed with "linked
environments is off". Route it through the fleet like the other Home tools.
Also lists upstream's new migrations 70-72 in the fork ledger test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@andrewcai8 andrewcai8 added the agent-context-increase Accept agent context growth in agentContextBudget.json label Oct 28, 2026
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ The exact PR base did not have a successful artifact. Baseline uses the latest successful main measurement shown below.
⚠️ This PR changes transfer ceilings:

  • Codex Live turn WebSocket decoded: 29.3 KiB → 24.4 KiB
  • Claude Live turn WebSocket decoded: 29.3 KiB → 24.4 KiB
Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB +62 B (+1.2%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB +62 B (+5.1%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.9 KiB 21.6 KiB +715 B (+3.3%) 24.4 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB +32 B (+0.6%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB +32 B (+2.6%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.9 KiB +686 B (+3.2%) 24.4 KiB ✅
Claude Live turn messages 2 1 −1 (−50.0%) 8 ✅

Baseline: ccbfc6c · PR result: 3889836 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

andrewcai8 and others added 2 commits October 28, 2026 10:41
…registry with entries

The fork's command runtime reads the registry's saved entries to fail commands on a
removed workspace as offline, so upstream's new peer-link test registry needs them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream dropped per-capability gating for thread settlement; any environment
with a loaded config qualifies. The fork's addition, configless offline boxes,
is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@andrewcai8
andrewcai8 merged commit 9759e84 into main Oct 28, 2026
42 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-context-increase Accept agent context growth in agentContextBudget.json 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.