From d26ede307de00e1641e9935e8e6750c3891f9579 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 01:12:17 +0000 Subject: [PATCH] Version Packages --- .changeset/automerge-worker-nudge-grace.md | 11 ----------- .changeset/coalesce-package-lookups.md | 8 -------- .changeset/package-lookup-reason.md | 5 ----- .changeset/pinned-path-cache.md | 6 ------ core/bootloader/CHANGELOG.md | 20 ++++++++++++++++++++ core/bootloader/package.json | 2 +- core/filesystem/CHANGELOG.md | 11 +++++++++++ core/filesystem/package.json | 2 +- core/patchwork/CHANGELOG.md | 17 +++++++++++++++++ core/patchwork/package.json | 2 +- packages/e2e/CHANGELOG.md | 10 ++++++++++ packages/e2e/package.json | 2 +- 12 files changed, 62 insertions(+), 34 deletions(-) delete mode 100644 .changeset/automerge-worker-nudge-grace.md delete mode 100644 .changeset/coalesce-package-lookups.md delete mode 100644 .changeset/package-lookup-reason.md delete mode 100644 .changeset/pinned-path-cache.md diff --git a/.changeset/automerge-worker-nudge-grace.md b/.changeset/automerge-worker-nudge-grace.md deleted file mode 100644 index 45b3bab40..000000000 --- a/.changeset/automerge-worker-nudge-grace.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@inkandswitch/patchwork-bootloader": patch -"@inkandswitch/patchwork": patch -"@inkandswitch/patchwork-e2e": patch ---- - -The service worker no longer mistakes a booting automerge worker for a missing one. The worker only asked for its lock once its whole import graph (most of a megabyte) had loaded, so asset requests made in that window found no lock and logged "no automerge worker; asking tabs to start one". Each tab then dropped its connection to the booting worker and reconnected sync. In a single tab that happened on every reload. - -The worker's script, `automerge-protocol-handler-worker.js`, is now a small module that takes the lock and holds on to connecting tabs before it imports the worker itself, now `@inkandswitch/patchwork-bootloader/automerge-protocol-handler`. The vite plugin emits that as a second file, `automerge-protocol-handler.js`, beside the first. As a backstop, the service worker waits three seconds before nudging, and only nudges if the request is still unanswered and there's still no lock. The nudge is throttled to once every five seconds, however many requests are waiting. Before, every request that raced the same cold start got past the throttle and logged its own nudge. - -The e2e suite gains `automerge-worker.spec.ts`, which checks that the worker holds its lock once a tab is up and that a request racing a cold worker boot isn't reported as a missing worker. diff --git a/.changeset/coalesce-package-lookups.md b/.changeset/coalesce-package-lookups.md deleted file mode 100644 index 763dc06e7..000000000 --- a/.changeset/coalesce-package-lookups.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@inkandswitch/patchwork-filesystem": patch -"@inkandswitch/patchwork-bootloader": patch ---- - -Package heads lookups no longer pile up on a busy automerge worker. A package doc that's still syncing, as everything is on a fresh login, reports a change with every batch that arrives. The `ModuleWatcher` started a lookup for each one, and the automerge worker ran each as a full resolve with its own 30-second timeout. A worker slowed by the login sync then timed them all out, and each logged its own 557. - -The `ModuleWatcher` now runs one change-triggered lookup per package at a time. Changes that land while one is in flight collapse into a single lookup after it. The automerge worker shares one resolve between concurrent requests for the same package url without heads, so tabs asking at once wait on the same lookup. diff --git a/.changeset/package-lookup-reason.md b/.changeset/package-lookup-reason.md deleted file mode 100644 index f4296692c..000000000 --- a/.changeset/package-lookup-reason.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkandswitch/patchwork-filesystem": patch ---- - -When the service worker can't redirect a package url to its heads, the error now includes the automerge worker's reason (the first line of its 557 body — e.g. the doc is unavailable, or the resolve timed out) instead of only the status. diff --git a/.changeset/pinned-path-cache.md b/.changeset/pinned-path-cache.md deleted file mode 100644 index ee3f342fe..000000000 --- a/.changeset/pinned-path-cache.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@inkandswitch/patchwork-filesystem": patch -"@inkandswitch/patchwork-bootloader": patch ---- - -Only cache resolved paths when the root and every followed link pin their document heads. diff --git a/core/bootloader/CHANGELOG.md b/core/bootloader/CHANGELOG.md index c6d855334..3ef3a0250 100644 --- a/core/bootloader/CHANGELOG.md +++ b/core/bootloader/CHANGELOG.md @@ -1,5 +1,25 @@ # @inkandswitch/patchwork-bootloader +## 0.8.5 + +### Patch Changes + +- 3d2d0b0: The service worker no longer mistakes a booting automerge worker for a missing one. The worker only asked for its lock once its whole import graph (most of a megabyte) had loaded, so asset requests made in that window found no lock and logged "no automerge worker; asking tabs to start one". Each tab then dropped its connection to the booting worker and reconnected sync. In a single tab that happened on every reload. + + The worker's script, `automerge-protocol-handler-worker.js`, is now a small module that takes the lock and holds on to connecting tabs before it imports the worker itself, now `@inkandswitch/patchwork-bootloader/automerge-protocol-handler`. The vite plugin emits that as a second file, `automerge-protocol-handler.js`, beside the first. As a backstop, the service worker waits three seconds before nudging, and only nudges if the request is still unanswered and there's still no lock. The nudge is throttled to once every five seconds, however many requests are waiting. Before, every request that raced the same cold start got past the throttle and logged its own nudge. + + The e2e suite gains `automerge-worker.spec.ts`, which checks that the worker holds its lock once a tab is up and that a request racing a cold worker boot isn't reported as a missing worker. + +- 3d2d0b0: Package heads lookups no longer pile up on a busy automerge worker. A package doc that's still syncing, as everything is on a fresh login, reports a change with every batch that arrives. The `ModuleWatcher` started a lookup for each one, and the automerge worker ran each as a full resolve with its own 30-second timeout. A worker slowed by the login sync then timed them all out, and each logged its own 557. + + The `ModuleWatcher` now runs one change-triggered lookup per package at a time. Changes that land while one is in flight collapse into a single lookup after it. The automerge worker shares one resolve between concurrent requests for the same package url without heads, so tabs asking at once wait on the same lookup. + +- Only cache resolved paths when the root and every followed link pin their document heads. +- Updated dependencies [3d2d0b0] +- Updated dependencies [3d2d0b0] +- Updated dependencies + - @inkandswitch/patchwork-filesystem@0.2.14 + ## 0.8.4 ### Patch Changes diff --git a/core/bootloader/package.json b/core/bootloader/package.json index caa29afb6..9b8eec2ca 100644 --- a/core/bootloader/package.json +++ b/core/bootloader/package.json @@ -5,7 +5,7 @@ "url": "git+https://github.com/inkandswitch/patchwork-system.git", "directory": "core/bootloader" }, - "version": "0.8.4", + "version": "0.8.5", "author": "chee", "type": "module", "license": "MIT", diff --git a/core/filesystem/CHANGELOG.md b/core/filesystem/CHANGELOG.md index 3b16bd5d7..3e34b0d3b 100644 --- a/core/filesystem/CHANGELOG.md +++ b/core/filesystem/CHANGELOG.md @@ -1,5 +1,16 @@ # @inkandswitch/patchwork-filesystem +## 0.2.14 + +### Patch Changes + +- 3d2d0b0: Package heads lookups no longer pile up on a busy automerge worker. A package doc that's still syncing, as everything is on a fresh login, reports a change with every batch that arrives. The `ModuleWatcher` started a lookup for each one, and the automerge worker ran each as a full resolve with its own 30-second timeout. A worker slowed by the login sync then timed them all out, and each logged its own 557. + + The `ModuleWatcher` now runs one change-triggered lookup per package at a time. Changes that land while one is in flight collapse into a single lookup after it. The automerge worker shares one resolve between concurrent requests for the same package url without heads, so tabs asking at once wait on the same lookup. + +- 3d2d0b0: When the service worker can't redirect a package url to its heads, the error now includes the automerge worker's reason (the first line of its 557 body — e.g. the doc is unavailable, or the resolve timed out) instead of only the status. +- Only cache resolved paths when the root and every followed link pin their document heads. + ## 0.2.13 ### Patch Changes diff --git a/core/filesystem/package.json b/core/filesystem/package.json index 0c699bce3..404c26f79 100644 --- a/core/filesystem/package.json +++ b/core/filesystem/package.json @@ -6,7 +6,7 @@ "directory": "core/filesystem" }, "type": "module", - "version": "0.2.13", + "version": "0.2.14", "author": "Ink & Switch", "description": "", "main": "dist/index.js", diff --git a/core/patchwork/CHANGELOG.md b/core/patchwork/CHANGELOG.md index 4357b0514..0e4f3eda8 100644 --- a/core/patchwork/CHANGELOG.md +++ b/core/patchwork/CHANGELOG.md @@ -1,5 +1,22 @@ # @inkandswitch/patchwork +## 0.8.7 + +### Patch Changes + +- 3d2d0b0: The service worker no longer mistakes a booting automerge worker for a missing one. The worker only asked for its lock once its whole import graph (most of a megabyte) had loaded, so asset requests made in that window found no lock and logged "no automerge worker; asking tabs to start one". Each tab then dropped its connection to the booting worker and reconnected sync. In a single tab that happened on every reload. + + The worker's script, `automerge-protocol-handler-worker.js`, is now a small module that takes the lock and holds on to connecting tabs before it imports the worker itself, now `@inkandswitch/patchwork-bootloader/automerge-protocol-handler`. The vite plugin emits that as a second file, `automerge-protocol-handler.js`, beside the first. As a backstop, the service worker waits three seconds before nudging, and only nudges if the request is still unanswered and there's still no lock. The nudge is throttled to once every five seconds, however many requests are waiting. Before, every request that raced the same cold start got past the throttle and logged its own nudge. + + The e2e suite gains `automerge-worker.spec.ts`, which checks that the worker holds its lock once a tab is up and that a request racing a cold worker boot isn't reported as a missing worker. + +- Updated dependencies [3d2d0b0] +- Updated dependencies [3d2d0b0] +- Updated dependencies [3d2d0b0] +- Updated dependencies + - @inkandswitch/patchwork-bootloader@0.8.5 + - @inkandswitch/patchwork-filesystem@0.2.14 + ## 0.8.6 ### Patch Changes diff --git a/core/patchwork/package.json b/core/patchwork/package.json index 55ca8eb7e..00cb9d295 100644 --- a/core/patchwork/package.json +++ b/core/patchwork/package.json @@ -5,7 +5,7 @@ "url": "git+https://github.com/inkandswitch/patchwork-system.git", "directory": "core/patchwork" }, - "version": "0.8.6", + "version": "0.8.7", "author": "Ink & Switch", "type": "module", "license": "MIT", diff --git a/packages/e2e/CHANGELOG.md b/packages/e2e/CHANGELOG.md index bc0e09ca4..8cde524b3 100644 --- a/packages/e2e/CHANGELOG.md +++ b/packages/e2e/CHANGELOG.md @@ -1,5 +1,15 @@ # @inkandswitch/patchwork-e2e +## 0.2.3 + +### Patch Changes + +- 3d2d0b0: The service worker no longer mistakes a booting automerge worker for a missing one. The worker only asked for its lock once its whole import graph (most of a megabyte) had loaded, so asset requests made in that window found no lock and logged "no automerge worker; asking tabs to start one". Each tab then dropped its connection to the booting worker and reconnected sync. In a single tab that happened on every reload. + + The worker's script, `automerge-protocol-handler-worker.js`, is now a small module that takes the lock and holds on to connecting tabs before it imports the worker itself, now `@inkandswitch/patchwork-bootloader/automerge-protocol-handler`. The vite plugin emits that as a second file, `automerge-protocol-handler.js`, beside the first. As a backstop, the service worker waits three seconds before nudging, and only nudges if the request is still unanswered and there's still no lock. The nudge is throttled to once every five seconds, however many requests are waiting. Before, every request that raced the same cold start got past the throttle and logged its own nudge. + + The e2e suite gains `automerge-worker.spec.ts`, which checks that the worker holds its lock once a tab is up and that a request racing a cold worker boot isn't reported as a missing worker. + ## 0.2.2 ### Patch Changes diff --git a/packages/e2e/package.json b/packages/e2e/package.json index 236495faf..bda1f872b 100644 --- a/packages/e2e/package.json +++ b/packages/e2e/package.json @@ -5,7 +5,7 @@ "url": "git+https://github.com/inkandswitch/patchwork-system.git", "directory": "packages/e2e" }, - "version": "0.2.2", + "version": "0.2.3", "type": "module", "description": "Browser + Service-Worker end-to-end sync tests (Playwright) for a Patchwork site.", "bin": {