This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
ReleasePort's take
Light signal@emdash-cms/admin 0.12.0 adds site-wide Open Graph image defaults and fixes media library infinite scrolling for libraries over 50 items, plus a stale ref race in slash command keyboard handlers.
Why it matters: Site-wide OG defaults improve SEO without per-page config; media scaling fix unblocks admins with large asset libraries. Upgrade on next routine cycle.
Summary
AI summaryAdds site‑wide default Open Graph image support and fixes media library infinite scrolling.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds site-wide default Open Graph image support in admin SEO settings. Adds site-wide default Open Graph image support in admin SEO settings. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Medium |
EmDashHead.astro automatically emits og:image, twitter:image, and JSON-LD image for pages without custom images. EmDashHead.astro automatically emits og:image, twitter:image, and JSON-LD image for pages without custom images. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Feature | Low |
Adds `localOnly` prop to `MediaPickerModal` to restrict selection to locally stored media. Adds `localOnly` prop to `MediaPickerModal` to restrict selection to locally stored media. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Dependency | Medium |
@emdash-cms/blocks updated to version 0.12.0. @emdash-cms/blocks updated to version 0.12.0. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Performance | Low |
Invalidates worker-scoped site-settings cache on media metadata updates or deletes to keep resolved URLs and dimensions synchronized. Invalidates worker-scoped site-settings cache on media metadata updates or deletes to keep resolved URLs and dimensions synchronized. Source: granite4.1:30b@2026-05-23-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes stale ref race in slash command menu's keyboard handlers. Fixes stale ref race in slash command menu's keyboard handlers. Source: llm_adapter@2026-05-21 Confidence: high |
— |
| Bugfix | Medium |
Media library admin page supports libraries larger than 50 items with cursor-based infinite scroll. Media library admin page supports libraries larger than 50 items with cursor-based infinite scroll. Source: llm_adapter@2026-05-21 Confidence: low |
— |
| Bugfix | Medium |
Media picker modal supports libraries larger than 50 items with cursor-based infinite scroll. Media picker modal supports libraries larger than 50 items with cursor-based infinite scroll. Source: llm_adapter@2026-05-21 Confidence: low |
— |
Full changelog
Minor Changes
-
#997
7b45cbaThanks @ascorbic! - Adds support for a site-wide default Open Graph image. The setting is exposed in the admin SEO settings page (Settings -> SEO -> Default Social Image), resolved to a URL on read bygetSiteSettings(), and automatically emitted asog:image/twitter:image(and BlogPosting JSON-LDimage) byEmDashHead.astrowhenever a page has no image of its own. Per-page images still take precedence.This wires up an existing data model that was previously defined in the schema and MCP tools but never used: stored values were not resolved and no template path read the setting.
Emitted URLs are absolutized using
SiteSettings.url, the page'ssiteUrl, or the request origin so crawlers and JSON-LD consumers that reject relative URLs work correctly.Also adds a
localOnlyprop toMediaPickerModalthat suppresses the "Insert from URL" input and external provider tabs. Used by SEO settings to ensure the picker only returns locally-stored media (since the setting only persists a localmediaId).Media metadata updates and deletes now invalidate the worker-scoped site-settings cache, so resolved logo/favicon/default-social-image URLs and dimensions stay in sync with the underlying media row.
Patch Changes
-
#996
19576beThanks @r2sake! - Fix media library admin page and the media picker modal (used by the rich text editor and image fields when embedding media into content) to support libraries larger than 50 items by wiring up cursor-based infinite scroll (mirrors the content list fix from #135) -
#1004
35791ffThanks @ascorbic! - Fixes a stale ref race in the slash command menu's keyboard handlers. The state ref was synced viauseEffect(post-commit), so TipTap's Suggestion plugin could read stale state when invokingonKeyDownsynchronously -- causing Enter to occasionally fail to execute commands and arrow navigation to skip selections on slower runs. -
Updated dependencies []:
- @emdash-cms/[email protected]
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
- [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.
- v@emdash-cms/[email protected] Menu and menu-item API responses now camelCase, breaking clients expecting snake_case keys.
Beta — feedback welcome: [email protected]