fix(deps): update minor+patch #7

Merged
2tap2b merged 1 commit from renovate/minor+patch into main 2026-11-04 21:26:37 +00:00
Owner

This PR contains the following updates:

Package Change Age Confidence
@astrojs/markdown-satteri (source) ^0.4.5 → ^0.4.6 age confidence
@astrojs/mdx (source) ^8.1.1 → ^8.1.2 age confidence
@cloudflare/workerd-linux-64 ^1.20261027.1 → ^1.20261104.1 age confidence
@emdash-cms/sandbox-workerd (source) ^0.9.5 → ^0.9.6 age confidence
@iconify-json/tabler ^1.2.42 → ^1.2.43 age confidence
astro (source) ^7.4.2 → ^7.4.5 age confidence
emdash (source) ^1.3.1 → ^1.4.0 age confidence
workerd ^1.20261027.1 → ^1.20261104.1 age confidence

Release Notes

withastro/astro (@​astrojs/markdown-satteri)

v0.4.6

Compare Source

Patch Changes
  • edfbf4a Thanks @​matthewp! - Fixes Prism code blocks for languages Prism doesn't support, such as vue or svelte. Their code is now displayed as plain text instead of being rendered as HTML. Also correctly escapes the code block language in the generated class and data-language attributes.
  • Updated dependencies [edfbf4a]:
withastro/astro (@​astrojs/mdx)

v8.1.2

Compare Source

Patch Changes
cloudflare/workerd (@​cloudflare/workerd-linux-64)

v1.20261104.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261103.1...v1.20261104.1

v1.20261103.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261102.1...v1.20261103.1

v1.20261102.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261101.1...v1.20261102.1

v1.20261101.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261031.1...v1.20261101.1

v1.20261031.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261030.1...v1.20261031.1

v1.20261030.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261029.1...v1.20261030.1

v1.20261029.1

Compare Source

What's Changed
New Contributors

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261028.1...v1.20261029.1

v1.20261028.1

Compare Source

What's Changed

Full Changelog: https://github.com/cloudflare/workerd/compare/v1.20261027.1...v1.20261028.1

emdash-cms/emdash (@​emdash-cms/sandbox-workerd)

v0.9.6

Compare Source

Patch Changes
withastro/astro (astro)

v7.4.5

Compare Source

Patch Changes
  • #​18558 fac3c50 Thanks @​astro-factory! - Fixes astro dev status and other background server commands deleting the lock file of a running dev or preview server when run from a sandbox or as another user that is not permitted to signal its process

  • #​18559 10dae2f Thanks @​astro-factory! - Fixes import.meta.env values containing $ sequences (such as $$ or $&) being corrupted in astro build when server code reads the import.meta.env object directly, for example with const { MY_SECRET } = import.meta.env

  • #​18544 e3bec3d Thanks @​skezo! - Fixes request paths with invalid percent-encoding (e.g. /%C0%AF or a bare %) being logged as an Invalid URL encoding error and routed with the undecoded path. These requests now return a 400, the same as a path that is encoded too many times.

  • #​18520 e023aba Thanks @​matthewp! - Makes rendering of string tag names stricter and consistent across .astro dynamic tags, JSX, and MDX. Only the leading part of the string that is a valid element name is rendered, so characters such as / or = can no longer change the generated markup. A string that does not start with a valid element name (for example '!--' or '') now throws an error instead of producing invalid HTML.

v7.4.4

Compare Source

Patch Changes

v7.4.3

Compare Source

Patch Changes
  • #​18488 e4e25fa Thanks @​umeraamir69! - CSP no longer hashes empty children on external stylesheets and scripts, which was inserting the SHA-256 of the empty string into script-src and style-src.

  • #​18500 e5a3a1b Thanks @​astro-factory! - Fixes <Image> and <Picture> emitting duplicate srcset candidates when densities contains equivalent values such as 1 and '1x'

  • #​18517 c3185b7 Thanks @​okxint! - Fix unhandled AbortError rejection when ClientRouter skips a pending view transition

  • #​18497 c712113 Thanks @​astro-factory! - Fixes an uncaught TypeError in the browser when a server:defer island request fails due to a network error. The fallback content is kept, as it is for non-200 responses.

  • #​18525 d0240b9 Thanks @​astro-factory! - Fixes a DEP0190 deprecation warning printed by astro info on Node.js 24 and later

  • #​18522 776b9a6 Thanks @​astro-factory! - Fixes memoryCache() serving an empty body for cached pages that return an empty 404 or 500 response. These responses now render the 404 or 500 error page on every request.

  • #​18511 d060ff9 Thanks @​astro-factory! - Fixes transition:name styles missing in dev when the element is inside a component that is only rendered through another component with no styles or scripts

  • #​18494 5fe699c Thanks @​astro-factory! - Fixes the astro CLI refusing to run on StackBlitz by allowing Node.js >=22.22.0 inside WebContainers, whose Node.js version users cannot change

  • #​18506 bf43a60 Thanks @​astro-factory! - Fixes <ClientRouter /> animating scroll restoration on back/forward navigation when scroll-behavior: smooth is set. Saved scroll positions are now restored instantly, matching the browser's native behavior.

  • #​18476 8ea79a2 Thanks @​astro-factory! - Fixes a DataCloneError crash when building pages that render SVG imports with <Image /> or getImage() while experimental.parallelPrerender is enabled.

  • #​18504 6dbd737 Thanks @​astro-factory! - Fixes <Picture> emitting a duplicate 1x candidate in <source> srcset when densities includes 1

  • #​18524 7524889 Thanks @​astro-factory! - Fixes type errors reported in Astro's built-in <Image />, <Picture />, <Code />, <Debug /> and <ClientRouter /> components when type-checking a project that extends astro/tsconfigs/strictest with tsc and @astrojs/ts-content-mapper

  • #​18493 3773941 Thanks @​astro-factory! - Fixes scoped styles of unused Astro components being included in the build when those components are re-exported from a barrel file

  • #​18512 1151b9e Thanks @​jp-knj! - Fixes CSP hashes added with Astro.csp from components rendered inside <body> being left out of the CSP <meta> element in static builds, including MDX pages

  • Updated dependencies [6cf3423, edfbf4a]:

emdash-cms/emdash (emdash)

v1.4.0

Compare Source

Minor Changes
  • #​3856 064fbbf Thanks @​swissky! - Adds admin.hiddenNavItems to hide built-in admin areas a site doesn't use. Set it to any of calendar, media, comments, menus, redirects, widgets, sections, bylines, and import, for example admin: { hiddenNavItems: ["comments", "redirects"] }. Hidden areas disappear from the sidebar and the command palette. On the dashboard, listing media hides the Upload Media button, and listing calendar keeps the Scheduled count but removes its link to the calendar. The pages and API routes stay reachable for users with the required role. An unknown name fails the build.
Patch Changes
  • #​4364 75030fc Thanks @​danielmlr! - Fixes translating a menu on Cloudflare D1, which failed for larger menus and left an empty translated menu behind. On D1, translating or deleting a menu and reordering or replacing its items now either save completely or leave the menus unchanged.
What should I do?

If translating a menu failed before, delete the empty translated menu it left behind, then translate the menu again.

  • #​4167 ec973c0 Thanks @​cyface! - Fixes extra database round trips on getEmDashEntry and getEmDashCollection for sites that register byline custom fields or have entries with an author but no explicit byline credit. These reads now resolve bylines from the content query itself and load custom-field values in one batched step, instead of re-reading every entry's credits. On Cloudflare D1, a page that reads a few entries saves two to six sequential queries.

  • #​4287 ceaf9b6 Thanks @​danielmlr! - Fixes expired OAuth tokens and unused login codes from emdash login and MCP clients staying in the database forever. Scheduled cleanup now deletes them after they expire.

  • #​4286 3d29980 Thanks @​danielmlr! - Fixes lost edits on D1, Durable Objects and PostgreSQL when two saves of the same entry, both based on the same version, arrive at once, for example from two MCP clients or from scripts using emdash content update --rev: both reported success, and the first was silently overwritten. The second save now returns 409 CONFLICT, the same response a save based on an outdated version already gets.

  • #​4459 9d9fd82 Thanks @​emdash-autofix! - Fixes POST /_emdash/api/oauth/token returning uppercase INVALID_GRANT for refresh-token and device-code failures. These responses now use the RFC-standard invalid_grant code so OAuth clients can recognize rejected grants and restart authorization.

  • #​4243 3ce9d36 Thanks @​emdashbot! - Fixes Cloudflare-cached pages remaining outdated after content is deleted or unpublished. Pages using EmDash cache hints no longer send an automatic Last-Modified header, so Cloudflare stops answering 304 Not Modified based on an entry timestamp that does not cover related lists or settings changes. This applies to entry, collection, publication-date, and reference-list hints. Sites using an object cache reload those content snapshots once after upgrading so cached validators from earlier versions are not reused.

    Taxonomy definitions and collection-to-taxonomy mappings also revalidate in the background after 30 seconds, so long-lived server processes pick up changes saved elsewhere without adding a blocking query to each render. A failed refresh retains the last good snapshot.

What should I do?

cacheHint.lastModified is no longer populated automatically. For an entry's displayed modification date, use entry.data.updatedAt instead; it is not a validator for the whole page.

