This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@cloudflare/workers-types](https://redirect.github.com/cloudflare/workerd) | [`5.20260831.1` → `5.20260907.1`](https://renovatebot.com/diffs/npm/@cloudflare%2fworkers-types/5.20260831.1/5.20260907.1) |  |  | | [@types/react-dom](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-dom) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom)) | [`19.2.5` → `19.2.7`](https://renovatebot.com/diffs/npm/@types%2freact-dom/19.2.5/19.2.7) |  |  | | [oxlint](https://oxc.rs/docs/guide/usage/linter) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`1.80.0` → `1.81.0`](https://renovatebot.com/diffs/npm/oxlint/1.80.0/1.81.0) |  |  | | [wrangler](https://redirect.github.com/cloudflare/workers-sdk) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler)) | [`4.127.1` → `4.129.0`](https://renovatebot.com/diffs/npm/wrangler/4.127.1/4.129.0) |  |  | --- ### Release Notes <details> <summary>cloudflare/workerd (@​cloudflare/workers-types)</summary> ### [`v5.20260907.1`](https://redirect.github.com/cloudflare/workerd/compare/23263780e6ba38c7f230497a6abc1a4ff72124fb...beb7bd5c370d898e5ea81947aaa80ba5f48cd47e) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/23263780e6ba38c7f230497a6abc1a4ff72124fb...beb7bd5c370d898e5ea81947aaa80ba5f48cd47e) ### [`v5.20260906.1`](https://redirect.github.com/cloudflare/workerd/compare/dd8133e9b9656fb39f1434247a80aa7a249ee204...23263780e6ba38c7f230497a6abc1a4ff72124fb) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/dd8133e9b9656fb39f1434247a80aa7a249ee204...23263780e6ba38c7f230497a6abc1a4ff72124fb) ### [`v5.20260905.1`](https://redirect.github.com/cloudflare/workerd/compare/8352890424bcb8634cca60c1b41034431acd7331...dd8133e9b9656fb39f1434247a80aa7a249ee204) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/8352890424bcb8634cca60c1b41034431acd7331...dd8133e9b9656fb39f1434247a80aa7a249ee204) ### [`v5.20260904.1`](https://redirect.github.com/cloudflare/workerd/compare/b73ce3ae105c35bafaaad864095079524573a465...8352890424bcb8634cca60c1b41034431acd7331) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/b73ce3ae105c35bafaaad864095079524573a465...8352890424bcb8634cca60c1b41034431acd7331) ### [`v5.20260903.1`](https://redirect.github.com/cloudflare/workerd/compare/9f3941ff63c8fde2bb60e93e8e340219c8607588...b73ce3ae105c35bafaaad864095079524573a465) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/9f3941ff63c8fde2bb60e93e8e340219c8607588...b73ce3ae105c35bafaaad864095079524573a465) ### [`v5.20260902.1`](https://redirect.github.com/cloudflare/workerd/compare/1eab471843f52c63c98fb3ee57c135fc1cd5f27a...9f3941ff63c8fde2bb60e93e8e340219c8607588) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/1eab471843f52c63c98fb3ee57c135fc1cd5f27a...9f3941ff63c8fde2bb60e93e8e340219c8607588) ### [`v5.20260901.1`](https://redirect.github.com/cloudflare/workerd/compare/8865ba5020d8aad77a961c4cd36f79a9d4d70232...1eab471843f52c63c98fb3ee57c135fc1cd5f27a) [Compare Source](https://redirect.github.com/cloudflare/workerd/compare/8865ba5020d8aad77a961c4cd36f79a9d4d70232...1eab471843f52c63c98fb3ee57c135fc1cd5f27a) </details> <details> <summary>oxc-project/oxc (oxlint)</summary> ### [`v1.81.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxlint/CHANGELOG.md#1810---2026-08-31) [Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v1.80.0...oxlint_v1.81.0) ##### 📚 Documentation - [`d5be037`](https://redirect.github.com/oxc-project/oxc/commit/d5be037) linter/typescript/switch-exhaustiveness-check: Clarify default case comment pattern ([#​26100](https://redirect.github.com/oxc-project/oxc/issues/26100)) (camc314) </details> <details> <summary>cloudflare/workers-sdk (wrangler)</summary> ### [`v4.129.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#41290) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@4.128.0...wrangler@4.129.0) ##### Minor Changes - [#​15460](https://redirect.github.com/cloudflare/workers-sdk/pull/15460) [`93d72a5`](https://redirect.github.com/cloudflare/workers-sdk/commit/93d72a5772cce74d9f5657d6989efe89cc10dfbb) Thanks [@​QnJ1c2kNCg](https://redirect.github.com/QnJ1c2kNCg)! - Support gzip compression for JSON Pipelines sinks Pipelines is in open beta. `wrangler pipelines sinks create` and the interactive setup flow now pass the selected JSON compression to the Pipelines API. JSON sinks accept `uncompressed` or `gzip`, while Parquet retains its existing compression options and `zstd` default. - [#​15358](https://redirect.github.com/cloudflare/workers-sdk/pull/15358) [`d2d8eea`](https://redirect.github.com/cloudflare/workers-sdk/commit/d2d8eeaa4c49479c05b351471f870abab7d2c032) Thanks [@​pombosilva](https://redirect.github.com/pombosilva)! - Add a `--json` flag to the `wrangler workflows` commands Every `wrangler workflows` command now accepts `--json`, which emits the raw API payload instead of the human-readable rendering. The formatted output remains the default, so existing usage is unaffected: `wrangler workflows instances list my-workflow --json` The JSON output carries raw values rather than a serialisation of the formatted view: ISO timestamps instead of locale-formatted dates, plain status strings instead of emojified labels, and no presentation-only derived fields. ##### Patch Changes - [#​15469](https://redirect.github.com/cloudflare/workers-sdk/pull/15469) [`d40a634`](https://redirect.github.com/cloudflare/workers-sdk/commit/d40a634f970971bbcba01a8ac201fd3526b3e5fe) Thanks [@​dependabot](https://redirect.github.com/apps/dependabot)! - Update dependencies of "miniflare", "wrangler" The following dependency versions have been updated: | Dependency | From | To | | ------------------------------------------------------------------------ | ------------- | ------------- | | [@​cloudflare/workers-types](https://redirect.github.com/cloudflare/workers-types) | ^5.20260831.1 | ^5.20260902.1 | | workerd | 1.20260831.1 | 1.20260902.1 | - [#​15481](https://redirect.github.com/cloudflare/workers-sdk/pull/15481) [`7c1b2a6`](https://redirect.github.com/cloudflare/workers-sdk/commit/7c1b2a600a02a8978d97786af4c7098216c31c4d) Thanks [@​dependabot](https://redirect.github.com/apps/dependabot)! - Update dependencies of "miniflare", "wrangler" The following dependency versions have been updated: | Dependency | From | To | | ------------------------------------------------------------------------ | ------------- | ------------- | | [@​cloudflare/workers-types](https://redirect.github.com/cloudflare/workers-types) | ^5.20260902.1 | ^5.20260903.1 | | workerd | 1.20260902.1 | 1.20260903.1 | - [#​15472](https://redirect.github.com/cloudflare/workers-sdk/pull/15472) [`f6fb347`](https://redirect.github.com/cloudflare/workers-sdk/commit/f6fb347e0cbaa20479468bffa336fe371b7f24cb) Thanks [@​emily-shen](https://redirect.github.com/emily-shen)! - Tolerate missing permissions during `wrangler delete` cleanup checks `wrangler delete` now warns and continues when it cannot inspect Worker dependencies or clean up legacy Workers Sites KV namespaces because of missing permissions. The Worker delete request itself still fails normally if the token cannot delete the Worker. - [#​15472](https://redirect.github.com/cloudflare/workers-sdk/pull/15472) [`f6fb347`](https://redirect.github.com/cloudflare/workers-sdk/commit/f6fb347e0cbaa20479468bffa336fe371b7f24cb) Thanks [@​emily-shen](https://redirect.github.com/emily-shen)! - Tolerate missing resource permissions during resource provisioning When Wrangler cannot check whether a bound resource exists because the API returns a 403, it now skips automatic provisioning for that resource type and continues the deploy. The deploy may still fail later if the resource is missing. - [#​15476](https://redirect.github.com/cloudflare/workers-sdk/pull/15476) [`dc24057`](https://redirect.github.com/cloudflare/workers-sdk/commit/dc24057e13580a3cd3e3b917b8659ad5c1e85e50) Thanks [@​christhorwarth](https://redirect.github.com/christhorwarth)! - Fix remote development with static assets for API tokens using granular Worker permissions Wrangler now creates Workers.dev preview sessions through the Worker-scoped endpoint and derives the preview hostname from the session response. This avoids requiring account-level Workers subdomain access. - Updated dependencies \[[`00a9f2f`](https://redirect.github.com/cloudflare/workers-sdk/commit/00a9f2f87bb1319ed96b41fe5d9be5503445d2c0), [`1dba24a`](https://redirect.github.com/cloudflare/workers-sdk/commit/1dba24a1ecf770a98b36c218cb77e26c7701be49), [`d40a634`](https://redirect.github.com/cloudflare/workers-sdk/commit/d40a634f970971bbcba01a8ac201fd3526b3e5fe), [`7c1b2a6`](https://redirect.github.com/cloudflare/workers-sdk/commit/7c1b2a600a02a8978d97786af4c7098216c31c4d)]: - <miniflare@5.20260903.0-alpha> ### [`v4.128.0`](https://redirect.github.com/cloudflare/workers-sdk/blob/HEAD/packages/wrangler/CHANGELOG.md#41280) [Compare Source](https://redirect.github.com/cloudflare/workers-sdk/compare/wrangler@4.127.1...wrangler@4.128.0) ##### Minor Changes - [#​15454](https://redirect.github.com/cloudflare/workers-sdk/pull/15454) [`dbbb795`](https://redirect.github.com/cloudflare/workers-sdk/commit/dbbb795c47ff663857b605b484c63730e1e3ff45) Thanks [@​jamesopstad](https://redirect.github.com/jamesopstad)! - Move binding utilities into `@cloudflare/workers-utils` Binding conversion, printing, and local-development validation are now exported from `@cloudflare/workers-utils` so they can be shared by Wrangler, the Cloudflare Vite plugin, and other consumers. The corresponding exports have been removed from `@cloudflare/deploy-helpers`. Consumers should import them directly from `@cloudflare/workers-utils` instead. Wrangler's `unstable_printBindings` API now accepts the bindings and an options object instead of five positional parameters. - [#​15353](https://redirect.github.com/cloudflare/workers-sdk/pull/15353) [`87a7acf`](https://redirect.github.com/cloudflare/workers-sdk/commit/87a7acf197629f5bf16bb38a2e411dc6c21339e0) Thanks [@​pombosilva](https://redirect.github.com/pombosilva)! - Add `--date-start` and `--date-end` filters to `wrangler workflows instances list` You can now narrow an instance listing to a creation-time window: `wrangler workflows instances list my-workflow --date-start 2026-01-01 --date-end 2026-01-31` Either flag can be used independently. Both accept an ISO 8601 date or timestamp and are normalised to UTC before being sent, so a date-only value such as `2026-01-01` works as well as a full `2026-01-01T13:00:00Z`. The bounds are inclusive and compose with the existing `--status` filter. - [#​15379](https://redirect.github.com/cloudflare/workers-sdk/pull/15379) [`ea28cc3`](https://redirect.github.com/cloudflare/workers-sdk/commit/ea28cc33e5d39031e9bf512e17f3a57cccbd3f46) Thanks [@​ibbykhazanchi](https://redirect.github.com/ibbykhazanchi)! - Add query string redaction to Workers observability configuration Set `observability.redact_query_string` in `wrangler.json` or `observability.redactQueryString` in the experimental `cloudflare.config.ts` format to remove query strings from request URLs in logs and traces. - [#​14915](https://redirect.github.com/cloudflare/workers-sdk/pull/14915) [`707cb6f`](https://redirect.github.com/cloudflare/workers-sdk/commit/707cb6f22bd8685bce7d1dfa0b53853057200eee) Thanks [@​longlho](https://redirect.github.com/longlho)! - Include exact raw and gzip-compressed Worker bundle sizes in structured `deploy` and `version-upload` output. ##### Patch Changes - [#​15436](https://redirect.github.com/cloudflare/workers-sdk/pull/15436) [`200780f`](https://redirect.github.com/cloudflare/workers-sdk/commit/200780faa81ab5e58bc656e2d21a20fdd3a4b725) Thanks [@​dependabot](https://redirect.github.com/apps/dependabot)! - Update dependencies of "miniflare", "wrangler" The following dependency versions have been updated: | Dependency | From | To | | ------------------------------------------------------------------------ | ------------- | ------------- | | [@​cloudflare/workers-types](https://redirect.github.com/cloudflare/workers-types) | ^5.20260828.1 | ^5.20260831.1 | | workerd | 1.20260828.1 | 1.20260831.1 | - [#​15406](https://redirect.github.com/cloudflare/workers-sdk/pull/15406) [`b3f2628`](https://redirect.github.com/cloudflare/workers-sdk/commit/b3f26289a735279e463fb4802d4a4481cfaaac71) Thanks [@​james-elicx](https://redirect.github.com/james-elicx)! - Reduce the installed bundle sizes of Wrangler and Miniflare Wrangler now resolves bundled workspace dependencies from source during monorepo builds so unused exports can be removed. Miniflare, its shared CLI and container dependencies now use granular `@cloudflare/workers-utils` entry points instead of loading the package barrel, reducing the raw Wrangler and Miniflare artifacts by 6.16 MiB (31.4%) and 1.06 MiB (22.9%) respectively without changing runtime behavior or installed dependencies. - [#​15398](https://redirect.github.com/cloudflare/workers-sdk/pull/15398) [`1809c5e`](https://redirect.github.com/cloudflare/workers-sdk/commit/1809c5edadfd4a93e6733dab77ca67305c8d6c97) Thanks [@​james-elicx](https://redirect.github.com/james-elicx)! - Reduce Wrangler's published package size Stop including the unused build metafile in the npm package, reducing its unpacked size by approximately 3.1 MiB. - [#​15382](https://redirect.github.com/cloudflare/workers-sdk/pull/15382) [`b3fb2bf`](https://redirect.github.com/cloudflare/workers-sdk/commit/b3fb2bf0d9e43b126738a63ba168ba1e2807e7e8) Thanks [@​Om-singhaI](https://redirect.github.com/Om-singhaI)! - Skip the skills install status lookup when telemetry is disabled Telemetry events include a `currentAgentSkillsInstalled` property, and computing it can query the GitHub API. The lookup used to start before the telemetry permission was checked, so users who opted out via `WRANGLER_SEND_METRICS`, `DO_NOT_TRACK`, or `send_metrics` in their Wrangler config still triggered network requests on behalf of telemetry. The dispatcher now checks the permission first and only performs the lookup when telemetry is enabled. - Updated dependencies \[[`200780f`](https://redirect.github.com/cloudflare/workers-sdk/commit/200780faa81ab5e58bc656e2d21a20fdd3a4b725), [`b3f2628`](https://redirect.github.com/cloudflare/workers-sdk/commit/b3f26289a735279e463fb4802d4a4481cfaaac71), [`87a7acf`](https://redirect.github.com/cloudflare/workers-sdk/commit/87a7acf197629f5bf16bb38a2e411dc6c21339e0)]: - <miniflare@5.20260831.0-alpha> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 4am on Wednesday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/astral-sh/ruff). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMzQuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjEzNC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
playground
In-browser playground for Ruff. Available https://play.ruff.rs/.
Getting started
Use npm 11.10.0 or newer so that the dependency cooldown in .npmrc is enforced.
Install the NPM dependencies with npm ci --ignore-scripts, and run the development server with
npm start --workspace ruff-playground or npm start --workspace ty-playground.
You may need to restart the server after making changes to Ruff or ty to re-build the WASM
module.
To run the datastore, which is based
on Workers KV,
run npm ci --ignore-scripts and npm start -- --local from the ./playground/api directory
to use the locked Wrangler CLI.
The datastore is only required to generate shareable URLs for code snippets. The development datastore does not
require Cloudflare authentication or login, but in turn only persists data locally.
Architecture
The playground is implemented as a single-page React application powered by Vite, with the editor experience itself powered by Monaco.
The playground stores state in localStorage, but supports persisting code snippets to
a persistent datastore based
on Workers KV
and exposed via
a Cloudflare Worker.
The playground design is originally based on Tailwind Play, with additional inspiration from the Biome Playground.
Known issues
Stack overflows
If you see stack overflows in the playground, build the WASM module in release mode:
npm run --workspace ty-playground build:wasm.