Skip to content

chore: merge upstream preview v0.0.45-preview.20261001.2518 into custom-nightly - #34

Merged
DiegoJohnsonL merged 73 commits into
custom-nightlyfrom
chamaquita/upstream-v0.0.45-preview.20261001.2518
Oct 2, 2026
Merged

DiegoJohnsonL merged 73 commits into
custom-nightlyfrom
chamaquita/upstream-v0.0.45-preview.20261001.2518

Conversation

@chamaquita-d3

@chamaquita-d3 chamaquita-d3 Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Fixes #33

Merges upstream preview v0.0.45-preview.20261001.2518 into custom-nightly with 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.

File:lines Class custom-nightly Upstream Kept Why
apps/server/package.json:41-43 disjoint adds ai dependency (dictation) adds @opencode/client + @opencode/protocol both Unrelated dependencies
apps/server/src/serverSettings.ts:157-166 disjoint DICTATION_API_KEY_* constants aliased to USAGE_LIMIT_SOURCE_KEY_REDACTED Bitbucket secret names + redactSecret; renames the marker to SECRET_REDACTED both, with the dictation alias pointing at SECRET_REDACTED Upstream's rename removed the old constant, so the fork's alias now uses the new name. Same marker value
apps/server/src/serverSettings.ts:204-214 disjoint redacts dictation.apiKey for clients redacts Bitbucket tokens both; returns bitbucket, dictation Separate settings sections
apps/server/src/serverSettings.ts:875-906 disjoint reads the dictation key from the secret store reads Bitbucket tokens from the secret store both, as sequential blocks The hunks were interleaved, so each block was rebuilt whole
apps/server/src/serverSettings.ts:1048-1091 disjoint writes/removes the dictation key secret writes/removes Bitbucket token secrets both, as sequential blocks Separate secrets
apps/web/src/components/CommandPalette.tsx:50-51 disjoint imports ImageIcon imports MessageSquareDashedIcon both Both icons are used
apps/web/src/components/settings/KeybindingsSettings.logic.ts:28-46 same question, different answers fork's transitive Usage-block comparator (2833460) upstream's transitive Usage-block comparator upstream Both are total orders that keep Usage rows in page order. Taking upstream's version avoids repeat conflicts
apps/web/src/components/settings/KeybindingsSettings.logic.ts:238 same question, different answers String key fn (command) => command upstream Follows the comparator choice
apps/web/src/routes/__root.tsx:36-40 disjoint Background studio/folder/theme sync imports ChatGPT welcome + provider auth callback coordinators both Unrelated root components; the JSX merged cleanly with both
packages/contracts/src/settings.ts:1020-1050 disjoint DictationSettings schema BitbucketSettings schema both Both are referenced by ServerSettings, which merged cleanly
pnpm-lock.yaml generated — — upstream's lockfile, then pnpm install --lockfile-only Regenerated from the merged manifests

Only vp fmt was 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-nightly already:

  • apps/server/src/serverPush/ServerPush.test.ts: vite-plus 1.0 (chore: bump vite-plus to 1.0 pingdotgg/t3code#14462) dropped describe.sequential, so this test now uses describe(..., { 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 reads EnvironmentRegistry.EnvironmentRegistry and EnvironmentSupervisor.EnvironmentSupervisor. This also fixes the cascading type errors in connection/runtime.ts.
  • knip.jsonc: added the fork's apps/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

juliusmarminge and others added 30 commits September 28, 2026 17:51
…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>
t3dotgg and others added 24 commits September 30, 2026 13:03
…#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>
chamaquita-d3 Bot and others added 2 commits October 1, 2026 06:24
- 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>
@DiegoJohnsonL
DiegoJohnsonL merged commit aedf4e6 into custom-nightly Oct 2, 2026
12 checks passed
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.

Upstream preview v0.0.45-preview.20261001.2518 conflicts with custom-nightly