Repository navigation
Update dependency wrangler to v4.156.0 - #7
renovate[bot] wants to merge 1 commit into
Conversation
|
|
Closed: wrangler stays at 4.150.0 for now. Its workerd runs the compatibility date 2026-10-13 that the tests and the measurement probe use (DOM-061 in TODO/ops.md), and this PR's lock file was not updated, so npm ci failed its gate. DOM-030 moves wrangler, the compatibility date and the Workers types together (its Found of 2026-10-29T16:10Z in TODO/serve.md). |
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update ( If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
packages/state holds state.json (the cursors, the volume history and the packs owed to the root), the cursor proposals, advance and settle, and the guard that moves a tag only from the digest it read. scripts/ingest plans the lanes, runs one adapter, writes and verifies its segments and raw lane objects, pushes them and proposes a cursor. scripts/state advances the cursors, builds the closed hours' feed packs, and moves state:latest and ledger-delta under the guard. ingest-live.yml runs them: a matrix of lanes, then one job in the group root-writer, then the promotion, with a chain job beside them that only runs once DOM-003 writes config/clock.json. promote.mjs --partial adds the owed packs that the root's live-set rule allows and leaves the rest owed; ingest-live.yml passes partial: true, so one pack across a hole no longer blocks every promotion for 7 days. compact-daily.yml now moves ledger-delta under the state guard. D1 to D24 of DOM-024 are recorded as Decisions of the entry. Three review lenses ran over two halves (87 findings), fixed in four rounds, each verified. Nothing has run on GitHub yet: the live Prove waits on DOM-003's clock and a first adapter. Also records the close of Renovate #6 and #7. Gate: npm run gate exits 0 on this tree (1740 tests, 1737 pass, 3 skipped for the platform).
This PR contains the following updates:
4.150.0→4.156.0Release Notes
cloudflare/workers-sdk (wrangler)
v4.156.0Compare Source
Minor Changes
#16532
25802bcThanks @simonha9! - Allow the experimentalwrangler d1 insightscommand to run across every D1 database in the accountThe database name is now optional. With no name, the command returns the top queries across every D1 database in the account, and each result gains a
databaseIdfield.Patch Changes
#16369
ec0bea4Thanks @MattieTK! - Stop autoconfig in non-interactive runs when a project root holds both static files and a PagesfunctionsdirectoryWhen a project without a detected framework has a
functionsdirectory, autoconfig asks whether it is a Cloudflare Pages project. Non-interactive runs (CI and coding agents) assume it is not and continue as a static site. When the static files are in the project root, that deploys the root as static assets, and the Pages Functions (the project's API routes) are not deployed.In that case autoconfig now stops with an error explaining that Pages Functions cannot be migrated automatically yet. For Pages Functions it suggests moving the static files into a subdirectory and deploying with
wrangler pages deploy, or migrating the Functions to a Worker; for afunctionsdirectory that is not Pages Functions, it suggests moving the static files into a subdirectory or adding a configuration file. Projects whose static files are already in a subdirectory, projects detected as Pages or with a detected framework, and interactive runs where the user answers the prompt are unaffected.#16367
b4653b4Thanks @MattieTK! - Write a protective.assetsignorewhen autoconfig uses the project root as the static assets directoryAutoconfig is meant to write an
.assetsignorewhen the project root itself is the assets directory, so that local files are not uploaded as public assets. The check compared the detected output directory, which is relative ("."), with the absolute project path, so it never matched and no.assetsignorewas written. A static project with anindex.htmlat its root (for example afterwrangler setupor a zero-configwrangler deploy) then uploaded files such as.env,.dev.vars,.gitandnode_modulesas public assets.The check now resolves the assets directory that the generated configuration uses and compares it with the project root, so frameworks that set their own build output directory (such as Nuxt or SvelteKit) do not get an unused root
.assetsignore. The generated.assetsignorealso covers what a Cloudflare Pages upload skips, alongside the existing.wrangler,.dev.vars*and.env*entries:/_worker.js,/_routes.jsonand/functionsat the root (so nested paths such asblog/functions/index.htmlare still uploaded),node_modules,.gitand.DS_Storeat any depth, and.npmrc. If an existing.assetsignoreonly lists a narrower pattern such as.env,.env*is added so that files like.env.productionare skipped too. When the project root of an assets-only project contains a Pagesfunctionsdirectory or_worker.js, autoconfig now warns that it will not be deployed, since it is excluded from the assets and not run as server code.#16532
25802bcThanks @simonha9! - Fail the experimentalwrangler d1 insightscommand with an actionable error when the GraphQL Analytics API rejects the requestPreviously the command printed an empty
[]. Rate limit errors now say how long to wait before retrying, and authorization errors name the "Account Analytics: Read" permission the API token needs.#16013
8b64becThanks @swalker326! - Fix Durable Object self-references in tests and container validationDurable Object bindings that explicitly name the Worker itself now resolve to the test runner in
@cloudflare/vitest-plugin, for bothcloudflare.config.tsand Wrangler configuration files. Named Wrangler environments use their effective Worker name, keeping bindings to the base Worker external. Container validation also accepts these self-references, using the effective deployment name to distinguish local and external bindings.Explicit binding targets remain intact during configuration conversion, so deploying with
--nameor a CI name override preserves the intended Durable Object target.Updated dependencies [
15fbaed,d8899ac]:v4.155.0Compare Source
Minor Changes
#16536
a95d647Thanks @WalshyDev! - Support remote Analytics Engine bindings in local developmentSetting
remote: trueon an Analytics Engine dataset now sendswriteDataPoint()calls fromwrangler devand the Vite plugin to the real dataset. Without it, writes are still dropped locally.{ "analytics_engine_datasets": [ { "binding": "EVENTS", "dataset": "my-dataset", "remote": true } ] }Patch Changes
#16526
dba0e81Thanks @petebacondarwin! - Render terminal control characters as visible text in tail outputPretty tail and remote-preview output now escape control characters in log strings, exceptions and event metadata. Unicode, tabs and multiline logs remain readable, and JSON output keeps the original structured values.
#16489
fc57bc0Thanks @akshitsinha! - Keep Flagship flag metadata when updating flagswrangler flagship flagscommands that update an existing flag, such asenable,set,rollout,split, andrules, no longer clear the flag's metadata.wrangler flagship flags pullnow copies metadata into the local flag store.#16521
ec6edddThanks @petebacondarwin! - Validate.assetsignoreencoding before building asset manifestsAsset uploads and local development now stop with an actionable user error when
.assetsignoreis not valid UTF-8 or contains null characters, instead of silently losing its patterns. This also applies to standalone Miniflare and the Wrangler, Vite and Vitest development integrations. Save the file as UTF-8 to continue; UTF-8 files with a byte order mark and intentionally empty files remain supported.Updated dependencies [
a95d647,c7a3373,c7a3373,c7a3373]:v4.154.0Compare Source
Minor Changes
#16494
0968b08Thanks @petebacondarwin! - Enable Miniflare's development registry by default and centralize path resolutionIn Miniflare v5 beta, resolve the registry from
CLOUDFLARE_DEV_REGISTRY_PATH, then theunsafeDevRegistryPathconstructor option, then<Cloudflare config directory>/dev-registry/v5. The default is independent of legacy Wrangler directories and is scoped to the Miniflare major version. The Vite v2 beta plugin follows this new default, while current Wrangler andgetPlatformProxy()retain Wrangler's legacy default for compatibility with existing Wrangler sessions. Vite v2 and Wrangler therefore require the sameCLOUDFLARE_DEV_REGISTRY_PATHto discover each other; set it for both processes when mixing these tools.Add
enableDevRegistry: falseto disable registration and discovery explicitly. Shared storage now uses the resolved default without requiring an explicit path. As before, shared storage requires an enabled registry to elect a storage owner, so combiningunsafeEnableSharedStorage: truewithenableDevRegistry: falseis rejected. Miniflare no longer readsMINIFLARE_REGISTRY_PATH; useCLOUDFLARE_DEV_REGISTRY_PATHinstead. ExposeresolveDevRegistryPath()for integrations that also read registry files. Wrangler uses the effective path for its runtime configuration, initial bindings display, and Flagship active-session check, so the canonical override cannot bypass that check. An explicitly disabled Wrangler registry remains disabled.Patch Changes
#16499
f3c13b3Thanks @dinasaur404! - Preserve binding error codes and names in local developmentErrors from remote bindings and from Node.js binding proxies (
getPlatformProxy()andMiniflare#getBindings()) now keep their machine-readable properties, such as Artifacts'codeandnumericCode. Previously these properties were dropped and the error name was folded into the message (for example"ArtifactsError: Repository not found"), so code could only branch on error text during local development.Node.js callers also keep custom error names such as
ArtifactsError. Errors from remote bindings received inside a Worker keep their properties but are still namedError.Updated dependencies [
0968b08,f3c13b3]:v4.153.0Minor Changes
#14865
c0e915fThanks @TheSaiEaranti! - Add an--infer-origin-from-routesflag towrangler devWhen a config has
routes, local dev infers the origin from the first route, so the Worker seesrequest.url, theHostheader, and anyOriginheader rewritten to the route's host even though the client connected tolocalhost. That silently breaks Host/Origin-sensitive logic — for example a CORS check allowlistinghttp://localhost:*receiveshttp://<route-host>instead and rejects the request only in local dev.The inference is intentional and remains the default. Passing
--infer-origin-from-routes=falsenow opts out, preserving the real local origin without removingroutesfrom the config. An explicitly configured--host,--local-upstream, ordev.hostcontinues to take precedence either way. The flag only affects local development: in remote mode the route host still determines the preview session as before.#15955
23ef63aThanks @ericclemmons! - Expand dotenv variable references in--secrets-fileinputDotenv files supplied through
--secrets-filetodeploy,versions upload, andpreviewnow expand$VARand${VAR}references using process values and earlier file values. Process environment values override matching file keys, including explicitly empty values. Treat dotenv secrets files as trusted input: they can read and upload any process environment value, such as a CI credential referenced byX=${GITHUB_TOKEN}. In CI, use secrets files whose contents untrusted contributors cannot modify.This changes how existing dotenv secrets files are interpreted: an unset reference becomes an empty string, so
PASSWORD=pa$wordbecomespawhenwordis unset. Escape literal dollar signs with a backslash (PASSWORD=pa\$word), or use a JSON secrets file to preserve values exactly. JSON input and bulk-secret commands, including piped stdin, retain their existing literal parsing.Patch Changes
#16403
5f82a56Thanks @dependabot! - UpdateDEFAULT_COMPAT_DATEto 2026-10-22Use the bundled workerd release's compatibility date by default when scaffolding new projects or when no compatibility date is configured.
#16437
e651d7cThanks @dependabot! - UpdateDEFAULT_COMPAT_DATEto 2026-10-23Use the bundled workerd release's compatibility date by default when scaffolding new projects or when no compatibility date is configured.
#16403
5f82a56Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#16437
e651d7cThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#16476
8a30d8eThanks @tannerlinsley! - Update Undici to 7.30.1 to prevent a malformed HTTP response from crashing development toolsThe updated shared dependency rejects excessive content encodings without leaving an unhandled stream error when the server closes the connection early. This fixes GHSA-xjj6-f33q-929c and keeps the matching Undici types on the same version.
#16485
b7e762dThanks @Cherry! - Fix the Windows keyring install when the config path contains a spaceOn Windows,
wrangler login --use-keyringcould not set up keyring storage when the configuration path contained a space, such as aC:\Users\John Smithprofile, so credentials fell back to the plaintext file. Keyring setup now works for those paths and credentials are stored encrypted.#16405
c709bffThanks @ondraulehla! - Fixkv key listreturning only the first 1000 keys in local modeListing a local namespace with more than 1000 keys stopped after the first 1000 without any warning, so the output looked complete when it wasn't.
kv key listnow returns every key in local mode, with or without--prefix.#16490
bcd618dThanks @petebacondarwin! - Update Zod to 4.6.6 to address GHSA-mrhx-c7xc-m3w5The updated shared dependency fixes excessive memory consumption when validating oversized collections. This updates both the published Zod dependencies and the copies bundled into development tools and Workers.
Updated dependencies [
9e05ade,5f82a56,e651d7c,5f82a56,e651d7c,8a30d8e,bcd618d]:v4.152.0Minor Changes
#14900
08f22d3Thanks @mack-erel! - Support remote Hyperdrive bindings in local development{ "hyperdrive": [ { "binding": "HYPERDRIVE", "id": "<your-hyperdrive-id>", "remote": true } ] }#16357
182d6deThanks @Naapperas! - Add ajurisdictionsetting to WorkflowsA Workflow defined by the Worker can now set the jurisdiction that its instances run and store their data in, on either a
workflowsbinding or aworkflowexport:{ "workflows": [ { "binding": "MY_WORKFLOW", "name": "my-workflow", "class_name": "MyWorkflow", "jurisdiction": "eu" } ] }The accepted values are
eu,fedramp, andus.wrangler deployandwrangler triggers deploysend the jurisdiction when they create or update the Workflow. A Workflow's jurisdiction is set when it is created and cannot be changed afterwards, sowrangler deployandwrangler versions uploadstop before uploading when an existing Workflow has a different jurisdiction from the configured one. Leavingjurisdictionout keeps the Workflow's existing jurisdiction.@cloudflare/configadds the setting toexports.workflow(),cf migratecarries it over, andwrangler workflows describeprints it. Local development ignores it.Patch Changes
#16388
80a9f96Thanks @DevVettel! - Printwrangler auth token --jsonoutput regardless ofWRANGLER_LOGPreviously the JSON was written through the normal log channel, so setting
WRANGLER_LOGtowarn,errorornonemade the command exit successfully with empty stdout. Tools that parse this output, such as the OpenNext Cloudflare adapter in CI, then failed to find any credentials. The JSON is now always printed, like other--jsoncommands.#16361
2878645Thanks @GrosserNL! - Report the R2 bucket location returned by the API when creating a bucketwrangler r2 bucket create --locationprinted the requested location hint even when R2 ignored it. Recreating a deleted bucket name keeps the original location, so the success message could claim a placement the bucket does not have. The command now uses the location from the create response: it mentions the hint only when that location matches, and otherwise reports the location R2 actually applied.Updated dependencies [
08f22d3,a4eb57d]:v4.151.3Compare Source
Patch Changes
#15611
4508172Thanks @taylorlee! - Allowwrangler devto start module Workers without a default exportPreviously,
wrangler devfailed to start module Workers that exported only named entrypoints, such as RPC services, unless an unused default export was added. These Workers now start normally in local development without that workaround.#16370
61fc739Thanks @WalshyDev! - Fetch the remote config diff from the configured compliance regionWhen a Worker was last deployed from the dashboard,
wrangler deployandwrangler versions uploaddownload its remote configuration to compare with the local one. These requests ignored thecompliance_regionfield in the Wrangler configuration file and only honoured theCLOUDFLARE_COMPLIANCE_REGIONenvironment variable. A FedRAMP High Worker configured through the config file would send them toapi.cloudflare.cominstead ofapi.fed.cloudflare.com, and the deploy would fail with authentication errors. They now use the same compliance region as the rest of the deploy.#15846
a88cac4Thanks @oddharsh! - Fail with an error instead of hanging when local dev requests can't work under BunBun's
fetch()ignores the undicidispatcherthat Miniflare routes requests through (oven-sh/bun#39247). Under Bun,createTestHarness()'sserver.fetch()andserver.getWorker()'sfetch(),email()andscheduled()now throw aUserError, requests to the dev server URL get a 503 naming the cause, and starting remote bindings throws aUserError. Each of these used to hang with no error.server.getWorker().getEnv()andgetExport()keep working under Bun.#16359
262021dThanks @tw4! - Stop--strictdeploys and version uploads from aborting when the API omits optional binding fieldsPreviously,
wrangler deploy --strictandwrangler versions upload --strictcould report a destructive change for an unchanged configuration, for example an R2 bucket in the default jurisdiction, because a field the API left out was compared as removed. Missing and unset optional fields are now treated as equal, so these commands proceed when the local configuration matches the deployed Worker.Updated dependencies [
3464abc]:v4.151.2Compare Source
Patch Changes
#16307
37ab91cThanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
#16352
0ae7926Thanks @dependabot! - Update dependencies of "miniflare", "wrangler"The following dependency versions have been updated:
Updated dependencies [
37ab91c,0ae7926]:v4.151.1Compare Source
Patch Changes
#15541
e13d5ccThanks @mack-erel! - Keep remote dev sessions alive through transient network failureswrangler dev --remoteandgetPlatformProxy()refresh their preview token before it expires, but a single failed refresh — for example while the network was briefly down — stopped refreshing for good, leaving the session broken until restart. A failed refresh now retries every minute until it succeeds. Rebuilds also no longer push the refresh past the session's expiry.#16284
42c6912Thanks @karloper! - Fixwrangler rollbackreporting success after the changed secrets confirmation is declinedPreviously, declining the "The following secrets have changed…" confirmation printed "Aborting rollback..." and then also printed a success message and the target version as the "Current Version ID", even though no deployment was made and the original version was still live. Wrangler now stops after aborting, so the output matches what is actually deployed.
#13742
4a5377fThanks @edmundhung! - Hide thewrangler devhotkey bar when Turborepo does not forward inputUpdated dependencies [
e1d1b77]:v4.151.0Compare Source
Minor Changes
#16245
d6b1c82Thanks @WalshyDev! - Include source maps by default inwrangler build --experimental-cf-build-outputBuild Output now matches
wrangler deployandwrangler versions upload, which upload source maps by default, so Workers built for tools likecfget stack traces that point at the original source. Source maps that can't be resolved are skipped rather than failing the build. Setupload_source_maps = falseto opt out.Patch Changes
#16220
97b2fb1Thanks @FlorentCollin! - Support local D1 queries through the experimentald1_binding_jsrpccompatibility flagLocal D1 bindings now implement the RPC query backend used by
D1Database.query()and prepared-statement methods when the flag is enabled. Queries reuse local SQLite execution, including transactional batches, execution metadata, and session bookmarks, while bindings without the flag continue to use HTTP. Update the bundled workerd runtime to1.20261012.1and align the default compatibility date with that release.Updated dependencies [
f360829,97b2fb1,97b2fb1,acd2822]:Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.