chore(coil): sync 182 upstream commits (2026-09-02) - #129
Merged
Conversation
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 freeto 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.
Resolves#128. The daily sync had been failing on a
pnpm-lock.yamlconflict, leaving the fork 182 upstream commits behind. This replays the fork's 175 patches onto941acb4f9and fixes the four fork behaviours upstream broke along the way.The rebase
175 of 178 patches replayed. The three that went empty are the historical
chore(deps): regenerate the lockfilecommits — every intermediate lock conflict resolved to upstream's side, and the lock is regenerated once at the end instead, seeded from the fork's own pre-sync lock so the advisory sweep survives (verified: sharp 0.35.3, nanoid 3.3.17, tar 7.5.22, undici 6.28.0, form-data 4.0.6, hono 4.13.0, ip-address 10.4.0, path-to-regexp 6.3.0, shell-quote 1.10.0, fast-uri 3.1.5, builder-util-runtime 9.7.0).What a clean rebase would have hidden
Four fork behaviours broke with, at most, one build error between them. Each is its own commit:
canSettle. The predicate is re-homed in the fork's own outbox module on top ofhasQueuedTurnStart, which survived. The repair was the risk, not the break:canSnoozeis the obvious substitute and deliberately permits a running session, so it would have dispatched the queued head on top of a live turn — the exact double-send the gate exists to stop.thread.auto-settlethroughthread.settle's decider case, emitting an identicalthread.settledwith no provenance.threadIsGone()read that as "the user is done here", so a resume armed on Claude's seven-day window was cancelled on day three, logged asreason: "thread-gone"on a thread nobody settled. The existing test asserted the old behaviour and would have kept passing.Also: the fork's auth mirror on
/api/coil/auto-resumehad drifted a now-optional argument, costing relay clients the DPoP failure reason every other endpoint reports.Near misses worth recording
Three resolutions would have been silently wrong, and are called out in the ledger:
overrides:lines the fork's advisory block sits between, and rewritespatchedDependencieswholesale. Keep-both would have re-pinned Expo 56 packages onto a 57 tree and named five patch files that no longer exist. Verified afterwards that the block is upstream's plus exactly the 13 fork keys, and that all 17 patch files are present.AppSymbol.tsxconflicted whole-file because fix(mobile): reduce dev-client reload and Metro startup cost pingdotgg/t3code#8694 de-barrelled the Tabler imports to stop Metro registering the entire icon set. The fork's two lines are re-applied as a deep import; the file has zero bare@tabler/icons-react-nativeimports.--ourswould have run Electron-43-targeted preview code on an Electron 41 runtime, and nothing would have caught it.Verification
vp run typecheckandvp run lintare clean. The full suite is green exceptbuild-desktop-artifact.test.ts > skips the primary native probe for cross-architecture Windows payloads, which fails identically on pristine upstream files — it reads the real host architecture, sotargetArch: "arm64"is not cross-arch on Apple Silicon. It passes on x64 CI.apps/marketinghad zero upstream churn, so theapps/coil-homeparallel path has nothing to port. No new upstream workflow arrived active.Seam ledger re-baselined: 53 files, +2609/-981 — same seam set, and the deletion count fell by 63, all of it accounted for.
Landing
This is the fork's patch series rebased onto new upstream, so
mainis not an ancestor of it and the merge button will not work. It lands by force-updatingmainto the reviewed tip, perdocs/coil/sync-agent-runbook.md. Recovery tag:coil/pre-sync-20260902.Claude Opus 5 (1M context) in Claude Code.