Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/bright-ravens-resolve.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@cloudflare/vitest-plugin": minor
---

Support Workerd's new module registry in Workers Vitest tests

The pool now follows Workerd's V2 module fallback protocol when `new_module_registry` is selected while retaining the V1 path for `legacy_module_registry`. Tests using the new registry preserve URL-based `import.meta` behavior and load CommonJS dependencies as native CommonJS modules with named exports.
11 changes: 11 additions & 0 deletions .changeset/c3-frameworks-update-15321.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"create-cloudflare": patch
---

Update dependencies of "create-cloudflare"

The following dependency versions have been updated:

| Dependency | From | To |
| --------------- | ------ | ------ |
| @angular/create | 22.1.4 | 22.1.5 |
11 changes: 11 additions & 0 deletions .changeset/c3-frameworks-update-15322.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"create-cloudflare": patch
---

Update dependencies of "create-cloudflare"

The following dependency versions have been updated:

| Dependency | From | To |
| --------------- | ------ | ------ |
| create-next-app | 16.3.1 | 16.3.2 |
7 changes: 7 additions & 0 deletions .changeset/clean-workflow-dev-remote.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"miniflare": patch
---

Remove unsupported remote configuration from Workflow bindings

Miniflare now rejects `dev.remote` on Workflow bindings and no longer exposes or converts the legacy Workflow `remoteProxyConnectionString` option. Workflows always use the local simulator.
7 changes: 7 additions & 0 deletions .changeset/curvy-snails-listen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@cloudflare/config": patch
---

Fix the inferred type of `ConfigExportsSchema` to reserve the `settings` key for settings configuration

Parsed config exports now expose `settings` as a settings configuration while treating all other exports as Worker configurations. Validation continues to report specific errors when a settings configuration uses the wrong export name or the reserved name contains a Worker configuration, and now explains how to handle unsupported exports.
13 changes: 13 additions & 0 deletions .changeset/dependabot-update-15294.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"miniflare": patch
"wrangler": patch
---

Update dependencies of "miniflare", "wrangler"

The following dependency versions have been updated:

| Dependency | From | To |
| ------------------------- | ------------- | ------------- |
| @cloudflare/workers-types | ^5.20260820.1 | ^5.20260821.1 |
| workerd | 1.20260820.1 | 1.20260821.1 |
13 changes: 13 additions & 0 deletions .changeset/dependabot-update-15328.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"miniflare": patch
"wrangler": patch
---

Update dependencies of "miniflare", "wrangler"

The following dependency versions have been updated:

| Dependency | From | To |
| ------------------------- | ------------- | ------------- |
| @cloudflare/workers-types | ^5.20260821.1 | ^5.20260823.1 |
| workerd | 1.20260821.1 | 1.20260824.1 |
13 changes: 13 additions & 0 deletions .changeset/dependabot-update-15346.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"miniflare": patch
"wrangler": patch
---

Update dependencies of "miniflare", "wrangler"

The following dependency versions have been updated:

| Dependency | From | To |
| ------------------------- | ------------- | ------------- |
| @cloudflare/workers-types | ^5.20260823.1 | ^5.20260825.1 |
| workerd | 1.20260824.1 | 1.20260825.1 |
25 changes: 25 additions & 0 deletions .changeset/eighty-eagles-smoke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
"wrangler": minor
---

Add `default_retention` to Workflow bindings for configuring how long instances are retained

Workflow instances are retained for an account-wide default period after they finish. You can now set a per-Workflow default in your Wrangler configuration, applied to instances that do not specify their own retention:

```jsonc
{
"workflows": [
{
"binding": "MY_WORKFLOW",
"name": "my-workflow",
"class_name": "MyWorkflow",
"default_retention": {
"success_retention": "3 days",
"error_retention": "7 days",
},
},
],
}
```

Each side is optional and accepts either a duration string such as `"3 days"` or a whole number of milliseconds. Durations are interpreted by the Workflows API, which also caps them at your account's retention limit.
11 changes: 11 additions & 0 deletions .changeset/email-artifact-message-ids.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"miniflare": patch
---