Pages relying on automatic validators also lose Astro's implicit Cache-Control: no-cache header. Set your own browser Cache-Control if you need a fresh check on every visit. If you want conditional requests, supply a custom lastModified hint to Astro.cache.set(). Its timestamp must advance whenever any part of the response changes, including settings, related entries, deletions, and unpublishes.

  • #​4157 8da0792 Thanks @​opariffazman! - Fixes external auth providers, such as Cloudflare Access, writing the session store on every authenticated /_emdash request. EmDash now writes the session only when the signed-in user differs from the stored one, so sites on Cloudflare no longer spend one Workers KV write per request, which could exhaust the Workers Free plan's daily write limit and hit KV's one-write-per-second limit on a key for parallel requests.

  • #​3192 c238da2 Thanks @​bazemoreb! - Names media downloads after the file that was uploaded. The public media file route previously sent Content-Disposition: attachment with no filename, so browsers fell back to the last path segment of the URL and saved every PDF, DOCX or CSV under its storage key. The route now looks the original filename up by storage key and emits both the quoted ASCII filename and the RFC 5987 filename* form, so non-ASCII names survive.

    Media with no matching database row is served exactly as before, and a failed lookup never fails the download.

  • #​3129 a6f4091 Thanks @​eisenbruch! - Fixes saving an entry turning an empty image or file field ("") into { "provider": "external", "id": "", "src": "" }. A blank image or file field, or a blank image inside a repeater, is now saved as null, the canonical empty value. Entries with no image stop changing on every save after that.

    A required image or file field now returns a validation error for "" instead of saving an empty image. This only affects API, MCP or import clients, because the admin never sends "".

  • #​4296 f197acf Thanks @​danielmlr! - Fixes media usage tracking in collections that have a reference field named title or name, where saving an entry recorded none of the images and files it uses. Saving now records them.

What should I do?

Entries in those collections that were saved before this release can still be missing from Used in after you upgrade. Open Settings → Media usage tracking and wait until it shows Ready. If it shows Needs attention instead, repair each affected collection once:

npx emdash media repair-usage --collection <collection>
  • #​4285 57abb5c Thanks @​danielmlr! - Fixes menus showing dead links to entries that are in the trash or not published. getMenu() leaves those items out. Any item getMenu() leaves out now takes its child items with it, instead of moving them to the top level of the menu. In edit mode, menus still link to unpublished entries. With the object cache enabled, a cached menu now refreshes when an entry or taxonomy term it links to changes.

  • #​4365 e1c4a87 Thanks @​danielmlr! - Fixes creating a child menu item through the menu items API on PostgreSQL. A request with a parentId and no sortOrder failed; the item is now placed after its existing siblings.

  • #​4208 bed3e42 Thanks @​danielmlr! - Fixes content list search, in the admin and through the content list API's q parameter, failing when the collection has a reference field named title or name. The search now leaves out a reference field bound to a relation and matches the entry's other fields.

  • #​4205 4409acb Thanks @​danielmlr! - Fixes entry creation, entry saves and content-list search failing with no such column in a collection that has a reference field marked searchable. Adding such a field to a search-enabled collection failed, and after a seed turned search on, creating or saving any entry in that collection failed. Site search and content-list search now ignore the searchable flag on a reference field bound to a relation.

What should I do?

If creating or saving entries in a collection still fails after upgrading and the server log shows no such column, open the collection under Content Types, untick Search and save, then tick it again and save. This rebuilds the collection's search index.

  • #​4386 53acf71 Thanks @​Stormster! - Fixes entry slugs being generated from a field named title instead of the collection's configured title field. In a collection whose titleField is name and which also has a title field (a person's job title, say), typing in the editor now fills the slug from the name, and entries created through the API without a slug get one from the name too, so two people with the same job title no longer collide with SLUG_CONFLICT. Collections without a titleField keep the previous title, then name, order.

  • #​4394 6be7263 Thanks @​emdash-autofix! - Fixes sandboxed plugin ctx.taxonomies mutations (createTerm(), addEntryTerms(), and removeEntryTerms()), ctx.content.create(), versioned content actions (getVersioned(), publish(), unpublish(), schedule(), unschedule(), getTrashedVersioned(), and restore()), and ctx.comments.setStatus() on Cloudflare when requests run across multiple Worker isolates. Content creation consistently uses runtime validation and hooks and preserves translationOf links instead of falling back to a plain database insert.

    Runner-created invocations without a content-create callback now receive Content creation is not configured rather than a database insert that bypasses runtime behavior. createPluginTestHost() supplies a database-backed callback with content-handler validation so transport-level tests can continue creating content and linked translations without starting the full EmDash runtime. It preserves the transport host's support for data.slug and data.status.

    Await these operation promises before returning from a plugin route or hook. Their RPC connection now lasts only for that invocation; unlike the previous loopback binding, it cannot support work that outlives the invocation.

    Publication after-hooks remain deferred. Same-entry actions attempted while an after-hook is running can return CONTENT_ACTION_REENTRANT; faster callback routing can expose this overlap in tests that assumed hooks had already finished. In runtime-host tests, call await host.waitForDeferredTasks() after an action before inspecting its after-hook effects or starting another action on the same entry. This method waits for queued deferred runtime work, including work those tasks enqueue; it does not run future scheduled tasks or wait for arbitrary unawaited plugin operations.

  • #​4380 9e7cd3d Thanks @​emdash-autofix! - Fixes emdash site import failing with COLLECTION_EXISTS when manually deleted target collections still have media-usage cleanup pending. For these manually deleted collections, import now runs as many cleanup steps as the request budget allows, then imports the collection in the same request if enough budget remains. It waits for active deletion leases or retry delays before reusing a slug. Cancellation during this per-collection cleanup stops before importing the collection. Failed cleanup of a manually deleted collection includes recovery instructions, and collection schema error messages are preserved in status errorDetail.

  • #​4276 a16ab2c Thanks @​emdash-autofix! - Fixes site builds using zustand/traditional or other dependencies that default-import use-sync-external-store shims, which previously failed with a missing default export error.

  • #​4396 9201138 Thanks @​emdash-autofix! - Fixes keyboard navigation and entrance animations in the admin and visual editor's floating toolbars with Tiptap 3.20.3 and later. Escape closes image alt-text editing, Shift+Tab returns to the caption, and arrow keys move between toolbar controls again.

  • #​3279 d1e25e0 Thanks @​eisenbruch! - Fixes the visual editing toolbar's "Open in admin" so each entry gets its own admin window. The window name was a single constant shared by the whole site, so opening the admin for one entry navigated away from another already open in that tab. A repeat click on the same entry still reuses that entry's window.

  • #​3596 6c5d878 Thanks @​swissky! - Caches widget areas in the object cache. With an object cache configured, <WidgetArea>, getWidgetArea(), getWidgetAreaWithCacheHint() and getWidgetAreas() no longer query the database on each page load. Widget changes made in the admin, by seeding or by a site transfer invalidate the cached areas; code that writes the widget tables directly should call the new invalidateWidgetObjectCache() export.

  • #​3890 56cb9da Thanks @​swissky! - Fixes importing WordPress custom post types with a hyphen in their name (such as team-member) through the EmDash Exporter plugin. The import created the team_member collection but then failed every entry with Collection "team-member" does not exist, and custom taxonomies for that post type were not linked to the collection. The review step now shows the collection the import will use and recognizes it on a repeated import, so field type conflicts with it are reported. The wxrSource import source now suggests the same valid collection names, such as team_member for team-member and wp_content for a post type named content.

  • Updated dependencies [6cc69bb, 3fcf437, 064fbbf, f0956f1, 500a45b, 2a62e8a, 5cd334e, b82016d, 0bc006c, d840b08, a1a0174, a6b28a6, e80c1f0, 936a4cb, 936a4cb, 936a4cb, e80c1f0, 190022c, 9e720d6, 2ed2755, 229c64b, d60c43c, dd0bc9e, 4e4b068, 0bc23ad, 7a04c81, 046ec3c, 15557d1, 2e103a4, 245a562, fa46578, 585cd22, e847d4b, e6ee72f, 53acf71, 0709277, 6094ff8, d160cb0, 20a5923, 9201138, 26c4faf, 3ad08dc]:


Configuration

