Skip to content

chore: merge upstream/main into fork (2026-11-10) - #565

Merged
adampeterhiggins merged 120 commits into
mainfrom
t3code/sync-upstream-2026-11-10-0930
Nov 10, 2026
Merged

adampeterhiggins merged 120 commits into
mainfrom
t3code/sync-upstream-2026-11-10-0930

Conversation

@adampeterhiggins

@adampeterhiggins adampeterhiggins commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

What's in this sync

118 upstream commits add newer models and smoother everyday workflows:

Discord announcements were not used: the channel returned only October messages, with no matching announcement crossposts for this November range.

Complete upstream commit list (including remaining fixes and maintenance)

Stack and scope

Parent: #563. This PR adds only newer upstream commits relative to that parent. Merge the parent first.

Base: fc11e25219627ac55fc6d9dbb7435dd6ba69aaf2
Pinned upstream: 7171fdd7716b05dc1b4be40c26ac78e8bb35f80c
Range: fc11e25219627ac55fc6d9dbb7435dd6ba69aaf2..7171fdd7716b05dc1b4be40c26ac78e8bb35f80c

Resolution and verification

Server/desktop/provider conflicts resolved.

  • Desktop window tests union preserves fork save/reveal/native-interaction ownership coverage and upstream HTML fullscreen sync coverage; copy-text harness uses new callback supported by upstream tests.
  • Self-update tests union preserves fork running-thread continuation and upstream download diagnostic/retry cases.
  • Orchestrator PR-watch reactivation retains fork pausedPullRequestWatch helper and restores upstream awaitingApproval/approvalAnnounced fields from ended watch.
  • ServerBrowserPage evaluate retains fork shared read budget and terminateExecution on timeout, adds upstream guarded top-level-await parser retry under the remaining read budget. Tests from both sides retained and upstream numeric timeout arguments adapted to ReadOptions.
  • Agent context budget regenerated from measured values, without cutting text: 6515/8245/78539.
  • Cursor account usage keeps SDK token, CLI file/keychain and custom homes. Scan uses upstream concurrency 2; event hashing uses native digestHex with Digest resolved once per scan, while exported account identity helper remains available. Existing accountUsage and UsageService tests pass.
  • OpenCode imports union includes probe environment and home resolution; fork ignored-name generation calls new runtime resolver instead of deleted probe variable.

Verification against current tree:

  • vp check --fix on all 11 owned conflict files: passed.
  • vp run --filter t3 --filter @t3tools/desktop --filter @t3tools/provider-cursor --filter @t3tools/provider-opencode typecheck: 4/4 passed.
  • Focused desktop IPC/window, selfUpdate, UsageService, accountUsage, OpenCode driver, AgentContextBudget run: 158 passed and budget-only mismatch; after regeneration, budget + desktop window rerun: 30 passed.
  • vp test run apps/server/src/orchestration-v2/pullRequestWatch.test.ts apps/server/src/orchestration-v2/ThreadPullRequestService.test.ts: 39 passed.
  • vp test run apps/server/src/preview/ServerBrowserPage.test.ts -t 'does not retry a parse error that arrives after the timeout': 1 passed, 37 skipped. This selected test uses only mocked CDP; browser-launching tests were not run due explicit restriction.
  • git diff --check for owned paths passed.
    Logs: server-tests.log, server-tests-rerun.log, server-types.log, server-watch-tests.log, preview-unit.log, server-format.log in this directory.

Web resolutions

Web conflicts resolved.

  • AppSidebarLayout: retain fork UsageFooterFrame and height while adopting upstream showSidebar support for welcome page.
  • Sidebar: retain fork grouped/tabbed sidebar, selection removal, cn, clock behavior, and sidebarRouteThreadKey; adopt upstream stable snooze callback and preview-aware keybindings. Removed obsolete purity suppressions now callback is stable.
  • Citation chip: fork uses injected rich composer editor and generic focus handle; retain that instead of upstream textarea-specific focus API. Rich editor already initializes collapsed cursor to end of saved comment. Preserve fork split-submit and destination tests; upstream textarea-specific scroll/selection test inapplicable to rich editor.
  • ChatComposer: ordinary sends may proceed while uploads finish; question answers and unheld approvals still block on fork's attachment upload reason, which includes files.
  • ProviderModelPicker: union React imports, keep fork ComponentProps and upstream registry refresh hooks.
  • ThreadRelationshipsControl test: retain fork narrow mocks and upstream stylesheet import.
  • useComposerSelection: deduplicate imports and retain upstream applyThreadModelPick with fork option preservation and interaction mode.
  • AddProviderInstanceDialog: retain fork local ACP immediate completion and sign-in continuation, use upstream onCreated(instanceId, driver) signature.
  • Keybinding and scheduled-task tests: union upstream and fork coverage.
  • CSS: keep quick-message theme styling and upstream keyboard workspace focus styling.
  • Root route: adopt shared appHosts across welcome and main shells; retain fork desktop appearance/main-destination coordinators and all dialog/picker hosts.

Upstream replacement audit

