Skip to content

merge upstream/main into fork - #502

Merged
adampeterhiggins merged 136 commits into
mainfrom
t3code/sync-upstream-2026-10-27-28286d52
Oct 27, 2026
Merged

adampeterhiggins merged 136 commits into
mainfrom
t3code/sync-upstream-2026-10-27-28286d52

Conversation

@adampeterhiggins

@adampeterhiggins adampeterhiggins commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

What's in this sync

This brings in upstream v0.1.3 and 134 upstream commits since the fork's current main (October 26–27).

New features

Fixes

Notable internal and provider changes

Remaining commits cover mobile visual alignment and file links, PR approvals/stats, account warnings and model badge expiry, onboarding recovery, telemetry batching, accessibility, preview/test reliability, mobile installation/e2e tooling, the FAQ, and review/evaluation infrastructure. The exact upstream commit list follows for auditability.

Discord announcements were not used: the requested channel returned five older messages (October 20), none marked as crossposts or webhooks and none matching this commit range.

All 134 upstream commits added by this sync

Merge scope

Base: main at 38007f610b483cf5fd407d1c9bed196ce514a277. No open upstream-sync PRs or parent stack existed at selection or the pre-push refresh. This PR adds only upstream commits absent from that base.

Pinned upstream: 28286d523fc34582cbe2b5fd0bcf2947a97ed89f.
Range: 38007f610b483cf5fd407d1c9bed196ce514a277..28286d523fc34582cbe2b5fd0bcf2947a97ed89f (134 commits). Before merging, the fork had 551 commits absent upstream, and upstream had 134 absent the fork. Upstream history is preserved in one --no-ff merge; no rebase, cherry-pick, or existing sync-branch modification.

Conflict resolutions

  • Web: retained fork accounts, context/connector pickers, split chats, tabs, citations, saved drafts, queue menus, subscription recovery, and create-before-first-message. Ported palette/shortcut actions into upstream stores and services, and quick-message published-theme repaint into the new app service lifecycle. Adopted upstream timeline state cards and Send now rows.
  • Settings: preserved fork controls within upstream's new pages. Sidebar/tabs, notifications and Quick message remain in General; subscription/Python/repository defaults move to Threads; PR target moves to Diffs; custom Open in moves to Browser; inventory and context clones move to Worktrees. Integrations remains a fork page for third-party connections, with Organizations and Diagnostics still reachable. Search and old deep links follow the actual control destinations.
  • Mobile: preserved StartFrom/attachment integration menus, thread groups, organization scope, automations, PR facet counts, rich links and Move to drafts while adopting upstream navigation/share/voice services, shared clocks, queue simplification, settings groups and first-commit inspector behavior.
  • Backend/contracts: unioned Devin/Custom ACP with fx; retained subscription guards, checkout context, MCP token access, tab/draft/move/integration tools and browser snapshot behavior alongside compact action-tool schemas. Updated fork CLI calls and rich activity previews for those consolidated tools, with a failing-before regression test.
  • Cursor: removed the now-obsolete Max Mode protobuf workaround and exercised SDK 1.0.38's actual model-resolution/send path. Removed its adopted feature from docs/fork-differences.md; updated moved Settings guidance.
  • Preserved both sides' relevant behavior tests. Updated upstream fixture dependencies/context budgets for the fork's added services/tools, and removed tests only for explicitly removed legacy layouts/patches.
Fork commit audit for files split upstream

The following behaviors were checked for receiving props and live callers in the merged tree. Independent reviews checked web account/context/palette/tab/usage/StartFrom/citation flows and settings reachability.

apps/web/src/components/ChatView.tsx

apps/web/src/components/CommandPalette.tsx

apps/web/src/components/ThreadRouteView.tsx

apps/web/src/components/chat/ComposerBannerStack.tsx

apps/web/src/components/chat/useTimelineFollow.ts

apps/web/src/components/chat/useTimelinePositionRestore.ts

apps/web/src/routes/__root.tsx

apps/web/src/routes/_chat.tsx

apps/web/src/components/ThreadTerminalDrawer.tsx

SettingsPanels / IntegrationsSettings / StorageSettings

Controls ported into the new General/Threads/Diffs/Browser/Worktrees pages or retained Integrations page; corresponding search targets and old links verified. The provider registry now lives in client-runtime and retains both fork drivers plus upstream fx.

Split/refactored mobile fork commit checklist

