Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
docs | 8f5895c | May 06 2026, 10:25 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-i18n | 8f5895c | May 06 2026, 10:25 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-perf-coordinator | 8f5895c | May 06 2026, 10:25 AM |
Scope checkThis PR touches 29 files. PRs with a broad scope are harder to review. Please confirm the scope hasn't drifted beyond the intended change. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-demo-cache | 8f5895c | May 06 2026, 10:26 AM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-playground | 8f5895c | May 06 2026, 10:26 AM |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/blocks
@emdash-cms/cloudflare
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
c64e8f7 to
7e1ab0e
Compare
c6b02a8 to
50f4712
Compare
50f4712 to
8f5895c
Compare
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@emdash-cms/blocks@0.10.0
Minor Changes
5eb4318Thanks @lsngmin! - Add Tab block to Block Kit for tabbed panel layoutsemdash@0.10.0
Minor Changes
#916
71f4e7dThanks @Rimander! - Adds i18n support to menus and taxonomies (categories, tags, customdefinitions), mirroring the per-locale model already in place for content.
Each row carries
localeandtranslation_group; translations of thesame menu/term/def share a
translation_group._emdash_menu_items.reference_idand
content_taxonomies.taxonomy_idare remapped to store the referencedrow's translation_group, so a single association survives content
translations and is resolved against the active locale at runtime.
getMenu,getTaxonomyTerms,getTerm,getEntryTerms,getAllTermsForEntries, …) accept an optional{ locale }and honour thei18n fallback chain; when no locale is given they fall back to the
request context and
defaultLocale, matchinggetEmDashCollection/getEmDashEntry.?locale=xx; POST endpoints acceptlocaleandtranslationOfin their bodies. New endpoints:GET/POST /_emdash/api/menus/:name/translationsandGET/POST /_emdash/api/taxonomies/:name/terms/:slug/translations.assignments (the pivot is locale-agnostic, so the copied rows apply to
the whole translation group).
taxonomy_list,taxonomy_list_terms,taxonomy_create_term,menu_list,menu_getacceptlocale. New tools:taxonomy_term_translations,menu_translations.TaxonomyManagerandMenuListsurface aLocaleSwitcherwhenmultiple locales are configured and thread the active locale through
all API calls.
TaxonomyManagerexposes a "Translate" action per termthat creates the translation and switches to the new locale.
No breaking changes for new installs or single-locale upgrades — defaults
are additive (locale defaults to
'en'when omitted, reproducing pre-i18nbehaviour).
#902
7e32092Thanks @ascorbic! -emdash plugin initnow prompts for the plugin format (sandboxed or native) when run interactively, and the scaffolded boilerplate matches the canonical patterns from the docs. Both formats now ship adist/build via tsdown, declare a samplestoragecollection, and demonstrate a hook plus an API route. The sandboxed entry uses an explicitly typedContentSaveEvent; the native entry forwards options throughcreatePlugin. The descriptoridis now derived from the slug instead of the full scoped package name, so scoped names like@org/my-pluginproduce a runtime-valid id. Pass--format=sandboxed,--format=native, or--nativeto skip the prompt; non-TTY runs continue to default to sandboxed.Patch Changes
#701
a2d3658Thanks @lsngmin! - Fixes MediaValue.src returning bare media ID instead of a usable URL for local media#912
c8a3a2cThanks @lsngmin! - Permanent-delete API now refuses to remove live (non-trashed) rows and uses a content-domaincontent:delete_permanentpermission instead of the unrelatedimport:execute. Existing audience (ADMIN-only) is unchanged.#896
699e1b3Thanks @cristianuibar! - Fixes 500 error onGET /_emdash/api/dashboardwhen running on Cloudflare D1 with many title-bearing collections.fetchRecentItemsnow issues one query per collection in parallel and merges results in JS instead of building a single chainedUNION ALL, which trips D1'sSQLITE_LIMIT_COMPOUND_SELECTcap once enough collections are present (Dashboard 500 on D1: fetchRecentItems UNION ALL exceeds SQLITE_LIMIT_COMPOUND_SELECT #895).#719
2e2b8e9Thanks @ascorbic! - Fixes thefilefield type rendering as a plain text input in the content editor. Adds aFileFieldRendererthat opens the media picker (with mime filter disabled) so any file type can be attached. Also adds ahideUrlInputprop toMediaPickerModalso non-image pickers can hide the image-specific "Insert from URL" input.Aligns the Zod schema and generated TypeScript types for
imageandfilefields with the shape the admin actually stores:provider?,meta?(for both), andpreviewUrl?(for image). Previously these fields were stripped on validation and missing from generated types, so site code could not reliably resolve local media URLs frommeta.storageKey.#911
9146931Thanks @masonjames! - Fixes WordPress media URL rewriting for imported image URLs that use generated size suffixes.Updated dependencies [
c8a3a2c,2e2b8e9]:@emdash-cms/admin@0.10.0
Patch Changes
#719
2e2b8e9Thanks @ascorbic! - Fixes thefilefield type rendering as a plain text input in the content editor. Adds aFileFieldRendererthat opens the media picker (with mime filter disabled) so any file type can be attached. Also adds ahideUrlInputprop toMediaPickerModalso non-image pickers can hide the image-specific "Insert from URL" input.Aligns the Zod schema and generated TypeScript types for
imageandfilefields with the shape the admin actually stores:provider?,meta?(for both), andpreviewUrl?(for image). Previously these fields were stripped on validation and missing from generated types, so site code could not reliably resolve local media URLs frommeta.storageKey.Updated dependencies [
5eb4318]:@emdash-cms/auth@0.10.0
Patch Changes
c8a3a2cThanks @lsngmin! - Permanent-delete API now refuses to remove live (non-trashed) rows and uses a content-domaincontent:delete_permanentpermission instead of the unrelatedimport:execute. Existing audience (ADMIN-only) is unchanged.@emdash-cms/auth-atproto@0.2.2
Patch Changes
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:@emdash-cms/cloudflare@0.10.0
Patch Changes
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:create-emdash@0.10.0
Patch Changes
b3d1f40Thanks @mvanhorn! - Fixes interactiveProject name?prompt to accept.for the current directory. The flag-positional path already accepted.(validated byvalidateProjectName), but the prompt's inline regex check rejected it, so users runningnpm create emdash@latestwith no arguments could not scaffold into the current directory. The prompt now usesvalidateProjectNamedirectly for parity, and its message hints at the.option.@emdash-cms/plugin-atproto@0.1.3
Patch Changes
#918
1e0cb76Thanks @ascorbic! - Updates declared capabilities to the current names (content:read,content:write,media:read,media:write,network:request,network:request:unrestricted) instead of the deprecated aliases. Plugin descriptors now report the package's own version instead of a stale hard-coded literal.Updated dependencies [
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:@emdash-cms/plugin-audit-log@0.1.3
Patch Changes
#918
1e0cb76Thanks @ascorbic! - Updates declared capabilities to the current names (content:read,content:write,media:read,media:write,network:request,network:request:unrestricted) instead of the deprecated aliases. Plugin descriptors now report the package's own version instead of a stale hard-coded literal.Updated dependencies [
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:@emdash-cms/plugin-embeds@0.1.10
Patch Changes
a2d3658,c8a3a2c,699e1b3,71f4e7d,5eb4318,7e32092,2e2b8e9,9146931]:@emdash-cms/plugin-forms@0.2.1
Patch Changes
#918
1e0cb76Thanks @ascorbic! - Updates declared capabilities to the current names (content:read,content:write,media:read,media:write,network:request,network:request:unrestricted) instead of the deprecated aliases. Plugin descriptors now report the package's own version instead of a stale hard-coded literal.Updated dependencies [
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:@emdash-cms/plugin-webhook-notifier@0.1.3
Patch Changes
#918
1e0cb76Thanks @ascorbic! - Updates declared capabilities to the current names (content:read,content:write,media:read,media:write,network:request,network:request:unrestricted) instead of the deprecated aliases. Plugin descriptors now report the package's own version instead of a stale hard-coded literal.Updated dependencies [
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:@emdash-cms/gutenberg-to-portable-text@0.10.0
@emdash-cms/x402@0.10.0
@emdash-cms/fixture-perf-site@0.0.5
Patch Changes
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,2e2b8e9,9146931]:@emdash-cms/perf-demo-site@0.0.5
Patch Changes
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,1e0cb76,2e2b8e9,9146931]:@emdash-cms/cache-demo-site@0.0.5
Patch Changes
a2d3658,c8a3a2c,699e1b3,71f4e7d,7e32092,1e0cb76,2e2b8e9,9146931]: