github emdash-cms/emdash emdash@0.34.0

latest releases: @emdash-cms/cloudflare@0.34.0, @emdash-cms/plugin-embeds@0.1.42
3 hours ago

Minor Changes

  • #2354 a9ace36 Thanks @masonjames! - Adds MCP tools for safely updating collections and fields without deleting and recreating their schemas.

  • #2187 6a77862 Thanks @logelog! - Add a trusted plugin extension point for contributing isolated, host-framed panels to the saved content editor settings sidebar. Panels support collection and role filtering, deterministic ordering, manifest lifecycle checks, and render-error recovery.

  • #1973 5224b57 Thanks @CacheMeOwside! - Adds titleField and dateField optional collection options to choose which field is used as an entry's title and which date the content list shows and sorts by.

  • #2194 2d5fb0b Thanks @logelog! - Adds collection-configured custom field columns to admin content lists. Collection seeds and schema APIs can declare up to four supported fields through admin.listColumns; EmDash validates them when building the manifest and renders their stored values between the title and status columns.

  • #2342 f8a4fce Thanks @fbartolitsch! - Fixes localized taxonomy navigation and editor choices so each admin surface follows the active content locale. Public taxonomy helpers now report visible term counts for the active content locale instead of combining assignments across translations.

  • #2213 e5cda04 Thanks @logelog! - Adds server-side filtering for indexed custom fields through the REST client and plugin content list APIs.

  • #2212 fefb702 Thanks @logelog! - Adds opt-in database indexes for scalar custom fields and stable cursor pagination when ordering content lists by those fields.

  • #2499 1c4d4f0 Thanks @ascorbic! - Adds middleware.outer configuration for returning responses before EmDash initializes and finalizing fully mutated responses after rendering.

  • #1947 8313255 Thanks @swissky! - Adds the authenticated caller to plugin route handlers. Private plugin API routes now receive the requesting user as ctx.user (native format) / routeCtx.user (standard format) — { id, email, name, role, createdAt } — so plugins can implement per-user logic without trusting a user id from the request body. Public routes and machine tokens with no bound user receive undefined.

  • #2469 ef32567 Thanks @helio-cf! - Generates precise TypeScript types for repeater fields. Type generation emitted unknown for every repeater, so consuming code had to declare row shapes by hand and cast to them. It now emits an inline row type built from the field's sub-fields, with enumerated options for a select sub-field and the media object shape for an image sub-field. A sub-field that is not required is typed as nullable, matching what content validation accepts, and a repeater with no sub-fields still emits unknown.

    Regenerate types after upgrading. Code that casts a repeater to a hand-written row type may now report errors where that type has drifted from the schema.

  • #2431 88f29f3 Thanks @MA2153! - Adds GET, PUT, and DELETE on /_emdash/api/taxonomies/{name} plus GET /_emdash/api/taxonomies/{name}/translations, so a taxonomy definition can be read, edited, and removed rather than only listed and created. GET and PUT address one locale's definition via ?locale=; DELETE takes no locale and removes the taxonomy outright — every locale's definition, every term under that name, and those terms' content assignments.

  • #2195 4c565ea Thanks @logelog! - Allow trusted React plugins to add manifest-aware, role-filtered content-list columns without taking ownership of the host table, pagination, or row actions.

  • #2505 5828233 Thanks @ascorbic! - Adds native Unicode slugs and requires published entries in routable collections to have a slug. Collections used only for internal or referenced content can set routable: false before publishing slugless entries.

