github emdash-cms/emdash create-emdash@0.9.0

latest releases: @emdash-cms/x402@0.9.0, @emdash-cms/plugin-forms@0.2.0, @emdash-cms/plugin-embeds@0.1.9...
7 hours ago

Minor Changes

  • #859 3015280 Thanks @ask-bonk! - Adds non-interactive mode to create-emdash for CI / scripted scaffolding (#711). Pass --template, --platform, --pm, --install/--no-install, --yes, and --force to skip prompts; partial flag use only prompts for unset fields. Interactive flow is unchanged when no flags are supplied.

    • --template <key> accepts a bare template (blog | starter | marketing | portfolio) or the combined form <platform>:<key> (e.g. cloudflare:blog).
    • --pm <key> (alias --package-manager) selects the package manager.
    • --yes / -y accepts defaults for any unset field (cloudflare, blog, detected pm, my-site for an unset name).
    • --force is required alongside --yes to overwrite a non-empty target directory; without it, the CLI refuses rather than silently clobbering files.
    • --help / -h prints usage. Unknown flags fail loudly so typos don't silently drop into interactive mode.
    • An extra positional argument (e.g. npm create emdash my blog with a space instead of a hyphen) is now rejected as a likely typo.

    No new dependencies — built on node:util's parseArgs.

  • #811 cee403d Thanks @ascorbic! - Scaffolds a fresh EMDASH_ENCRYPTION_KEY into .dev.vars (Cloudflare
    templates) or .env (Node templates) on project creation, and ensures the
    file is gitignored. Idempotent — won't overwrite an existing key on re-runs.

Patch Changes

  • #852 e73bb5f Thanks @ask-bonk! - Removes the "Blank" template from the npm create emdash picker. The minimal-content template is starter; the previously listed blank only existed for the Node.js path (never Cloudflare) and was confusing. Pick Starter for a minimal site on either platform.

  • #869 a8bac5d Thanks @ask-bonk! - Fixes autosave validation errors on content seeded from the blog,
    portfolio, and starter templates (issue #867).

    Two related issues:

    • _key was strictly required on Portable Text blocks by the
      generated Zod schema, but the rest of the block schema is
      .passthrough() and the editor regenerates _key on every change,
      so requiring it on input rejected legitimate seed/import data
      without protecting any real invariant. _key is now optional in the
      validator.
    • The portfolio template shipped featured_image as bare URL strings.
      image fields validate as { id, ... } objects, so any user who
      edited a different field on a portfolio entry hit
      featured_image: expected object, received string. The portfolio
      seeds now use $media references in the same shape as the blog
      template, and every shipped template seed has stable _keys on its
      Portable Text nodes.

    A regression test runs every shipped template seed through the same
    validator the autosave endpoint uses, so future template changes that
    break this invariant fail before release.

Don't miss a new emdash release

NewReleases is sending notifications on new releases.