This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
Affected surfaces
Summary
AI summaryUpdates Patch Changes, Minor Changes, and https://github.com/ascorbic across a mixed release.
Full changelog
Minor Changes
- #1967
f8e41cdThanks @Rimander! - Makes the Portable Text gallery block editable in the admin editor. Galleries imported from WordPress now load and stay editable instead of being invisible and lost on save, and you can insert new galleries from the toolbar or with /gallery: pick several images at once reorder them by drag and drop, set the column count, and click any image in the gallery to edit its alt text and caption or replace it. Multiple galleries per document are supported, and gallery blocks render on the public site as before.
Patch Changes
-
#1588
15d5a45Thanks @marcusbellamyshaw-cell! - Fixes plugincontent:afterDeleteandcontent:afterUnpublishhooks being dropped on Cloudflare Workers. Cleanup work in these hooks — removing uploaded files, clearing search indexes — now runs to completion after content is deleted or unpublished, instead of being canceled the moment the response is sent. Previously this could also leave plugin storage in a wedged state that hung later admin requests. -
#2174
c568876Thanks @ascorbic! - Fixes locale-filtered content and search results for locales with uppercase region or script subtags. Existing content rows saved with lowercased locale values are repaired automatically. -
#2140
c4d790eThanks @dchaudhari7177! - Security: site secrets (EMDASH_ENCRYPTION_KEY,EMDASH_PREVIEW_SECRET,EMDASH_IP_SALT, and their legacy aliases) are no longer read throughimport.meta.env. In production builds Vite statically replaced that expression with the env loaded at build time, which embedded any secret present in.envon the build machine into the server bundle and made the stale build-time value silently shadow the real runtime secret (e.g. one set withwrangler secret put). The secrets module now reads only the runtimeprocess.env. If you previously relied on a secret being baked in at build time, set it as a runtime secret/env var on your deployment platform instead — and rotate any key that shipped inside a bundle. -
#2188
0eb389fThanks @saariuslystoned! - Fixes OAuth authorization so users can remove unnecessary requested permissions before granting an MCP client access. -
#2193
791c0ebThanks @ascorbic! - Fixes PostgreSQL migrations failing in production builds that rename database adapter classes. -
Updated dependencies [
1614e2a,d62a302,4f58eec,f8e41cd]:- @emdash-cms/[email protected]
- @emdash-cms/[email protected]
- @emdash-cms/[email protected]
Security Fixes
- Security: site secrets (EMDASH_ENCRYPTION_KEY, EMDASH_PREVIEW_SECRET, EMDASH_IP_SALT and legacy aliases) are now read from runtime `process.env` instead of being baked into the build via Vite's `import.meta.env`, preventing secret leakage in production bundles
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About emdash
All releases →Related context
Earlier breaking changes
- v@emdash-cms/[email protected] Requires Cloudflare Workers sites to add Cron Trigger and update entry point for scheduled publishing.
- [email protected] Schema migration adds `locale` and `translation_group` columns to `_emdash_bylines`.
- [email protected] Byline hydration now strictly per-locale, suppressing cross‑locale fallback.
- v@emdash-cms/[email protected] Changes `_emdash_content_bylines.byline_id` to store translation_group instead of row id, enforcing strict per-locale credit hydration.
- v@emdash-cms/[email protected] Registry install handler fails closed on non-conforming aggregator release records.
Beta — feedback welcome: [email protected]