Skip to content

chore: sync upstream through 76d5ec7a22 - #270

Merged
andrewcai8 merged 549 commits into
mainfrom
sync/upstream-0899305765
Oct 27, 2026
Merged

andrewcai8 merged 549 commits into
mainfrom
sync/upstream-0899305765

Conversation

@andrewcai8

@andrewcai8 andrewcai8 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Syncs upstream T3 Code through 76d5ec7, upstream's newest commit with green CI. That is 542 commits (66ee628..76d5ec7), merged in two steps: through 0899305 (407 commits, 68 conflicted files), then through 76d5ec7 (135 commits, 45 conflicted files).

Notable upstream changes:

Conflicts keep upstream's change and re-apply the fork's behavior.

Server

  • RunExecutionService: upstream split the stop check into agentTurnsSettled and shouldStopProviderEventIngestion. The fork's childrenHold rule now applies in both, so failed or interrupted turns that don't continue still wait for the background-work probe without pinning children.
  • bin.ts and server.ts: upstream's __document-text fast path sits beside the fork's __spawn-host, and upstream's DocumentText.layer runs on the fork's SpawnHost.layer.
  • storageCleanup: upstream's cleanup of deleted-thread worktrees, plus the fork's orphan-worktree removal.
  • MCP tools: upstream's shorter descriptions, each with the fork's Home behavior as a short clause. t3_thread_search uses upstream's result shape (with link) and keeps Home routing. FleetThreadLaunchResult gains an optional link, and FleetService fills it for Home-routed launches and sends, which upstream's tool copy tells agents to use.
  • CodexProvider: keeps the fork's shared 30 s probe timeout over upstream's local 20 s one. WorkspaceSearchIndex keeps the fork's dynamic import() of fff-node, because createRequire fails on unpatched npm installs on cloud boxes.
  • Sqlite, ProviderSessionManager, ScheduledTaskService, UsageService, ws.ts, ClaudeAdapterV2: the fork's code with upstream's shorter comments.
  • Upstream's new compaction test in FoundationPersistence.test.ts spied on main-thread statements to prove deletes reach the writer. The fork's writer runs on a worker, so the test now checks that neither discovery nor deletes run on the main thread, and that the rows are gone.
  • ForkMigrations.test now expects upstream's migration 069 (ThreadMessageSearch) in upstream's ledger.

Contracts and client-runtime

  • settings.ts keeps the fork's settings fields and upstream's guestSharingEnabled. All have decoding defaults, so older settings files still decode.
  • rpc.ts adds upstream's WsGuestShareCreateRpc to the fork's CoreWsRpcGroup.
  • authorization/remote.ts takes upstream's rpcSocketUrl and DPoP upgrade proof, but always appends /ws to the base path as the fork did, so gateway paths keep working.
  • shellHostChat: the host's chat copy spreads the current shell state, keeping upstream's new generation and removedAt.

Web

  • PermissionUpdateNotice.tsx (web and mobile): upstream moved the logic into a .ts module. The fork's skip for cloud-chat machines is ported there, and the .tsx files are gone.
  • Upstream moved settings routes under _chat.settings.*. The fork's Home settings route moved to _chat.settings.home.tsx, at the same /settings/home URL. routeTree.gen.ts was regenerated.
  • ThreadNotificationCoordinator takes upstream's rewrite. The fork's rule, that threads Home launched raise no notifications while Home is on, moved into present().
  • useHandleNewThread: upstream's createNewThreadHandler, with the fork's placeNewChat and Home-aware default project.
  • UsageLimitRecoveryBanner: upstream's deadline-based reset and "Wake now", plus the fork's Switch account button.
  • SidebarThreadRow, SettingsPanels, settingsSearch, CommandPalette, ConnectionsSettings, platform.ts, __root.tsx: both sides' additions. The fork's CloudCoordinators stays mounted in the root.

Mobile

  • Stack.tsx takes upstream's flat settings routes and keeps the fork's CloudBoxesWorker and NewTaskCloudMachine route. NewTaskCloudMachine joins upstream's overlay route list, so selecting the new thread dismisses that screen.
  • Home, the command palette and the cloud-machine screen open threads through upstream's useSelectWorkspaceDetail. The fork's useNewThreadNavigation is built on it.