Generate and use production-style Message-IDs for local email artifacts

Locally sent emails and replies now use generated Message-IDs - which are 36 alphanumeric characters - consistently in returned results, raw MIME headers, Local Explorer records, and stored artifact filenames. User-provided `Message-ID` headers are replaced by the generated ID.

For example, sending an email from `sender@example.com` may return `<AbCdEfGhIjKlMnOpQrStUvWxYz0123456789@example.com>`. The raw email uses that same value for its `Message-ID` header, the Local Explorer exposes the same ID, and the stored artifact is named `AbCdEfGhIjKlMnOpQrStUvWxYz0123456789@example.com.eml`.

Similarly, a reply containing `Message-ID: <custom@example.com>` is stored and returned with a newly generated ID instead. This mirrors production behavior and prevents the supplied ID from becoming the local artifact key.
7 changes: 7 additions & 0 deletions .changeset/email-reply-builder.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"miniflare": minor
---

Support `EmailReplyMessageBuilder` when replying from local email handlers

Builder replies now generate the recipient, threading headers, and a production-style Message-ID automatically. Raw `EmailMessage` replies also use a generated production-style Message-ID; user-provided Message-ID headers are rejected in favor of the generated ID.
35 changes: 35 additions & 0 deletions .changeset/email-test-harness-events.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
"miniflare": minor
"wrangler": minor
---

Include a chronological list of handler events in email test harness results, so programmatic local email tests can assert the order in which messages are received, forwarded, replied to, or rejected.

```ts
const result = await server.getWorker().email({
from: "sender@example.com",
to: "inbox@example.com",
raw: [
"From: Sender <sender@example.com>",
"To: Inbox <inbox@example.com>",
"Message-ID: <test@example.com>",
"Subject: Test email",
"",
"Hello from the test harness",
].join("\r\n"),
});

expect(result.events).toEqual([
{ type: "received", timestamp: expect.any(String) },
{
type: "forward",
timestamp: expect.any(String),
messageId: expect.any(String),
},
{
type: "reply",
timestamp: expect.any(String),
messageId: expect.any(String),
},
]);
```
8 changes: 8 additions & 0 deletions .changeset/fresh-dogs-configure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@cloudflare/autoconfig": minor
"wrangler": patch
---

Prepare autoconfig for multiple configuration targets

Add target-specific configuration output and command detection while preserving Wrangler's existing setup and deployment behavior.
5 changes: 5 additions & 0 deletions .changeset/fuzzy-images-share.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"miniflare": minor
---

Support Images data in experimental shared local storage
5 changes: 5 additions & 0 deletions .changeset/fuzzy-streams-share.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"miniflare": minor
---

Support Stream in experimental shared local storage
24 changes: 24 additions & 0 deletions .changeset/hyperdrive-planetscale.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
"wrangler": minor
---

Add experimental `wrangler hyperdrive planetscale signature` for provisioning Cloudflare-billed PlanetScale databases

`wrangler hyperdrive planetscale signature` prints a signed authorization as JSON, proving to PlanetScale that Cloudflare will be billed for the database you are about to create:

```sh
npx wrangler hyperdrive planetscale signature | \
pscale database create <name> \
--org <org> \
--engine postgresql \
--cloudflare-billing @- \
--format json
```

`pscale database create` defaults to Vitess, so pass `--engine postgresql` for a Postgres database, and `--format json` is recommended when the output is consumed by an agent.

This requires `pscale` v0.313.0 or newer. Wrangler authorizes the Cloudflare billing side only, so your PlanetScale credentials stay between you and `pscale`.

The signature is a cryptographically signed token that authorizes creating a database billed to your Cloudflare account. Treat it as a credential and do not share it. Piping it, as above, is recommended over passing it as a command line argument.

