diff --git a/.changeset/c3-frameworks-update-14661.md b/.changeset/c3-frameworks-update-14661.md deleted file mode 100644 index 83f7bbf8485..00000000000 --- a/.changeset/c3-frameworks-update-14661.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"create-cloudflare": patch ---- - -Update dependencies of "create-cloudflare" - -The following dependency versions have been updated: - -| Dependency | From | To | -| ------------------- | ----- | ----- | -| create-react-router | 8.1.0 | 8.2.0 | diff --git a/.changeset/calm-assets-flow.md b/.changeset/calm-assets-flow.md deleted file mode 100644 index 591c67dc756..00000000000 --- a/.changeset/calm-assets-flow.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@cloudflare/workers-shared": patch -"miniflare": patch ---- - -Improve asset serving performance by removing an unnecessary internal dispatch hop - -Asset requests and RPC calls now avoid an extra internal forwarding layer, reducing latency. The forwarding infrastructure is preserved for future use by cohort-based deployments. diff --git a/.changeset/calm-durable-objects-exit.md b/.changeset/calm-durable-objects-exit.md deleted file mode 100644 index 1ad4a3e0fd0..00000000000 --- a/.changeset/calm-durable-objects-exit.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@cloudflare/vitest-pool-workers": patch ---- - -Fix test runs hanging after a Durable Object logs and rejects `blockConcurrencyWhile()` - -Console messages emitted from another Durable Object are now buffered until execution returns to the test runner, avoiding I/O that cannot complete after the object's input gate breaks. diff --git a/.changeset/config-watch-failed-restart.md b/.changeset/config-watch-failed-restart.md deleted file mode 100644 index dd0cfb01bc5..00000000000 --- a/.changeset/config-watch-failed-restart.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@cloudflare/vite-plugin": patch ---- - -Keep watching config changes after a failed dev server restart - -Previously, when a config change made the dev server restart fail — for example because the updated Worker config was invalid — the plugin stopped watching config changes entirely: the change handler (covering the Worker config files, local dev vars, and the assets configuration) removed itself before restarting, and only a successfully created server would register a fresh one. Since Vite keeps the current server running when a restart fails, every subsequent config change (including the one that fixes the config) was silently ignored for the rest of the session. - -The handler now stays registered and guards against re-entrant restarts instead, so fixing the config restarts the dev server as expected. diff --git a/.changeset/dependabot-update-14682.md b/.changeset/dependabot-update-14682.md deleted file mode 100644 index cd112e13d85..00000000000 --- a/.changeset/dependabot-update-14682.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"miniflare": patch -"wrangler": patch ---- - -Update dependencies of "miniflare", "wrangler" - -The following dependency versions have been updated: - -| Dependency | From | To | -| ------------------------- | ------------- | ------------- | -| @cloudflare/workers-types | ^5.20260710.1 | ^5.20260714.1 | -| workerd | 1.20260710.1 | 1.20260714.1 | diff --git a/.changeset/detect-nub-package-manager.md b/.changeset/detect-nub-package-manager.md deleted file mode 100644 index da4f0836585..00000000000 --- a/.changeset/detect-nub-package-manager.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"create-cloudflare": patch -"@cloudflare/cli-shared-helpers": patch ---- - -Detect the `nub` package manager - -C3 resolves the invoking package manager with `which-pm-runs`, which already returns `nub`, but `detectPackageManager` had no `nub` case in its switch, so it fell through to the npm default and produced npm commands. `detectPackageManager` now maps `nub` to its `nub`/`nubx` executables, and `@cloudflare/cli-shared-helpers`'s package-install helpers accept `nub` as a package manager. diff --git a/.changeset/email-routing-addresses.md b/.changeset/email-routing-addresses.md deleted file mode 100644 index 3a628ea9bc1..00000000000 --- a/.changeset/email-routing-addresses.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"wrangler": minor ---- - -Add a top-level `addresses` field to Wrangler configuration for Email Routing - -You can now declare the inbound email addresses handled by your Worker directly in `wrangler.json`: - -```json -{ - "name": "my-worker", - "main": "src/index.ts", - "compatibility_date": "2026-05-21", - "addresses": ["support@example.com", "*@example.com"] -} -``` diff --git a/.changeset/fuzzy-containers-harness.md b/.changeset/fuzzy-containers-harness.md deleted file mode 100644 index baf2fdae9c8..00000000000 --- a/.changeset/fuzzy-containers-harness.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"wrangler": patch ---- - -Support containers in `createTestHarness()` - -Workers configured with containers can now be tested using `createTestHarness()`. The harness builds configured images and makes container-backed Durable Objects available during integration tests. diff --git a/.changeset/kv-asset-retry.md b/.changeset/kv-asset-retry.md deleted file mode 100644 index 1c769601701..00000000000 --- a/.changeset/kv-asset-retry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@cloudflare/workers-shared": patch ---- - -Retry asset reads from KV when they fail - -The asset worker reads static assets from KV, and a read can occasionally fail with a transient error. It previously retried only once before giving up. It now retries a few times with exponential backoff, which reduces the chance of serving an error. A missing asset is not treated as a failure and is not retried. diff --git a/.changeset/local-explorer-selector-scroll.md b/.changeset/local-explorer-selector-scroll.md deleted file mode 100644 index 911a532f6d1..00000000000 --- a/.changeset/local-explorer-selector-scroll.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@cloudflare/local-explorer-ui": patch ---- - -Make long worker selector lists scrollable - -Workers beyond the visible selector limit can now be reached with a mouse, trackpad, or keyboard without scrolling the Local Explorer page. diff --git a/.changeset/miniflare-handle-uncaught-error.md b/.changeset/miniflare-handle-uncaught-error.md deleted file mode 100644 index ec837ff0b44..00000000000 --- a/.changeset/miniflare-handle-uncaught-error.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"miniflare": minor ---- - -Add a `handleUncaughtError` shared option that receives uncaught Worker exceptions - -The runtime catches handler exceptions to build the 500 response, so they never reach the inspector — the one place an uncaught exception exists as a structured value in Node is the pretty-error path, where the error report from the Worker is revived into a source-mapped `Error`. Embedders can now pass `handleUncaughtError: (error: Error) => void` to observe that revived error programmatically; logging behavior is unchanged. - -The hook fires only where the pretty-error path does: requests reaching the Worker through the entry socket (a browser or another HTTP client against the dev server). `dispatchFetch()` is unaffected — it always sets `MF-Disable-Pretty-Error`, and the entry worker then propagates the exception by rejecting the returned promise instead, so `dispatchFetch()` callers already receive the error directly and the hook is not invoked. diff --git a/.changeset/miniflare-unmappable-frame-urls.md b/.changeset/miniflare-unmappable-frame-urls.md deleted file mode 100644 index a22f19b0606..00000000000 --- a/.changeset/miniflare-unmappable-frame-urls.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"miniflare": patch ---- - -Keep reporting uncaught Worker errors when a stack frame's file URL has no local path - -`fileURLToPath` throws on `file://` URLs that cannot be represented as a local path (a non-local host; on Windows, any drive-less path — which is every `file:///...` URL reported by a POSIX-built bundle). Both the source-mapping machinery and `youch`'s error-page frame parsing convert stack-frame specifiers this way, so one such frame previously failed the whole pretty-error request: the error page was replaced by a raw Node stack, the error was not logged, and `handleUncaughtError` did not fire. Source mapping now degrades to the unmapped stack and the pretty page falls back to a plain stack response instead. diff --git a/.changeset/quiet-routers-loop.md b/.changeset/quiet-routers-loop.md deleted file mode 100644 index 4708eca1c0c..00000000000 --- a/.changeset/quiet-routers-loop.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@cloudflare/workers-shared": patch -"miniflare": patch -"@cloudflare/vite-plugin": patch ---- - -Improve routing performance for Workers with assets - -Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use. diff --git a/.changeset/smooth-ravens-store.md b/.changeset/smooth-ravens-store.md deleted file mode 100644 index 163049bfea3..00000000000 --- a/.changeset/smooth-ravens-store.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -"wrangler": minor -"miniflare": minor ---- - -Add Durable Object storage access to `createTestHarness()` - -You can now execute SQL against a SQLite-backed Durable Object to seed or assert the storage state. - -```ts -const server = createTestHarness({ - workers: [{ configPath: "./wrangler.json" }], -}); -await server.listen(); - -const worker = server.getWorker(); -const storage = await worker.getDurableObjectStorage("COUNTER", { - name: "user-123", -}); - -await worker.fetch("/counter/user-123"); - -const rows = await storage.exec( - "SELECT value FROM counters WHERE id = ?", - "user-123" -); -expect(rows).toEqual([{ value: 1 }]); -``` diff --git a/.changeset/start-worker-public-input-type.md b/.changeset/start-worker-public-input-type.md deleted file mode 100644 index 25018cd08f2..00000000000 --- a/.changeset/start-worker-public-input-type.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"wrangler": patch ---- - -Type `unstable_startWorker`, `DevEnv.startWorker`, and `ConfigController.set`/`patch` against `WranglerStartDevWorkerInput`, so the wrangler-specific `dev.structuredLogsHandler` field the runtime already honors is expressible through the public API. Previously the public signatures took the base `StartDevWorkerInput`, and callers passing the handler needed a cast while internal callers (the test harness) routed the wider type around the signature. diff --git a/.changeset/tidy-browsers-close.md b/.changeset/tidy-browsers-close.md deleted file mode 100644 index 0f8fed7b32b..00000000000 --- a/.changeset/tidy-browsers-close.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"miniflare": patch ---- - -Prevent local Browser Rendering teardown from hanging when Chrome does not exit - -Miniflare now bounds graceful Chrome shutdown and forcefully terminates the browser process tree when needed, preventing disposal from waiting indefinitely. diff --git a/.changeset/tidy-cats-rest.md b/.changeset/tidy-cats-rest.md deleted file mode 100644 index f4290f1b678..00000000000 --- a/.changeset/tidy-cats-rest.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"miniflare": patch ---- - -Prevent concurrent Miniflare instances from deleting each other's temporary email sessions - -Email session cleanup now removes only the current instance's session directory and leaves the shared parent intact, avoiding startup failures when multiple local runtimes use the same project. diff --git a/.changeset/workers-dev-subdomain-before-upload.md b/.changeset/workers-dev-subdomain-before-upload.md deleted file mode 100644 index c227d1b5100..00000000000 --- a/.changeset/workers-dev-subdomain-before-upload.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"wrangler": patch ---- - -Register a workers.dev subdomain before uploading a new Worker - -Deploying a Worker for the first time on an account that has no workers.dev subdomain failed with an opaque API error raised by the upload request itself (code 10063, "You need a workers.dev subdomain in order to proceed"). Wrangler now checks for a workers.dev subdomain before uploading a brand-new Worker that publishes to workers.dev and prompts you to register one, so you get a clear, actionable message instead of a cryptic API failure. The check is skipped for deploys that don't target workers.dev (routes-only deploys, or `workers_dev: false`) and for existing Workers, since their account already has a subdomain. diff --git a/.changeset/wrangler-runtime-error-event.md b/.changeset/wrangler-runtime-error-event.md deleted file mode 100644 index f670d167857..00000000000 --- a/.changeset/wrangler-runtime-error-event.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"wrangler": minor ---- - -Emit a typed `runtimeError` event on the `unstable_startWorker` DevEnv for uncaught Worker exceptions - -Uncaught Worker exceptions were only source-mapped and printed, so programmatic consumers had to scrape terminal output to observe them. The DevEnv now re-emits a `RuntimeErrorEvent` (like `reloadComplete`) carrying the exception text and source-mapped stack — fed from Miniflare's pretty-error seam via the new `handleUncaughtError` option for exceptions the runtime catches, and from the inspector for those it does not. diff --git a/.changeset/zod-catalog-consolidation.md b/.changeset/zod-catalog-consolidation.md deleted file mode 100644 index a3565e6568d..00000000000 --- a/.changeset/zod-catalog-consolidation.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@cloudflare/config": patch -"@cloudflare/deploy-helpers": patch -"@cloudflare/format-errors": patch -"@cloudflare/playground-preview-worker": patch -"@cloudflare/turbo-r2-archive": patch -"@cloudflare/workflows-shared": patch ---- - -Update zod to v4 diff --git a/packages/autoconfig/CHANGELOG.md b/packages/autoconfig/CHANGELOG.md index b472e982652..b799e07adbe 100644 --- a/packages/autoconfig/CHANGELOG.md +++ b/packages/autoconfig/CHANGELOG.md @@ -1,5 +1,13 @@ # @cloudflare/autoconfig +## 0.1.6 + +### Patch Changes + +- Updated dependencies [[`8cd805d`](https://github.com/cloudflare/workers-sdk/commit/8cd805db2f9901cba52d574b385577bafd595cb5)]: + - @cloudflare/cli-shared-helpers@0.1.15 + - @cloudflare/workers-utils@0.27.0 + ## 0.1.5 ### Patch Changes diff --git a/packages/autoconfig/package.json b/packages/autoconfig/package.json index 43e54031139..b0dd7649609 100644 --- a/packages/autoconfig/package.json +++ b/packages/autoconfig/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/autoconfig", - "version": "0.1.5", + "version": "0.1.6", "description": "Framework autoconfig detection and configuration for Cloudflare Workers", "license": "MIT OR Apache-2.0", "repository": { diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index c5ee7d96156..73dfbe870af 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @cloudflare/cli +## 0.1.15 + +### Patch Changes + +- [#14499](https://github.com/cloudflare/workers-sdk/pull/14499) [`8cd805d`](https://github.com/cloudflare/workers-sdk/commit/8cd805db2f9901cba52d574b385577bafd595cb5) Thanks [@colinhacks](https://github.com/colinhacks)! - Detect the `nub` package manager + + C3 resolves the invoking package manager with `which-pm-runs`, which already returns `nub`, but `detectPackageManager` had no `nub` case in its switch, so it fell through to the npm default and produced npm commands. `detectPackageManager` now maps `nub` to its `nub`/`nubx` executables, and `@cloudflare/cli-shared-helpers`'s package-install helpers accept `nub` as a package manager. + +- Updated dependencies []: + - @cloudflare/workers-utils@0.27.0 + ## 0.1.14 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index fef38dd3d1b..b7dec80dcc5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/cli-shared-helpers", - "version": "0.1.14", + "version": "0.1.15", "description": "Internal shared CLI helpers for workers-sdk. Not intended for external use — APIs may change without notice.", "keywords": [ "cli", diff --git a/packages/config/CHANGELOG.md b/packages/config/CHANGELOG.md index f67e8080eba..8f9043f2e50 100644 --- a/packages/config/CHANGELOG.md +++ b/packages/config/CHANGELOG.md @@ -1,5 +1,11 @@ # @cloudflare/config +## 0.2.1 + +### Patch Changes + +- [#14707](https://github.com/cloudflare/workers-sdk/pull/14707) [`b38f494`](https://github.com/cloudflare/workers-sdk/commit/b38f494204e5e08e561b8f198ef928188e554868) Thanks [@emily-shen](https://github.com/emily-shen)! - Update zod to v4 + ## 0.2.0 ### Minor Changes diff --git a/packages/config/package.json b/packages/config/package.json index 738319a95ff..8b78e5ef43f 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/config", - "version": "0.2.0", + "version": "0.2.1", "description": "Definitions and utilities for configuring Cloudflare Workers and related products. This is not yet stable enough for external use — APIs may change without notice.", "homepage": "https://github.com/cloudflare/workers-sdk/tree/main/packages/config#readme", "bugs": { diff --git a/packages/create-cloudflare/CHANGELOG.md b/packages/create-cloudflare/CHANGELOG.md index ceaf6b890d9..d2049d1825c 100644 --- a/packages/create-cloudflare/CHANGELOG.md +++ b/packages/create-cloudflare/CHANGELOG.md @@ -1,5 +1,21 @@ # create-cloudflare +## 2.70.12 + +### Patch Changes + +- [#14661](https://github.com/cloudflare/workers-sdk/pull/14661) [`414ce87`](https://github.com/cloudflare/workers-sdk/commit/414ce87c63f5b014067866364aa42ffe13f4d1f8) Thanks [@dependabot](https://github.com/apps/dependabot)! - Update dependencies of "create-cloudflare" + + The following dependency versions have been updated: + + | Dependency | From | To | + | ------------------- | ----- | ----- | + | create-react-router | 8.1.0 | 8.2.0 | + +- [#14499](https://github.com/cloudflare/workers-sdk/pull/14499) [`8cd805d`](https://github.com/cloudflare/workers-sdk/commit/8cd805db2f9901cba52d574b385577bafd595cb5) Thanks [@colinhacks](https://github.com/colinhacks)! - Detect the `nub` package manager + + C3 resolves the invoking package manager with `which-pm-runs`, which already returns `nub`, but `detectPackageManager` had no `nub` case in its switch, so it fell through to the npm default and produced npm commands. `detectPackageManager` now maps `nub` to its `nub`/`nubx` executables, and `@cloudflare/cli-shared-helpers`'s package-install helpers accept `nub` as a package manager. + ## 2.70.11 ### Patch Changes diff --git a/packages/create-cloudflare/package.json b/packages/create-cloudflare/package.json index f5da742aa4c..5aab86fedcd 100644 --- a/packages/create-cloudflare/package.json +++ b/packages/create-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "create-cloudflare", - "version": "2.70.11", + "version": "2.70.12", "description": "A CLI for creating and deploying new applications to Cloudflare.", "keywords": [ "cloudflare", diff --git a/packages/deploy-helpers/CHANGELOG.md b/packages/deploy-helpers/CHANGELOG.md index 390b803ea6a..3d096261a36 100644 --- a/packages/deploy-helpers/CHANGELOG.md +++ b/packages/deploy-helpers/CHANGELOG.md @@ -1,5 +1,16 @@ # @cloudflare/deploy-helpers +## 0.5.1 + +### Patch Changes + +- [#14707](https://github.com/cloudflare/workers-sdk/pull/14707) [`b38f494`](https://github.com/cloudflare/workers-sdk/commit/b38f494204e5e08e561b8f198ef928188e554868) Thanks [@emily-shen](https://github.com/emily-shen)! - Update zod to v4 + +- Updated dependencies [[`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983), [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce), [`8cd805d`](https://github.com/cloudflare/workers-sdk/commit/8cd805db2f9901cba52d574b385577bafd595cb5), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d), [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c), [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8), [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645)]: + - miniflare@4.20260714.0 + - @cloudflare/cli-shared-helpers@0.1.15 + - @cloudflare/workers-utils@0.27.0 + ## 0.5.0 ### Minor Changes diff --git a/packages/deploy-helpers/package.json b/packages/deploy-helpers/package.json index 45e241df72a..f15a529ec84 100644 --- a/packages/deploy-helpers/package.json +++ b/packages/deploy-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/deploy-helpers", - "version": "0.5.0", + "version": "0.5.1", "description": "Internal deploy helpers for workers-sdk. Not intended for external use — APIs may change without notice.", "homepage": "https://github.com/cloudflare/workers-sdk/tree/main/packages/deploy-helpers#readme", "bugs": { diff --git a/packages/format-errors/CHANGELOG.md b/packages/format-errors/CHANGELOG.md index 74ad1a1b6a6..f8bb93fa71f 100644 --- a/packages/format-errors/CHANGELOG.md +++ b/packages/format-errors/CHANGELOG.md @@ -1,5 +1,11 @@ # format-errors +## 0.0.9 + +### Patch Changes + +- [#14707](https://github.com/cloudflare/workers-sdk/pull/14707) [`b38f494`](https://github.com/cloudflare/workers-sdk/commit/b38f494204e5e08e561b8f198ef928188e554868) Thanks [@emily-shen](https://github.com/emily-shen)! - Update zod to v4 + ## 0.0.8 ### Patch Changes diff --git a/packages/format-errors/package.json b/packages/format-errors/package.json index dd3ccf709b9..4489d7887eb 100644 --- a/packages/format-errors/package.json +++ b/packages/format-errors/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/format-errors", - "version": "0.0.8", + "version": "0.0.9", "private": true, "scripts": { "build": "wrangler build", diff --git a/packages/local-explorer-ui/CHANGELOG.md b/packages/local-explorer-ui/CHANGELOG.md index 06728860ee5..ea21f5182af 100644 --- a/packages/local-explorer-ui/CHANGELOG.md +++ b/packages/local-explorer-ui/CHANGELOG.md @@ -1,5 +1,13 @@ # @cloudflare/local-explorer-ui +## 0.14.2 + +### Patch Changes + +- [#14668](https://github.com/cloudflare/workers-sdk/pull/14668) [`e93d27e`](https://github.com/cloudflare/workers-sdk/commit/e93d27eab1c54b08c5576cb50887429c1f45c40f) Thanks [@DebadityaHait](https://github.com/DebadityaHait)! - Make long worker selector lists scrollable + + Workers beyond the visible selector limit can now be reached with a mouse, trackpad, or keyboard without scrolling the Local Explorer page. + ## 0.14.1 ### Patch Changes diff --git a/packages/local-explorer-ui/package.json b/packages/local-explorer-ui/package.json index 8f839d57925..8223e2d1520 100644 --- a/packages/local-explorer-ui/package.json +++ b/packages/local-explorer-ui/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/local-explorer-ui", - "version": "0.14.1", + "version": "0.14.2", "private": true, "type": "module", "scripts": { diff --git a/packages/miniflare/CHANGELOG.md b/packages/miniflare/CHANGELOG.md index 4c39bb462e4..00d9821590f 100644 --- a/packages/miniflare/CHANGELOG.md +++ b/packages/miniflare/CHANGELOG.md @@ -1,5 +1,70 @@ # miniflare +## 4.20260714.0 + +### Minor Changes + +- [#14562](https://github.com/cloudflare/workers-sdk/pull/14562) [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981) Thanks [@martijnwalraven](https://github.com/martijnwalraven)! - Add a `handleUncaughtError` shared option that receives uncaught Worker exceptions + + The runtime catches handler exceptions to build the 500 response, so they never reach the inspector — the one place an uncaught exception exists as a structured value in Node is the pretty-error path, where the error report from the Worker is revived into a source-mapped `Error`. Embedders can now pass `handleUncaughtError: (error: Error) => void` to observe that revived error programmatically; logging behavior is unchanged. + + The hook fires only where the pretty-error path does: requests reaching the Worker through the entry socket (a browser or another HTTP client against the dev server). `dispatchFetch()` is unaffected — it always sets `MF-Disable-Pretty-Error`, and the entry worker then propagates the exception by rejecting the returned promise instead, so `dispatchFetch()` callers already receive the error directly and the hook is not invoked. + +- [#14706](https://github.com/cloudflare/workers-sdk/pull/14706) [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c) Thanks [@edmundhung](https://github.com/edmundhung)! - Add Durable Object storage access to `createTestHarness()` + + You can now execute SQL against a SQLite-backed Durable Object to seed or assert the storage state. + + ```ts + const server = createTestHarness({ + workers: [{ configPath: "./wrangler.json" }], + }); + await server.listen(); + + const worker = server.getWorker(); + const storage = await worker.getDurableObjectStorage("COUNTER", { + name: "user-123", + }); + + await worker.fetch("/counter/user-123"); + + const rows = await storage.exec( + "SELECT value FROM counters WHERE id = ?", + "user-123" + ); + expect(rows).toEqual([{ value: 1 }]); + ``` + +### Patch Changes + +- [#14417](https://github.com/cloudflare/workers-sdk/pull/14417) [`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983) Thanks [@matthewdavidrodgers](https://github.com/matthewdavidrodgers)! - Improve asset serving performance by removing an unnecessary internal dispatch hop + + Asset requests and RPC calls now avoid an extra internal forwarding layer, reducing latency. The forwarding infrastructure is preserved for future use by cohort-based deployments. + +- [#14682](https://github.com/cloudflare/workers-sdk/pull/14682) [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce) Thanks [@dependabot](https://github.com/apps/dependabot)! - Update dependencies of "miniflare", "wrangler" + + The following dependency versions have been updated: + + | Dependency | From | To | + | ------------------------- | ------------- | ------------- | + | @cloudflare/workers-types | ^5.20260710.1 | ^5.20260714.1 | + | workerd | 1.20260710.1 | 1.20260714.1 | + +- [#14562](https://github.com/cloudflare/workers-sdk/pull/14562) [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981) Thanks [@martijnwalraven](https://github.com/martijnwalraven)! - Keep reporting uncaught Worker errors when a stack frame's file URL has no local path + + `fileURLToPath` throws on `file://` URLs that cannot be represented as a local path (a non-local host; on Windows, any drive-less path — which is every `file:///...` URL reported by a POSIX-built bundle). Both the source-mapping machinery and `youch`'s error-page frame parsing convert stack-frame specifiers this way, so one such frame previously failed the whole pretty-error request: the error page was replaced by a raw Node stack, the error was not logged, and `handleUncaughtError` did not fire. Source mapping now degrades to the unmapped stack and the pretty page falls back to a plain stack response instead. + +- [#14418](https://github.com/cloudflare/workers-sdk/pull/14418) [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d) Thanks [@matthewdavidrodgers](https://github.com/matthewdavidrodgers)! - Improve routing performance for Workers with assets + + Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use. + +- [#14727](https://github.com/cloudflare/workers-sdk/pull/14727) [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8) Thanks [@ascorbic](https://github.com/ascorbic)! - Prevent local Browser Rendering teardown from hanging when Chrome does not exit + + Miniflare now bounds graceful Chrome shutdown and forcefully terminates the browser process tree when needed, preventing disposal from waiting indefinitely. + +- [#14723](https://github.com/cloudflare/workers-sdk/pull/14723) [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645) Thanks [@ascorbic](https://github.com/ascorbic)! - Prevent concurrent Miniflare instances from deleting each other's temporary email sessions + + Email session cleanup now removes only the current instance's session directory and leaves the shared parent intact, avoiding startup failures when multiple local runtimes use the same project. + ## 4.20260710.0 ### Minor Changes diff --git a/packages/miniflare/package.json b/packages/miniflare/package.json index edea978e71d..2400e8f5414 100644 --- a/packages/miniflare/package.json +++ b/packages/miniflare/package.json @@ -1,6 +1,6 @@ { "name": "miniflare", - "version": "4.20260710.0", + "version": "4.20260714.0", "description": "Fun, full-featured, fully-local simulator for Cloudflare Workers", "keywords": [ "cloudflare", diff --git a/packages/pages-shared/CHANGELOG.md b/packages/pages-shared/CHANGELOG.md index e41b1e39053..1df0d7656ac 100644 --- a/packages/pages-shared/CHANGELOG.md +++ b/packages/pages-shared/CHANGELOG.md @@ -1,5 +1,12 @@ # @cloudflare/pages-shared +## 0.13.158 + +### Patch Changes + +- Updated dependencies [[`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983), [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d), [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c), [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8), [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645)]: + - miniflare@4.20260714.0 + ## 0.13.157 ### Patch Changes diff --git a/packages/pages-shared/package.json b/packages/pages-shared/package.json index bb1e0b5f429..de3aa345ffd 100644 --- a/packages/pages-shared/package.json +++ b/packages/pages-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/pages-shared", - "version": "0.13.157", + "version": "0.13.158", "repository": { "type": "git", "url": "https://github.com/cloudflare/workers-sdk.git", diff --git a/packages/playground-preview-worker/CHANGELOG.md b/packages/playground-preview-worker/CHANGELOG.md index c057e69a0d6..f85cbbb44ef 100644 --- a/packages/playground-preview-worker/CHANGELOG.md +++ b/packages/playground-preview-worker/CHANGELOG.md @@ -1,5 +1,11 @@ # playground-preview-worker +## 0.3.3 + +### Patch Changes + +- [#14707](https://github.com/cloudflare/workers-sdk/pull/14707) [`b38f494`](https://github.com/cloudflare/workers-sdk/commit/b38f494204e5e08e561b8f198ef928188e554868) Thanks [@emily-shen](https://github.com/emily-shen)! - Update zod to v4 + ## 0.3.2 ### Patch Changes diff --git a/packages/playground-preview-worker/package.json b/packages/playground-preview-worker/package.json index 016fec4be42..6c7f87a7875 100644 --- a/packages/playground-preview-worker/package.json +++ b/packages/playground-preview-worker/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/playground-preview-worker", - "version": "0.3.2", + "version": "0.3.3", "private": true, "scripts": { "build-middleware": "pnpm run build-middleware:common && pnpm run build-middleware:loader", diff --git a/packages/runtime-types/CHANGELOG.md b/packages/runtime-types/CHANGELOG.md index e190f42b46c..79a1801a28a 100644 --- a/packages/runtime-types/CHANGELOG.md +++ b/packages/runtime-types/CHANGELOG.md @@ -1,5 +1,12 @@ # @cloudflare/runtime-types +## 0.0.3 + +### Patch Changes + +- Updated dependencies [[`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983), [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d), [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c), [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8), [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645)]: + - miniflare@4.20260714.0 + ## 0.0.2 ### Patch Changes diff --git a/packages/runtime-types/package.json b/packages/runtime-types/package.json index cd408de0a6c..7b33d07e2aa 100644 --- a/packages/runtime-types/package.json +++ b/packages/runtime-types/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/runtime-types", - "version": "0.0.2", + "version": "0.0.3", "private": true, "homepage": "https://github.com/cloudflare/workers-sdk/tree/main/packages/runtime-types#readme", "bugs": { diff --git a/packages/turbo-r2-archive/CHANGELOG.md b/packages/turbo-r2-archive/CHANGELOG.md index f6c0f2191d0..4829f0c8b99 100644 --- a/packages/turbo-r2-archive/CHANGELOG.md +++ b/packages/turbo-r2-archive/CHANGELOG.md @@ -1,5 +1,11 @@ # turbo-r2-archive +## 0.0.5 + +### Patch Changes + +- [#14707](https://github.com/cloudflare/workers-sdk/pull/14707) [`b38f494`](https://github.com/cloudflare/workers-sdk/commit/b38f494204e5e08e561b8f198ef928188e554868) Thanks [@emily-shen](https://github.com/emily-shen)! - Update zod to v4 + ## 0.0.4 ### Patch Changes diff --git a/packages/turbo-r2-archive/package.json b/packages/turbo-r2-archive/package.json index 191b99458fd..d6822aa6da7 100644 --- a/packages/turbo-r2-archive/package.json +++ b/packages/turbo-r2-archive/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/turbo-r2-archive", - "version": "0.0.4", + "version": "0.0.5", "private": true, "description": "TurboRepo API Compliant Remote Caching w/ Cloudflare Workers using R2", "keywords": [ diff --git a/packages/vite-plugin-cloudflare/CHANGELOG.md b/packages/vite-plugin-cloudflare/CHANGELOG.md index 8e4925a5603..f22ba28535e 100644 --- a/packages/vite-plugin-cloudflare/CHANGELOG.md +++ b/packages/vite-plugin-cloudflare/CHANGELOG.md @@ -1,5 +1,23 @@ # @cloudflare/vite-plugin +## 1.45.1 + +### Patch Changes + +- [#14610](https://github.com/cloudflare/workers-sdk/pull/14610) [`e727842`](https://github.com/cloudflare/workers-sdk/commit/e727842b2c7f64de9e06623f1df32df5488681e4) Thanks [@martijnwalraven](https://github.com/martijnwalraven)! - Keep watching config changes after a failed dev server restart + + Previously, when a config change made the dev server restart fail — for example because the updated Worker config was invalid — the plugin stopped watching config changes entirely: the change handler (covering the Worker config files, local dev vars, and the assets configuration) removed itself before restarting, and only a successfully created server would register a fresh one. Since Vite keeps the current server running when a restart fails, every subsequent config change (including the one that fixes the config) was silently ignored for the rest of the session. + + The handler now stays registered and guards against re-entrant restarts instead, so fixing the config restarts the dev server as expected. + +- [#14418](https://github.com/cloudflare/workers-sdk/pull/14418) [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d) Thanks [@matthewdavidrodgers](https://github.com/matthewdavidrodgers)! - Improve routing performance for Workers with assets + + Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use. + +- Updated dependencies [[`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983), [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce), [`3de70df`](https://github.com/cloudflare/workers-sdk/commit/3de70dfd32f823677a9d20311ee087fd7e69d51a), [`c79504f`](https://github.com/cloudflare/workers-sdk/commit/c79504f90956405f5fab59448ba53dcf44b8d3a2), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d), [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c), [`c7dbe1a`](https://github.com/cloudflare/workers-sdk/commit/c7dbe1a3d527d534d4069080c56e364d33d6a455), [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8), [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645), [`4e1a7a7`](https://github.com/cloudflare/workers-sdk/commit/4e1a7a7fe566774dca376c5d569cab56b14f34e3), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981)]: + - miniflare@4.20260714.0 + - wrangler@4.112.0 + ## 1.45.0 ### Minor Changes diff --git a/packages/vite-plugin-cloudflare/package.json b/packages/vite-plugin-cloudflare/package.json index be7c0897655..c6b7796a29c 100644 --- a/packages/vite-plugin-cloudflare/package.json +++ b/packages/vite-plugin-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/vite-plugin", - "version": "1.45.0", + "version": "1.45.1", "description": "Cloudflare plugin for Vite", "keywords": [ "cloudflare", diff --git a/packages/vitest-pool-workers/CHANGELOG.md b/packages/vitest-pool-workers/CHANGELOG.md index b7cda3b36fc..3b950b95b1f 100644 --- a/packages/vitest-pool-workers/CHANGELOG.md +++ b/packages/vitest-pool-workers/CHANGELOG.md @@ -1,5 +1,17 @@ # @cloudflare/vitest-pool-workers +## 0.18.6 + +### Patch Changes + +- [#14678](https://github.com/cloudflare/workers-sdk/pull/14678) [`4e62bba`](https://github.com/cloudflare/workers-sdk/commit/4e62bba52d8c540328bc9b3399bba4dcb7cde799) Thanks [@apeacock1991](https://github.com/apeacock1991)! - Fix test runs hanging after a Durable Object logs and rejects `blockConcurrencyWhile()` + + Console messages emitted from another Durable Object are now buffered until execution returns to the test runner, avoiding I/O that cannot complete after the object's input gate breaks. + +- Updated dependencies [[`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983), [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce), [`3de70df`](https://github.com/cloudflare/workers-sdk/commit/3de70dfd32f823677a9d20311ee087fd7e69d51a), [`c79504f`](https://github.com/cloudflare/workers-sdk/commit/c79504f90956405f5fab59448ba53dcf44b8d3a2), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d), [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c), [`c7dbe1a`](https://github.com/cloudflare/workers-sdk/commit/c7dbe1a3d527d534d4069080c56e364d33d6a455), [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8), [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645), [`4e1a7a7`](https://github.com/cloudflare/workers-sdk/commit/4e1a7a7fe566774dca376c5d569cab56b14f34e3), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981)]: + - miniflare@4.20260714.0 + - wrangler@4.112.0 + ## 0.18.5 ### Patch Changes diff --git a/packages/vitest-pool-workers/package.json b/packages/vitest-pool-workers/package.json index 61566dca876..20b5c2aa6fe 100644 --- a/packages/vitest-pool-workers/package.json +++ b/packages/vitest-pool-workers/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/vitest-pool-workers", - "version": "0.18.5", + "version": "0.18.6", "description": "Workers Vitest integration for writing Vitest unit and integration tests that run inside the Workers runtime", "keywords": [ "cloudflare", diff --git a/packages/workers-shared/CHANGELOG.md b/packages/workers-shared/CHANGELOG.md index 17dc4513990..69dba4c23b1 100644 --- a/packages/workers-shared/CHANGELOG.md +++ b/packages/workers-shared/CHANGELOG.md @@ -1,5 +1,21 @@ # @cloudflare/workers-shared +## 0.19.9 + +### Patch Changes + +- [#14417](https://github.com/cloudflare/workers-sdk/pull/14417) [`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983) Thanks [@matthewdavidrodgers](https://github.com/matthewdavidrodgers)! - Improve asset serving performance by removing an unnecessary internal dispatch hop + + Asset requests and RPC calls now avoid an extra internal forwarding layer, reducing latency. The forwarding infrastructure is preserved for future use by cohort-based deployments. + +- [#14705](https://github.com/cloudflare/workers-sdk/pull/14705) [`00f41d6`](https://github.com/cloudflare/workers-sdk/commit/00f41d6dbdf7ba4943f2c4b5d338ae9c9d8fc9a0) Thanks [@WillTaylorDev](https://github.com/WillTaylorDev)! - Retry asset reads from KV when they fail + + The asset worker reads static assets from KV, and a read can occasionally fail with a transient error. It previously retried only once before giving up. It now retries a few times with exponential backoff, which reduces the chance of serving an error. A missing asset is not treated as a failure and is not retried. + +- [#14418](https://github.com/cloudflare/workers-sdk/pull/14418) [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d) Thanks [@matthewdavidrodgers](https://github.com/matthewdavidrodgers)! - Improve routing performance for Workers with assets + + Reduce request handling latency by streamlining the router Worker's request path. The loopback infrastructure remains available for future use. + ## 0.19.8 ### Patch Changes diff --git a/packages/workers-shared/package.json b/packages/workers-shared/package.json index 57b30362e1c..0f1e837fdc0 100644 --- a/packages/workers-shared/package.json +++ b/packages/workers-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/workers-shared", - "version": "0.19.8", + "version": "0.19.9", "private": true, "description": "Package that is used at Cloudflare to power some internal features of Cloudflare Workers.", "keywords": [ diff --git a/packages/workflows-shared/CHANGELOG.md b/packages/workflows-shared/CHANGELOG.md index 1746b8ec228..5678562c396 100644 --- a/packages/workflows-shared/CHANGELOG.md +++ b/packages/workflows-shared/CHANGELOG.md @@ -1,5 +1,11 @@ # @cloudflare/workflows-shared +## 0.12.1 + +### Patch Changes + +- [#14707](https://github.com/cloudflare/workers-sdk/pull/14707) [`b38f494`](https://github.com/cloudflare/workers-sdk/commit/b38f494204e5e08e561b8f198ef928188e554868) Thanks [@emily-shen](https://github.com/emily-shen)! - Update zod to v4 + ## 0.12.0 ### Minor Changes diff --git a/packages/workflows-shared/package.json b/packages/workflows-shared/package.json index e94d9ecbef5..691fd5c1c98 100644 --- a/packages/workflows-shared/package.json +++ b/packages/workflows-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/workflows-shared", - "version": "0.12.0", + "version": "0.12.1", "private": true, "description": "Package that is used at Cloudflare to power some internal features of Cloudflare Workflows.", "keywords": [ diff --git a/packages/wrangler/CHANGELOG.md b/packages/wrangler/CHANGELOG.md index 8aac62bdb80..13c32fc5274 100644 --- a/packages/wrangler/CHANGELOG.md +++ b/packages/wrangler/CHANGELOG.md @@ -1,5 +1,74 @@ # wrangler +## 4.112.0 + +### Minor Changes + +- [#14470](https://github.com/cloudflare/workers-sdk/pull/14470) [`3de70df`](https://github.com/cloudflare/workers-sdk/commit/3de70dfd32f823677a9d20311ee087fd7e69d51a) Thanks [@DiogoSantoss](https://github.com/DiogoSantoss)! - Add a top-level `addresses` field to Wrangler configuration for Email Routing + + You can now declare the inbound email addresses handled by your Worker directly in `wrangler.json`: + + ```json + { + "name": "my-worker", + "main": "src/index.ts", + "compatibility_date": "2026-05-21", + "addresses": ["support@example.com", "*@example.com"] + } + ``` + +- [#14706](https://github.com/cloudflare/workers-sdk/pull/14706) [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c) Thanks [@edmundhung](https://github.com/edmundhung)! - Add Durable Object storage access to `createTestHarness()` + + You can now execute SQL against a SQLite-backed Durable Object to seed or assert the storage state. + + ```ts + const server = createTestHarness({ + workers: [{ configPath: "./wrangler.json" }], + }); + await server.listen(); + + const worker = server.getWorker(); + const storage = await worker.getDurableObjectStorage("COUNTER", { + name: "user-123", + }); + + await worker.fetch("/counter/user-123"); + + const rows = await storage.exec( + "SELECT value FROM counters WHERE id = ?", + "user-123" + ); + expect(rows).toEqual([{ value: 1 }]); + ``` + +- [#14562](https://github.com/cloudflare/workers-sdk/pull/14562) [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981) Thanks [@martijnwalraven](https://github.com/martijnwalraven)! - Emit a typed `runtimeError` event on the `unstable_startWorker` DevEnv for uncaught Worker exceptions + + Uncaught Worker exceptions were only source-mapped and printed, so programmatic consumers had to scrape terminal output to observe them. The DevEnv now re-emits a `RuntimeErrorEvent` (like `reloadComplete`) carrying the exception text and source-mapped stack — fed from Miniflare's pretty-error seam via the new `handleUncaughtError` option for exceptions the runtime catches, and from the inspector for those it does not. + +### Patch Changes + +- [#14682](https://github.com/cloudflare/workers-sdk/pull/14682) [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce) Thanks [@dependabot](https://github.com/apps/dependabot)! - Update dependencies of "miniflare", "wrangler" + + The following dependency versions have been updated: + + | Dependency | From | To | + | ------------------------- | ------------- | ------------- | + | @cloudflare/workers-types | ^5.20260710.1 | ^5.20260714.1 | + | workerd | 1.20260710.1 | 1.20260714.1 | + +- [#14725](https://github.com/cloudflare/workers-sdk/pull/14725) [`c79504f`](https://github.com/cloudflare/workers-sdk/commit/c79504f90956405f5fab59448ba53dcf44b8d3a2) Thanks [@edmundhung](https://github.com/edmundhung)! - Support containers in `createTestHarness()` + + Workers configured with containers can now be tested using `createTestHarness()`. The harness builds configured images and makes container-backed Durable Objects available during integration tests. + +- [#14696](https://github.com/cloudflare/workers-sdk/pull/14696) [`c7dbe1a`](https://github.com/cloudflare/workers-sdk/commit/c7dbe1a3d527d534d4069080c56e364d33d6a455) Thanks [@martijnwalraven](https://github.com/martijnwalraven)! - Type `unstable_startWorker`, `DevEnv.startWorker`, and `ConfigController.set`/`patch` against `WranglerStartDevWorkerInput`, so the wrangler-specific `dev.structuredLogsHandler` field the runtime already honors is expressible through the public API. Previously the public signatures took the base `StartDevWorkerInput`, and callers passing the handler needed a cast while internal callers (the test harness) routed the wider type around the signature. + +- [#14494](https://github.com/cloudflare/workers-sdk/pull/14494) [`4e1a7a7`](https://github.com/cloudflare/workers-sdk/commit/4e1a7a7fe566774dca376c5d569cab56b14f34e3) Thanks [@petebacondarwin](https://github.com/petebacondarwin)! - Register a workers.dev subdomain before uploading a new Worker + + Deploying a Worker for the first time on an account that has no workers.dev subdomain failed with an opaque API error raised by the upload request itself (code 10063, "You need a workers.dev subdomain in order to proceed"). Wrangler now checks for a workers.dev subdomain before uploading a brand-new Worker that publishes to workers.dev and prompts you to register one, so you get a clear, actionable message instead of a cryptic API failure. The check is skipped for deploys that don't target workers.dev (routes-only deploys, or `workers_dev: false`) and for existing Workers, since their account already has a subdomain. + +- Updated dependencies [[`34e696d`](https://github.com/cloudflare/workers-sdk/commit/34e696dc60dcd7ea04cdab8a6267d255efab9983), [`d39ae01`](https://github.com/cloudflare/workers-sdk/commit/d39ae0131018088f8b4c31ba3f5506e224796cce), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`9f04a7e`](https://github.com/cloudflare/workers-sdk/commit/9f04a7e96bffe42a5a53d7396624da5374bff981), [`cb30df3`](https://github.com/cloudflare/workers-sdk/commit/cb30df3a9f19e15535349643c1089e90ba16a80d), [`cb6c3f9`](https://github.com/cloudflare/workers-sdk/commit/cb6c3f9a5c6d67804cd0cb447cc0837a9f75848c), [`3f3afbb`](https://github.com/cloudflare/workers-sdk/commit/3f3afbbf136c404d26ee39d187a44adb06c1b6e8), [`e6fbc4e`](https://github.com/cloudflare/workers-sdk/commit/e6fbc4e67f76f9b78da3d9a2dd27c6e9786d2645)]: + - miniflare@4.20260714.0 + ## 4.111.0 ### Minor Changes diff --git a/packages/wrangler/package.json b/packages/wrangler/package.json index 1a107d29129..6d6a9b8b6b3 100644 --- a/packages/wrangler/package.json +++ b/packages/wrangler/package.json @@ -1,6 +1,6 @@ { "name": "wrangler", - "version": "4.111.0", + "version": "4.112.0", "description": "Command-line interface for all things Cloudflare Workers", "keywords": [ "assembly",