NewTaskDraftScreen.tsx / ThreadComposer.tsx / use-composer-command-menu.ts: callers and receiving props checked in merged tree.

  • 39a760c Gmail/Google connector: Google context queries and file selection in command menu.
  • 9dd9e36 Google Drive/Calendar: picker callbacks and sheets in both composer layouts.
  • c460d20 prior sync adaptations: shared composer, upstream route/service split retained.
  • 6eede0f Start from Automation: picker, menu handler, source snapshot and sheet mounted.
  • 51201bd Discord: picker callbacks and sheet mounted.
  • e1facad draft/send menus: messageDrafts props, SendActionButton menu and queue Move to drafts retained.
  • d42edbb local checkout context: picker, callback, sheet and repositoryWorkspaceCwd preserved.
  • 59754ba numeric PR references: attached repository remotes and thread PR links passed to search.
  • c673040 Granola: picker callbacks and sheet mounted.
  • 5efa3cd Chats/Files tabs: pathTab receiving prop, choices, display and filtering retained.
  • 3b1d7d2 subagent handles: fleet data, Agents tab and chip insertion retained.
  • cb4d538 Notion: picker callbacks and sheet mounted.
  • 0487615 Slack: picker callbacks and sheet mounted.
  • 36a5516 GitHub issue start/attach: picker, menu handler, thread-link call and sheet retained.
  • 4da14ba mobile StartFrom/model/repositories: PR picker/checkout callback, model handoff, repo picker retained.
  • e2afc1f usage limit recovery: usage report/control flow retained in composer.
  • c7713b9 Linear attach: picker, StartFrom handler, thread-link call and sheet retained.

SettingsServerControlsRouteScreen.tsx / former SettingsThreadsRouteScreen.tsx -> ThreadSettingsSections.tsx:

  • c460d20 prior sync settings preserved in upstream regrouped pages.
  • 883c7d9 application updates pause threads: continue-after-restart guidance retained.
  • 622ffce Python terminal activation: Threads page, override keys and controls retained.
  • a14388d Codex/Cursor subscription stop: moved section preserves Stop at subscription limit control.
  • 239091b Claude subscription stop: same shared moved section control and write path preserved.

Verification

  • Dependency install and unused-patch validation passed with repo-local Vite+ 1.4.0 (global Vite+ is older).
  • Changed-file formatting and lint passed after resolving clean-merge lint issues. Both Knip passes and GraphQL generated-source checks passed.
  • The changed-file runner checked 36 affected packages successfully before the final test-fixture follow-up. After that follow-up, final scoped typechecks passed for server, mobile, web, contracts, shared, client-runtime, provider-core, provider-cursor and provider-fx. Non-failing Effect suggestions remain.
  • Focused checks passed for mobile (439 tests plus 43 activity tests), web palette/chat/terminal (88 tests), settings/theme (33 tests), MCP/core/token access/context budgets, provider start/recovery, contracts, Cursor actual sends, CLI and action-aware activity previews. The preview regression failed before the fix.
  • The last five broader unit failures were fixed: compact MCP guidance/schema tests now assert the current contract, and fx skill fixtures use canonical macOS HOME paths and an existing cwd. All eight tests in those two files pass.
  • Final non-browser changed-file test batch (296 files): 5,062 tests passed and 5 failed, all in apps/mobile/src/state/thread-task-permissions.test.ts, whose thread fixture lacked the updatedAt upstream now reads. The fixture was fixed and all 7 tests pass. That batch's typecheck also flagged an untyped schedule literal in apps/server/src/mcp/toolkits/orchestrator/tools.test.ts; after the fix, server and mobile typechecks pass (0 errors) and that file's 5 tests pass.
  • git diff --check passes outside four whitespace-bearing lines in the inherited LegendList patch payload. That patch is byte-for-byte upstream's; install/patch validation passed, so its payload was left intact.
  • The first changed-file invocation unintentionally initialized browser tests and failed during setup despite an attempted exclusion. Subsequent verification explicitly disabled browser execution; the final test selection omits the entire web browser project and runs web's unit project separately. No manual browser/computer, desktop/mobile runtime, release, or paid-model evaluation round was performed.

Runtime verification (web)

