Skip to content

chore(fork): integrate upstream v0.1.1-nightly.20261020.3411 - #35

Merged
kylebegeman merged 640 commits into
mainfrom
integrate/v0.1.1-nightly.20261020.3411
Oct 20, 2026
Merged

kylebegeman merged 640 commits into
mainfrom
integrate/v0.1.1-nightly.20261020.3411

Conversation

@kylebegeman

@kylebegeman kylebegeman commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Integrates upstream tag v0.1.1-nightly.20261020.3411 (d36b7da, 634 commits) into the Loom fork. The 68 conflicts were resolved by adopting upstream's shape everywhere and moving each fork seam onto it. No fork feature or upstream change was dropped. Four follow-up commits fix what the integration gate found: upstream's new lint rules, fork tests that broke on upstream's changed services, browser-mode tests the gate cannot run, and one new unbranded label.

Conflict resolutions

Packaging and shared

  • packages/shared/package.json: upstream's exports plus the fork's ./sha256, ./brand, ./fork/library-launch and ./fork/directory subpaths.
  • pnpm-workspace.yaml: upstream's settings plus the fork's protobufjs: false build opt-out.
  • packages/shared/src/cliRelease.ts: upstream's new release lookup, still routed through the fork's kylebegeman/loom repository and unprefixed tag helpers (fleet-connect).
  • scripts/build-desktop-artifact.ts: upstream's new permission strings and options, with every product name going through BRAND_NAME (brand).

Mobile connections

  • features/cloud/linkEnvironment.ts: upstream's Effect.fn link generator now carries the fork's guards and notificationsEnabled payload. The fork's wrapper stays.
  • features/connection/ConnectionsNewRouteScreen.tsx: upstream's ListRow sign-in row, with the fork's Loom Connect label.
  • features/projects/AddProjectScreen.tsx: the fork's loading and saved-computer empty states, inside upstream's spacing container.
  • features/settings/SettingsEnvironmentDetailRouteScreen.tsx: the fork's OS-managed branch comes first, then upstream's newer-version condition for the manual update hint.
  • features/settings/SettingsMicrophoneRouteScreen.tsx, SettingsProjectOverviewRouteScreen.tsx: union of the imports. Upstream's Button swap is taken.
  • features/settings/environment-maintenance.test.ts: upstream's rewritten release-check tests, adapted to the fork's kylebegeman/loom URLs and unprefixed tags.

Mobile threads and client runtime

  • features/home/ThreadListToolbar.tsx: upstream's WorkspaceListToolbarRow header, with the fork's search and filter labels ported on and the new title label branded.
  • features/threads/NewTaskRouteScreen.tsx: fork side. Upstream's unsupported state and Button swap were already in it.
  • features/threads/ThreadComposer.tsx, ThreadFeed.tsx: union of the imports.
  • features/threads/ThreadNavigationSidebar.tsx: upstream's useMemo around the fork's threads-only search.
  • features/threads/git/GitOverviewSheet.tsx: upstream's ListRow props, keeping the fork's checkpointCapable disabled state.
  • features/threads/sidebar-native-header-items.ts: upstream's extracted filter header helper now carries the fork's accessibility label, so the iPad sidebar gets it too.
  • lib/threadActivity.test.ts: upstream's table-driven form, with the fork's interrupted and cancelled compaction rows.
  • packages/client-runtime/src/work-log/presentation.ts: upstream's structure and active-work check. The fork keeps separate "interrupted" and "cancelled" compaction labels and its broader token-count guard.

Codex

  • provider/Drivers/CodexDriver.ts: rebuilt from upstream's Effect.fn create with CodexUsageHistory. The fork's switchboard snapshot settings and its routed native-usage skip are reapplied.
  • orchestration-v2/Adapters/CodexAdapterV2.ts: upstream throughout, with the switchboard and vault-terminal seams reapplied. The fork's duplicate compaction settle loop is removed in favor of upstream's fix(codex): settle compaction items when turns end pingdotgg/t3code#17265. One fork difference remains as a marked tweak: a turn that completes while compaction is running marks it cancelled.
  • orchestration-v2/Adapters/CodexAdapterV2.test.ts: tests from both sides.