WelcomeWizard was replaced by WelcomePage. Fork commits affecting old file:

Removed obsolete WelcomeWizard and its fork dialog-specific browser test (old multi-step controls no longer exist). Upstream replacement import browser suite retained. No browser automation executed.

Clean merge repairs

Web typecheck caught four integrations in files Git merged cleanly:

  • ChatView old gitStatusQuery.error unavailable after upstream narrowed chatGitStatusAtom. Added a separate boolean initial-status atom so checkout-kind spinner ends on failure without restoring full-status rerenders. Extended existing vcs atom test with initial/failure/success assertions.
  • BackgroundWorkDetails upstream test supplies fork-required onViewAgents: null.
  • settingsSearch upstream welcome test supplies fork-required hasMacProviderSettingsEnvironment.
  • toolCallBody fork diff parser uses @pierre/diffs 1.7 options object (cacheKeyPrefix and disableLineMatching).

Verification against current web tree

  • node_modules/.bin/vp run --filter @t3tools/web typecheck: PASS (exit 0; Effect suggestions only), web-typecheck.log.
  • vp test run KeybindingsSettings.logic, scheduledTasksSettings.logic, welcomePage.logic: PASS, 63 tests, web-tests.log.
  • vp test run vcs, toolCallBody, settingsSearch: PASS, 30 tests, web-tests-extra.log.
  • vp check --fix 12 conflict files and 6 integration files: PASS, no warnings/lint errors.
  • git diff --check -- apps/web: PASS.

Resolved and staged all six mobile/client-runtime conflicts.

  • NewTaskDraftScreen uses upstream viewport-height controls callback (with compact context controls); existing clone banner already moved into that callback. Retained fork repositoryWorkspaceCwd guard.
  • ThreadDetailScreen accepts upstream controls callback plus fork repository workspace cwd.
  • Model selection uses upstream immediate thread persistence helper; moved fork interaction-mode reset for providers without the toggle into that helper and updated caller. Removed obsolete helper and imports.
  • Thread rows retain fork tab-group/draft accessibility labels, menu organization, subscription limits, project/group moves and hidden rows. Added upstream provider instance name to accessibility label and retained clean-merged visible instance label. Applied upstream auto-settle labels Follow settings/Never.
  • Client-runtime thread command type imports are union of both sides.
    Checks: git diff --check -- apps/mobile packages/client-runtime passed. No package checks run: parent coordinating install and focused verification.

Follow-up verification (current staged tree):

  • Restored updateComposerDraftSettings import still used by fork follow-up handling after upstream helper extraction.
  • node_modules/.bin/vp check --fix on seven owned resolution files: passed formatting and lint.
  • node_modules/.bin/vp run --filter @t3tools/mobile typecheck: passed (suggestions only); log typecheck-mobile-retry.log.
  • Focused threadCommands, use-composer-drafts, NewTaskDraftRouteScreen tests: 3 files / 103 tests passed; mobile-tests.log.
  • git diff --check owned paths passed.

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

Model: gpt-6.1-sol. Harness: Codex in T3 Code.

The selected base was 635 fork-only commits ahead and 118 upstream commits behind pinned upstream. The original image-pan source and test matched pinned upstream; the follow-up fixes only the test ordering.

Follow-up fork-regression review

Reviewed head 17781a81f8251007a18e6237b1a4d2807c2eff53 against both merge parents in three independent source audits. No concrete merge-induced regression found in the inspected paths:

  • Web: composer account/model/options and traits persistence, attachment/approval upload ordering, queued edits, palette/sidebar actions, integration picker wiring, Welcome provider enablement, shared dialog hosts and git-status projection.
  • Mobile/shared: model reset/options, optimistic draft reconciliation, viewport controls and feed props, integration entry points, row menus, socket-first fallback/auth, cache write ordering and optional capability gates.
  • Server/providers/desktop: evaluate deadline/abort behavior and top-level-await retry, Cursor account identity/usage, OpenCode runtime resolution, PR-watch reactivation, streaming/continuations, provider inventory, native IPC ownership, MCP scopes and hosted approval/remote identity checks.

Additional verification: AgentAccessMcpServer.test.ts, McpToolAccess.test.ts, and PairingGrantStore.test.ts passed: 3 files, 81 tests. Run directly from the server package; no browser launched in this follow-up.

Runtime verification and resolved image-pan failure

User lifted the browser/computer automation restriction. Head be665c472c fixes the test failure without changing product code: the test sent a native vertical wheel while the image fit, then created overflow by zooming before Chromium finished handling it. That pending wheel moved the new scroll area during the horizontal-pan assertion. Removed the redundant pre-zoom wheel step, preserving native horizontal/vertical/diagonal pan, uncanceled wheel, unchanged zoom, and pointer-anchor assertions. Baseline failed; corrected browser file passed 5/5.

Final check:changed against the stack parent passed every gate: format, lint, both knip passes, GraphQL, unused patches, all 41 affected package typechecks, 204 test files (5,042 tests passed, one skipped), five Node tests, and React Compiler coverage (145 files).