Run on vp run dev in this worktree against an empty isolated database (the live database is over the 500 MiB seed limit), driven through T3's Browser panel:

  • Settings: upstream's regrouped pages render with the fork's Projects, Integrations and Organisations entries. Found and fixed: the merge had made Diagnostics a Maintenance sub-page like upstream, dropping the fork's own sidebar entry. 410b6f7 restores it; settingsSearch.test.ts and CommandPalette.logic.test.ts (58 tests) and the web typecheck pass.
  • Command palette: the fork's actions are present (new thread from a PR, branch or issue; Import conversation; Needs attention; Open usage; theme editor).
  • Composer # menu opens with Checkouts, Pull requests, GitHub issues and Repositories tabs (Linear, Slack and Notion need connected accounts, so they weren't exercised), and multi-pick attachReferenceItems is still wired.
  • The fork's sidebar filter menu (Show, Organisations, Projects) works.
  • The fork's CLI against the running dev server: t3 thread list, thread search, thread export, schedule list, draft list and usage all work, and t3 thread --help lists answer, resume, search, export, rename, move, archive and delete.
  • Not covered: mobile (agent device access is turned off in this environment), desktop/Electron (the sync changes 3 lines there), and live provider turns (no paid model runs).

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

Model: GPT-6.1-Sol (merge, conflict resolution and review, with parallel agents), then Claude Opus 5.5 (final fixes and PR) after the first run ran out of credits. Harness: Codex and Claude Code in T3 Code.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits October 26, 2026 02:51
…provider and cwd (pingdotgg#25370)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…aft, not by the composer (pingdotgg#25376)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Poses now cover iPhone SE, iPhone 18 Pro, iPhone Duo folded and unfolded,
iPad Pro 13" in both orientations, Pixel 10 Pro, Pixel 10 Pro Fold folded,
unfolded and unfolded landscape, and Pixel Tablet in both orientations.
Landscape poses rotate once the app is up (a rotation during launch is lost)
and check that the screen really is wider than tall. Taps fall back to the
element's centre when agent-device refuses a covered ref, and a gateway
whose workers briefly reconnect is retried.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The --prepare flag from pingdotgg#25390 had no default, so effect/cli made it
required and every mobile:install failed with "Missing required flag".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agent-device names rotations relative to the device's natural orientation,
which is landscape on the Pixel Tablet and an unfolded Fold, so
"landscape-left" turned them portrait. The runner now asks for a shape and
tries each rotation until the screen has it. It also prepares each platform's
dev client before leasing, rides out longer worker drops, and skips the
Duo poses by default until agent-device can fold Simlock's simulators.

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…from mounted components (pingdotgg#25459)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e hears scrolling through one viewport signal (pingdotgg#25463)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…r thread is not open (pingdotgg#25457)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… search runs from handlers (pingdotgg#25458)

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

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

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
t3dotgg and others added 28 commits October 26, 2026 23:59
…text by 23% (pingdotgg#25790)

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

Co-authored-by: none23 <n.anisimov.23@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… warnings (pingdotgg#25815)

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: amv146 <39172404+amv146@users.noreply.github.com>
… a giant heading (pingdotgg#25804)

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

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…iB page kernels (pingdotgg#25825)

TEMPORARY workaround for an upstream Node bug: nodejs/node#67048
Node 26.9+ --build-sea writes linux-arm64 executables that 16/64 KiB page kernels cannot load.
linux-arm64 now injects with postject, and the archive build rejects incompatible ELF layouts.
One-time exception. Revert once Node ships a fix: grep for the Node issue URL and drop postject
from scripts/package.json.

Fixes pingdotgg#23433. Replaces pingdotgg#23443.

Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s 4x faster (pingdotgg#25824)

Co-authored-by: Omar <76748259+omar9848492@users.noreply.github.com>
Co-authored-by: Carlos D. Escobar-Valbuena <carlosdavidescobar@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (Claude Code) <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…h no list open (pingdotgg#25809)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…saves a draft twice (pingdotgg#25768)

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

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	apps/mobile/src/App.tsx
#	apps/mobile/src/features/home/HomeScreen.tsx
#	apps/mobile/src/features/pull-requests/PullRequestListFilters.tsx
#	apps/mobile/src/features/pull-requests/PullRequestsScreen.tsx
#	apps/mobile/src/features/pull-requests/pullRequestList.test.ts
#	apps/mobile/src/features/pull-requests/usePullRequestList.ts
#	apps/mobile/src/features/settings/SettingsRouteScreen.tsx
#	apps/mobile/src/features/settings/SettingsServerControlsRouteScreen.tsx
#	apps/mobile/src/features/threads/NewTaskDraftScreen.tsx
#	apps/mobile/src/features/threads/ThreadComposer.tsx
#	apps/mobile/src/features/threads/ThreadFeed.tsx
#	apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx
#	apps/mobile/src/features/threads/ThreadQueueControl.tsx
#	apps/mobile/src/features/threads/thread-list-v2-items.tsx
#	apps/mobile/src/features/threads/use-composer-command-menu.test.ts
#	apps/mobile/src/features/threads/use-composer-command-menu.ts
#	apps/mobile/src/lib/markdownDocument.ts
#	apps/mobile/src/native/EnrichedMarkdownText.tsx
#	apps/mobile/src/state/use-selected-thread-requests.ts
#	apps/server/src/mcp/McpHttpServer.test.ts
#	apps/server/src/mcp/McpHttpServer.ts
#	apps/server/src/mcp/toolkits/preview/tools.ts
#	apps/server/src/mcp/toolkits/thread/tools.ts
#	apps/server/src/orchestration-v2/ProviderTurnStartService.ts
#	apps/server/src/provider/builtInDrivers.ts
#	apps/server/src/provider/providerStatusCache.ts
#	apps/web/src/AppRoot.tsx
#	apps/web/src/appInit.tsx
#	apps/web/src/components/ChatMarkdown.tsx
#	apps/web/src/components/ChatView.tsx
#	apps/web/src/components/CommandPalette.logic.ts
#	apps/web/src/components/CommandPalette.tsx
#	apps/web/src/components/ComposerPromptEditorTiptap.tsx
#	apps/web/src/components/ThreadRouteView.tsx
#	apps/web/src/components/ThreadTerminalDrawer.test.ts
#	apps/web/src/components/ThreadTerminalDrawer.tsx
#	apps/web/src/components/chat/ComposerBannerStack.browser.test.tsx
#	apps/web/src/components/chat/ComposerBannerStack.tsx
#	apps/web/src/components/chat/MessagesTimeline.tsx
#	apps/web/src/components/chat/ModelListRow.tsx
#	apps/web/src/components/chat/ModelPickerContent.tsx
#	apps/web/src/components/chat/OpenInPicker.tsx
#	apps/web/src/components/chat/ProviderModelPicker.tsx
#	apps/web/src/components/chat/ProviderSubagentBar.tsx
#	apps/web/src/components/chat/QueuedRunsControl.tsx
#	apps/web/src/components/chat/SkillInlineText.tsx
#	apps/web/src/components/chat/ThreadActivityBanners.tsx
#	apps/web/src/components/chat/TimelineWorkGroupRows.tsx
#	apps/web/src/components/chat/UserMessageContextChips.tsx
#	apps/web/src/components/chat/useComposerContextImport.ts
#	apps/web/src/components/chat/useThreadLifecycle.tsx
#	apps/web/src/components/chat/useTimelineFollow.ts
#	apps/web/src/components/chat/useTimelinePositionRestore.ts
#	apps/web/src/components/contextChipParts.tsx
#	apps/web/src/components/pullRequest/LinkPullRequestDialog.tsx
#	apps/web/src/components/settings/AddProviderInstanceDialog.tsx
#	apps/web/src/components/settings/IntegrationsSettings.tsx
#	apps/web/src/components/settings/SettingsPanels.tsx
#	apps/web/src/components/settings/SettingsScopeSentence.tsx
#	apps/web/src/components/settings/SettingsSidebarNav.tsx
#	apps/web/src/components/settings/StorageSettings.tsx
#	apps/web/src/components/settings/ThemeImportDialog.tsx
#	apps/web/src/components/settings/TypographySettings.tsx
#	apps/web/src/components/settings/providerDriverMeta.ts
#	apps/web/src/components/settings/settingsSearch.ts
#	apps/web/src/components/sidebar/SidebarThreadHeader.tsx
#	apps/web/src/components/sidebar/SidebarThreadRow.tsx
#	apps/web/src/composerDraftStore.ts
#	apps/web/src/routes/__root.tsx
#	apps/web/src/routes/_chat.tsx
#	apps/web/src/themePalette.ts
#	docs/README.md
#	docs/user/cursor.md
#	docs/user/install.md
#	docs/user/project-settings.md
#	docs/user/thread-sidebar.md
#	docs/user/updating.md
#	packages/contracts/src/settings.ts
#	packages/provider-core/src/server/orchestrationInstructions.ts
#	packages/shared/src/inlineSkills.ts
#	packages/shared/src/t3McpToolPresentation.test.ts
#	packages/shared/src/t3McpToolPresentation.ts
Upstream's settings regrouping made Diagnostics a detail page under
Maintenance, dropping the fork's sidebar entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@adampeterhiggins
adampeterhiggins merged commit a5c76f2 into main Oct 27, 2026
@adampeterhiggins
adampeterhiggins deleted the t3code/sync-upstream-2026-10-27-28286d52 branch October 27, 2026 10:39
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.