📅 Schedule: (in timezone Europe/Berlin)

  • Branch creation
    • "after 8am and before 6pm on monday"
  • 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 if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@astrojs/markdown-satteri](https://astro.build) ([source](https://github.com/withastro/astro/tree/HEAD/packages/markdown/satteri)) | [`^0.4.5` → `^0.4.6`](https://renovatebot.com/diffs/npm/@astrojs%2fmarkdown-satteri/0.4.5/0.4.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@astrojs%2fmarkdown-satteri/0.4.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@astrojs%2fmarkdown-satteri/0.4.5/0.4.6?slim=true) | | [@astrojs/mdx](https://docs.astro.build/en/guides/integrations-guide/mdx/) ([source](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx)) | [`^8.1.1` → `^8.1.2`](https://renovatebot.com/diffs/npm/@astrojs%2fmdx/8.1.1/8.1.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@astrojs%2fmdx/8.1.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@astrojs%2fmdx/8.1.1/8.1.2?slim=true) | | [@cloudflare/workerd-linux-64](https://github.com/cloudflare/workerd) | [`^1.20261027.1` → `^1.20261104.1`](https://renovatebot.com/diffs/npm/@cloudflare%2fworkerd-linux-64/1.20261027.1/1.20261104.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@cloudflare%2fworkerd-linux-64/1.20261104.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@cloudflare%2fworkerd-linux-64/1.20261027.1/1.20261104.1?slim=true) | | [@emdash-cms/sandbox-workerd](https://github.com/emdash-cms/emdash) ([source](https://github.com/emdash-cms/emdash/tree/HEAD/packages/workerd)) | [`^0.9.5` → `^0.9.6`](https://renovatebot.com/diffs/npm/@emdash-cms%2fsandbox-workerd/0.9.5/0.9.6) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@emdash-cms%2fsandbox-workerd/0.9.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emdash-cms%2fsandbox-workerd/0.9.5/0.9.6?slim=true) | | [@iconify-json/tabler](https://icon-sets.iconify.design/tabler/) | [`^1.2.42` → `^1.2.43`](https://renovatebot.com/diffs/npm/@iconify-json%2ftabler/1.2.42/1.2.43) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@iconify-json%2ftabler/1.2.43?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@iconify-json%2ftabler/1.2.42/1.2.43?slim=true) | | [astro](https://astro.build) ([source](https://github.com/withastro/astro/tree/HEAD/packages/astro)) | [`^7.4.2` → `^7.4.5`](https://renovatebot.com/diffs/npm/astro/7.4.2/7.4.5) | ![age](https://developer.mend.io/api/mc/badges/age/npm/astro/7.4.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/astro/7.4.2/7.4.5?slim=true) | | [emdash](https://github.com/emdash-cms/emdash) ([source](https://github.com/emdash-cms/emdash/tree/HEAD/packages/core)) | [`^1.3.1` → `^1.4.0`](https://renovatebot.com/diffs/npm/emdash/1.3.1/1.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/emdash/1.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/emdash/1.3.1/1.4.0?slim=true) | | [workerd](https://github.com/cloudflare/workerd) | [`^1.20261027.1` → `^1.20261104.1`](https://renovatebot.com/diffs/npm/workerd/1.20261027.1/1.20261104.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/workerd/1.20261104.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/workerd/1.20261027.1/1.20261104.1?slim=true) | --- ### Release Notes <details> <summary>withastro/astro (@&#8203;astrojs/markdown-satteri)</summary> ### [`v0.4.6`](https://github.com/withastro/astro/blob/HEAD/packages/markdown/satteri/CHANGELOG.md#046) [Compare Source](https://github.com/withastro/astro/compare/@astrojs/markdown-satteri@0.4.5...@astrojs/markdown-satteri@0.4.6) ##### Patch Changes - [`edfbf4a`](https://github.com/withastro/astro/commit/edfbf4ab34ff007ae8f7188af76a023a15c9443d) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Fixes Prism code blocks for languages Prism doesn't support, such as `vue` or `svelte`. Their code is now displayed as plain text instead of being rendered as HTML. Also correctly escapes the code block language in the generated `class` and `data-language` attributes. - Updated dependencies \[[`edfbf4a`](https://github.com/withastro/astro/commit/edfbf4ab34ff007ae8f7188af76a023a15c9443d)]: - [@&#8203;astrojs/prism](https://github.com/astrojs/prism)@4.1.2 </details> <details> <summary>withastro/astro (@&#8203;astrojs/mdx)</summary> ### [`v8.1.2`](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#812) [Compare Source](https://github.com/withastro/astro/compare/@astrojs/mdx@8.1.1...@astrojs/mdx@8.1.2) ##### Patch Changes - Updated dependencies \[[`edfbf4a`](https://github.com/withastro/astro/commit/edfbf4ab34ff007ae8f7188af76a023a15c9443d)]: - [@&#8203;astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.6 </details> <details> <summary>cloudflare/workerd (@&#8203;cloudflare/workerd-linux-64)</summary> ### [`v1.20261104.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261104.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261103.1...v1.20261104.1) ##### What's Changed - Stop edit-triggered runs reporting a skipped internal-build by [@&#8203;jp4a50](https://github.com/jp4a50) in [#&#8203;8171](https://github.com/cloudflare/workerd/pull/8171) - Lift the traversal limit on Rust JSG feature flags by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8159](https://github.com/cloudflare/workerd/pull/8159) - Generate Typescript types for Rust JSG Bindings by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8077](https://github.com/cloudflare/workerd/pull/8077) - Add await_io() and await_io_value() to the Rust io-context crate by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8117](https://github.com/cloudflare/workerd/pull/8117) - Enable python_shared_standard_library compat flag by default by [@&#8203;ryanking13](https://github.com/ryanking13) in [#&#8203;8141](https://github.com/cloudflare/workerd/pull/8141) - STOR-5760: Report an onHibernate handler's onset to tail workers by [@&#8203;apeacock1991](https://github.com/apeacock1991) in [#&#8203;8125](https://github.com/cloudflare/workerd/pull/8125) - STOR-5760: Run onHibernate handlers in the local server by [@&#8203;apeacock1991](https://github.com/apeacock1991) in [#&#8203;8150](https://github.com/cloudflare/workerd/pull/8150) - Update reported process.version to v22.23.4; add a compat flag for v24 by [@&#8203;ketanhwr](https://github.com/ketanhwr) in [#&#8203;8147](https://github.com/cloudflare/workerd/pull/8147) - Add waitUntil, fail-open and abort to the Rust io-context crate by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8088](https://github.com/cloudflare/workerd/pull/8088) - Let other bazelflare deployments use the credential helper by [@&#8203;LuisDuarte1](https://github.com/LuisDuarte1) in [#&#8203;8154](https://github.com/cloudflare/workerd/pull/8154) - Rust JSG: typed promises by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8153](https://github.com/cloudflare/workerd/pull/8153) - R2 JSRPC Bindings (double fork edition) by [@&#8203;jp4a50](https://github.com/jp4a50) in [#&#8203;8114](https://github.com/cloudflare/workerd/pull/8114) - Add getSqliteProcessMemoryUsed() to sqlite-metering by [@&#8203;jtolio](https://github.com/jtolio) in [#&#8203;8107](https://github.com/cloudflare/workerd/pull/8107) - Create WebSocket revocation promises lazily by [@&#8203;danlapid](https://github.com/danlapid) in [#&#8203;8178](https://github.com/cloudflare/workerd/pull/8178) - Fix flakiness in cluster-test by [@&#8203;ry](https://github.com/ry) in [#&#8203;8187](https://github.com/cloudflare/workerd/pull/8187) - Wait for the image alias's pull before testImageAlias's health check by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8191](https://github.com/cloudflare/workerd/pull/8191) - Run Miniflare's tests on the Node.js version workers-sdk tests with by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8189](https://github.com/cloudflare/workerd/pull/8189) - STOR-5615: Make the Durable Object retry option public by [@&#8203;apeacock1991](https://github.com/apeacock1991) in [#&#8203;8143](https://github.com/cloudflare/workerd/pull/8143) - Add jsg::Cell and jsg::RefCell for traced fields by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;7982](https://github.com/cloudflare/workerd/pull/7982) - Perf improvements to ts-streams impl, first pass by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8167](https://github.com/cloudflare/workerd/pull/8167) - Migrate EventSource to Typescript by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8109](https://github.com/cloudflare/workerd/pull/8109) - More TS-Streams performance improvements. by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8174](https://github.com/cloudflare/workerd/pull/8174) - Third round of TS streams perf improvements by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8188](https://github.com/cloudflare/workerd/pull/8188) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261103.1...v1.20261104.1> ### [`v1.20261103.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261103.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261102.1...v1.20261103.1) ##### What's Changed - Add WPT webmessaging test suite by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8133](https://github.com/cloudflare/workerd/pull/8133) - Add WPT console tests by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8130](https://github.com/cloudflare/workerd/pull/8130) - Add WPT mimesniff/mime-types test by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8131](https://github.com/cloudflare/workerd/pull/8131) - Update WPT by [@&#8203;workers-devprod](https://github.com/workers-devprod) in [#&#8203;8126](https://github.com/cloudflare/workerd/pull/8126) - Report GC time and full GC count for every isolate lock by [@&#8203;danlapid](https://github.com/danlapid) in [#&#8203;8099](https://github.com/cloudflare/workerd/pull/8099) - STOR-5760: Report a canceled onHibernate handler's outcome by [@&#8203;apeacock1991](https://github.com/apeacock1991) in [#&#8203;8124](https://github.com/cloudflare/workerd/pull/8124) - Run TSan tests with clean process shutdown by [@&#8203;floitsch](https://github.com/floitsch) in [#&#8203;8029](https://github.com/cloudflare/workerd/pull/8029) - Produce V8 compile hints with the new module registry by [@&#8203;floitsch](https://github.com/floitsch) in [#&#8203;7917](https://github.com/cloudflare/workerd/pull/7917) - Convert stdio to TypeScript by [@&#8203;ry](https://github.com/ry) in [#&#8203;8120](https://github.com/cloudflare/workerd/pull/8120) - v8 15.8 by [@&#8203;csjh](https://github.com/csjh) in [#&#8203;7993](https://github.com/cloudflare/workerd/pull/7993) - Add trace spans to the Rust io-context crate by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8034](https://github.com/cloudflare/workerd/pull/8034) - `already called end()` fix by [@&#8203;mikea](https://github.com/mikea) in [#&#8203;8157](https://github.com/cloudflare/workerd/pull/8157) - make cluster_test less flaky by [@&#8203;ry](https://github.com/ry) in [#&#8203;8162](https://github.com/cloudflare/workerd/pull/8162) - add rust `jsg::JsString` by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8112](https://github.com/cloudflare/workerd/pull/8112) - fix wrong io thread handling by [@&#8203;mikea](https://github.com/mikea) in [#&#8203;8158](https://github.com/cloudflare/workerd/pull/8158) - Let RPC tracers supply the span update timestamp by [@&#8203;mar-cf](https://github.com/mar-cf) in [#&#8203;8149](https://github.com/cloudflare/workerd/pull/8149) - Let isolate types split their template builders across TUs by [@&#8203;danlapid](https://github.com/danlapid) in [#&#8203;8138](https://github.com/cloudflare/workerd/pull/8138) - Migrate MessageChannel/MessagePort to TypeScript by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8105](https://github.com/cloudflare/workerd/pull/8105) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261102.1...v1.20261103.1> ### [`v1.20261102.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261102.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261101.1...v1.20261102.1) ##### What's Changed - Add WPT hr-time tests by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8129](https://github.com/cloudflare/workerd/pull/8129) - Add WPT user-timing test suite by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8128](https://github.com/cloudflare/workerd/pull/8128) - Add WPT FileAPI tests by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8132](https://github.com/cloudflare/workerd/pull/8132) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261101.1...v1.20261102.1> ### [`v1.20261101.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261101.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261031.1...v1.20261101.1) ##### What's Changed - Fill gaps in the WPT harness by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8106](https://github.com/cloudflare/workerd/pull/8106) - Let sendTraces() callers learn when the handler finishes by [@&#8203;git-bruh](https://github.com/git-bruh) in [#&#8203;7855](https://github.com/cloudflare/workerd/pull/7855) - Add jsg-cpp: interop between Rust JSG and C++ JSG resources by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8086](https://github.com/cloudflare/workerd/pull/8086) - cluster: Durable Object facets by [@&#8203;ry](https://github.com/ry) in [#&#8203;8113](https://github.com/cloudflare/workerd/pull/8113) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261031.1...v1.20261101.1> ### [`v1.20261031.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261031.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261030.1...v1.20261031.1) ##### What's Changed - Capture and enter async context frames in Rust JSG by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;7980](https://github.com/cloudflare/workerd/pull/7980) - EMAIL-1739 Add tag for serialising EmailMessage by [@&#8203;Skye-31](https://github.com/Skye-31) in [#&#8203;8002](https://github.com/cloudflare/workerd/pull/8002) - Support exports from wrangler.json by [@&#8203;ry](https://github.com/ry) in [#&#8203;8082](https://github.com/cloudflare/workerd/pull/8082) - Block snapshots and restores in Durable Object facets by [@&#8203;maxmcd](https://github.com/maxmcd) in [#&#8203;8097](https://github.com/cloudflare/workerd/pull/8097) - Defer cross-context actions on idle actors instead of aborting by [@&#8203;jqmmes](https://github.com/jqmmes) in [#&#8203;7857](https://github.com/cloudflare/workerd/pull/7857) - Make ts streams private handles moar private by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8095](https://github.com/cloudflare/workerd/pull/8095) - \[build] Update to clang-tidy 23 by [@&#8203;fhanau](https://github.com/fhanau) in [#&#8203;7131](https://github.com/cloudflare/workerd/pull/7131) - Drop Rust JSG promise reaction data once a reaction runs by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8064](https://github.com/cloudflare/workerd/pull/8064) - Add Local<Value>::to_js_string by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8096](https://github.com/cloudflare/workerd/pull/8096) - Automate use of V8's version for crates shared by workerd and V8 by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8058](https://github.com/cloudflare/workerd/pull/8058) - Add await_io_and_run() and add_object() to the Rust io-context crate by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8030](https://github.com/cloudflare/workerd/pull/8030) - cluster: Durable Object alarms by [@&#8203;ry](https://github.com/ry) in [#&#8203;8090](https://github.com/cloudflare/workerd/pull/8090) - Check for a pending exception in every Rust JSG shim that enters V8 by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8009](https://github.com/cloudflare/workerd/pull/8009) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261030.1...v1.20261031.1> ### [`v1.20261030.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261030.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261029.1...v1.20261030.1) ##### What's Changed - Add a `NullOrUndefined<T>` to Rust JSG as a clearer alternative to `Option<Nullable<T>>` by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8080](https://github.com/cloudflare/workerd/pull/8080) - Cluster workerd processes over a shared bucket by [@&#8203;ry](https://github.com/ry) in [#&#8203;7994](https://github.com/cloudflare/workerd/pull/7994) - Add python_zstd_snapshot compat flag by [@&#8203;ryanking13](https://github.com/ryanking13) in [#&#8203;8021](https://github.com/cloudflare/workerd/pull/8021) - Release the endpoints of a native TypeScript streams pipe by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8056](https://github.com/cloudflare/workerd/pull/8056) - Port node-internal:inspector to Rust JSG by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;7986](https://github.com/cloudflare/workerd/pull/7986) - Give Rust APIs the IoContext of the current request by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;7963](https://github.com/cloudflare/workerd/pull/7963) - Remove the rpc-externals-hydration autogate by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8089](https://github.com/cloudflare/workerd/pull/8089) - Add SHA-3 digests, ChaCha20-Poly1305, and MLKEM768-X25519 to WebCrypto by [@&#8203;panva](https://github.com/panva) in [#&#8203;7589](https://github.com/cloudflare/workerd/pull/7589) - Unwrap Rust JSG method receivers without the marker check by [@&#8203;littledivy](https://github.com/littledivy) in [#&#8203;8023](https://github.com/cloudflare/workerd/pull/8023) - \[build] Update rules_rust by [@&#8203;fhanau](https://github.com/fhanau) in [#&#8203;8069](https://github.com/cloudflare/workerd/pull/8069) - Bring Rust JSG unions to parity with kj::OneOf by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8026](https://github.com/cloudflare/workerd/pull/8026) - fix(types): add streamDiagEvent to TailStream.TailEventHandlerObject by [@&#8203;PedroRosalba](https://github.com/PedroRosalba) in [#&#8203;7848](https://github.com/cloudflare/workerd/pull/7848) - Fix throwing string shims in Rust JSG and return a handle from call by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8039](https://github.com/cloudflare/workerd/pull/8039) - Fix Rust JSG union test after Function::call change by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8092](https://github.com/cloudflare/workerd/pull/8092) - Don't leak a legacy callee's stack to an enhanced caller by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8087](https://github.com/cloudflare/workerd/pull/8087) - Follow the Fetch spec for statusText by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;7839](https://github.com/cloudflare/workerd/pull/7839) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261029.1...v1.20261030.1> ### [`v1.20261029.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261029.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261028.1...v1.20261029.1) ##### What's Changed - Run every x64 Linux test on bazelflare by [@&#8203;danlapid](https://github.com/danlapid) in [#&#8203;8020](https://github.com/cloudflare/workerd/pull/8020) - Enable Rust code in V8 for workerd by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;7925](https://github.com/cloudflare/workerd/pull/7925) - Align the Rust crate graph with V8's Chromium crate versions by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;7926](https://github.com/cloudflare/workerd/pull/7926) - Scope local Docker resources to a session by [@&#8203;ghostwriternr](https://github.com/ghostwriternr) in [#&#8203;7910](https://github.com/cloudflare/workerd/pull/7910) - Clean up unused pyodide lockfile-related codes by [@&#8203;ryanking13](https://github.com/ryanking13) in [#&#8203;7905](https://github.com/cloudflare/workerd/pull/7905) - Fix formData() corrupting binary parts with TypeScript streams by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8042](https://github.com/cloudflare/workerd/pull/8042) - Cancel a queued TS stream when its pump is dropped by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8052](https://github.com/cloudflare/workerd/pull/8052) - Run the container-session test on bazelflare by [@&#8203;ghostwriternr](https://github.com/ghostwriternr) in [#&#8203;8067](https://github.com/cloudflare/workerd/pull/8067) - Increase SQLITE_LIMIT_VDBE_OP to 250000 from 25000 by [@&#8203;joshthoward](https://github.com/joshthoward) in [#&#8203;7790](https://github.com/cloudflare/workerd/pull/7790) - Keep a patched then out of TypeScript body consumption by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8060](https://github.com/cloudflare/workerd/pull/8060) - Make Rust JSG value types mirror their V8 classes by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8054](https://github.com/cloudflare/workerd/pull/8054) - Add jsg::Dict to Rust JSG by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;7998](https://github.com/cloudflare/workerd/pull/7998) - mark LogPeriodically thread-safe by [@&#8203;mikea](https://github.com/mikea) in [#&#8203;8036](https://github.com/cloudflare/workerd/pull/8036) - fix(modules): redirect node:process in require() on the legacy registry by [@&#8203;kevinlupera](https://github.com/kevinlupera) in [#&#8203;7992](https://github.com/cloudflare/workerd/pull/7992) - Give Rust JSG functions their Web IDL .length by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8045](https://github.com/cloudflare/workerd/pull/8045) - Fix main: replace jsg::Number with f64 in jsg::Dict tests by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8071](https://github.com/cloudflare/workerd/pull/8071) - Add integer support to Rust JSG by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8072](https://github.com/cloudflare/workerd/pull/8072) - Honor a default source's expectedLength in TypeScript streams by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8050](https://github.com/cloudflare/workerd/pull/8050) - Encode string chunks as UTF-8 when pumping TypeScript streams by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;8053](https://github.com/cloudflare/workerd/pull/8053) - Remove the bonk review bot by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;8075](https://github.com/cloudflare/workerd/pull/8075) - Accept wrangler.json(c) as a config by [@&#8203;ry](https://github.com/ry) in [#&#8203;8051](https://github.com/cloudflare/workerd/pull/8051) - Truncate before range-checking JSG integers behind an autogate by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8076](https://github.com/cloudflare/workerd/pull/8076) - Temporal use same time as Date.now() + compat flag & tests by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;6943](https://github.com/cloudflare/workerd/pull/6943) ##### New Contributors - [@&#8203;kevinlupera](https://github.com/kevinlupera) made their first contribution in [#&#8203;7992](https://github.com/cloudflare/workerd/pull/7992) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261028.1...v1.20261029.1> ### [`v1.20261028.1`](https://github.com/cloudflare/workerd/releases/tag/v1.20261028.1) [Compare Source](https://github.com/cloudflare/workerd/compare/v1.20261027.1...v1.20261028.1) ##### What's Changed - Drop the sysroot's case-colliding headers; refresh MODULE.bazel.lock by [@&#8203;danlapid](https://github.com/danlapid) in [#&#8203;8018](https://github.com/cloudflare/workerd/pull/8018) - Log in to bazelflare from its credential helper by [@&#8203;danlapid](https://github.com/danlapid) in [#&#8203;8019](https://github.com/cloudflare/workerd/pull/8019) - Mount pyodide stdlib to shared readonly filesystem by [@&#8203;ryanking13](https://github.com/ryanking13) in [#&#8203;7780](https://github.com/cloudflare/workerd/pull/7780) - Rearrange Pyodide build scripts by [@&#8203;ryanking13](https://github.com/ryanking13) in [#&#8203;8003](https://github.com/cloudflare/workerd/pull/8003) - Add structured serialization to Rust JSG by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;8000](https://github.com/cloudflare/workerd/pull/8000) - STOR-5760: Add Durable Object onHibernate dispatch by [@&#8203;apeacock1991](https://github.com/apeacock1991) in [#&#8203;7987](https://github.com/cloudflare/workerd/pull/7987) - Inline the cxx exception check on the non-throwing path by [@&#8203;littledivy](https://github.com/littledivy) in [#&#8203;8022](https://github.com/cloudflare/workerd/pull/8022) - Make enableInternet optional in container.start() by [@&#8203;gabivlj](https://github.com/gabivlj) in [#&#8203;8005](https://github.com/cloudflare/workerd/pull/8005) - clang-tidy: readability-inconsistent-ifelse-braces by [@&#8203;mikea](https://github.com/mikea) in [#&#8203;8028](https://github.com/cloudflare/workerd/pull/8028) - Copy the leading ASCII run in bulk when converting Latin-1 to rust::String by [@&#8203;littledivy](https://github.com/littledivy) in [#&#8203;8016](https://github.com/cloudflare/workerd/pull/8016) - Seal the scope-free fast-callback path in debug builds by [@&#8203;littledivy](https://github.com/littledivy) in [#&#8203;7990](https://github.com/cloudflare/workerd/pull/7990) - Add Rust JSG Benchmarks by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8013](https://github.com/cloudflare/workerd/pull/8013) - Produce V8 compile hints for bundle ES modules by [@&#8203;floitsch](https://github.com/floitsch) in [#&#8203;7768](https://github.com/cloudflare/workerd/pull/7768) - Make Rust JSG Nullable<T> mean T | null by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8015](https://github.com/cloudflare/workerd/pull/8015) - \[EW-11138] Leave what JavaScript setters throw pending in Rust JSG by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;7975](https://github.com/cloudflare/workerd/pull/7975) - Move node:util MIMEType from C++ to TypeScript by [@&#8203;bartlomieju](https://github.com/bartlomieju) in [#&#8203;7968](https://github.com/cloudflare/workerd/pull/7968) - Remove PER_ISOLATE_BOOTSTRAP autogate by [@&#8203;jasnell](https://github.com/jasnell) in [#&#8203;7936](https://github.com/cloudflare/workerd/pull/7936) - Skip building discarded neuter exceptions on successful requests by [@&#8203;littledivy](https://github.com/littledivy) in [#&#8203;7981](https://github.com/cloudflare/workerd/pull/7981) - WPT: enable other `fetch/` tests by [@&#8203;npaun](https://github.com/npaun) in [#&#8203;7921](https://github.com/cloudflare/workerd/pull/7921) - Add wasm_source_url_support to name Wasm modules after their module by [@&#8203;logan-gatlin](https://github.com/logan-gatlin) in [#&#8203;8033](https://github.com/cloudflare/workerd/pull/8033) - Use small workloads for Rust JSG benchmark smoke tests by [@&#8203;nathanwhit](https://github.com/nathanwhit) in [#&#8203;8044](https://github.com/cloudflare/workerd/pull/8044) - Remove ToLocalValue from Rust JSG by [@&#8203;piscisaureus](https://github.com/piscisaureus) in [#&#8203;8014](https://github.com/cloudflare/workerd/pull/8014) **Full Changelog**: <https://github.com/cloudflare/workerd/compare/v1.20261027.1...v1.20261028.1> </details> <details> <summary>emdash-cms/emdash (@&#8203;emdash-cms/sandbox-workerd)</summary> ### [`v0.9.6`](https://github.com/emdash-cms/emdash/blob/HEAD/packages/workerd/CHANGELOG.md#096) [Compare Source](https://github.com/emdash-cms/emdash/compare/@emdash-cms/sandbox-workerd@0.9.5...@emdash-cms/sandbox-workerd@0.9.6) ##### Patch Changes - Updated dependencies \[[`064fbbf`](https://github.com/emdash-cms/emdash/commit/064fbbfe00a9f3b8c2fdea8b0b1abec43e785505), [`75030fc`](https://github.com/emdash-cms/emdash/commit/75030fc48cff39d5925367295c9072b038bca11f), [`ec973c0`](https://github.com/emdash-cms/emdash/commit/ec973c06c216c8e81dae77848f476982649b29f5), [`ceaf9b6`](https://github.com/emdash-cms/emdash/commit/ceaf9b68bdeca07dcaf3484b79e211241931a471), [`3d29980`](https://github.com/emdash-cms/emdash/commit/3d29980290fd2ebcbe9ce7d53808b17c4aa65190), [`9d9fd82`](https://github.com/emdash-cms/emdash/commit/9d9fd82c50986496809e9e5c414569c13210f1bb), [`3ce9d36`](https://github.com/emdash-cms/emdash/commit/3ce9d368e1c7cab41aa5ab6d58d2ad5636d9dead), [`8da0792`](https://github.com/emdash-cms/emdash/commit/8da0792564d06cf2411eee2bcbb832d7a1cdfc5c), [`c238da2`](https://github.com/emdash-cms/emdash/commit/c238da2931b12ab58f6228a5a4d79551d05f6d3b), [`a6f4091`](https://github.com/emdash-cms/emdash/commit/a6f4091c056df606b98340b566916cf44e99b567), [`f197acf`](https://github.com/emdash-cms/emdash/commit/f197acf3abdac8bde0f67fc3e87ae26559dab67c), [`57abb5c`](https://github.com/emdash-cms/emdash/commit/57abb5c445e0627acff748999e2ca35b75d1e102), [`e1c4a87`](https://github.com/emdash-cms/emdash/commit/e1c4a87a7b3c634b96d7274dbd728975b9382b05), [`bed3e42`](https://github.com/emdash-cms/emdash/commit/bed3e421e02429f51c2717fe0aa90ea5340ff921), [`4409acb`](https://github.com/emdash-cms/emdash/commit/4409acb10736c2bf8031bbf29c761dc594e919ed), [`53acf71`](https://github.com/emdash-cms/emdash/commit/53acf7159f405786d484b35288f5effb6ffb81be), [`6be7263`](https://github.com/emdash-cms/emdash/commit/6be726348b2414e95dec6eb910680e215bb9abbb), [`9e7cd3d`](https://github.com/emdash-cms/emdash/commit/9e7cd3ddf5faa76b54d2db223081f506de57b1e7), [`a16ab2c`](https://github.com/emdash-cms/emdash/commit/a16ab2c2b3f2d6e97bdcca3ab32015d9194d6554), [`9201138`](https://github.com/emdash-cms/emdash/commit/92011387eb2fee065e54f7d4b2c20405d1a3e347), [`d1e25e0`](https://github.com/emdash-cms/emdash/commit/d1e25e01fdcfed9d05e7dc42f9f3f2500cf96700), [`6c5d878`](https://github.com/emdash-cms/emdash/commit/6c5d87831c4e0ed3976ac6d449e37952c4387a61), [`56cb9da`](https://github.com/emdash-cms/emdash/commit/56cb9dab91c2798c147dc6482aa2db62d0f6f7f1)]: - emdash\@&#8203;1.4.0 </details> <details> <summary>withastro/astro (astro)</summary> ### [`v7.4.5`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#745) [Compare Source](https://github.com/withastro/astro/compare/astro@7.4.4...astro@7.4.5) ##### Patch Changes - [#&#8203;18558](https://github.com/withastro/astro/pull/18558) [`fac3c50`](https://github.com/withastro/astro/commit/fac3c50463ce9c290bdccb1d6dba30dc7ca4d779) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `astro dev status` and other background server commands deleting the lock file of a running dev or preview server when run from a sandbox or as another user that is not permitted to signal its process - [#&#8203;18559](https://github.com/withastro/astro/pull/18559) [`10dae2f`](https://github.com/withastro/astro/commit/10dae2f31486cc0a6a04d1f3d7f5ab7fa8889b30) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `import.meta.env` values containing `$` sequences (such as `$$` or `$&`) being corrupted in `astro build` when server code reads the `import.meta.env` object directly, for example with `const { MY_SECRET } = import.meta.env` - [#&#8203;18544](https://github.com/withastro/astro/pull/18544) [`e3bec3d`](https://github.com/withastro/astro/commit/e3bec3d2c770cb53771dad723db57a2ebf931b42) Thanks [@&#8203;skezo](https://github.com/skezo)! - Fixes request paths with invalid percent-encoding (e.g. `/%C0%AF` or a bare `%`) being logged as an `Invalid URL encoding` error and routed with the undecoded path. These requests now return a `400`, the same as a path that is encoded too many times. - [#&#8203;18520](https://github.com/withastro/astro/pull/18520) [`e023aba`](https://github.com/withastro/astro/commit/e023abac912d7cb6af2b9fb5107ef5dabc667096) Thanks [@&#8203;matthewp](https://github.com/matthewp)! - Makes rendering of string tag names stricter and consistent across `.astro` dynamic tags, JSX, and MDX. Only the leading part of the string that is a valid element name is rendered, so characters such as `/` or `=` can no longer change the generated markup. A string that does not start with a valid element name (for example `'!--'` or `''`) now throws an error instead of producing invalid HTML. ### [`v7.4.4`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#744) [Compare Source](https://github.com/withastro/astro/compare/astro@7.4.3...astro@7.4.4) ##### Patch Changes - [#&#8203;18344](https://github.com/withastro/astro/pull/18344) [`df838da`](https://github.com/withastro/astro/commit/df838da6c6d965504fae0d89e12d3e67bdd0f4c6) Thanks [@&#8203;edmundhung](https://github.com/edmundhung)! - Allows `astro add` to configure tagged versions of official adapters ### [`v7.4.3`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#743) [Compare Source](https://github.com/withastro/astro/compare/astro@7.4.2...astro@7.4.3) ##### Patch Changes - [#&#8203;18488](https://github.com/withastro/astro/pull/18488) [`e4e25fa`](https://github.com/withastro/astro/commit/e4e25fa7d47e702985cbb1ee633d4ffb92f8dad6) Thanks [@&#8203;umeraamir69](https://github.com/umeraamir69)! - CSP no longer hashes empty children on external stylesheets and scripts, which was inserting the SHA-256 of the empty string into `script-src` and `style-src`. - [#&#8203;18500](https://github.com/withastro/astro/pull/18500) [`e5a3a1b`](https://github.com/withastro/astro/commit/e5a3a1bdec268933f01a0da3fbeb4e38bdf455c9) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `<Image>` and `<Picture>` emitting duplicate `srcset` candidates when `densities` contains equivalent values such as `1` and `'1x'` - [#&#8203;18517](https://github.com/withastro/astro/pull/18517) [`c3185b7`](https://github.com/withastro/astro/commit/c3185b764e14f50664b0e63ec665804fdecf685e) Thanks [@&#8203;okxint](https://github.com/okxint)! - Fix unhandled `AbortError` rejection when `ClientRouter` skips a pending view transition - [#&#8203;18497](https://github.com/withastro/astro/pull/18497) [`c712113`](https://github.com/withastro/astro/commit/c7121132acc25ee3a7f3dc6dd36240f031537878) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes an uncaught `TypeError` in the browser when a `server:defer` island request fails due to a network error. The fallback content is kept, as it is for non-200 responses. - [#&#8203;18525](https://github.com/withastro/astro/pull/18525) [`d0240b9`](https://github.com/withastro/astro/commit/d0240b9d5738a97f0b8ad100b76bce8b7527e4cd) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes a `DEP0190` deprecation warning printed by `astro info` on Node.js 24 and later - [#&#8203;18522](https://github.com/withastro/astro/pull/18522) [`776b9a6`](https://github.com/withastro/astro/commit/776b9a6124a8d5aef8e280a8af4f8ba68c80e65b) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `memoryCache()` serving an empty body for cached pages that return an empty `404` or `500` response. These responses now render the `404` or `500` error page on every request. - [#&#8203;18511](https://github.com/withastro/astro/pull/18511) [`d060ff9`](https://github.com/withastro/astro/commit/d060ff9b68f737af2788e521635afb6f6a84b029) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `transition:name` styles missing in dev when the element is inside a component that is only rendered through another component with no styles or scripts - [#&#8203;18494](https://github.com/withastro/astro/pull/18494) [`5fe699c`](https://github.com/withastro/astro/commit/5fe699c888d0423db75cac3f0939409d7eb28e37) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes the `astro` CLI refusing to run on StackBlitz by allowing Node.js `>=22.22.0` inside WebContainers, whose Node.js version users cannot change - [#&#8203;18506](https://github.com/withastro/astro/pull/18506) [`bf43a60`](https://github.com/withastro/astro/commit/bf43a6042f8a9e87c2cef1b4c36700d4e941c35f) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `<ClientRouter />` animating scroll restoration on back/forward navigation when `scroll-behavior: smooth` is set. Saved scroll positions are now restored instantly, matching the browser's native behavior. - [#&#8203;18476](https://github.com/withastro/astro/pull/18476) [`8ea79a2`](https://github.com/withastro/astro/commit/8ea79a282e53b83c65f69c9013f5eeb5d97aadb1) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes a `DataCloneError` crash when building pages that render SVG imports with `<Image />` or `getImage()` while `experimental.parallelPrerender` is enabled. - [#&#8203;18504](https://github.com/withastro/astro/pull/18504) [`6dbd737`](https://github.com/withastro/astro/commit/6dbd73764f8a0f16d696f276b634e32631982aab) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes `<Picture>` emitting a duplicate `1x` candidate in `<source>` `srcset` when `densities` includes `1` - [#&#8203;18524](https://github.com/withastro/astro/pull/18524) [`7524889`](https://github.com/withastro/astro/commit/75248890363ce7de03e5d9b56605958323752dc4) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes type errors reported in Astro's built-in `<Image />`, `<Picture />`, `<Code />`, `<Debug />` and `<ClientRouter />` components when type-checking a project that extends `astro/tsconfigs/strictest` with `tsc` and `@astrojs/ts-content-mapper` - [#&#8203;18493](https://github.com/withastro/astro/pull/18493) [`3773941`](https://github.com/withastro/astro/commit/377394179293d1f898c49d38a5b28cf9b21641a9) Thanks [@&#8203;astro-factory](https://github.com/apps/astro-factory)! - Fixes scoped styles of unused Astro components being included in the build when those components are re-exported from a barrel file - [#&#8203;18512](https://github.com/withastro/astro/pull/18512) [`1151b9e`](https://github.com/withastro/astro/commit/1151b9e0d05e850fa3638a927ac9f66179010e00) Thanks [@&#8203;jp-knj](https://github.com/jp-knj)! - Fixes CSP hashes added with `Astro.csp` from components rendered inside `<body>` being left out of the CSP `<meta>` element in static builds, including MDX pages - Updated dependencies \[[`6cf3423`](https://github.com/withastro/astro/commit/6cf3423e4c62af5e54a2676c8304a209ab1e064d), [`edfbf4a`](https://github.com/withastro/astro/commit/edfbf4ab34ff007ae8f7188af76a023a15c9443d)]: - [@&#8203;astrojs/telemetry](https://github.com/astrojs/telemetry)@3.4.2 - [@&#8203;astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.6 </details> <details> <summary>emdash-cms/emdash (emdash)</summary> ### [`v1.4.0`](https://github.com/emdash-cms/emdash/blob/HEAD/packages/core/CHANGELOG.md#140) [Compare Source](https://github.com/emdash-cms/emdash/compare/emdash@1.3.1...emdash@1.4.0) ##### Minor Changes - [#&#8203;3856](https://github.com/emdash-cms/emdash/pull/3856) [`064fbbf`](https://github.com/emdash-cms/emdash/commit/064fbbfe00a9f3b8c2fdea8b0b1abec43e785505) Thanks [@&#8203;swissky](https://github.com/swissky)! - Adds `admin.hiddenNavItems` to hide built-in admin areas a site doesn't use. Set it to any of `calendar`, `media`, `comments`, `menus`, `redirects`, `widgets`, `sections`, `bylines`, and `import`, for example `admin: { hiddenNavItems: ["comments", "redirects"] }`. Hidden areas disappear from the sidebar and the command palette. On the dashboard, listing `media` hides the Upload Media button, and listing `calendar` keeps the Scheduled count but removes its link to the calendar. The pages and API routes stay reachable for users with the required role. An unknown name fails the build. ##### Patch Changes - [#&#8203;4364](https://github.com/emdash-cms/emdash/pull/4364) [`75030fc`](https://github.com/emdash-cms/emdash/commit/75030fc48cff39d5925367295c9072b038bca11f) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes translating a menu on Cloudflare D1, which failed for larger menus and left an empty translated menu behind. On D1, translating or deleting a menu and reordering or replacing its items now either save completely or leave the menus unchanged. ##### What should I do? If translating a menu failed before, delete the empty translated menu it left behind, then translate the menu again. - [#&#8203;4167](https://github.com/emdash-cms/emdash/pull/4167) [`ec973c0`](https://github.com/emdash-cms/emdash/commit/ec973c06c216c8e81dae77848f476982649b29f5) Thanks [@&#8203;cyface](https://github.com/cyface)! - Fixes extra database round trips on `getEmDashEntry` and `getEmDashCollection` for sites that register byline custom fields or have entries with an author but no explicit byline credit. These reads now resolve bylines from the content query itself and load custom-field values in one batched step, instead of re-reading every entry's credits. On Cloudflare D1, a page that reads a few entries saves two to six sequential queries. - [#&#8203;4287](https://github.com/emdash-cms/emdash/pull/4287) [`ceaf9b6`](https://github.com/emdash-cms/emdash/commit/ceaf9b68bdeca07dcaf3484b79e211241931a471) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes expired OAuth tokens and unused login codes from `emdash login` and MCP clients staying in the database forever. Scheduled cleanup now deletes them after they expire. - [#&#8203;4286](https://github.com/emdash-cms/emdash/pull/4286) [`3d29980`](https://github.com/emdash-cms/emdash/commit/3d29980290fd2ebcbe9ce7d53808b17c4aa65190) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes lost edits on D1, Durable Objects and PostgreSQL when two saves of the same entry, both based on the same version, arrive at once, for example from two MCP clients or from scripts using `emdash content update --rev`: both reported success, and the first was silently overwritten. The second save now returns `409 CONFLICT`, the same response a save based on an outdated version already gets. - [#&#8203;4459](https://github.com/emdash-cms/emdash/pull/4459) [`9d9fd82`](https://github.com/emdash-cms/emdash/commit/9d9fd82c50986496809e9e5c414569c13210f1bb) Thanks [@&#8203;emdash-autofix](https://github.com/apps/emdash-autofix)! - Fixes `POST /_emdash/api/oauth/token` returning uppercase `INVALID_GRANT` for refresh-token and device-code failures. These responses now use the RFC-standard `invalid_grant` code so OAuth clients can recognize rejected grants and restart authorization. - [#&#8203;4243](https://github.com/emdash-cms/emdash/pull/4243) [`3ce9d36`](https://github.com/emdash-cms/emdash/commit/3ce9d368e1c7cab41aa5ab6d58d2ad5636d9dead) Thanks [@&#8203;emdashbot](https://github.com/apps/emdashbot)! - Fixes Cloudflare-cached pages remaining outdated after content is deleted or unpublished. Pages using EmDash cache hints no longer send an automatic `Last-Modified` header, so Cloudflare stops answering `304 Not Modified` based on an entry timestamp that does not cover related lists or settings changes. This applies to entry, collection, publication-date, and reference-list hints. Sites using an object cache reload those content snapshots once after upgrading so cached validators from earlier versions are not reused. Taxonomy definitions and collection-to-taxonomy mappings also revalidate in the background after 30 seconds, so long-lived server processes pick up changes saved elsewhere without adding a blocking query to each render. A failed refresh retains the last good snapshot. ##### What should I do? `cacheHint.lastModified` is no longer populated automatically. For an entry's displayed modification date, use `entry.data.updatedAt` instead; it is not a validator for the whole page. Pages relying on automatic validators also lose Astro's implicit `Cache-Control: no-cache` header. Set your own browser `Cache-Control` if you need a fresh check on every visit. If you want conditional requests, supply a custom `lastModified` hint to `Astro.cache.set()`. Its timestamp must advance whenever any part of the response changes, including settings, related entries, deletions, and unpublishes. - [#&#8203;4157](https://github.com/emdash-cms/emdash/pull/4157) [`8da0792`](https://github.com/emdash-cms/emdash/commit/8da0792564d06cf2411eee2bcbb832d7a1cdfc5c) Thanks [@&#8203;opariffazman](https://github.com/opariffazman)! - Fixes external auth providers, such as Cloudflare Access, writing the session store on every authenticated `/_emdash` request. EmDash now writes the session only when the signed-in user differs from the stored one, so sites on Cloudflare no longer spend one Workers KV write per request, which could exhaust the Workers Free plan's daily write limit and hit KV's one-write-per-second limit on a key for parallel requests. - [#&#8203;3192](https://github.com/emdash-cms/emdash/pull/3192) [`c238da2`](https://github.com/emdash-cms/emdash/commit/c238da2931b12ab58f6228a5a4d79551d05f6d3b) Thanks [@&#8203;bazemoreb](https://github.com/bazemoreb)! - Names media downloads after the file that was uploaded. The public media file route previously sent `Content-Disposition: attachment` with no `filename`, so browsers fell back to the last path segment of the URL and saved every PDF, DOCX or CSV under its storage key. The route now looks the original filename up by storage key and emits both the quoted ASCII `filename` and the RFC 5987 `filename*` form, so non-ASCII names survive. Media with no matching database row is served exactly as before, and a failed lookup never fails the download. - [#&#8203;3129](https://github.com/emdash-cms/emdash/pull/3129) [`a6f4091`](https://github.com/emdash-cms/emdash/commit/a6f4091c056df606b98340b566916cf44e99b567) Thanks [@&#8203;eisenbruch](https://github.com/eisenbruch)! - Fixes saving an entry turning an empty image or file field (`""`) into `{ "provider": "external", "id": "", "src": "" }`. A blank image or file field, or a blank image inside a repeater, is now saved as `null`, the canonical empty value. Entries with no image stop changing on every save after that. A required image or file field now returns a validation error for `""` instead of saving an empty image. This only affects API, MCP or import clients, because the admin never sends `""`. - [#&#8203;4296](https://github.com/emdash-cms/emdash/pull/4296) [`f197acf`](https://github.com/emdash-cms/emdash/commit/f197acf3abdac8bde0f67fc3e87ae26559dab67c) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes media usage tracking in collections that have a reference field named `title` or `name`, where saving an entry recorded none of the images and files it uses. Saving now records them. ##### What should I do? Entries in those collections that were saved before this release can still be missing from **Used in** after you upgrade. Open **Settings → Media usage tracking** and wait until it shows **Ready**. If it shows **Needs attention** instead, repair each affected collection once: ```sh npx emdash media repair-usage --collection <collection> ``` - [#&#8203;4285](https://github.com/emdash-cms/emdash/pull/4285) [`57abb5c`](https://github.com/emdash-cms/emdash/commit/57abb5c445e0627acff748999e2ca35b75d1e102) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes menus showing dead links to entries that are in the trash or not published. `getMenu()` leaves those items out. Any item `getMenu()` leaves out now takes its child items with it, instead of moving them to the top level of the menu. In edit mode, menus still link to unpublished entries. With the object cache enabled, a cached menu now refreshes when an entry or taxonomy term it links to changes. - [#&#8203;4365](https://github.com/emdash-cms/emdash/pull/4365) [`e1c4a87`](https://github.com/emdash-cms/emdash/commit/e1c4a87a7b3c634b96d7274dbd728975b9382b05) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes creating a child menu item through the menu items API on PostgreSQL. A request with a `parentId` and no `sortOrder` failed; the item is now placed after its existing siblings. - [#&#8203;4208](https://github.com/emdash-cms/emdash/pull/4208) [`bed3e42`](https://github.com/emdash-cms/emdash/commit/bed3e421e02429f51c2717fe0aa90ea5340ff921) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes content list search, in the admin and through the content list API's `q` parameter, failing when the collection has a reference field named `title` or `name`. The search now leaves out a reference field bound to a relation and matches the entry's other fields. - [#&#8203;4205](https://github.com/emdash-cms/emdash/pull/4205) [`4409acb`](https://github.com/emdash-cms/emdash/commit/4409acb10736c2bf8031bbf29c761dc594e919ed) Thanks [@&#8203;danielmlr](https://github.com/danielmlr)! - Fixes entry creation, entry saves and content-list search failing with `no such column` in a collection that has a reference field marked `searchable`. Adding such a field to a search-enabled collection failed, and after a seed turned search on, creating or saving any entry in that collection failed. Site search and content-list search now ignore the `searchable` flag on a reference field bound to a relation. ##### What should I do? If creating or saving entries in a collection still fails after upgrading and the server log shows `no such column`, open the collection under **Content Types**, untick **Search** and save, then tick it again and save. This rebuilds the collection's search index. - [#&#8203;4386](https://github.com/emdash-cms/emdash/pull/4386) [`53acf71`](https://github.com/emdash-cms/emdash/commit/53acf7159f405786d484b35288f5effb6ffb81be) Thanks [@&#8203;Stormster](https://github.com/Stormster)! - Fixes entry slugs being generated from a field named `title` instead of the collection's configured title field. In a collection whose `titleField` is `name` and which also has a `title` field (a person's job title, say), typing in the editor now fills the slug from the name, and entries created through the API without a slug get one from the name too, so two people with the same job title no longer collide with `SLUG_CONFLICT`. Collections without a `titleField` keep the previous `title`, then `name`, order. - [#&#8203;4394](https://github.com/emdash-cms/emdash/pull/4394) [`6be7263`](https://github.com/emdash-cms/emdash/commit/6be726348b2414e95dec6eb910680e215bb9abbb) Thanks [@&#8203;emdash-autofix](https://github.com/apps/emdash-autofix)! - Fixes sandboxed plugin `ctx.taxonomies` mutations (`createTerm()`, `addEntryTerms()`, and `removeEntryTerms()`), `ctx.content.create()`, versioned content actions (`getVersioned()`, `publish()`, `unpublish()`, `schedule()`, `unschedule()`, `getTrashedVersioned()`, and `restore()`), and `ctx.comments.setStatus()` on Cloudflare when requests run across multiple Worker isolates. Content creation consistently uses runtime validation and hooks and preserves `translationOf` links instead of falling back to a plain database insert. Runner-created invocations without a content-create callback now receive `Content creation is not configured` rather than a database insert that bypasses runtime behavior. `createPluginTestHost()` supplies a database-backed callback with content-handler validation so transport-level tests can continue creating content and linked translations without starting the full EmDash runtime. It preserves the transport host's support for `data.slug` and `data.status`. Await these operation promises before returning from a plugin route or hook. Their RPC connection now lasts only for that invocation; unlike the previous loopback binding, it cannot support work that outlives the invocation. Publication after-hooks remain deferred. Same-entry actions attempted while an after-hook is running can return `CONTENT_ACTION_REENTRANT`; faster callback routing can expose this overlap in tests that assumed hooks had already finished. In runtime-host tests, call `await host.waitForDeferredTasks()` after an action before inspecting its after-hook effects or starting another action on the same entry. This method waits for queued deferred runtime work, including work those tasks enqueue; it does not run future scheduled tasks or wait for arbitrary unawaited plugin operations. - [#&#8203;4380](https://github.com/emdash-cms/emdash/pull/4380) [`9e7cd3d`](https://github.com/emdash-cms/emdash/commit/9e7cd3ddf5faa76b54d2db223081f506de57b1e7) Thanks [@&#8203;emdash-autofix](https://github.com/apps/emdash-autofix)! - Fixes `emdash site import` failing with `COLLECTION_EXISTS` when manually deleted target collections still have media-usage cleanup pending. For these manually deleted collections, import now runs as many cleanup steps as the request budget allows, then imports the collection in the same request if enough budget remains. It waits for active deletion leases or retry delays before reusing a slug. Cancellation during this per-collection cleanup stops before importing the collection. Failed cleanup of a manually deleted collection includes recovery instructions, and collection schema error messages are preserved in status `errorDetail`. - [#&#8203;4276](https://github.com/emdash-cms/emdash/pull/4276) [`a16ab2c`](https://github.com/emdash-cms/emdash/commit/a16ab2c2b3f2d6e97bdcca3ab32015d9194d6554) Thanks [@&#8203;emdash-autofix](https://github.com/apps/emdash-autofix)! - Fixes site builds using `zustand/traditional` or other dependencies that default-import `use-sync-external-store` shims, which previously failed with a missing default export error. - [#&#8203;4396](https://github.com/emdash-cms/emdash/pull/4396) [`9201138`](https://github.com/emdash-cms/emdash/commit/92011387eb2fee065e54f7d4b2c20405d1a3e347) Thanks [@&#8203;emdash-autofix](https://github.com/apps/emdash-autofix)! - Fixes keyboard navigation and entrance animations in the admin and visual editor's floating toolbars with Tiptap 3.20.3 and later. Escape closes image alt-text editing, Shift+Tab returns to the caption, and arrow keys move between toolbar controls again. - [#&#8203;3279](https://github.com/emdash-cms/emdash/pull/3279) [`d1e25e0`](https://github.com/emdash-cms/emdash/commit/d1e25e01fdcfed9d05e7dc42f9f3f2500cf96700) Thanks [@&#8203;eisenbruch](https://github.com/eisenbruch)! - Fixes the visual editing toolbar's "Open in admin" so each entry gets its own admin window. The window name was a single constant shared by the whole site, so opening the admin for one entry navigated away from another already open in that tab. A repeat click on the same entry still reuses that entry's window. - [#&#8203;3596](https://github.com/emdash-cms/emdash/pull/3596) [`6c5d878`](https://github.com/emdash-cms/emdash/commit/6c5d87831c4e0ed3976ac6d449e37952c4387a61) Thanks [@&#8203;swissky](https://github.com/swissky)! - Caches widget areas in the object cache. With an object cache configured, `<WidgetArea>`, `getWidgetArea()`, `getWidgetAreaWithCacheHint()` and `getWidgetAreas()` no longer query the database on each page load. Widget changes made in the admin, by seeding or by a site transfer invalidate the cached areas; code that writes the widget tables directly should call the new `invalidateWidgetObjectCache()` export. - [#&#8203;3890](https://github.com/emdash-cms/emdash/pull/3890) [`56cb9da`](https://github.com/emdash-cms/emdash/commit/56cb9dab91c2798c147dc6482aa2db62d0f6f7f1) Thanks [@&#8203;swissky](https://github.com/swissky)! - Fixes importing WordPress custom post types with a hyphen in their name (such as `team-member`) through the EmDash Exporter plugin. The import created the `team_member` collection but then failed every entry with `Collection "team-member" does not exist`, and custom taxonomies for that post type were not linked to the collection. The review step now shows the collection the import will use and recognizes it on a repeated import, so field type conflicts with it are reported. The `wxrSource` import source now suggests the same valid collection names, such as `team_member` for `team-member` and `wp_content` for a post type named `content`. - Updated dependencies \[[`6cc69bb`](https://github.com/emdash-cms/emdash/commit/6cc69bbdb06a7a31f3fea4f13096e25005840d71), [`3fcf437`](https://github.com/emdash-cms/emdash/commit/3fcf4377334a44f86f8f3289baf73c55b370fef0), [`064fbbf`](https://github.com/emdash-cms/emdash/commit/064fbbfe00a9f3b8c2fdea8b0b1abec43e785505), [`f0956f1`](https://github.com/emdash-cms/emdash/commit/f0956f1f050306442e2d801e0abaff229815a19b), [`500a45b`](https://github.com/emdash-cms/emdash/commit/500a45b4cd872401d809187cc5f3f9082b9717ab), [`2a62e8a`](https://github.com/emdash-cms/emdash/commit/2a62e8afb5b1661e6f6f00403076ac1339b8c980), [`5cd334e`](https://github.com/emdash-cms/emdash/commit/5cd334ed92d7ef9cefa64e8665f53350fba0f187), [`b82016d`](https://github.com/emdash-cms/emdash/commit/b82016d5b9f051b77689585ed0504b77e1929db4), [`0bc006c`](https://github.com/emdash-cms/emdash/commit/0bc006c8a2e3fb0f55ec587c997101eb0f87eb02), [`d840b08`](https://github.com/emdash-cms/emdash/commit/d840b087244bd3e79caa2ee0266ad3942ac677b7), [`a1a0174`](https://github.com/emdash-cms/emdash/commit/a1a0174f99ad4ca301e823bdea92b2a5f21e93c4), [`a6b28a6`](https://github.com/emdash-cms/emdash/commit/a6b28a6b1bf96f9ade9cc5c0327cd5b2e5af1ca2), [`e80c1f0`](https://github.com/emdash-cms/emdash/commit/e80c1f07f5baf7c6d26e6ef70cbbdf22a330e009), [`936a4cb`](https://github.com/emdash-cms/emdash/commit/936a4cb79ab24866cee3f669b9abe0daa5e70359), [`936a4cb`](https://github.com/emdash-cms/emdash/commit/936a4cb79ab24866cee3f669b9abe0daa5e70359), [`936a4cb`](https://github.com/emdash-cms/emdash/commit/936a4cb79ab24866cee3f669b9abe0daa5e70359), [`e80c1f0`](https://github.com/emdash-cms/emdash/commit/e80c1f07f5baf7c6d26e6ef70cbbdf22a330e009), [`190022c`](https://github.com/emdash-cms/emdash/commit/190022cbd71a20d06c856cf5673acb0b2d2d9f1f), [`9e720d6`](https://github.com/emdash-cms/emdash/commit/9e720d686c9d0ea651b1be044197d00d0e95d185), [`2ed2755`](https://github.com/emdash-cms/emdash/commit/2ed27550881c89603a45f6e2212e62209c5a7ac9), [`229c64b`](https://github.com/emdash-cms/emdash/commit/229c64ba737fcb6e4e2db9a3da4b8975f01d29bb), [`d60c43c`](https://github.com/emdash-cms/emdash/commit/d60c43c5bafa16699eeafd6a6329d3f9927f85f6), [`dd0bc9e`](https://github.com/emdash-cms/emdash/commit/dd0bc9eb04fab475253e375d116e533b81efb87e), [`4e4b068`](https://github.com/emdash-cms/emdash/commit/4e4b06829225b27df0224b584f8ccc517de5fd5c), [`0bc23ad`](https://github.com/emdash-cms/emdash/commit/0bc23ad0f0e073eab3d6ce16decce49c815364d4), [`7a04c81`](https://github.com/emdash-cms/emdash/commit/7a04c81372d5ab1f3cdb420a19cd2d857a57e56d), [`046ec3c`](https://github.com/emdash-cms/emdash/commit/046ec3c9cef712fceefbd6576734d15ecaee4a12), [`15557d1`](https://github.com/emdash-cms/emdash/commit/15557d1ee7c41a8efb3906fc3b58e68086f8fb7d), [`2e103a4`](https://github.com/emdash-cms/emdash/commit/2e103a45aa1b680318022c59e8cc0af0629c3ca3), [`245a562`](https://github.com/emdash-cms/emdash/commit/245a5623ad1fbb30df2be4db4282d5229db7687e), [`fa46578`](https://github.com/emdash-cms/emdash/commit/fa465787470aff612103213232992c9df3fdf00a), [`585cd22`](https://github.com/emdash-cms/emdash/commit/585cd222e1279f7055b6559540f0b2285dee8abd), [`e847d4b`](https://github.com/emdash-cms/emdash/commit/e847d4b61902757a6d829058e7d6afc6c4d0691e), [`e6ee72f`](https://github.com/emdash-cms/emdash/commit/e6ee72f9e4301c1e5298a364fda9b8c1bf492f7e), [`53acf71`](https://github.com/emdash-cms/emdash/commit/53acf7159f405786d484b35288f5effb6ffb81be), [`0709277`](https://github.com/emdash-cms/emdash/commit/070927753e19cfc5fd2bb9342947bb2b2a5185ac), [`6094ff8`](https://github.com/emdash-cms/emdash/commit/6094ff8a9743ecfd5e86ec54b5273094736a8cea), [`d160cb0`](https://github.com/emdash-cms/emdash/commit/d160cb04e0060658fa56a8e4de4be024204b63e8), [`20a5923`](https://github.com/emdash-cms/emdash/commit/20a5923a4073b1bab5442b86d42c2540ba5bd312), [`9201138`](https://github.com/emdash-cms/emdash/commit/92011387eb2fee065e54f7d4b2c20405d1a3e347), [`26c4faf`](https://github.com/emdash-cms/emdash/commit/26c4faff448a98c33f0af2e369c1fe822d882e17), [`3ad08dc`](https://github.com/emdash-cms/emdash/commit/3ad08dc041ab1ea728926a2267c55a27bc52e933)]: - [@&#8203;emdash-cms/admin](https://github.com/emdash-cms/admin)@1.4.0 - [@&#8203;emdash-cms/blocks](https://github.com/emdash-cms/blocks)@1.4.0 - [@&#8203;emdash-cms/auth](https://github.com/emdash-cms/auth)@1.4.0 - [@&#8203;emdash-cms/gutenberg-to-portable-text](https://github.com/emdash-cms/gutenberg-to-portable-text)@1.4.0 </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Berlin) - Branch creation - "after 8am and before 6pm on monday" - 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://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODEuNiIsInVwZGF0ZWRJblZlciI6IjQ0LjE4MS42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJydW50aW1lLWNyaXRpY2FsIl19-->
fix(deps): update minor+patch
All checks were successful
ci/woodpecker/pr/verify Pipeline was successful
f704f5de52
Automated dependency update via Woodpecker cron
2tap2b merged commit 271867a5c9 into main 2026-11-04 21:26:37 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
2tap2b/pustekuchen-emdash!7
No description provided.