Skip to content

chore: sync upstream through cefb544af3 (Nov 3 2026) - #538

Merged
adampeterhiggins merged 133 commits into
mainfrom
t3code/sync-upstream-2026-11-03-0743
Nov 3, 2026
Merged

adampeterhiggins merged 133 commits into
mainfrom
t3code/sync-upstream-2026-11-03-0743

Conversation

@adampeterhiggins

@adampeterhiggins adampeterhiggins commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

What's in this sync

131 upstream commits add Kiro as an ACP provider, improve provider and thread recovery, and reduce work during startup, streaming, and background operations.

New features

Fixes

  • Claude imports, nested subagents, compaction chains, wake runs, and completion delivery recover more reliably. Codex unknown errors, interrupted usage, background output, and checkpoint restore are handled correctly.
  • OpenCode 2 history, upgrades, forks, pending work, and skill reads are repaired; Cursor compaction, usage after SDK sign-in, and SDK write failures are handled; Pi holds messages through compaction.
  • T3 Connect repairs drifted tunnel ingress, clients reconnect through misleading offline states, and PR watches survive host failures.
  • Mobile keeps conversations steady through layout changes, refreshes rewritten chat images, improves attachment uploads, and reports merge states accurately. Web fixes include sidebar accessibility, checkout grouping, terminal controls, and diff formatting.
  • Desktop packaging fixes cover Linux permissions, Linux startup helpers, macOS x64 bytecode, and bytecode generation after the Effect update.

Notable internal changes

Discord announcements were not used: the requested channel contained no announcement crossposts matching this commit range.

Other commits improve Unicode-safe titles/context labels, file-link paths, Git host link and review handling, provider updates, scheduled webhook dispatch, and docs for recurring tasks and managed links.

Complete upstream commit list (131 commits)

Merge details

Base: e77e0d5a92fc41a93acd3cf1553e2c43a77da56d (origin/main). Parent PR: none; targets main.
Before the merge, the fork had 598 fork-only commits and was missing 131 upstream commits.
Pinned upstream: cefb544af3c98224874419198c0359b652ca3c94.
Upstream range: e77e0d5a92fc41a93acd3cf1553e2c43a77da56d..cefb544af3c98224874419198c0359b652ca3c94 (131 commits absent from the base).

Conflict resolutions

  • Clients: retain fork sidebar organization, previews, timeline behavior, model-change markers, integrations, settings removal semantics, and review excerpts; add upstream accessibility, image refresh context, grouping controls, and Kiro entries.
  • Server: preserve fork worktree/context features, browser deadline/artifact protections, link watches, per-instance auth, and provider budget behavior while adopting upstream fixes and the Effect MCP transport API.
  • Providers/contracts: retain Devin and Custom ACP alongside Kiro, union permission/settings lists, preserve instance-aware Cursor sign-in and quota handling, and adopt upstream Claude/Codex recovery and Cursor account source behavior.
  • Effect 4.1.2: migrate fork-only crypto use to SecureRandom/Digest and explicitly provide those services in production/test layers. Kiro implements the fork's additional text-generation interface as unsupported.
  • Docs: retain fork provider/install guidance and remove the obsolete claim that upstream lacks Cursor SDK usage.
  • No conflicted file was split by this upstream range; moved-block fork commit checklists were therefore unnecessary. Fork-specific callers and provider registration were audited across clients and server. The fork's individual skill symlink layout remains intact (skills:check passes).

Baseline fork fix

The changed-file gate also found an existing fork bug on origin/main: a fresh successful completion in a snoozed child tab did not return its group as documented. Per the sync skill, its two-file fix is kept in a separate follow-up PR stacked on this sync. Merge this PR first, then the follow-up: #539.

Verification

Passed focused verification:

  • Typechecks: server, web, mobile, desktop, client-runtime, contracts, and the affected provider packages.
  • 472 Claude/Codex adapter tests; 629 server conflict-related tests; 100 additional crypto/auth/MCP migration tests; 25 fork-provider tests.
  • 51 provider tests plus 18 final Kiro/Cursor tests; 13 web unit tests; 4 appearance tests plus 5 desktop startup/authority tests; 14 shared-client command tests.
  • Resolved-file formatting/lint, skill links, and diff whitespace checks. Merge precommit formatting/lint/knip passed.