Fork code under upstream's new rules

  • About 180 lint errors in fork-only files. Comments are cut to four lines or fewer. The 29 fork React effects each have a stated reason, as upstream's policy asks (chore(lint): a new React effect states its reason instead of raising the budget pingdotgg/t3code#25163). provisionRequests.test.ts and registry.cloud.test.ts now wait on a real milestone instead of polling. vite.config.ts takes upstream's removal of the polling burn-down list.
  • About 100 Effect diagnostics in fork code are fixed (mostly Effect.fn and Effect.timeoutOrElse). scripts/cloud/t3Rpc.ts gives its RPC client an explicit type, because the larger RPC group made the inferred type too big for TypeScript to serialize.

Second step (through 76d5ec7)

  • t3_pending_request: upstream merged the three pending-request tools into one action tool. The fork's Home routing (requests.list, requests.read, requests.respond) and its decision parameter are ported onto it, and a non-Home decision returns capability_denied (new test in core.test.ts). The Home instructions in ManagedProjectFolders name the new tool, and agentContextBudget.json allows the fork's extra tool bytes (49,251).
  • Mobile outbox: upstream deleted ThreadOutboxDrainWorker and made delivery an app service. The fork's cloud-box delivery is now two plain functions in cloud-chat-delivery.ts. holdQueuedBoxDemand keeps each queued message's box connected until its last message leaves. claimFirstTurnCloudBox runs when a creation is delivered. Both are wired into createThreadOutboxDelivery. The fork's pinned new-task option is gone, because upstream removed the pending-task editor it served.
  • Mobile new tasks: the fork's branchOptional is ported onto upstream's module-level branch checkout, and a failed optional checkout starts on the default branch. AdaptiveWorkspaceLayout uses upstream's newTaskDestination (with "Use last project") and then the fork's cloud-machine routing. newChatScopeTarget takes upstream's connected-copy preference. A waking box still counts as hydrating.
  • client-runtime/state/runtime.ts: upstream's new rule, that a query with nothing to show fails with the last error, applies to connecting and backoff. A waking box still waits.
  • Web settings: upstream split Settings into focused pages. The fork's Auto-pick accounts, cloud account switching and Continuation message rows are under Threads → Usage limits. Its unused-worktree and cloud-machine cleanup rows are in Maintenance. Home sits in the Agents group, and search entries point to the new pages. Fork user docs name the new settings paths.
  • MessagesTimeline: the cloud setup card sits inside upstream's new footer, so its growth keeps the list pinned. The Home sender label moved into upstream's senderLabel. The fork's home.open shortcut moved to commandPaletteCommands.ts with upstream's other shortcuts.
  • apps/server/package.json takes upstream's @cursor/sdk 1.0.38 and keeps the fork's protobuf and connect pins for e2b and the Namespace SDK.

Tests and CI under upstream's new tests

  • Upstream's new UsageLimitRecoveryCard.test.tsx (mobile) mocks the fork's catalog and server modules, which otherwise pull in Expo, and gains a case for the fork's Switch account button. useCreateCloudMachine.ts now compiles with the React Compiler, so it leaves KNOWN_BAILOUTS.
  • Test Web runs AttachmentFilePreview.browser.test.tsx in its own step after the rest, with the job timeout raised from 10 to 15 minutes, which also covers upstream's new built-client boot step. Upstream runs this job on 8 vCPU. On the fork's 4 vCPU ubuntu-latest, upstream's new Word, WASM and worker preview tests timed out while sharing the CPU, with a different set failing each run (2, then 14). The same file passes 132 of 132 locally on both this branch and upstream.

Dependencies

  • pnpm-lock.yaml is upstream's lock plus the fork's e2b, modal and @namespacelabs/sdk. vp i --frozen-lockfile installs it unchanged.
  • pnpm-workspace.yaml takes upstream's enriched-markdown t3.16 tarball and keeps the fork's protobufjs and modal patch entries. The package manifests, knip.jsonc and third-party-licenses.config.json keep both sides' entries, and package.json keeps the fork's case:check.