Claude and provider core

  • orchestration-v2/Adapters/ClaudeAdapterV2.ts: upstream's queryPolicyForTurn and appendSystemPromptFileText, followed by the fork's terminal MCP session options.
  • orchestration-v2/Adapters/ClaudeAdapterV2.test.ts: tests from both sides.
  • provider/ClaudeProvider.ts: upstream's custom API endpoint and usageCheckedAt. The switchboard-routed sign-in check is kept.
  • provider/Drivers/ClaudeDriver.ts: rebuilt from upstream's Effect.fn create and cache changes, with the switchboard probes, routing, invalidation and workspace settings reapplied.
  • provider-core/src/server/McpProviderSessions.ts: upstream's HTML render tracking, plus the fork's terminal connections.
  • provider-core/src/server/orchestrationInstructions.ts: both new sections. Upstream's model-options section comes first, then the fork's vault instructions.

Orchestration

  • ProjectionStore.ts: the fork's getProviderSessionsForRecovery, then upstream's Effect.fn getRecoveryThreadIds.
  • ProviderRuntimeRecoveryService.ts: upstream's Effect.fn reconcile, with the fork's detached-session stop pass.
  • ProviderSessionManager.ts: upstream's Effect.fn shapes, with the fork's lifecycle thread fallback and onClosed option.
  • ProviderTurnStartService.test.ts: union of the contracts imports.
  • ThreadLaunchService.test.ts: upstream's Scratch and scheduled-task harness and tests, plus the fork's main-checkout setup test.
  • scheduledTasks/ScheduledTaskService.ts: upstream's deleteForThread and Effect.fn runNow, with the fork's vault outcome decoration moved onto it.
  • secrets/SecretRequests.ts: the fork's readRef and claimed-ref rejection, both as Effect.fn on upstream's shape.

Server core

  • bin.ts: upstream's socket guard first, then the fork's runtime-capabilities fast path, then upstream's dispatch.
  • cli/config.ts: rebuilt on upstream's Effect.fn, with the fork's port 0, managed projects root and directory validation.
  • cli/invocation.ts, cli/server.ts: upstream's Effect.fn shapes, keeping the fork's loom command and branded messages.
  • server.ts: rejectRequestsUntilServing(createHttpServer()). Upstream's worker layers sit next to the fork's lifecycle and library layers.
  • ws.ts: upstream's layerWsRpc. Clone completion stays on the fork's makeProjectCloneCompletion, which replaces upstream's duplicate project enrichment calls.
  • git/GitWorkflowService.ts: union of the services. The fork's managed checkout restores sit inside upstream's checkout lease.
  • vcs/VcsDriver.ts: both new optional fields, pathPrefix and maxOutputBytes.
  • workspace/WorkspaceFileSystem.ts: the fork's lease wrapper around upstream's new readFile body. The restore pre-step skips ~/ paths too.
  • project/ProjectSetupScriptRunner.test.ts: upstream's leading-space commands, with the fork's open-options and lease assertions.
  • contracts/src/clientRpcPermissions.ts: the fork's core/fork scope split, plus upstream's previewClose and new decoding rules.
  • client-runtime/src/state/commandPermissions.test.ts: union of the imports and tests.

Server lifecycle

  • storageCleanup.ts: upstream's submodule handling, projectPath, archived threads and default-branch fallback. The fork's file rules now govern upstream's forced removes, and the scratch unmount check runs before them. The fork's duplicate thread reader is removed.
  • storageCleanup.test.ts: tests and fixtures from both sides.
  • preview/ServerBrowser.ts: upstream's sanitizing, deadlines, tracking and downloads, combined with the fork's timeout recovery. New in this PR: timeout recovery skips tabs that are recording, so upstream's guaranteed recordingStop still runs.
  • preview/ServerBrowser.test.ts: union of the imports, with one TestClock import.

