Skip to content

Version Packages - #15291

Merged
penalosa merged 1 commit into
mainfrom
changeset-release/main
Aug 25, 2026
Merged

Version Packages#15291
penalosa merged 1 commit into
mainfrom
changeset-release/main

Conversation

@workers-devprod

@workers-devprod workers-devprod commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@cloudflare/autoconfig@0.3.0

Minor Changes

  • #15246 daefb3c Thanks @edmundhung! - Prepare autoconfig for multiple configuration targets

    Add target-specific configuration output and command detection while preserving Wrangler's existing setup and deployment behavior.

Patch Changes

@cloudflare/build-output-utils@0.2.0

Minor Changes

  • #15326 9fcb1c9 Thanks @jamesopstad! - 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.

  • #15326 9fcb1c9 Thanks @jamesopstad! - 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.

Patch Changes

@cloudflare/config@0.8.0

Minor Changes

  • #15326 9fcb1c9 Thanks @jamesopstad! - Rename the settings config schema exports to the input/output convention

    SettingsSchema is now InputSettingsSchema and ParsedSettingsConfig is now ParsedInputSettingsConfig.

  • #15326 9fcb1c9 Thanks @jamesopstad! - 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.

  • #15318 82d11fc Thanks @jamesopstad! - Consolidate development-only binding configuration under dev

    This experimental configuration now uses dev.remote for remote bindings and dev.connectionString for Hyperdrive. Miniflare's v5 binding configuration follows the same shape, and R2's local S3 credentials now share the dev object.

  • #15325 7f66836 Thanks @jamesopstad! - Reject conflicting destination restrictions in send-email bindings

    Send-email bindings now match Wrangler validation by allowing either destinationAddress or allowedDestinationAddresses, but not both. allowedSenderAddresses remains an independent restriction that can accompany either destination mode.

Patch Changes

  • #15324 ead8f69 Thanks @jamesopstad! - 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.

  • #15297 acb14d0 Thanks @jamesopstad! - Fix declaration emit for values returned by defineSettings

    Projects can now export a defineSettings() result while generating TypeScript declarations without encountering TS4023.

@cloudflare/deploy-helpers@0.9.0

Minor Changes

  • #14966 a4c3458 Thanks @yomna-shousha! - 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.

Patch Changes

miniflare@5.20260825.0-alpha

Minor Changes

  • #15064 693ca29 Thanks @tpmmorris! - 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.

  • #15064 693ca29 Thanks @tpmmorris! - 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.

    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),
      },
    ]);
  • #15187 37ed753 Thanks @penalosa! - Support Images data in experimental shared local storage

  • #15188 f76b68e Thanks @penalosa! - Support Stream in experimental shared local storage

  • #15134 c66d2d5 Thanks @gpanders! - 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.

  • #15064 693ca29 Thanks @tpmmorris! - 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:

    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:

    {
      "messages": [
        {
          "code": 10604,
          "message": "Displayed received email content was truncated during local capture. The complete message was still delivered to the Worker."
        }
      ]
    }
  • #15169 dd5148d Thanks @penalosa! - Add experimental shared local storage, letting several Miniflare instances read and write one set of local resources

    Each instance previously kept its own copy of local state, so two dev sessions pointed at the same KV namespace or D1 database could not see each other's writes. Instances that opt in now elect a single storage owner through the dev registry and route storage through it, so resources with the same ID resolve to the same data.

    Opt in with unsafeEnableSharedStorage, which requires three paths to be set:

    new Miniflare({
      unsafeEnableSharedStorage: true,
      // Shared between instances: resources that participate in sharing live here
      resourcePersistencePath: "/path/to/shared/state",
      // Per project: resources that cannot be shared keep their own state here
      isolatedResourcePersistencePath: "/path/to/project/state",
      // Instances elect the storage owner through the dev registry
      unsafeDevRegistryPath: "/path/to/registry",
      // ...
    });

    KV, D1, R2, Rate Limits, and Secrets Store participate in sharing. Cache, Durable Objects, Workflows, observability, and Hello World storage do not yet, and stay instance-local under isolatedResourcePersistencePath, keeping their state across restarts without concurrent access to the shared root.

    This is experimental and the unsafe-prefixed options may change without a major version bump.

  • #15318 82d11fc Thanks @jamesopstad! - Consolidate development-only binding configuration under dev

    This experimental configuration now uses dev.remote for remote bindings and dev.connectionString for Hyperdrive. Miniflare's v5 binding configuration follows the same shape, and R2's local S3 credentials now share the dev object.

Patch Changes

  • #15341 aa54b49 Thanks @jamesopstad! - 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.

  • #15294 4a67a28 Thanks @dependabot! - 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
  • #15328 2d78137 Thanks @dependabot! - 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
  • #15346 04e8564 Thanks @dependabot! - 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
  • #15064 693ca29 Thanks @tpmmorris! - 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.

  • #15316 74de3ab Thanks @dexvdev! - 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.

  • #15242 0cb8690 Thanks @aesopfrom0! - 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.