This command is experimental and its interface may change.
7 changes: 7 additions & 0 deletions .changeset/input-settings-schema-rename.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@cloudflare/config": minor
---

Rename the settings config schema exports to the input/output convention

`SettingsSchema` is now `InputSettingsSchema` and `ParsedSettingsConfig` is now `ParsedInputSettingsConfig`.
8 changes: 8 additions & 0 deletions .changeset/linux-secret-tool-probe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@cloudflare/workers-auth": patch
"wrangler": patch
---

Fix `wrangler login --use-keyring` incorrectly reporting that `secret-tool` is missing on Linux

Libsecret's `secret-tool` does not support `--version`; it prints usage and exits 2, which Wrangler previously interpreted as unavailable. Wrangler now reports it missing only when launching the executable fails.
9 changes: 9 additions & 0 deletions .changeset/local-container-fuse-privileges.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"wrangler": minor
"miniflare": minor
"@cloudflare/vite-plugin": minor
---

Enable FUSE-capable local container development

Miniflare now automatically passes the Docker privileges needed for FUSE to local Durable Object containers when using local rootless Docker on Linux with `/dev/fuse` available, or a local Docker engine on macOS or through WSL where Linux containers run in a VM. This applies to Wrangler, the Cloudflare Vite plugin, and direct Miniflare use.
45 changes: 45 additions & 0 deletions .changeset/local-explorer-email-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
"miniflare": minor
---

Capture locally sent and received emails, along with forwarding and reply activity and metadata, for inspection through the Local Explorer email API.

Miniflare now captures locally sent and received emails, including forwarding, reply, rejection, and exception activity. The following endpoints are available below `/cdn-cgi/local/explorer/api` while `wrangler dev` is running:

- `POST /local/email/routing/send?worker=<name>` sends a test email to a Worker's `email()` handler.
- `GET /local/email/routing?worker=<name>` lists emails received by a Worker.
- `GET /local/email/routing?email_id=<message-id>&worker=<name>` returns a received email and its handler activity.
- `GET /local/email/sending?worker=<name>` lists emails sent through a Worker's `send_email` bindings.
- `GET /local/email/sending?email_id=<message-id>&worker=<name>` returns a sent email.

For example, send and then inspect a test email against a Worker named `my-worker`:

```sh
curl -X POST \
"http://localhost:8787/cdn-cgi/local/explorer/api/local/email/routing/send?worker=my-worker" \
-H "Content-Type: application/json" \
--data '{
"from": "sender@example.com",
"to": ["inbox@example.com"],
"subject": "Local test",
"text": "Hello from Local Explorer"
}'

curl \
"http://localhost:8787/cdn-cgi/local/explorer/api/local/email/routing?worker=my-worker"
```

List endpoints support `per_page` and opaque `cursor` query parameters. File paths logged by the `send_email` binding are asynchronous debugging artifacts and should not be used to synchronize after `send()` resolves. Email handler exceptions are logged when structured local delivery reports an exception outcome.

When email content exceeds the local storage row budget of approximately 2 MB, the email is delivered in full but the Local Explorer capture is truncated to fit. Detail responses identify each truncated sent email, received email, or reply in the top-level `messages` array with warning code `10604`; for example:

```json
{
"messages": [
{
"code": 10604,
"message": "Displayed received email content was truncated during local capture. The complete message was still delivered to the Worker."
}
]
}
```
20 changes: 20 additions & 0 deletions .changeset/lucky-donkeys-listen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
"@cloudflare/vitest-plugin": minor
---

Add an experimental `newConfig` option for loading the Worker's configuration from `cloudflare.config.ts`

Projects that have migrated to the new TypeScript configuration format had no way to run their Vitest suite against their real bindings, since there was no Wrangler configuration file left to point `wrangler.configPath` at. This adds the missing option, modelled on `@cloudflare/vite-plugin`'s `experimental.newConfig`:

```ts
import { cloudflareTest } from "@cloudflare/vitest-plugin";
import { defineProject } from "vitest/config";

export default defineProject({
plugins: [cloudflareTest({ experimental: { newConfig: true } })],
});
```