Patch Changes

  • #2305 f59f36d Thanks @edrpls! - Fixes 404 logging for content misses. Templates answer a missing entry with a redirect to /404, which previously left the real missed path unrecorded — the log only ever accumulated one aggregate "/404" row. Misses are now logged under the path the visitor actually requested, and hits on the /404 error page itself are no longer logged.

  • #2374 70f9ddc Thanks @danielmlr! - Fixes returning visitors getting a page without CSS or JavaScript after a deploy that changed only code. Cached routes now revalidate against the build as well as the content, so a browser holding HTML from an earlier deployment is served a fresh page instead of a 304 pointing at asset files that deployment no longer has.

  • #2443 3ceabc4 Thanks @khoinguyenpham04! - Adds automatic, resumable background indexing so Media Usage can safely catch up on existing content without processing the whole site at once.

  • #2512 515c08d Thanks @ascorbic! - Adds scheduler heartbeat health to the admin dashboard and warns when scheduled content is overdue because maintenance has never run or has stopped running.

  • #2422 e28963b Thanks @khoinguyenpham04! - Adds resource limits to durable Media Usage indexing so already-oversized changed projections are rejected before the worker updates their index.

  • #2460 d236776 Thanks @ascorbic! - Fixes publishing collections without revision support so current content remains intact.

  • #2459 6602ae0 Thanks @ascorbic! - Fixes live collection filters so taxonomy names attached only to other collections no longer override matching content fields.

  • #2427 6d29cee Thanks @logelog! - Fixes MCP taxonomy term pagination so manually ordered terms are returned without gaps or duplicates.

  • #2324 c9d5ebd Thanks @khoinguyenpham04! - Fixes retention of superseded media-usage projection generations during scheduled maintenance.

  • #2312 a159b44 Thanks @MA2153! - Adds a byline filter to the admin content list. Pick one or more bylines to see entries credited to any of them, or filter to entries with no byline assigned. Bylines inferred from an entry's author are ignored unless you turn on "Include inferred bylines".

  • #2191 9e74e59 Thanks @logelog! - Include schema fields marked searchable in admin content-list search, using the collection FTS index when available and a cross-dialect substring fallback otherwise.

  • #2506 5289385 Thanks @ascorbic! - Fixes inline taxonomy term creation for Unicode-only labels and adds numeric suffixes when generated term slugs collide.

  • #2313 be283e2 Thanks @edrpls! - Fixes full-text search matching Portable Text's internal JSON instead of just prose. Searches for structural tokens like "normal", "span", or "block" no longer match documents whose visible text doesn't contain them, and search snippets show prose instead of JSON fragments. Existing search indexes are rebuilt automatically by a migration on upgrade — no manual reindex needed.

  • #2314 3d89f87 Thanks @edrpls! - Fixes content saves re-tokenizing the full search index even when nothing searchable changed. Metadata-only saves (status changes, scheduling, autosave version bumps) no longer rewrite the FTS index, cutting save CPU and write-ahead-log volume on large documents. Existing deployments pick up the guarded triggers through the FTS rebuild migration.

  • #2489 13db62c Thanks @ascorbic! - Fixes file fields to accept persisted media references with incomplete cached metadata while preserving provider data and legacy URLs.

  • #2504 cd4268d Thanks @ascorbic! - Fixes image processing hangs caused by malformed ICNS, HEIF, and JXL headers in media and plugin artifacts.

  • #2500 5394ecd Thanks @ascorbic! - Fixes live-loader entries to expose explicit byline credits through data.bylines and data.byline.

  • #2402 49bc75e Thanks @danielmlr! - Fixes the editor's word-count footer showing English in every admin language. The word, character, and reading-time metrics now go through the translation catalogs and use each language's plural rules.

  • #2218 8300c64 Thanks @khoinguyenpham04! - Updates media management and selection throughout the admin with clearer asset details, previews, and editing workflows, while keeping stored image metadata consistent across validation and generated types.

  • #2466 4e76317 Thanks @danielmlr! - Fixes a crash that made publishing content fail with an internal error.

  • #2501 ed1e79c Thanks @ascorbic! - Fixes public menu rendering so content and taxonomy links are resolved in batches instead of issuing database queries for each item.

  • #2458 7385d43 Thanks @ascorbic! - Fixes content saves accepting repeater values that violate item limits or nested field requirements.

  • #2511 40953d0 Thanks @ascorbic! - Adds scheduler-wiring diagnostics to emdash doctor, with actionable fixes for missing Cloudflare Cron Triggers and scheduled handlers.

  • #2433 0cd7c73 Thanks @khoinguyenpham04! - Fixes collection deletion so it can safely resume after an interruption and clean up related Media Usage data in the background.

  • #2502 9b99822 Thanks @ascorbic! - Fixes inline Portable Text editing so dropping or pasting files no longer navigates away from unsaved work and instead explains how to insert images.

  • #2493 2398b8d Thanks @ascorbic! - Fixes Portable Text editing so content with unsupported marks is blocked with a clear error instead of silently losing those marks.

  • #2457 d7fe781 Thanks @ascorbic! - Fixes concurrent content saves so revision pruning cannot remove newly created draft revisions.

  • #2461 598e6fb Thanks @ascorbic! - Fixes taxonomy assignments so adding or removing a term from one content translation updates every locale while preserving existing assignments during upgrade.

  • #2385 8008772 Thanks @danielmlr! - Skips the default /sitemap-[collection].xml route injection when the host site defines its own, matching the existing behaviour for robots.txt and sitemap.xml.

  • #2394 170c966 Thanks @khoinguyenpham04! - Adds bounded controls for listing and retrying durable Media Usage indexing work.

  • #2250 4831f77 Thanks @marcusbellamyshaw-cell! - Fixes the default media upload allowlist accepting image/svg+xml via its bare "image/" prefix match, with no upload-time content validation for SVG. A logged-in Contributor+ user could upload an SVG containing an embedded <script>; the global allowlist now enumerates safe raster types (image/png, image/jpeg, image/gif, image/webp) explicitly instead of prefix-matching all image/*. Fields that explicitly configure image/svg+xml in their own allowedMimeTypes are unaffected.

  • #2410 5a5adb7 Thanks @danielmlr! - Fixes text alignment on public pages. Text centered, right-aligned, or justified in the editor now renders that way instead of falling back to the default alignment.

  • #2494 ae87ce8 Thanks @ascorbic! - Fixes plugin content updates in revision-enabled collections so writes are staged as drafts and preserved when published.

  • #2498 48806e2 Thanks @ascorbic! - Fixes plugin-created content to use an explicit or configured default locale instead of always falling back to English.

  • #2488 144e378 Thanks @ascorbic! - Fixes taxonomy definitions and terms created without a locale so they use the site's current default locale, and warns when historical taxonomy rows use unconfigured locales.

  • #2136 6d9a0d5 Thanks @dchaudhari7177! - Standard-format plugins (definePlugin(...)) run trusted via plugins: [] now receive the public single-arg RouteContext in their route handlers. Previously the in-process adapter always used the sandboxed two-arg calling convention, so a handler written against the exported RouteContext API got only { input, request, requestMeta } at runtime — ctx.storage, ctx.email, ctx.kv, and every other capability surface were undefined and any route touching them threw. Sandbox-format entries (no id on the default export) keep the two-arg flattened convention unchanged.

  • #2508 5c216c2 Thanks @ascorbic! - Fixes localized taxonomy assignments so the editor shows the configured default-locale variant or an unresolved translation prompt instead of hiding the assignment, and identifies the stored content locale and implicit English default.

  • Updated dependencies [6a77862, 515c08d, 5224b57, 2d5fb0b, a159b44, f8a4fce, 7708015, 5289385, 592a0e3, 13db62c, fefb702, 49bc75e, 8300c64, 2398b8d, 964f51e, 318b821, 4c565ea, 5828233, 5c216c2]:

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

Don't miss a new emdash release

NewReleases is sending notifications on new releases.