github emdash-cms/emdash emdash@0.28.0

latest releases: @emdash-cms/sandbox-workerd@0.1.18, @emdash-cms/x402@0.28.0, create-emdash@0.28.0...
4 hours ago

Minor Changes

  • #1849 b36d15c Thanks @swissky! - Fixes "Worker exceeded resource limits" when importing large WordPress sites on Cloudflare. The plugin import now runs as a sequence of small requests — content pages, then comments, then menus and site identity — with a live progress bar instead of an indefinite spinner, and media files upload in bounded batches. An interrupted import can safely be re-run: already-imported content is skipped and the import fast-forwards to where it stopped.

  • #1830 15b4d2d Thanks @swissky! - Improves WordPress plugin imports: taxonomy terms and assignments (custom post type taxonomies are created as EmDash taxonomies automatically, scoped to the collections they map to), Yoast/Rank Math SEO titles and descriptions, ACF and custom meta fields (suggested as collection fields during analysis and populated on import), navigation menus, and comments (with authors, dates, threading, and approval status) are now imported. Site identity — title, tagline, logo, and favicon — is taken over from the WordPress site, replacing the starter template's placeholders. Internal links in imported content are rewritten to root-relative URLs so they stay on the new site instead of pointing back to the old WordPress domain. Fetches the full media library instead of the first 500 files, supports sites with plain permalinks via a ?rest_route= fallback, and the import screen accepts a migration key generated by the EmDash Exporter plugin wizard.

Patch Changes

  • #1741 1866fa3 Thanks @swissky! - Sets Cache-Control: private, no-store on the admin shell response so shared caches never store the admin HTML. Without an explicit header, caches that apply RFC 9111 heuristic freshness (for example Cloudflare's Workers Cache) could store an authenticated 200 and replay it to anonymous visitors instead of the login redirect.

  • #1738 a3ec23d Thanks @marcusbellamyshaw-cell! - Fixes admin media uploads to S3-compatible storage (R2, S3, Minio, etc.) being blocked by the Content-Security-Policy when the storage endpoint is a different origin than the site. The signed upload URL's origin is now allowed in connect-src.

  • #1726 cdca719 Thanks @MA2153! - Fixes slow collection-list pages on SQLite/D1: folded taxonomy-term hydration now drives its subquery from the content–taxonomy pivot instead of scanning every term in the locale per row, so list pages no longer read tens of thousands of rows on sites with large taxonomies.

  • #1837 ee5bfe6 Thanks @ascorbic! - Updates EmDash image rendering to use Astro's responsive image component for local media with known dimensions while preserving provider images and placeholder behavior.

  • #1746 a9e9dde Thanks @khoinguyenpham04! - Adds the internal media usage index foundation for upcoming usage-aware media workflows. This creates the usage index schema during migrations but does not change Media Library behavior yet.

  • #1746 a9e9dde Thanks @khoinguyenpham04! - Adds internal media usage index hardening for future reference tracking.

  • #1846 7d16d95 Thanks @khoinguyenpham04! - Adds internal media usage repair foundations for future usage-aware media workflows.

  • #1810 dd05063 Thanks @masonjames! - Fixes menu items added via the admin content picker from a custom collection linking to the collection archive (/projects/) instead of the selected entry (/projects/widget-co). Entry references now resolve like page and post items, including urlPattern support and per-locale resolution; items whose referenced entry no longer exists are hidden instead of pointing at the archive. Archive links (collection items without an entry reference) are unchanged.

  • #1822 e2dd273 Thanks @swissky! - Fixes object-cache reads hanging indefinitely after a request was cancelled mid-read. A namespace epoch read started by a request that disconnects (for example a bot aborting on a 404) could leave a never-settling shared promise behind, wedging every later read of that namespace until the isolate was recycled. Waiting requests now bound the shared read with their own timer, dead reads are reclaimed after a deadline, and in-flight reads survive the originating request's cancellation where the platform allows.

  • #1732 92fd412 Thanks @ascorbic! - Fixes the plugin registration example in the emdash() options JSDoc: plugins are registered as default-export descriptors (plugins: [auditLog]), not via auditLogPlugin()-style factory calls, which have never existed.

  • #1729 932f4ba Thanks @MA2153! - Speeds up taxonomy term lookups on SQLite/D1 by adding a composite taxonomies(name, locale) index. Previously the query planner scanned every term in a locale to resolve a single taxonomy, so pages rendering several facets paid a full-locale scan per facet on sites with large taxonomies. A forward-only migration adds the index and drops the now-redundant single-column name index.

  • Updated dependencies [c1e2c3e, b36d15c, 99b8a33, b6ba0d7, fd8ff27, 15b4d2d]:

    • @emdash-cms/admin@0.28.0
    • @emdash-cms/auth@0.28.0
    • @emdash-cms/gutenberg-to-portable-text@0.28.0

Don't miss a new emdash release

NewReleases is sending notifications on new releases.