Rebase fork onto cloudflare/capnweb v0.11.1 - #6
Merged
Conversation
jonastemplestein
force-pushed
the
rebase-0.11
branch
from
August 18, 2026 12:23
c3d5b23 to
51a87a1
Compare
Author
|
Integrated: refreshed onto today's upstream main ( |
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 free
to 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.
What this is
This rebases the iterate capnweb fork onto the latest
cloudflare/capnwebmain (7e864a8, v0.11.1 plus one unreleased fix). Our previous base wasbc4bc45(v0.10.0, 13 upstream commits behind).Because this is a rebase, the branch shares no commits with the current
main— GitHub will report merge conflicts, and that is expected. Do not merge via the UI. After approval, integrate with:(requires temporarily allowing force-push on
main, or an admin push). The PR diff you see here is the full delta that lands onmain: everything upstream shipped since our old base, plus our fork commits replayed on top.What we pick up from upstream (0.10.0 → 0.11.1+)
URLobjects now serialize as a first-class type.Resultand the public export now share oneRpcPromisealias, fixing a type-identity mismatch for consumers.dist/on being ASCII-only (scripts/check-dist-ascii.mjs) — our fork's dist passes.typescriptas a capped dependency rather than a peer (capnweb-validate: ship typescript as a capped dependency cloudflare/capnweb#240).Fork commits carried (in order, same six as the last rebase)
src/websocket-streams.ts+serialize.ts/core.tsintegration).RpcSessionOptions.onCall, used byiterate/iteratefor ITX observability.@iterate-com/capnwebwith pkg.pr.new and npm release CI — package rename, fork README banner, release workflows. README install snippet now references^0.11.1.@iterate-com/capnweb.Per the standing fork policy, nothing else is carried (
fallbackCallremains dropped).Conflict resolutions
Commits 1–3 (all the code: WebSocket tunneling, prepare script,
onCall) applied clean over upstream's changes — the URL-serialization and RpcPromise-alias work doesn't overlap the fork's regions. Three mechanical conflicts:package.json: kept the fork's name/description, took upstream's 0.11.1 version.package-lock.json: took upstream's lock wholesale and regenerated the name fields withnpm install(verified withnpm ci --dry-run). npm still keeps thenode_modules/capnweb → rootworkspace self-link, socapnweb-validate'scapnwebdependency resolves to this tree; the only other diff is the same cosmeticlibcmetadata drop as last time (local npm version difference).bonk.yml/bonk-pr-review.yml(ci: mandatory - move Bonk to prod account endpoint cloudflare/capnweb#235/fix: prevent Bonk checkout credentials from persisting cloudflare/capnweb#236); the fork deletes them — kept deleted.Verification
On the final tree (macOS, local):
npm run build— root +capnweb-validateclean, including the new ASCII-only dist gate.npm run test:types— clean.npm test(vitest: node, workerd, Chromium, Firefox, WebKit) — 1232/1234 pass. The 2 failures are both the known WebKit-only "applies backpressure when window fills up" flake under full parallel load on macOS (documented in the previous rebase PR Rebase fork onto cloudflare/capnweb v0.10.0 (drop fallbackCall) #5; reproduces on pristine upstream). It passes standalone in all 6 projects (npx vitest run -t "applies backpressure…"→ 6/6).npm run test:bun— 16/16 pass.CI status on this PR
Testworkflow can't run as a PR check here (GitHub skipspull_requestworkflows when it can't create a merge ref for an intentionally-unmergeable history rewrite).test.ymlwas dispatched manually againstrebase-0.11— see the Actions tab.🤖 Generated with Claude Code
Note
Medium Risk
Touches core RPC serialization, session evaluation, and stream disposal across a large upstream jump; risk is mitigated by broad test runs, with only known WebKit backpressure flakes under full parallel load.
Overview
Rebases the @iterate-com/capnweb fork from upstream v0.10.0 to v0.11.1 (plus one unreleased fix), replaying six fork commits on top. Integration is a history rewrite—expect GitHub merge conflicts; land with
git push origin rebase-0.11:main --force-with-lease, not a normal merge.Upstream since 0.10.0: first-class
URLover RPC; unifiedRpcPromisetyping; WritableStream stub-call arg disposal on failure; ASCII-onlydist/gate viascripts/check-dist-ascii.mjs; removal of the ~1ms Node/Bun HTTP batch latency floor; capnweb-validate tolerates extra args and capstypescriptas a dependency; docs and version packaging for 0.11.x.Fork deltas retained: WebSocket tunneling for upgrade
Response.webSocket(websocket-streams.ts+ serialize/core);RpcSessionOptions.onCallfor server-side per-call observability;preparescript for git installs; scoped package name, pkg.pr.new/release CI, README install at^0.11.1; Cloudflare Bonk/CLA workflows removed.Mechanical merges: fork
package.jsonmetadata with upstream 0.11.1 version; lockfile regenerated; deleted Bonk workflows stay deleted.Reviewed by Cursor Bugbot for commit 51a87a1. Bugbot is set up for automated code reviews on this repo. Configure here.