Verification:

  • After each step, vp run typecheck passes in apps/server, apps/web, apps/desktop, apps/mobile, packages/contracts, packages/client-runtime, packages/shared and scripts.
  • vp lint --report-unused-disable-directives and vp fmt --check pass on every file that differs from upstream (682 after the second step).
  • Focused tests pass: server (ws, storageCleanup, RuntimePolicy, ThreadManagementService, ProviderSwitch, ClaudeAdapterV2, RunExecutionService, ProviderSessionManager, persistence with ForkMigrations, scheduledTasks, usage, mcp, CloudFleetHost and the rest of environmentControl, home, process), contracts, client-runtime, shared, provider-cursor, mobile, and web unit and browser tests. After the second step: server mcp, home, ProviderTurnStartService and AgentContextBudget (431), the full client-runtime (1,671) and contracts (153) suites, mobile features/threads and state (537), and the web settings, command palette and timeline tests.
  • Three server tests fail here and also fail on fork main without this merge: two in UsageService.test.ts (macOS reports the temp folder as /private/var) and one in ClaudeSkills.test.ts. Two desktop tests in DesktopLinuxUrlHandler.test.ts, a file identical to upstream, fail locally on icon-file name casing, which looks like the case-insensitive macOS filesystem; CI runs them on Linux.

An independent review covered all 68 conflicted files and the fork-only files rewritten for the new rules. It found one defect, the missing Home link above, which is fixed with a test in FleetService.test.ts. A second review, scoped to the second step's resolutions, found no defects.

Follow-ups, not blocking:

  • environmentControl/leaseUpkeep.ts: Effect.fn wraps an endless loop, so its span never closes; Effect.fnUntraced fits better.
  • environmentControl/WorkerForks.ts: the span name runJob should be WorkerForks.runJob.
  • Mobile "Open chat" on a cloud machine row now opens the thread the way Home does (Home plus the thread) instead of pushing it.
  • FleetService threads.send never returns taskId (existing gap).
  • Upstream's new placeholder in presentation.ts shows an enabled environment as connecting until its supervisor reports, which briefly hides the fork's missing-workspace status on a removed box.
  • The cloud setup card now renders inside upstream's timeline footer; worth one look in a real client.
  • Mobile still has no rows for the Continuation message or cloud-machine cleanup (it had none before this sync).
  • Upstream's DocumentText starts __document-text without the fork's spawn host, which costs a little on Linux.

Not verified: the web, desktop and mobile UI were not run, and the native static check could not run because ktlint and detekt are not installed.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits October 25, 2026 19:32
…ollow owner (pingdotgg#25148)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ich attach through ref callbacks (pingdotgg#25246)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ll drops its sync effects (pingdotgg#25239)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ment now show (pingdotgg#25229)

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

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e app (pingdotgg#25233)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…t in effects (pingdotgg#25234)

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

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

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

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

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>
…s lifetime (pingdotgg#25226)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge and others added 27 commits October 27, 2026 05:17
…dropped (pingdotgg#25916)

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

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

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

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…n of effects (pingdotgg#25857)

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

Co-authored-by: maria-rcks <maria@kuuro.net>
…otgg#26046)

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

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

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

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>
…an effect (pingdotgg#26049)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ad of stacking another (pingdotgg#26052)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Upstream's new card test loaded the fork's catalog and server modules, which
pull in Expo, so they are mocked and the fork's Switch account button gets a
case. useCreateCloudMachine now compiles, so it leaves KNOWN_BAILOUTS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream's new file preview browser tests render large Word, WASM and worker
previews. Upstream runs Test Web on 8 vCPU; on the fork's 4 vCPU runner they
time out while other browser files share the CPU, a different set each run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in 135 more upstream commits and resolves 45 conflicts by keeping
upstream's change and re-applying the fork's behavior.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@andrewcai8 andrewcai8 changed the title chore: sync upstream through 0899305765 chore: sync upstream through 76d5ec7a22 Oct 27, 2026
@andrewcai8
andrewcai8 merged commit 81b907b into main Oct 27, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📱 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.