Web chat and contracts

  • cloud/publicConfig.ts: the fork's connect-auth surface delegation, aligned with upstream's production-origin Clerk gating.
  • components/ChatView.logic.ts: upstream's simpler proactive diff action, with the fork's checkpointCapable fallback.
  • components/ChatView.tsx: upstream's server update description, with the fork's OS-managed runtime note.
  • components/DiffPanel.tsx, diffPanelStore.test.ts: union of the imports. Upstream's session store, the fork's diff header seams, and the tests from both sides.
  • components/ThreadNotificationCoordinator.tsx: the fork's respectful notifications on upstream's hashed tags, plus upstream's revealWindow.
  • components/device/DevicePanel.tsx: upstream's restructured panel, with the fork's Device QA toolbar row.
  • rightPanelStore.ts: the fork's openSurface with upstream's openProactive.
  • routes/__root.tsx: upstream's new hosts, with the fork's ForkRoot mount.
  • contracts/src/settings.ts: upstream's EasDeviceHostConfigs and schema changes, with the fork's seams.

Web palette and settings

  • CommandPalette.logic.ts, CommandPalette.logic.test.ts: the fork's submenu action and add-project tests, alongside upstream's search-state reducer and its tests.
  • CommandPalette.tsx: ported onto upstream's search reducer. The fork's submenu and add-project intents use the shared reset.
  • settings/ConnectionsSettings.tsx: upstream's connection diagnosis panel and bearer-route check, with the fork's computer details and wording.
  • settings/ProjectSettingsPanel.tsx: merged import line.
  • routes/_chat.index.tsx: upstream's no-wait startup composer, gated on the fork's primary-ready and Library-only rules.

docs/fork/seams.tsv is updated for moved and new seams: ws.test.ts computer-naming, the Android pull requests toolbar brand row, and the lower NewTaskContextPickerScreens.tsx and CommandPalette.tsx counts where upstream now owns the shared import.

Follow-up commits

  • fix(fork): satisfy upstream's Effect.fn and DOM test lint rules in fork code: 176 fork functions now use Effect.fn under upstream's prefer-effect-fn rule. fnUntraced is used only for per-event or lifetime loops and for helpers already under a span, each with a reason. Fork test paths are allowlisted for the no-dom-test-environment rule, because the gate runs them through the root config.
  • fix(fork): update fork tests and imports for upstream's changed services: the Codex probe fixtures answer upstream's new config/read, and test fixtures get ProjectFaviconResolver.invalidate, ordinalWithinScope and the ComputerNaming mock. Duplicate Option and Button imports are removed.
  • fix(fork): keep browser-mode tests out of the gate's root-config run: *.browser.test.tsx files need apps/web's Chromium project. CI's web job runs them.
  • fix(fork): brand the Android pull requests title label: upstream's new hard-coded "T3 Code, Pull requests" label.

Checks

scripts/fork/loom.sh check

Before the fixes:

  • Fork lint failed with 206 errors: 30 from no-dom-test-environment and the rest from prefer-effect-fn.
  • 4 of 4691 fork tests failed. They were Codex allowance probes left waiting on an unanswered config/read. UtilitiesView.focus.browser.test.tsx also failed to load under the root config.
  • The apps/server typecheck had 7 errors in 5 test files.
  • The mobile typecheck, which is outside the gate, had a duplicate Button import. It is now clean too.

Final run: exit 0. Every step passed: seams, frozen-lockfile install, fork lint, fork tests (549 files passed and 8 skipped; 4668 tests passed and 23 skipped), Omarchy checks, the web build, and the typechecks for shared, contracts, client-runtime, server, desktop, web, scripts and the Loom benchmarks. The verify_build step and the macOS app build were not run.


Model: Claude Opus 5.5. Harness: Claude Code in T3 Code (Loom).

🤖 Generated with Claude Code

