chore: merge upstream preview v0.0.45-preview.20261001.2518 into custom-nightly - #34
Merged
DiegoJohnsonL merged 73 commits intoOct 2, 2026
Conversation
…der (pingdotgg#14182) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tion (pingdotgg#13463) Co-authored-by: Julius Marminge <julius0216@outlook.com> Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
…ails the run (pingdotgg#14183) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…server (pingdotgg#14187) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pending (pingdotgg#14184) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… before submission (pingdotgg#12003) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…tgg#14103) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…dotgg#14007) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#14199) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…g#14191) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…4304) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…14311) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merges origin/main (ff1db03, v0.0.44) into t3code/codex-turn-mapping (cb64162). No new migrations on main. V1 files V2 deleted (kept deleted; main's changes considered for V2): - orchestration/Layers/ProviderRuntimeIngestion(.test).ts, provider/Layers/CodexAdapter(.test).ts, provider/Layers/ProviderService(.test).ts, server.test.ts: pingdotgg#14290 changes. V2 equivalents ported or listed as follow-ups below. - provider/Layers/OpenCodeAdapter(.test).ts: e518866. OpenCodeAdapterV2 settles admissionSettled in an ensuring on both the prompt and /compact paths, and interrupt waits with a 10s timeout, so it does not hang the same way. Not changed here. Content conflicts (both sides kept unless noted): - server.ts: V2 layer structure; main's CodexInstallation layer added next to AntigravityInstallation; the installation refresh now watches Codex and Antigravity (renamed ProviderInstallationRefreshLive, per main). - ws.ts, contracts rpc.ts/server.ts, settingsSearch.ts, docs/user/install.md (Pi row kept, Codex row from main): take both. - CodexDriver.test.ts, ProviderRegistry.test.ts, ProviderInstanceRegistryLive .test.ts: V2's adapter/ID layers plus main's CodexInstallation, ServerSecretStore and ServerEnvironmentIdentity; main's mocks rewritten for V2's namespace ServerSecretStore import, and V2's real ServerSecretStore layer kept where it already provided one. - desktop main.ts and DesktopClerk.test.ts: V2's pre-ready FileSystem plus main's ElectronShell; main's `shell` test parameter appended after V2's platform/fileSystemLayer parameters. - ui/wizard.tsx: main's `size="wide"` variant replaces V2's className escape hatch, whose only caller (AddProviderInstanceDialog) now uses size="wide". Wide is max-w-3xl, where V2 used max-w-2xl. - AddProviderInstanceDialog.tsx: V2's ACP/auth wizard structure. Applied main's Codex step-0 "Configure manually" and "Continue with ChatGPT" actions, the ghost-muted Cancel, and setupMode "existing" on manual Codex saves. Kept V2's "Add provider" title and used main's description. - ProviderInstanceCard.tsx: main's folded Runtime section for managed Codex; V2's rule of hiding Runtime when a driver has no settings fields still applies to other drivers. - ProviderSettingsPanel.tsx: main's CodexSetupSection comes before V2's generic ProviderAuthenticationSection, because managed Codex also reports setup.canAuthenticate. - WelcomeWizard.tsx: V2's ProviderInstanceIcon with main's displayName and padding. - ThreadErrorBanner.tsx: V2's usage-limit warning variant plus main's ChatGPT usage-limit presentation. V2's plain dismiss icon kept. - ChatView.tsx: V2's timeline error wiring kept. Main's chatGptUsageLimit prop dropped (see below). Ported for pingdotgg#14290 (managed ChatGPT auth): - CodexAdapterV2 gains an optional resolveRuntime that is resolved on each openSession and replaces the launch settings and environment (the T3-installed binary, token-sharing launch args, ACCESS_TOKEN and CODEX_HOME). Managed sessions drop serviceTier, matching V1. - CodexManagedProvider builds its orchestrationAdapter with createCodexAdapterV2 in place of the deleted V1 makeCodexAdapter. The adapter registry already wraps openSession in auth.withAccess. - CodexTextGeneration: added the Scope import that main's resolveRuntime signature needs (V2 had dropped it). - Live orchestrator tests provide CodexInstallation and ServerEnvironmentIdentity, which CodexDriver now requires. - CodexDriver test: the managed account now also opens a V2 session and checks the launch uses the installed binary and account token, and not an ambient OPENAI_API_KEY. Dropped main behavior, because it reads V1 thread activities that V2 removed: - shared isChatGptUsageLimitError and its test, the web ChatView chatGptUsageLimit prop, and mobile ChatGptUsageLimitNotice. The ThreadErrorBanner chatGptUsageLimit prop stays, currently unset. Follow-up work maps it onto V2 provider failures. Other merge fixes: - providerMaintenanceRunner.test.ts: main added CURSOR_DRIVER to a compatibility list. V2 no longer updates the Cursor CLI, so it is removed. - AddProviderInstanceDialog.environment.test.tsx: Codex step 0 now offers "Configure manually", and a manual save stores setupMode "existing". - model-manifest.json and packages/effect-codex-app-server/src/_generated are taken from main (pingdotgg#14198 OpenCode 2 incompatible; pingdotgg#14311 Codex 0.159 bindings). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…dotgg#12900) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…2449) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: SAPHID <saphid@users.noreply.github.com>
…otgg#8865) Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
…#14486) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pty (pingdotgg#14487) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…own run (pingdotgg#14488) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pingdotgg#14239) 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#14269) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ad busy (pingdotgg#14497) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merges origin/main (1905846) into t3code/codex-turn-mapping (f3eb99e). Brings in pingdotgg#14375, pingdotgg#10963, pingdotgg#14351, pingdotgg#14462 (vite-plus 1.0), pingdotgg#14479, pingdotgg#14480, pingdotgg#14485, pingdotgg#14486, pingdotgg#14490, pingdotgg#13612 (threads without a project), pingdotgg#14497 and pingdotgg#14499. No new migrations on main. V1 files V2 deleted (kept deleted): - provider/Layers/ClaudeAdapter(.test).ts: pingdotgg#14497 ignores a result that answers a different Claude turn (an echoed user_message_uuid(s) that is not the active turn's, or a non-human origin), so a /compact queued behind a Claude-initiated turn gets its own result. V2 covers part of this. ClaudeAdapterV2.ts:5913 drops the zero-turn task-notification result that pingdotgg#14497's test sends, and :6178 sends a positive-turn task-notification wake to a continuation run once the process echoes early. Two cases are not covered: a positive-turn task-notification wake before the process's first early echo is accepted as the prompt's result (:6161, :5945), and V2 checks only origin "task-notification" (:2289), not other non-human origins. Both are left for a separate fix in ClaudeAdapterV2, not ported here. - server.test.ts: pingdotgg#13612's tests for the V1 WebSocket dispatch path. The stacked ScratchWorkspace service PR adds service tests instead. Content conflicts: - relay/AgentAwarenessRelay.test.ts: V2's tests with pingdotgg#14462's vite-plus 1.0 API (describe.sequential -> describe(name, { concurrent: false }, ...)). V2 has no signRelayAgentActivityPublishProof block, so only startup catch-up changes. - web performance.bench.ts and client-runtime remotePerformance.bench.ts: V2's benchmarks (V2 projection fixtures, message updates) in pingdotgg#14462's test(name, ({ bench }) => bench(...).run(options)) form. - KeybindingsSettings.logic.test.ts: V2's order (usage.open ranked first, checked against both binding orders). Main's compareCommands and chat.newWithoutProject merged cleanly into the logic and defaults. - contracts/rpc.ts: both V2's projects.mutate and pingdotgg#13612's projects.ensureScratch (main's contract shape), with both import sets. - ws.ts: V2's side everywhere. pingdotgg#13612's V1 dispatch additions are not brought back. projects.ensureScratch is a stub that fails with "Threads without a project are not available yet.", and the config answer omits scratchWorkspaceRoot, so web and mobile do not offer the feature. The stacked ScratchWorkspace service PR implements both. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… shared across threads (pingdotgg#14502) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings in f48d257 (pingdotgg#14502), which only touches CheckpointRestoreSafety.ts and its test. No conflicts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…space service pingdotgg#13612 put "start threads without a project" inline in the WebSocket handler, so only clients could reach it. A ScratchWorkspace service now owns it: - root: the Scratch folder, offered only when the data dir is outside a Git checkout (probed once, re-probed after an interrupt). - ensureProject: one "No project" project per environment, built on ProjectService.bootstrap; a racing create resolves to the winner from its ProjectConflictError. The folder is re-made on every call. - folderForThread: a fresh date-words-id folder for a Scratch thread. ThreadLaunchService claims that folder for a Scratch thread launched at the project root and binds it like an existing worktree, so web, mobile, MCP launches and scheduled tasks all get one. projects.ensureScratch and the config answer call the service, and t3_thread_launch takes scratch: true. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Thread ids that normalize to the same characters, or a launch retried without its receipt, could find both the short and full folder names taken, and the second thread was handed the existing folder. It now claims a fresh suffixed folder. Also exports make, and constructs ScratchWorkspaceProjectError at each failure boundary. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Nothing composes the service from make directly, so knip flags the export. The layer stays the only entry point. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…story (pingdotgg#14270) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#14407) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…stom-nightly Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ServerPush test uses describe(..., { concurrent: false }), since vite-plus
1.0 (pingdotgg#14462) drops describe.sequential.
- Mobile server-push registration reads EnvironmentRegistry and
EnvironmentSupervisor through their namespaces (pingdotgg#14389).
- knip treats apps/mobile/fingerprint.config.cjs as an entry; Expo loads it
by filename.
- Usage page and sidebar refresh tests assert the fork's no-probe-on-open
behavior from c59d233 instead of the removed automatic limits refresh.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #33
Merges upstream preview
v0.0.45-preview.20261001.2518intocustom-nightlywith a merge commit, so the tag stays an ancestor. Every conflict except one was disjoint, so both sides are kept. In the keybindings sort, both sides fixed the same comparator, and upstream's equivalent fix is taken.apps/server/package.json:41-43aidependency (dictation)@opencode/client+@opencode/protocolapps/server/src/serverSettings.ts:157-166DICTATION_API_KEY_*constants aliased toUSAGE_LIMIT_SOURCE_KEY_REDACTEDredactSecret; renames the marker toSECRET_REDACTEDSECRET_REDACTEDapps/server/src/serverSettings.ts:204-214dictation.apiKeyfor clientsbitbucket, dictationapps/server/src/serverSettings.ts:875-906apps/server/src/serverSettings.ts:1048-1091apps/web/src/components/CommandPalette.tsx:50-51ImageIconMessageSquareDashedIconapps/web/src/components/settings/KeybindingsSettings.logic.ts:28-46apps/web/src/components/settings/KeybindingsSettings.logic.ts:238Stringkey fn(command) => commandapps/web/src/routes/__root.tsx:36-40packages/contracts/src/settings.ts:1020-1050DictationSettingsschemaBitbucketSettingsschemaServerSettings, which merged cleanlypnpm-lock.yamlpnpm install --lockfile-onlyOnly
vp fmtwas run on the resolved files. CI runs the checks.Follow-up fixes after the first CI run
These were not merge conflicts. Each one is fork code that upstream changes broke, or that was stale on
custom-nightlyalready:apps/server/src/serverPush/ServerPush.test.ts: vite-plus 1.0 (chore: bump vite-plus to 1.0 pingdotgg/t3code#14462) droppeddescribe.sequential, so this test now usesdescribe(..., { concurrent: false }, ...), the same swap upstream made.apps/mobile/src/features/server-push/serverPushRegistration.ts: upstream now exports Effect services as namespaces (refactor(clients): import Effect services as namespaces pingdotgg/t3code#14389), so this file readsEnvironmentRegistry.EnvironmentRegistryandEnvironmentSupervisor.EnvironmentSupervisor. This also fixes the cascading type errors inconnection/runtime.ts.knip.jsonc: added the fork'sapps/mobile/fingerprint.config.cjs(from 53f2bbf) as a mobile entry, since Expo loads it by filename.apps/web/src/components/usage/*.refresh.test.tsx: fork commit c59d233 stopped the clients from probing usage limits when a page opens, but these tests still expected that probe. They now check the new behavior: opening never probes limits, the sidebar rescans spending once per 3-minute cooldown, and a manual refresh stays busy until it settles.Model: Claude Opus 5.5, Claude Code (Chamaquita).
🤖 Generated with Claude Code