Changed-file gate (check:changed origin/main --timeout 1800): format, lint, both knip passes, both GraphQL checks, unused patches, the React Compiler check and affected typechecks (40 packages) pass on the final tree. Its test phase ran 371 files: 349 passed, 5 non-browser tests failed and 16 browser suites could not collect (browser mode was switched off, see below). The 5 failures were fixed in the merge commit: two Kiro replay fixtures had hard-coded runtime_info tails, and the AgentSessionScanner, ProviderRegistry and CodexDeveloperInstructions tests needed updates after upstream behaviour changes. The settlement failure already exists on origin/main and is fixed in the follow-up PR. A focused rerun of those 5 files on the final tree passes (164 tests). settlement.test.ts will keep failing on this PR until the follow-up merges.

Web browser suites (run afterwards in headless Chromium, one file at a time because several in one process crash on macOS): all 16 suites skipped by the gate now pass. 15 passed as merged. ProviderSettingsPanel.environment.browser.test.tsx had 5 failures: upstream's new confirm-before-removing dialog (pingdotgg#29480) blocked the fork's delete tests, and upstream's tests targeted a "Reset provider settings" button that the fork replaces with Delete. Commit 293deb0 adapts those tests (15/15 pass); component behaviour is unchanged.

Real web client (dev server from this branch, fresh database, free Replay provider): a full showcase turn (plan, tool calls, approval, approve, markdown, code block, table) streams and completes, with the sidebar status updating; all 23 Settings sections open with no errors; Settings › Providers lists live Codex/Claude status, and deleting a provider now asks for confirmation first; terminal drawer, right panel and branch Diff load; snooze → Wake now works; no server errors in the dev log. One existing fork bug found, not caused by this merge: after deleting a default provider such as Codex it stays listed as "Disabled", because the server's foldProviderInstanceEnabledFlags drops the config.enabled: false marker the client uses to hide it. The same code is on main.