`newConfig: true` loads `cloudflare.config.ts` from the project root; pass `{ configPath: "..." }` to load it from elsewhere. Config functions are called with `ctx.mode` set to Vite's mode, which defaults to `"test"` and can be overridden with `--mode`. `experimental.newConfig` cannot be combined with `wrangler`.

This is experimental and may change without a major version bump. Wrangler environments, `wrangler.config.ts` tooling configuration, and type generation are not supported yet.
7 changes: 7 additions & 0 deletions .changeset/miniflare-dev-registry-reregister-after-sweep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"miniflare": patch
---

Restore cross-process service bindings after a machine wakes from sleep

Workers running in separate `wrangler dev` or Vite dev sessions now reconnect automatically after the machine wakes. Previously, service bindings could return `Worker "<name>" not found` until the serving process reloaded or restarted.
7 changes: 7 additions & 0 deletions .changeset/miniflare-sighup-orphan-workerd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"miniflare": patch
---

Shut down `workerd` when Miniflare is terminated with `SIGHUP`

On `SIGHUP`, Miniflare now stops `workerd` and removes its temporary directory instead of leaving them behind. Previously only `SIGINT` and `SIGTERM` were handled, so tools that embed Miniflare, such as `@cloudflare/vitest-pool-workers` and `@cloudflare/vite-plugin`, could leave a stray process and directory behind on each run.
10 changes: 10 additions & 0 deletions .changeset/mode-in-build-output.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@cloudflare/build-output-utils": minor
"@cloudflare/vite-plugin": minor
"@cloudflare/config": minor
"wrangler": minor
---

Record the selected mode in the Build Output Specification top-level `config.json`

The mode a build was produced in is now written to `.cloudflare/output/v0/config.json` as a `mode` field, alongside the account and compliance settings.
7 changes: 7 additions & 0 deletions .changeset/preview-no-active-urls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"wrangler": patch
---

`[private beta]`: Explain unavailable Preview URLs after `wrangler preview` deployments

When a Preview deployment has no active URLs, Wrangler now explains how to enable Preview Deployments on workers.dev or a custom domain.
10 changes: 10 additions & 0 deletions .changeset/preview-pull-request-metadata.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@cloudflare/deploy-helpers": minor
"wrangler": minor
---

Add pull request metadata to `wrangler preview` deployments

`wrangler preview` now detects the pull request associated with the current CI run (GitHub Actions, GitLab CI, CircleCI, and a generic `PULL_REQUEST_URL`/`PR_URL`/`CHANGE_URL` fallback) and attaches it, along with the repository URL, to the preview deployment as annotations (`workers/pull_request_number`, `workers/pull_request_url`, `workers/repository_url`).

This is best effort: if no pull request can be detected, nothing changes. When a pull request is detected, its URL is now also shown in the `wrangler preview` command output.
7 changes: 7 additions & 0 deletions .changeset/quick-taxis-test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"create-cloudflare": patch
---

Update the Hello World templates to use `@cloudflare/vitest-plugin` v1

Newly generated Workers projects now use the renamed Vitest integration package instead of the deprecated `@cloudflare/vitest-pool-workers` package.
7 changes: 7 additions & 0 deletions .changeset/quiet-skills-update.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"wrangler": patch
---

Stop automatically offering to install Cloudflare skills for new users

Wrangler will no longer prompt new users to install Cloudflare skills after commands complete. It will continue to offer updates to skills that Wrangler previously installed.
7 changes: 7 additions & 0 deletions .changeset/settings-config-accessors-rename.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@cloudflare/build-output-utils": minor
---

Rename the top-level config accessors after the config they operate on

`getRootConfigPath` and `writeRootConfig` are now `getSettingsConfigPath` and `writeSettingsConfig`, and the corresponding validation error reads `invalid settings config` rather than `invalid root config`.
Loading
Loading