9.0 KiB
create-emdash
0.29.0
0.28.1
0.28.0
0.27.0
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
Patch Changes
-
#1403
34dd430Thanks @scottbuscemi! - Scaffold local secrets into.envfor every platform, including Cloudflare — previously Cloudflare projects got.dev.vars.Since August 2025, Wrangler and the Cloudflare Vite plugin read
.envfiles in local development, so there's no longer a reason to split Node (.env) and Workers (.dev.vars). New projects now writeEMDASH_ENCRYPTION_KEYto a single.envfile regardless of platform, matching the dotenv convention most developers already expect.This is a deliberate, pre-1.0 hard switch away from
.dev.vars. It's called out as a minor bump rather than a patch because the scaffolded file changes name and the surrounding docs/guidance change with it.Backwards compatibility / upgrade notes:
- Existing projects are unaffected — a
.dev.varsyou already have keeps working; Wrangler still reads it. - Wrangler loads either
.dev.varsor.env, never both: if a.dev.varsfile is present its values win and.envis ignored entirely. If you migrate an existing project to.env, move your secrets across and delete.dev.vars, otherwise the new.envis silently shadowed. - When scaffolding into a directory that still contains a
.dev.vars,create-emdashnow prints a warning explaining the shadowing rule so the encryption key actually loads.
emdash secrets generate --writealready accepted any path and is unchanged; only the documented/suggested target moves to.env. - Existing projects are unaffected — a
0.19.0
0.18.0
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
0.15.0
0.14.0
Patch Changes
- #1115
792f73cThanks @ascorbic! - PinspackageManagerfor pnpm-scaffolded sites so a recent enough pnpm is used (settings-onlypnpm-workspace.yamlrequires pnpm 10.5+). For npm, yarn, or bun selections the field is stripped so corepack doesn't force pnpm on a non-pnpm user.
0.13.0
0.12.0
0.11.1
0.11.0
0.10.0
Patch Changes
- #900
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.
0.9.0
Minor Changes
-
#859
3015280Thanks @ask-bonk! - Adds non-interactive mode tocreate-emdashfor CI / scripted scaffolding (#711). Pass--template,--platform,--pm,--install/--no-install,--yes, and--forceto 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/-yaccepts defaults for any unset field (cloudflare, blog, detected pm,my-sitefor an unset name).--forceis required alongside--yesto overwrite a non-empty target directory; without it, the CLI refuses rather than silently clobbering files.--help/-hprints usage. Unknown flags fail loudly so typos don't silently drop into interactive mode.- An extra positional argument (e.g.
npm create emdash my blogwith a space instead of a hyphen) is now rejected as a likely typo.
No new dependencies — built on
node:util'sparseArgs. -
#811
cee403dThanks @ascorbic! - Scaffolds a freshEMDASH_ENCRYPTION_KEYinto.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
e73bb5fThanks @ask-bonk! - Removes the "Blank" template from thenpm create emdashpicker. The minimal-content template isstarter; the previously listedblankonly existed for the Node.js path (never Cloudflare) and was confusing. PickStarterfor a minimal site on either platform. -
#869
a8bac5dThanks @ask-bonk! - Fixes autosave validation errors on content seeded from the blog, portfolio, and starter templates (issue #867).Two related issues:
_keywas strictly required on Portable Text blocks by the generated Zod schema, but the rest of the block schema is.passthrough()and the editor regenerates_keyon every change, so requiring it on input rejected legitimate seed/import data without protecting any real invariant._keyis now optional in the validator.- The portfolio template shipped
featured_imageas bare URL strings.imagefields validate as{ id, ... }objects, so any user who edited a different field on a portfolio entry hitfeatured_image: expected object, received string. The portfolio seeds now use$mediareferences 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.
0.8.0
Minor Changes
- #785
e0dd616Thanks @MattieTK! - Adds support for positional directory argument, allowingnpm create emdash .to scaffold into the current directory andnpm create emdash my-projectto skip the interactive name prompt.
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Minor Changes
Patch Changes
-
#12
9db4c2cThanks @ascorbic! - Remove manual bootstrap step from CLI outputThe create-emdash CLI no longer suggests running
bootstrapas a manual step, since EmDash now auto-bootstraps on first run.
0.0.4
Patch Changes
- #7
2022b77Thanks @ascorbic! - Fix spinner hanging during dependency installation by using async exec instead of execSync, which was blocking the event loop and preventing the spinner animation from updating.
0.0.3
Patch Changes
- #5
8e389d5Thanks @ascorbic! - Improve create-emdash CLI experience: add the EmDash branded banner, let users pick their package manager (auto-detects the one that invoked it), and ask whether to install dependencies with a spinner showing progress.
0.0.2
Patch Changes
- #3
2dc5815Thanks @ascorbic! - Fix create-emdash to use all available templates from the new standalone templates repo. Templates are now selected in two steps: platform (Node.js or Cloudflare Workers) then template type (blog, starter, marketing, portfolio, blank). Downloads fromemdash-cms/templatesinstead of the old monorepo path.