The gate ran through a gitignored wrapper that excludes the browser*/renders* projects and **/*.browser.test.*, and switches browser mode off, because this run was not allowed to use browser automation. No check source is modified.

The model-routing evals (tt-background-agent, tt-background-worker-pr-is-delegate) were attempted but could not run because ANTHROPIC_API_KEY is unavailable. No paid model calls ran. This remains a verification gap for the merged model-facing guidance.

PR merging and releases are excluded from this run.

Merge with Create a merge commit. It keeps upstream history and the merge base for the next sync.

Model: gpt-6.1-sol (merge, resolutions, checks), finished by claude-opus-5-5 after a 429 interruption. Harness: Codex and Claude Code in T3 Code.

🤖 Generated with Claude Code

Yash-Singh1 and others added 30 commits November 2, 2026 07:42
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
)

Co-authored-by: Gabriel Rodrigues <huijirohankei@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…29465)

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…und Agent (pingdotgg#27139)

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

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…PR update (pingdotgg#29369)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…hile this device's sign-in loads (pingdotgg#29352)

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

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

## Problem

PR watches stopped after eight failed host reads, so a prolonged network outage prevented later CI and review updates from reaching the thread.

## Change

Keep watches active after provider failures reported as `failed`. Read detail and activity concurrently without allowing an activity failure to cancel or hide a permanent detail failure. Repeated known permanent failures still stop the watch and notify the agent; rate limits still pause reads. Non-rate-limited GitHub HTTP 403 responses and GraphQL `FORBIDDEN` responses now use a distinct `forbidden` reason so access refusals are counted instead of retried indefinitely. GraphQL error types survive the client mapping, after the existing requested-reviewer fallback.

The provider's `failed` category also includes unclassified host and decode errors. Those continue retrying at the existing two-minute cadence until the watch ends or is stopped. A fixed outage deadline would recreate the recovery failure for longer outages.

## Scope and approval

This is a focused fix for an obvious bug in existing PR watch recovery, covered by the small bug-fix exception in CONTRIBUTING.md. The changes cover watcher recovery, a GitHub failure classification needed to preserve permanent-error handling, and their regression tests. The new server-side `forbidden` reason does not change RPC contracts or add settings.

## Verification

`vp run check:changed` passed, including 154 tests across five files. Regression coverage includes a 30-minute outage followed by one CI-success notification, mixed activity/detail failures, resetting a prior failure count, and repeated forbidden reads stopping the watch. Provider tests distinguish HTTP 403 and exclusively permanent GraphQL refusals from retryable HTTP 503 and mixed or untyped GraphQL errors. The mixed-failure and GraphQL classification cases failed before their fixes. Seven focused requested-reviewer fallback/refusal tests also pass.

Model: GPT 6.1 Sol. Harness: Codex.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…diff load (pingdotgg#27833)

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Henry Stern <6068107+hstern@users.noreply.github.com>
Co-authored-by: Ashish Patil <7754022+ash663@users.noreply.github.com>
Co-authored-by: TinBane <363069+TinBane@users.noreply.github.com>
…tgg#29680)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
juliusmarminge and others added 25 commits November 2, 2026 18:32
…#23373)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…turn absorbed its wake (pingdotgg#28010)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
…ory scan ends (pingdotgg#29535)

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

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

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

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>
…3804)

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

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

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Exotic209093 <134711311+Exotic209093@users.noreply.github.com>
Co-authored-by: Issue triage verification <triage@localhost>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…#22661)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
… limit (pingdotgg#23192)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ync-upstream-2026-11-03-0743

# Conflicts:
#	apps/mobile/src/features/threads/ThreadFeed.tsx
#	apps/server/src/cli/app.ts
#	apps/server/src/git/GitManager.test.ts
#	apps/server/src/mcp/McpHttpServer.ts
#	apps/server/src/mcp/PreviewAutomationBroker.test.ts
#	apps/server/src/mcp/WorktreeMcpService.ts
#	apps/server/src/mcp/linkOrigin.test.ts
#	apps/server/src/mcp/toolkits/core.test.ts
#	apps/server/src/mcp/toolkits/project/handlers.test.ts
#	apps/server/src/mcp/toolkits/thread/tools.ts
#	apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts
#	apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts
#	apps/server/src/orchestration-v2/runtimeLayer.test.ts
#	apps/server/src/preview/ServerBrowserPage.ts
#	apps/server/src/preview/SessionControl.test.ts
#	apps/server/src/project/AgentSessionScanner.ts
#	apps/server/src/project/ProjectSetupScriptRunner.ts
#	apps/server/src/provider/AgentContextBudget.test.ts
#	apps/server/src/provider/Drivers/ClaudeDriver.ts
#	apps/server/src/provider/Drivers/CodexDriver.ts
#	apps/server/src/serverSettings.test.ts
#	apps/server/src/storageCleanup.test.ts
#	apps/server/src/usage/UsageService.test.ts
#	apps/server/src/usage/cliproxyApi.ts
#	apps/web/src/components/ChatView.tsx
#	apps/web/src/components/Sidebar.tsx
#	apps/web/src/components/chat/MessagesTimeline.browser.test.tsx
#	apps/web/src/components/settings/ProjectSettingsPanel.tsx
#	apps/web/src/components/settings/ProviderSettingsPanel.tsx
#	apps/web/src/components/settings/settingsSearch.ts
#	apps/web/src/components/sidebar/SidebarThreadRow.tsx
#	apps/web/src/reviewCommentContext.ts
#	apps/web/src/timestampFormat.ts
#	docs/README.md
#	docs/user/install.md
#	docs/user/permission-modes.md
#	docs/user/usage.md
#	packages/contracts/src/clientRpcPermissions.ts
#	packages/contracts/src/settings.ts
#	packages/provider-acp/src/server/adapter.ts
#	packages/provider-core/src/server/orchestrationInstructions.ts
#	packages/provider-cursor/src/server/CursorUsageAccounts.ts
#	packages/provider-cursor/src/server/accountCache.ts
#	packages/provider-cursor/src/server/accountUsage.ts
#	packages/provider-cursor/src/server/credentialStore.ts
#	packages/provider-cursor/src/server/driver.ts
#	packages/provider-cursor/src/server/usageLimits.ts
#	packages/provider-grok/src/server/driver.ts
Upstream now asks before removing provider settings (pingdotgg#29480).
The fork deletes default providers instead of resetting them, so upstream's
reset-button cases are adapted to the delete button and the reset-only
"turned off" warning case is dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@adampeterhiggins
adampeterhiggins merged commit a7193f9 into main Nov 3, 2026
@adampeterhiggins
adampeterhiggins deleted the t3code/sync-upstream-2026-11-03-0743 branch November 3, 2026 09:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.