emdash@0.34.0
Minor Changes
-
#2354
a9ace36Thanks @masonjames! - Adds MCP tools for safely updating collections and fields without deleting and recreating their schemas. -
#2187
6a77862Thanks @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
5224b57Thanks @CacheMeOwside! - AddstitleFieldanddateFieldoptional collection options to choose which field is used as an entry's title and which date the content list shows and sorts by. -
#2194
2d5fb0bThanks @logelog! - Adds collection-configured custom field columns to admin content lists. Collection seeds and schema APIs can declare up to four supported fields throughadmin.listColumns; EmDash validates them when building the manifest and renders their stored values between the title and status columns. -
#2342
f8a4fceThanks @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
e5cda04Thanks @logelog! - Adds server-side filtering for indexed custom fields through the REST client and plugin content list APIs. -
#2212
fefb702Thanks @logelog! - Adds opt-in database indexes for scalar custom fields and stable cursor pagination when ordering content lists by those fields. -
#2499
1c4d4f0Thanks @ascorbic! - Addsmiddleware.outerconfiguration for returning responses before EmDash initializes and finalizing fully mutated responses after rendering. -
#1947
8313255Thanks @swissky! - Adds the authenticated caller to plugin route handlers. Private plugin API routes now receive the requesting user asctx.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 receiveundefined. -
#2469
ef32567Thanks @helio-cf! - Generates precise TypeScript types for repeater fields. Type generation emittedunknownfor 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 aselectsub-field and the media object shape for animagesub-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 emitsunknown.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
88f29f3Thanks @MA2153! - AddsGET,PUT, andDELETEon/_emdash/api/taxonomies/{name}plusGET /_emdash/api/taxonomies/{name}/translations, so a taxonomy definition can be read, edited, and removed rather than only listed and created.GETandPUTaddress one locale's definition via?locale=;DELETEtakes no locale and removes the taxonomy outright — every locale's definition, every term under that name, and those terms' content assignments. -
#2195
4c565eaThanks @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
5828233Thanks @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 setroutable: falsebefore publishing slugless entries.
Patch Changes
-
#2305
f59f36dThanks @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
70f9ddcThanks @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
3ceabc4Thanks @khoinguyenpham04! - Adds automatic, resumable background indexing so Media Usage can safely catch up on existing content without processing the whole site at once. -
#2512
515c08dThanks @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
e28963bThanks @khoinguyenpham04! - Adds resource limits to durable Media Usage indexing so already-oversized changed projections are rejected before the worker updates their index. -
#2460
d236776Thanks @ascorbic! - Fixes publishing collections without revision support so current content remains intact. -
#2459
6602ae0Thanks @ascorbic! - Fixes live collection filters so taxonomy names attached only to other collections no longer override matching content fields. -
#2427
6d29ceeThanks @logelog! - Fixes MCP taxonomy term pagination so manually ordered terms are returned without gaps or duplicates. -
#2324
c9d5ebdThanks @khoinguyenpham04! - Fixes retention of superseded media-usage projection generations during scheduled maintenance. -
#2312
a159b44Thanks @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
9e74e59Thanks @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
5289385Thanks @ascorbic! - Fixes inline taxonomy term creation for Unicode-only labels and adds numeric suffixes when generated term slugs collide. -
#2313
be283e2Thanks @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
3d89f87Thanks @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
13db62cThanks @ascorbic! - Fixes file fields to accept persisted media references with incomplete cached metadata while preserving provider data and legacy URLs. -
#2504
cd4268dThanks @ascorbic! - Fixes image processing hangs caused by malformed ICNS, HEIF, and JXL headers in media and plugin artifacts. -
#2500
5394ecdThanks @ascorbic! - Fixes live-loader entries to expose explicit byline credits throughdata.bylinesanddata.byline. -
#2402
49bc75eThanks @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
8300c64Thanks @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
4e76317Thanks @danielmlr! - Fixes a crash that made publishing content fail with an internal error. -
#2501
ed1e79cThanks @ascorbic! - Fixes public menu rendering so content and taxonomy links are resolved in batches instead of issuing database queries for each item. -
#2458
7385d43Thanks @ascorbic! - Fixes content saves accepting repeater values that violate item limits or nested field requirements. -
#2511
40953d0Thanks @ascorbic! - Adds scheduler-wiring diagnostics toemdash doctor, with actionable fixes for missing Cloudflare Cron Triggers and scheduled handlers. -
#2433
0cd7c73Thanks @khoinguyenpham04! - Fixes collection deletion so it can safely resume after an interruption and clean up related Media Usage data in the background. -
#2502
9b99822Thanks @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
2398b8dThanks @ascorbic! - Fixes Portable Text editing so content with unsupported marks is blocked with a clear error instead of silently losing those marks. -
#2457
d7fe781Thanks @ascorbic! - Fixes concurrent content saves so revision pruning cannot remove newly created draft revisions. -
#2461
598e6fbThanks @ascorbic! - Fixes taxonomy assignments so adding or removing a term from one content translation updates every locale while preserving existing assignments during upgrade. -
#2385
8008772Thanks @danielmlr! - Skips the default/sitemap-[collection].xmlroute injection when the host site defines its own, matching the existing behaviour forrobots.txtandsitemap.xml. -
#2394
170c966Thanks @khoinguyenpham04! - Adds bounded controls for listing and retrying durable Media Usage indexing work. -
#2250
4831f77Thanks @marcusbellamyshaw-cell! - Fixes the default media upload allowlist acceptingimage/svg+xmlvia 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 allimage/*. Fields that explicitly configureimage/svg+xmlin their ownallowedMimeTypesare unaffected. -
#2410
5a5adb7Thanks @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
ae87ce8Thanks @ascorbic! - Fixes plugin content updates in revision-enabled collections so writes are staged as drafts and preserved when published. -
#2498
48806e2Thanks @ascorbic! - Fixes plugin-created content to use an explicit or configured default locale instead of always falling back to English. -
#2488
144e378Thanks @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
6d9a0d5Thanks @dchaudhari7177! - Standard-format plugins (definePlugin(...)) run trusted viaplugins: []now receive the public single-argRouteContextin their route handlers. Previously the in-process adapter always used the sandboxed two-arg calling convention, so a handler written against the exportedRouteContextAPI got only{ input, request, requestMeta }at runtime —ctx.storage,ctx.email,ctx.kv, and every other capability surface wereundefinedand any route touching them threw. Sandbox-format entries (noidon the default export) keep the two-arg flattened convention unchanged. -
#2508
5c216c2Thanks @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