Integrated runtime checks against seeded isolated worktree state:

  • Web: composer/model and reasoning menus, integration attachment menu, command-palette fork actions, GitHub issue picker, and single Welcome page including Devin opt-in action render and open correctly. Free Replay showcase streamed plan/tools, paused for approval, accepted approval, and completed with terminal/markdown output. No paid provider turns.
  • Desktop: composer and footer loaded. Real native pointer input entered HTML fullscreen and OS fullscreen; exiting returned OS fullscreen to false. Temporary test element removed and captured desktop process tree stopped; all recorded ports verified free.
  • iOS: native fingerprint built and installed successfully (370s), but UI verification is blocked by the Device driver's persistent “Open in T3 Code Dev?” system prompt. Driver-recommended relaunch/alert recovery failed with ALERT_DEADLINE_EXCEEDED; further device work stopped per tool instructions. Device closed and Metro stopped.
  • Android: unavailable because this host has no Android SDK.

Live relay/tunnel, external account sign-in, paid provider flows, and native mobile UI remain unverified. Earlier automated browser test runs occurred before the restriction was lifted due ineffective exclusions; that history remains disclosed. No PR merge or release performed.

shivamhwp and others added 30 commits November 9, 2026 15:14
…#31739)

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

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

Cold thread opens use the bounded socket snapshot once and fall back to HTTP after any failure, defect, or dropped session. Connects reuse a descriptor a check just read, only over HTTPS, only on an id match, within 5 s. Per-frame socket deflate from pingdotgg#33172 was dropped because the iOS socket already negotiates permessage-deflate.

Continues pingdotgg#33172.

Co-authored-by: Bil0000 <62337003+Bil0000@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…pingdotgg#25835)

Co-authored-by: Luca Lucidera <l.lucidera@dkr.srl>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#28571)

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

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

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
…ploads and terminal state (pingdotgg#29164)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…en its run starts (pingdotgg#29601)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… has one digit (pingdotgg#29851)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…3 ms median) (pingdotgg#30038)

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

Co-authored-by: Justin <159104807+Justin24506@users.noreply.github.com>
…n character (pingdotgg#30392)

Co-authored-by: maria-rcks <maria@kuuro.net>
PixPMusic and others added 26 commits November 9, 2026 21:07
…33730)

Co-authored-by: Claude Fable 5.2 <noreply@anthropic.com>
…al (pingdotgg#33535)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…uest times out (pingdotgg#27677)

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 later subagent results (pingdotgg#33469)

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

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…to itself (pingdotgg#33695)

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

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ame is long (pingdotgg#33181)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	apps/desktop/src/ipc/methods/window.test.ts
#	apps/desktop/src/window/DesktopWindow.test.ts
#	apps/mobile/src/features/threads/NewTaskDraftScreen.tsx
#	apps/mobile/src/features/threads/ThreadDetailScreen.tsx
#	apps/mobile/src/features/threads/ThreadSettingsSheet.tsx
#	apps/mobile/src/features/threads/thread-list-v2-items.tsx
#	apps/mobile/src/state/use-thread-composer-state.ts
#	apps/server/src/cloud/selfUpdate.test.ts
#	apps/server/src/orchestration-v2/Orchestrator.ts
#	apps/server/src/preview/ServerBrowserPage.test.ts
#	apps/server/src/preview/ServerBrowserPage.ts
#	apps/server/src/provider/agentContextBudget.json
#	apps/server/src/usage/UsageService.test.ts
#	apps/web/src/components/AppSidebarLayout.tsx
#	apps/web/src/components/Sidebar.tsx
#	apps/web/src/components/chat/AssistantCitationChip.browser.test.tsx
#	apps/web/src/components/chat/AssistantCitationChip.tsx
#	apps/web/src/components/chat/ChatComposer.tsx
#	apps/web/src/components/chat/ProviderModelPicker.tsx
#	apps/web/src/components/chat/ThreadRelationshipsControl.browser.test.tsx
#	apps/web/src/components/chat/useComposerSelection.ts
#	apps/web/src/components/onboarding/WelcomeWizard.tsx
#	apps/web/src/components/settings/AddProviderInstanceDialog.tsx
#	apps/web/src/components/settings/KeybindingsSettings.logic.test.ts
#	apps/web/src/components/settings/scheduledTasksSettings.logic.test.ts
#	apps/web/src/index.css
#	apps/web/src/routes/__root.tsx
#	docs/user/source-control.md
#	docs/user/thread-sidebar.md
#	docs/user/welcome-wizard.md
#	packages/client-runtime/src/state/threadCommands.ts
#	packages/provider-cursor/src/server/CursorUsageAccounts.ts
#	packages/provider-cursor/src/server/accountUsage.ts
#	packages/provider-opencode/src/server/driver.ts
Base automatically changed from t3code/sync-upstream-2026-11-09-0930 to main November 10, 2026 10:10
@adampeterhiggins
adampeterhiggins merged commit 826acec into main Nov 10, 2026
@adampeterhiggins
adampeterhiggins deleted the t3code/sync-upstream-2026-11-10-0930 branch November 10, 2026 11:55
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.