Repository navigation
chore(fork): integrate upstream v0.1.8-nightly.20261106.4288 - #82
Conversation
…#30453) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…ingdotgg#30546) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…gdotgg#27699) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…dotgg#27682) Co-authored-by: PR Batch Tester <agent@local.test> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net>
pingdotgg#28955) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#24983) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net>
… logins (pingdotgg#29825) Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
…ingdotgg#30135) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#30138) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… iOS (pingdotgg#30139) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…#31741) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ngdotgg#30397) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…r icon (pingdotgg#29738) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#25847) Co-authored-by: Tejas Rahane <17571323+trahane@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…7489) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…gg#25484) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: SAPHID <saphid@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… selections (pingdotgg#24990) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…30747) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…ingdotgg#30524) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… (Typechecking apps/mobile) Failing check: Typechecking apps/mobile "Typechecking apps/mobile" failed on one error: `src/features/threads/UsageLimitRecoveryCard.tsx(202,12): error TS2304: Cannot find name 'Button'`. Every other line in the log is a `schemaClassMissingBrand` suggestion, not an error. Upstream commit c7537d0 ("fix(chat): show one usage-limit recovery notice", pingdotgg#29292) replaced the card's secondary `Button`s with a new local `RecoveryAction` link-style component. It also deleted the `Button` import. The fork's `failed-run-retry` seam still used `<Button label="Retry now" …>`, so it lost its import. I moved the seam onto upstream's new code: the "Retry now" control now uses upstream's `RecoveryAction`, so it looks like the card's other actions. It sits under the existing `{/* fork: failed-run-retry */}` marker. No upstream lines changed, the file keeps its 4 marked lines, and the docs/fork/seams.tsv row is unchanged. I reran the checks: `(cd apps/mobile && pnpm exec vp run typecheck)` exits 0, `check_seams` exits 0, and lint and format pass on the file.
… (Typechecking apps/server) Failing check: Typechecking apps/server "Typechecking apps/server" now passes. Two fork seams didn't carry over onto new upstream code: one surfaced in the original log, and the second appeared once the first was fixed. **1. `McpHttpServer.ts` (`fork: agent-catalog`).** The original log had one error: `Cannot find name 'refreshed'`. Upstream pingdotgg#30834 split the MCP auth middleware so authentication runs in its own `authenticateRequest` function, outside the tool call. The fork's `hideUnusableTools(response, refreshed)` seam stayed in the outer handler, where `refreshed` no longer exists. I changed the seam to pass `admitted`, the invocation scope that `authenticateRequest` now returns. The tool filter only reads `thread`, `capabilities` and `advertisedCapabilities`. Mode limiting and the `linkedEnvironments` field don't change those, so the filtering is the same as before. The marker is still on the line. **2. `ws.test.ts` (`fork: file-placement`).** A new upstream test (pingdotgg#29688, "a publish whose push fails still refreshes the new remote") mocks `ManagedProjectFolders` with `namedProjectsRoot`. The fork moved that field to `ProjectPlacement`, so this was a type error, and the test was also missing a `ProjectPlacement` mock. I replaced the line with an empty `ManagedProjectFolders` mock and an empty `ProjectPlacement` mock, matching the other two mocks in the file. Both lines are marked `fork: file-placement`, and I raised that file's minimum in the `docs/fork/seams.tsv` row from 3 to 5. **Reruns:** - `apps/server` typecheck: exits 0. - `check_seams`: passes. - `sessionToolList.test.ts`: 9 tests pass. - The new publish test in `ws.test.ts`: passes. Nothing was committed.
… (Running the fork's tests in apps/mobile) Failing check: Running the fork's tests in apps/mobile **What failed.** In "Running the fork's tests in apps/mobile", one test failed: `usage limit recovery > retries a limit with no reset time now…` in `apps/mobile/src/features/threads/ThreadRecoveryNotice.test.tsx`. The log shows `ReferenceError: Button is not defined` from `UsageLimitRecoveryCard.tsx:202`. **Why.** Upstream commit c7537d0 (pingdotgg#29292) replaced the card's `Button`s with a new local `RecoveryAction` built on `Pressable`, and removed the `Button` import. The fork's `failed-run-retry` seam still rendered a `Button`, which caused this error. An earlier session (commit 4856d1c, the mobile typecheck repair) already moved that seam onto `RecoveryAction`. When I reran the test on the current tree it failed for a second reason: the test's `react-native` mock only provides `View`, and it says "No "Pressable" export is defined on the "react-native" mock". So the "Retry now" control can't render in the test. **What I changed.** The test file is fork-owned, since v0.1.8-nightly.20261106.4275 doesn't have it. I added a `Pressable` stub to its `react-native` mock. The stub renders a `<button>` that passes through `disabled` and `onPress`, the same way the existing `Button` mock does. I didn't change any upstream code or test assertions. `pnpm exec vp test run apps/mobile/src/features/threads/ThreadRecoveryNotice.test.tsx` now passes all 6 tests, and lint and format pass on the file.
… (Running the fork's tests in scripts) Failing check: Running the fork's tests in scripts I fixed the failing check, "Running the fork's tests in scripts." Two test files were failing, both fork-owned and both because the code they test had changed. I updated the two test files and nothing else. Both now pass when rerun on their own (87 tests), and the formatter is happy with them. **`scripts/fork/loom.test.ts` (3 tests):** This one was already broken on main before the merge. Commit a9fa7a8 changed the Loom benchmarks typecheck in `scripts/fork/loom.sh` from `tsc` to `effect-tsgo tsrs`, but the tests still expected `tsc`. I changed those expected values in the three tests to `effect-tsgo tsrs`. I left a `tsc --noEmit` string that is just sample `package.json` content for a test, since it isn't one of the expected calls. **`scripts/smoke-cli-archive.test.ts` (1 test):** Upstream commit 6577c6b added a new step to `smokeCliArchive`. It now runs `t3 __service-launcher` and expects exit code 1 with "T3CODE_HOME is required" on stderr. The fork's stand-in `t3` script (written for the smoke-port-race seam) didn't handle that argument. It fell through to starting a server on port `NaN` and crashed. I added one line to the stand-in so it answers `__service-launcher` the way the real CLI does. Upstream's smoke code is unchanged.
… (Running the fork's tests in apps/server) Failing check: Running the fork's tests in apps/server I fixed the one failing test in "Running the fork's tests in apps/server". The test was "a failed update keeps service.env matching the old service" in `apps/server/src/cli/up.test.ts`. The other 385 tests passed. **Why it failed:** upstream commit 40d7d48 (pingdotgg#30480) added this test case. It expects the retry hint to read "Fix that, then run \`t3 up --base-dir …\` again." The hint is built from Loom's own command name, so Loom prints `loom up`. The test next to it already has the same brand seam for this reason: its `pair` hint expects `loom pair` and is marked `fork: brand`. **What I changed:** - In `apps/server/src/cli/up.test.ts:224`, the expected text now says `loom up` and the line is marked `// fork: brand`. - In `docs/fork/seams.tsv`, the minimum marked-line count for that file's `brand` row goes from 1 to 2. I didn't touch any other upstream code. `pnpm exec vp test run apps/server/src/cli/up.test.ts` now passes all 22 tests, and `check_seams` exits 0.
… (Running the fork's tests in apps/server) Failing check: Running the fork's tests in apps/server The "Running the fork's tests in apps/server" check had four failing tests across three files. They now pass (4 files, 279 tests), `check_seams` exits 0, and lint and format are clean on the touched files. I didn't rerun the rest of the apps/server suite; those files already passed in this round. **`AgentContextBudget.test.ts`.** The merge left a guessed MCP tool-list byte count in `agentContextBudget.json` instead of a measured one (241896 against a measured 242202). That file is a fork seam (the `-` row in `docs/fork/seams.tsv`), so I set the number to the measured value. No model-facing text changed, so there were no evals to run. **`CodexTextGeneration.test.ts`, case "signed out, fallback failed".** Upstream pingdotgg#29607 now moves title generation away from a signed-out provider. When no fallback is usable, it still calls the signed-out primary. The fork's `server-weight` seam in `TextGeneration.ts` refuses that call so a CLI that can't log in is never started. The fork's own `TextGeneration.test.ts` covers the same rule, so upstream doesn't do what the seam does, and I kept the seam. I added a branch to the upstream test, marked `fork: server-weight`, for that one case only: it now expects a "Sign in" failure and no calls. The other five cases run unchanged. I added a `server-weight 1` row to `docs/fork/seams.tsv` for the file. **`storageCleanup.test.ts`, "sweeps on runtime retirement…" (both variants).** Upstream pingdotgg#23901 added this test and counts sweeps by counting snapshot reads, at one read per sweep. A Loom sweep reads the snapshot three times, because the fork's project and Scratch passes each read it once more. The fork's broader event trigger (`project-lifecycle`) also sweeps when a thread is deleted while another cleanup rule is on (here `worktreeAfterDays: 8`), even with `worktreeOnDelete=false`. I kept upstream's checks but measure them per sweep: `sweepReads` is the read count from the startup sweep, and each changed assertion is marked `fork: project-lifecycle`. The deletion assertion now also expects the extra sweep Loom makes. I raised that file's `project-lifecycle` count in `docs/fork/seams.tsv` from 34 to 38.
…nch's own pull request (pingdotgg#29817) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…node of the thread (pingdotgg#31012) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#31584) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…otgg#31586) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…g#31017) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…aining # (pingdotgg#31928) Co-authored-by: Adam Otradovec <du239@creditas.cz> Co-authored-by: Yash Singh <saiansh2525@gmail.com>
…er a restart (pingdotgg#32162) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ing in from the corner (pingdotgg#32141) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… the full width (pingdotgg#32142) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…25988) Co-authored-by: maria-rcks <maria@kuuro.net> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
… (Typechecking apps/server) Failing check: Typechecking apps/server I fixed the failing "Typechecking apps/server" check by changing one fork seam line. **What failed.** The check log only shows `schemaClassMissingBrand` suggestions, so the real error isn't in it. Rerunning `effect-tsgo` locally exits with code 2 on one error: `apps/server/src/textGeneration/CodexTextGeneration.test.ts:659`, TS2367. It says a comparison against `"signed out, fallback failed"` can never be true. **Why.** Repair round 3 (`ea0b33640d`) caused it, not upstream. That round added a `fork: server-weight` branch to upstream's preflight test. In the `"signed out, fallback failed"` case, Loom's seam refuses to start a CLI that is signed out, so the branch expects a "Sign in" failure and returns early. Because of that early return, TypeScript drops that case from `primaryState` for the rest of the test. Upstream's unchanged `expect(calls)` ternary below still compares against it, so the typecheck fails. **What I changed.** On the seam's `if` line I changed the comparison to `(primaryState as string) === "signed out, fallback failed"`, which keeps TypeScript from narrowing `primaryState`. The line is the one under the `fork: server-weight` marker, and upstream's code is untouched. The seam's row count in `docs/fork/seams.tsv` is unchanged. The typecheck now exits 0, the test file passes (24 tests), lint on the file is clean, and `check_seams` exits 0.
The review had one finding, it was correct, and I fixed it with a change to `FORK.md` only. **Finding: the `restart-continuity` paragraph in `FORK.md` (lines 827–828) describes seams that no longer exist.** I confirmed it against the code. Repair commit 2e1b574 removed `BACKEND_STOP_TIMEOUT` from `DesktopBackendPool.ts` and the marker from `DesktopUpdates.ts`, and it updated `docs/fork/seams.tsv` to match, but not `FORK.md`. At HEAD: - `DesktopApp.ts:168` and `DesktopUpdates.ts:856` both use upstream's `DesktopBackendManager.BACKEND_QUIT_STOP_TIMEOUT` directly. - Loom's 15 s grace and the extra stop time for provider cleanup sit inside that constant, with markers, at `DesktopBackendManager.ts:47-55`. - The only marker left in `DesktopApp.ts` is at line 161, where it exports `stopAllPoolInstances` for the fork's bounded quit test. **Fix:** I rewrote the two sentences. They now say that the budget is upstream's `BACKEND_QUIT_STOP_TIMEOUT`, and that the quit in `DesktopApp.ts` and the update install in `DesktopUpdates.ts` use it unchanged. They also say that the one `DesktopApp.ts` marker only exports the pool stop for the quit test. I dropped the counts for `DesktopBackendPool.ts (1)` and `DesktopUpdates.ts (1)`, and the remaining `DesktopApp.ts (1)` matches `seams.tsv`. No code changed. The format check on `FORK.md` passes, and `check_seams` printed no errors.
… (Linting upstream files the fork edits) Failing check: Linting upstream files the fork edits **What failed:** the "Linting upstream files the fork edits" check stopped on one oxlint error: `Identifier 'Queue' has already been declared` in `apps/server/src/vcs/GitVcsDriverCore.test.ts`. **Why:** upstream commit bdb8d5d (pingdotgg#32162, background PR discovery) added its own `import * as Queue from "effect/Queue";` to this test file. The fork already had the same import, marked `// fork: source-control-cockpit`. The merge kept both, so `Queue` was imported twice. **What I changed:** upstream now provides the import, so I dropped the fork's copy and its marker. That leaves 12 `source-control-cockpit` markers in the file instead of 13, so I lowered that row's minimum in `docs/fork/seams.tsv` from 13 to 12. Upstream code is untouched. After the change, `vp lint` on the file and `check_seams` both pass.
The review had one finding, and it holds. I fixed it. **`apps/server/src/provider/acp/AntigravityAcpSupport.ts:117`**: Upstream pingdotgg#31158 added `antigravityClientInfo()`. On Antigravity 1.5.1 and later it identifies the client as `{ name: "t3-code", title: "T3 Code", … }`. Repair commit `90c1fbf7de` changed the title to `"Loom"` and marked it `fork: brand`. That changed a name we send to a third party, and left it paired with `name: "t3-code"`. FORK.md (around line 51) says names sent to third parties stay as they are and go on `docs/fork/brand-copy-allowlist.tsv`. The allowlist already does this for the same kind of ACP identity in `packages/provider-muse/src/server/sdk.ts` and for `CODEX_CLIENT_NAME`. So this falls under the "identifiers" the allowlist is meant to hold, and it isn't new product text that should be reworded. What I changed: - **The line:** it says `title: "T3 Code"` again, with no marker. The file now matches the upstream tip `32a0531748` exactly. - **The allowlist:** I added the trimmed line under "Names sent to third parties or written as git identities", in path order. - **The seam row:** I removed the `AntigravityAcpSupport.ts brand 1` row from `docs/fork/seams.tsv`. The neighbouring `AntigravityProvider.ts` brand seam is a different, user-facing line, so I left it alone. Checks: `check_seams` and `check_brand_copy` pass, all 53 tests in `AntigravityAcpSupport.test.ts` pass, and lint on the file exits clean. I did not commit anything.
|
Review of the unattended resolution: pass.
After review 1: Earlier reviews failed; a session fixed their findings:
I found nothing that needs fixing, so this can merge into main without a person. The branch holds two upstream merges (4275 and 4288), a clean merge of main and 14 repair and review commits. The 4275 merge had 27 conflicted files; the 4288 merge and the main merge had none. I checked each resolution against upstream's diff from the merge base ( The spots that looked wrong but hold up:
The other repair commits stay within what their failing check needed:
VERDICT: pass |
Merges upstream T3 Code v0.1.8-nightly.20261106.4288 into Loom. The seams in
docs/fork/seams.tsvsurvived, the fork's tests and upstream's tests beside the files it changes pass, every package typechecks, and the built web client boots.Land it from Terminal on your Mac (not inside Loom, which the install quits) with
scripts/fork/loom.sh land: it merges with a merge commit, tagsloom-v0.1.8-nightly.20261106.4288, publishes the next Loom release and installs it. Never squash or rebase this pull request; the fork needs upstream's history for the next merge.