Exotic209093 and others added 30 commits October 19, 2026 21:15
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…gg#20306)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ur own edits (pingdotgg#19775)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ingdotgg#21225)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…gg#20231)

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…otgg#20305)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ingdotgg#19186)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
pingdotgg#20086)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…, not 10 (pingdotgg#19467)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
pingdotgg#21263)

Co-authored-by: Yaacov <corcos.yaacov@mail.huji.ac.il>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…otgg#21197)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…#19526)

Co-authored-by: Cody Stevens <cody.rageentertainment@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ingdotgg#19887)

Co-authored-by: Anton Georgiev <a.georgiev.extern@rewe-group.at>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
pingdotgg#20272)

Co-authored-by: hiimchinh <chinhhm@proton.me>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…18851)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
… spawn error (pingdotgg#14942)

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

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
t3dotgg and others added 24 commits October 20, 2026 01:42
…ow" (pingdotgg#11122) (pingdotgg#22223)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…nges" (pingdotgg#14883) (pingdotgg#22225)

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

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…k banners" (pingdotgg#20054) (pingdotgg#22228)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…one" (pingdotgg#18653) (pingdotgg#22230)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…mes your DNS (pingdotgg#22212)

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

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… with no toasts and the right favicon (pingdotgg#22254)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…thout the hover wait (pingdotgg#22255)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rk code

Upstream enabled t3code/prefer-effect-fn and t3code/no-dom-test-environment,
which failed the fork lint gate with 206 findings.

Convert the 176 flagged fork functions that returned Effect.gen to
Effect.fn("<Feature>.<operation>"), following docs/internals/effect-services.md:
existing span names and withSpan names are kept, pipe transforms move after
the generator body, and a few per-event, per-file or lifetime-long helpers use
Effect.fnUntraced with a comment saying why.

Fork DOM tests keep their per-file environment pragma because loom.sh runs
them through the root config, which has no DOM project. Allowlist the fork
test folders in the root vite.config.ts under the ext-lint seam.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The merge left fork code compiling against shapes upstream changed:

- Codex readiness now sends config/read. The Switchboard fake app-servers
  died on it, so the probe waited forever on the test clock. Answer it with
  an empty config.
- ProjectFaviconResolver gained invalidate and checkpoint rows gained
  ordinalWithinScope. Add them to the fork's test doubles.
- Upstream's new config RPC test builds the ws layer without the fork's
  ComputerNaming service. Mock it there under the computer-naming seam.
- Upstream now imports Option in storageCleanup.test.ts and Button in
  NewTaskContextPickerScreens.tsx, so drop the fork's duplicate imports and
  lower that file's fleet-connections seam minimum to 2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
loom.sh check passes every fork test file to the root vitest config, which has
no browser project, so UtilitiesView.focus.browser.test.tsx failed to load
with "vitest/browser can be imported only inside the Browser Mode". Exclude
*.browser.test.* there; CI's web test job runs them in headless Chromium.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PullRequestToolbar.android.tsx hardcoded "T3 Code, Pull requests" as its
accessibility label. Use BRAND_NAME like ThreadListToolbar does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kylebegeman
kylebegeman force-pushed the integrate/v0.1.1-nightly.20261020.3411 branch from 46e2ae3 to a0c0867 Compare October 20, 2026 12:24
@kylebegeman kylebegeman changed the title chore(fork): integrate upstream v0.1.1-nightly.20261020.3411 (needs Kyle) chore(fork): integrate upstream v0.1.1-nightly.20261020.3411 Oct 20, 2026
@kylebegeman
kylebegeman marked this pull request as ready for review October 20, 2026 12:24
The merge kept a recording tab's page on every timeout so a queued stop
could still run. When the timed-out action never settles, nothing queued
behind it can run, so the tab stayed stuck and every retry timed out. Keep
the page for the first timeout only; a second timeout before that action
settles recreates the tab and dropTab closes the encoder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kylebegeman
kylebegeman merged commit 6168f88 into main Oct 20, 2026
@kylebegeman
kylebegeman deleted the integrate/v0.1.1-nightly.20261020.3411 branch October 20, 2026 13:08
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.