@cloudflare/vite-plugin@1.54.0

Minor Changes

  • #15134 c66d2d5 Thanks @gpanders! - 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.

  • #15326 9fcb1c9 Thanks @jamesopstad! - 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.

Patch Changes

@cloudflare/vitest-plugin@1.1.0

Minor Changes

  • #15117 f0c9c66 Thanks @edmundhung! - 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.

  • #15272 c921b3f Thanks @penalosa! - 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:

    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.

Patch Changes

wrangler@4.126.0

Minor Changes

  • #15332 d1cc3af Thanks @pombosilva! - 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:

    {
      "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.

  • #15064 693ca29 Thanks @tpmmorris! - 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.

    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),
      },
    ]);
  • #15065 ad89456 Thanks @mtlemilio! - 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:

    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.

  • #15134 c66d2d5 Thanks @gpanders! - 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.

  • #15326 9fcb1c9 Thanks @jamesopstad! - 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.

  • #14966 a4c3458 Thanks @yomna-shousha! - 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.

Patch Changes

  • #15294 4a67a28 Thanks @dependabot! - 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
  • #15328 2d78137 Thanks @dependabot! - 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
  • #15346 04e8564 Thanks @dependabot! - 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
  • #15246 daefb3c Thanks @edmundhung! - Prepare autoconfig for multiple configuration targets

    Add target-specific configuration output and command detection while preserving Wrangler's existing setup and deployment behavior.

  • #15320 c809851 Thanks @Om-singhaI! - 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.

  • #15336 22182da Thanks @podonnell-dev! - [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.

  • #15296 d589d30 Thanks @MattieTK! - 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.

  • Updated dependencies [aa54b49, 4a67a28, 2d78137, 04e8564, 693ca29, 693ca29, 693ca29, 37ed753, f76b68e, c66d2d5, 693ca29, 74de3ab, 0cb8690, dd5148d, 82d11fc]:

create-cloudflare@2.72.3

Patch Changes

  • #15321 c457bfc Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    @angular/create 22.1.4 22.1.5
  • #15322 9da6bbd Thanks @dependabot! - Update dependencies of "create-cloudflare"

    The following dependency versions have been updated:

    Dependency From To
    create-next-app 16.3.1 16.3.2
  • #15328 2d78137 Thanks @dependabot! - 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.

@cloudflare/pages-shared@0.13.172

Patch Changes

@cloudflare/workers-auth@0.6.6

Patch Changes

  • #15320 c809851 Thanks @Om-singhaI! - 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.

@cloudflare/remote-bindings@0.0.15

Patch Changes

@cloudflare/runtime-types@0.0.17

Patch Changes

@github-actions

Copy link
Copy Markdown
Contributor

✅ All changesets look good

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@pkg-pr-new

pkg-pr-new Bot commented Aug 20, 2026

Copy link
Copy Markdown
@cloudflare/autoconfig

npm i https://pkg.pr.new/@cloudflare/autoconfig@15291

@cloudflare/build-output-utils

npm i https://pkg.pr.new/@cloudflare/build-output-utils@15291

@cloudflare/codemods

npm i https://pkg.pr.new/@cloudflare/codemods@15291

@cloudflare/config

npm i https://pkg.pr.new/@cloudflare/config@15291

create-cloudflare

npm i https://pkg.pr.new/create-cloudflare@15291

@cloudflare/deploy-helpers

npm i https://pkg.pr.new/@cloudflare/deploy-helpers@15291

@cloudflare/kv-asset-handler

npm i https://pkg.pr.new/@cloudflare/kv-asset-handler@15291

miniflare

npm i https://pkg.pr.new/miniflare@15291

@cloudflare/pages-functions

npm i https://pkg.pr.new/@cloudflare/pages-functions@15291

@cloudflare/pages-shared

npm i https://pkg.pr.new/@cloudflare/pages-shared@15291

@cloudflare/unenv-preset

npm i https://pkg.pr.new/@cloudflare/unenv-preset@15291

@cloudflare/vite-plugin

npm i https://pkg.pr.new/@cloudflare/vite-plugin@15291

@cloudflare/vitest-plugin

npm i https://pkg.pr.new/@cloudflare/vitest-plugin@15291

@cloudflare/workers-auth

npm i https://pkg.pr.new/@cloudflare/workers-auth@15291

@cloudflare/workers-editor-shared

npm i https://pkg.pr.new/@cloudflare/workers-editor-shared@15291

@cloudflare/workers-utils

npm i https://pkg.pr.new/@cloudflare/workers-utils@15291

wrangler

npm i https://pkg.pr.new/wrangler@15291

commit: cb0f2d8

@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 27 times, most recently from 94024e8 to e96f756 Compare August 25, 2026 08:25
@workers-devprod
workers-devprod force-pushed the changeset-release/main branch 7 times, most recently from fde3413 to d8b3432 Compare August 25, 2026 13:15
@penalosa
penalosa merged commit d765e10 into main Aug 25, 2026
58 checks passed
@penalosa
penalosa deleted the changeset-release/main branch August 25, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants