Skip to content

chore(fork): integrate upstream v0.1.1-nightly.20261019.3348 (needs Kyle) - #34

Merged
kylebegeman merged 630 commits into
mainfrom
integrate/v0.1.1-nightly.20261019.3348
Oct 19, 2026
Merged

kylebegeman merged 630 commits into
mainfrom
integrate/v0.1.1-nightly.20261019.3348

Conversation

@kylebegeman

Copy link
Copy Markdown
Owner

Merges upstream T3 Code v0.1.1-nightly.20261019.3348. It also contains 20261018.3302, so it supersedes #32. Every conflict is resolved. The seam manifest, fork tests, Omarchy pack checks, web build and all seven typechecks pass. Fork lint still fails for the reason #32 is still a draft, so this stays a draft too.

What fails

scripts/fork/loom.sh integrate --continue --pr stops at "Linting fork code" with the same 219 t3code(no-manual-memo) errors in apps/web/src/fork/ as #32. Upstream's lint config bans useMemo/useCallback in apps/web/src/**. Mobile gets a ratchet (allowMemoHooks: true); web does not.

What I tried

  • Fixed everything else (second commit, fork-owned files and seam lines only), including the one new no-hookless-use-function error (EnclosureTab's useCase handler is now applyCase).
  • Left the memo errors alone, as chore(fork): integrate upstream v0.1.1-nightly.20261018.3302 (needs Kyle) #32 did. Clearing them means either rewriting 219 hook sites in 62 fork files that the runner can't verify in a browser, or adding a lint exemption to upstream's vite.config.ts. Both are your call.

Recommendation

Same as #32: add a marked fork: ext-lint seam to the root vite.config.ts giving apps/web/src/fork/** the mobile ratchet ("t3code/no-manual-memo": ["error", { allowMemoHooks: true }]) plus a seams.tsv row. Then migrate fork code off manual memoization package by package. Once the ratchet is in, scripts/fork/loom.sh integrate --continue --pr (or land) finishes this.

Needs your decision: setup in the main checkout

Upstream pingdotgg#18891 ("setup actions no longer run for threads in the main checkout") reverses the fork's 631cfcc ("wait for initialization in every workspace"), which docs/user/project-settings.md documents as "Setup runs for new launches in an existing checkout as well as for new worktrees". Those fork lines are unmarked, so following the seam rules I took upstream's behavior in ThreadLaunchService.ts. One fork case is kept: a root checkout with a .t3-setup-pending marker still runs its setup. That marker means a restored managed checkout whose setup never finished, and only a successful run removes it.

As a result, 5 fork tests in ThreadLaunchService.test.ts fail (initialization exits … in root workspaces, cancelling root initialization …, destination preparation waits for async setup …). They aren't in the fork check. Pick one:

  1. Keep Loom's behavior: mark the setup call as a fork: project-lifecycle seam that runs setup at worktreePath ?? project.workspaceRoot, and adjust upstream's new test starts a thread in the main checkout without running the setup action.
  2. Accept upstream: move those 5 tests to worktree workspaces (or the pending-marker case) and drop the "existing checkout" sentence from docs/user/project-settings.md.

Conflict resolution (merge commit)

Upstream's code wins; each fork seam is reapplied with its marker. I started from #32's resolutions and merged upstream's 3302→3348 changes into them, then resolved the rest by hand:

  • Mobile React Compiler migration (HomeScreen, ThreadNavigationSidebar, AddProjectScreen, AttachmentFileScreen, SettingsAuthRouteScreen, new-task-flow-provider, ConnectionsNewRouteScreen, ThreadComposer, attachmentDocument): took upstream's hook-free code and rewrote the fork's seams the same way. The project library uses upstream's new now clock state instead of a useMemo keyed on the minute. Seam rows lose only the markers that sat on deleted dependency arrays: HomeScreen project-navigation 24→21 and library 11→8, AttachmentFileScreen library 6→5.
  • ClaudeProvider/ClaudeDriver: upstream's probe now fails instead of returning undefined, and the cache reuses the last good account. The Switchboard probe path is reapplied on top. Routed failures still report the Switchboard message.
  • ServerBrowser: kept the fork's tab creation (late desktop attachment, timeout recovery) and added upstream's PDF navigation, file-chooser interception and PDF reload for desktop and popup tabs.
  • Compaction labels: upstream split out contextCompactionTokenCounts. The compaction-recovery seam now also keeps failed, cancelled or in-progress compactions from showing token counts in the new timeline row.
  • CodexHomeLayout: generated_images stays alongside upstream's new .DS_Store.
  • ThreadSettlementService: upstream's new pull request link helpers; threadHasQueuedTurnStart stays in the fork's queuedTurnStart.ts.
  • CommandPalette: a palette that closed into a dialog still leaves focus there, before upstream's no-composer fallback.
  • T3LayoutMetricsView.swift: upstream gated the hinge APIs on the UIKit SDK version, which fixes what the fork's T3_HAS_UIKIT_HINGE_LAYOUT flag did. Took upstream's. The podspec flag is now unused.
  • apps/web dependencies: upstream moved web to React 19.3 from the catalog, so the fork's react-test-renderer is now 19.3.0. jsdom and @types/react-test-renderer 19.1.0 are unchanged. seams.tsv and FORK.md record both, plus chore(fork): integrate upstream v0.1.1-nightly.20261018.3302 (needs Kyle) #32's browser-test renames. The lockfile is upstream's plus the fork's dependencies only (164 lines added, none removed).
  • Unmarked fork edits from earlier commits were reapplied rather than dropped, as in chore(fork): integrate upstream v0.1.1-nightly.20261018.3302 (needs Kyle) #32: "Library" route, "Workspace setup" title, canReviewChanges, createWorkspaceRootIfMissing, the publish-permission recheck, the loadCaptured attachment path and "Turn changes".

Fork adaptations (second commit)

Also not clean (not part of the fork check)

Upstream's apps/mobile/src/reactCompilerCoverage.test.ts, new since 3302, fails for 17 fork-only mobile files (src/fork/**, WorkspaceHandoffScreen, GitHubHostSetupSettings). They use try/finally or throw inside try, so the compiler skips them. They still ship, just unmemoized. This needs the same decision as the web lint.

Browser tests (Chromium) and native mobile builds were not run on the runner.

Claude Opus 5.5 in Claude Code (automated upstream repair).

🤖 Generated with Claude Code

Mnigos and others added 30 commits October 18, 2026 12:16
…ry PR status lookup (pingdotgg#19030)

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

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

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
…gdotgg#15908)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ingdotgg#18838)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… wrong folder (pingdotgg#18549)

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

Co-authored-by: Aaron Queen <bompus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…17922)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
maxwellyoung and others added 22 commits October 18, 2026 21:56
… searching (pingdotgg#17943)

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

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

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
… is evicted (pingdotgg#16796)

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

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…17020)

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

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
…ingdotgg#17525)

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

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…g#18647)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…report (pingdotgg#15738)

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

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

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

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…ingdotgg#13359)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
# Conflicts:
#	apps/mobile/app.config.ts
#	apps/mobile/modules/t3-native-controls/ios/T3LayoutMetricsView.swift
#	apps/mobile/src/Stack.tsx
#	apps/mobile/src/components/ui/Sheet.android.tsx
#	apps/mobile/src/components/ui/Sheet.tsx
#	apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
#	apps/mobile/src/features/files/AttachmentFileScreen.tsx
#	apps/mobile/src/features/home/HomeScreen.tsx
#	apps/mobile/src/features/home/ThreadListToolbar.tsx
#	apps/mobile/src/features/projects/AddProjectScreen.tsx
#	apps/mobile/src/features/settings/SettingsAuthRouteScreen.tsx
#	apps/mobile/src/features/settings/SettingsEnvironmentsRouteScreen.tsx
#	apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx
#	apps/mobile/src/features/threads/ThreadComposer.tsx
#	apps/mobile/src/features/threads/ThreadGitControls.tsx
#	apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx
#	apps/mobile/src/features/threads/new-task-flow-provider.tsx
#	apps/mobile/src/features/threads/worktree-setup-sheet.android.tsx
#	apps/mobile/src/lib/attachmentDocument.ts
#	apps/server/src/orchestration-v2/ProviderTurnStartService.test.ts
#	apps/server/src/orchestration-v2/ProviderTurnStartService.ts
#	apps/server/src/orchestration-v2/ThreadLaunchService.ts
#	apps/server/src/orchestration-v2/ThreadSettlementService.ts
#	apps/server/src/orchestration-v2/testkit/ProviderTurnStartMemory.fixture.mjs
#	apps/server/src/preview/ServerBrowser.test.ts
#	apps/server/src/preview/ServerBrowser.ts
#	apps/server/src/project/RepositoryIdentityResolver.ts
#	apps/server/src/provider/ClaudeProvider.ts
#	apps/server/src/provider/Drivers/ClaudeDriver.ts
#	apps/server/src/provider/Drivers/CodexHomeLayout.ts
#	apps/server/src/workspace/WorkspaceFileSystem.ts
#	apps/web/package.json
#	apps/web/src/components/ChatView.tsx
#	apps/web/src/components/CommandPalette.tsx
#	apps/web/src/components/DiffPanel.tsx
#	apps/web/src/components/GitActionsControl.tsx
#	apps/web/src/components/LegacySidebar.tsx
#	apps/web/src/components/NoProjectsHero.tsx
#	apps/web/src/components/ProviderUpdatesAction.tsx
#	apps/web/src/components/RightPanelTabs.tsx
#	apps/web/src/components/Sidebar.tsx
#	apps/web/src/components/ThreadNotificationCoordinator.badge.browser.test.tsx
#	apps/web/src/components/ThreadNotificationCoordinator.browser.test.tsx
#	apps/web/src/components/chat/ChangedFilesTree.tsx
#	apps/web/src/components/chat/ChatHeader.tsx
#	apps/web/src/components/chat/ProviderModelPicker.tsx
#	apps/web/src/components/settings/ConnectionsSettings.tsx
#	apps/web/src/components/settings/ProjectSettingsPanel.test.tsx
#	apps/web/src/components/settings/SettingsSidebarNav.tsx
#	apps/web/src/components/sidebar/SidebarChrome.tsx
#	apps/web/src/components/sidebar/useUpdateEverything.ts
#	apps/web/src/hooks/useHandleNewThread.ts
#	apps/web/src/hooks/useThreadActionMenu.ts
#	apps/web/src/routes/_chat.index.tsx
#	packages/client-runtime/src/work-log/presentation.ts
#	pnpm-lock.yaml
#	scripts/mobile-native-client.test.ts
Carry yesterday's adaptations to 20261018.3302 forward (providers atom,
batched update and session atoms, KnownWorkspaces, --git-dir for Scratch,
PullRequestGlyph) and fix what 20261019.3348 changed underneath fork code:

- NativeHeaderToolbar moved to its own module.
- The Claude capability probe now fails instead of returning undefined.
- Every browser tab evaluates a PDF viewer probe on setup.
- The iOS sheet close button is an xmark identified by its label.
- Keybinding rows are filtered by filterKeybindingRows.
- The no-hookless-use-function rule flags EnclosureTab's useCase handler.
- The preparation receipt seam in AddProjectScreen no longer throws inside
  try, so the React Compiler compiles that upstream screen again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kylebegeman

Copy link
Copy Markdown
Owner Author

Repair summary: I resolved all 57 conflicts by starting from #32's resolutions, merging upstream's 3302→3348 changes into them, and reapplying each fork seam onto upstream's new code by hand where they still conflicted. Most were mobile screens moving to the React Compiler, the Claude probe now failing instead of returning undefined, ServerBrowser's PDF and file-chooser changes, and React 19.3 for web. seams.tsv and FORK.md follow the markers that sat on deleted dependency arrays, #32's browser-test renames, and the web test dependencies. A second commit carries #32's fork adaptations forward and fixes what this nightly changed under fork code. Seams, fork tests, Omarchy checks, the web build and all seven typechecks pass. Fork lint still fails with #32's 219 no-manual-memo errors, which is your call, so this stays a draft. Separately, upstream pingdotgg#18891 stops setup actions in the main checkout, which reverses Loom's 'initialization in every workspace'. I followed upstream (keeping setup for restored checkouts with a pending marker), so 5 fork tests in ThreadLaunchService.test.ts fail. The description lays out both options.

Kyle Begeman and others added 2 commits October 19, 2026 14:54
# Conflicts:
#	apps/mobile/src/features/files/FileMarkdownPreview.tsx
#	apps/mobile/src/native/useOpenPullRequest.ts
#	apps/web/src/browser/useOpenLink.ts
- Setup still runs for threads in the main checkout, as docs/user/project-settings.md
  says. Upstream's skip is reverted behind a project-lifecycle seam, its main-checkout
  test expects the setup run, and the five fork setup tests pass again.
- Fork web code gets mobile's no-manual-memo ratchet (ext-lint seam in vite.config.ts),
  so fork lint passes while the hooks move to the compiler package by package.
- Fork-only mobile files the React Compiler skips join upstream's shrinking bailout list
  through a fork-owned map. The preview links screen no longer uses `finally` and compiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kylebegeman

Copy link
Copy Markdown
Owner Author

Settled the open decisions in 9d5ecb1 and landed after the fork gate (run_checks) passed locally.

  • Mobile file preview, pull request opener and web useOpenLink: kept upstream's new handler shapes and re-applied the preview-link entry swap on top.
  • ThreadLaunchService: Loom still runs setup in the main checkout, so the launch shows its setup phase there too. Upstream's test now asserts that.
  • React Compiler: fork mobile files the compiler skips are listed in apps/mobile/src/fork/reactCompilerBailouts.ts (a list that only shrinks). PreviewLinksScreen now compiles.
  • Lint: fork web code keeps mobile's memo-hook ratchet until it moves to the compiler.

🤖 Generated with Claude Code

@kylebegeman
kylebegeman marked this pull request as ready for review October 19, 2026 19:03
@kylebegeman
kylebegeman merged commit 45d38de into main Oct 19, 2026
@kylebegeman
kylebegeman deleted the integrate/v0.1.1-nightly.20261019.3348 branch October 19, 2026 19:03
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.