Files
wehub-resource-sync b3a7f98e5a
CI / E2E Cloudflare (4/8) (push) Failing after 0s
CI / E2E Cloudflare (8/8) (push) Failing after 1s
CI / Lint (push) Failing after 1s
Auto Extract / Extract (push) Failing after 4s
CI / Version Check (push) Failing after 9s
CI / Integration Tests (push) Failing after 1s
CI / E2E tests (1/8) (push) Failing after 1s
CI / E2E tests (2/8) (push) Failing after 2s
CI / E2E tests (3/8) (push) Failing after 2s
CI / Browser Tests (push) Failing after 1s
CI / E2E tests (5/8) (push) Failing after 1s
CI / E2E Cloudflare (2/8) (push) Failing after 2s
CI / Typecheck (push) Failing after 1s
CI / Changeset Validation (push) Failing after 2s
CI / E2E Cloudflare (5/8) (push) Failing after 1s
CI / E2E Cloudflare (6/8) (push) Failing after 1s
CI / E2E Cloudflare (7/8) (push) Failing after 1s
CodeQL / Analyze (javascript-typescript) (push) Failing after 1s
Format / Format (push) Failing after 0s
CodeQL / Analyze (actions) (push) Failing after 4s
CI / E2E tests (4/8) (push) Failing after 1s
CI / E2E tests (6/8) (push) Failing after 1s
CI / E2E tests (7/8) (push) Failing after 2s
CI / E2E tests (8/8) (push) Failing after 1s
CI / E2E Cloudflare (1/8) (push) Failing after 1s
CI / E2E Cloudflare (3/8) (push) Failing after 2s
Preview Releases / Publish Preview (push) Failing after 0s
zizmor / Run zizmor (push) Failing after 1s
Release / Release (push) Failing after 2s
CI / Smoke Tests (push) Failing after 5m36s
CI / Tests (push) Failing after 6m36s
Release / Sync Templates (push) Has been skipped
CI / E2E Tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:23:53 +08:00

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 34dd430 Thanks @scottbuscemi! - Scaffold local secrets into .env for every platform, including Cloudflare — previously Cloudflare projects got .dev.vars.

    Since August 2025, Wrangler and the Cloudflare Vite plugin read .env files in local development, so there's no longer a reason to split Node (.env) and Workers (.dev.vars). New projects now write EMDASH_ENCRYPTION_KEY to a single .env file 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.vars you already have keeps working; Wrangler still reads it.
    • Wrangler loads either .dev.vars or .env, never both: if a .dev.vars file is present its values win and .env is ignored entirely. If you migrate an existing project to .env, move your secrets across and delete .dev.vars, otherwise the new .env is silently shadowed.
    • When scaffolding into a directory that still contains a .dev.vars, create-emdash now prints a warning explaining the shadowing rule so the encryption key actually loads.

    emdash secrets generate --write already accepted any path and is unchanged; only the documented/suggested target moves to .env.

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 792f73c Thanks @ascorbic! - Pins packageManager for pnpm-scaffolded sites so a recent enough pnpm is used (settings-only pnpm-workspace.yaml requires 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 b3d1f40 Thanks @mvanhorn! - Fixes interactive Project name? prompt to accept . for the current directory. The flag-positional path already accepted . (validated by validateProjectName), but the prompt's inline regex check rejected it, so users running npm create emdash@latest with no arguments could not scaffold into the current directory. The prompt now uses validateProjectName directly for parity, and its message hints at the . option.

0.9.0

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.

0.8.0

Minor Changes

  • #785 e0dd616 Thanks @MattieTK! - Adds support for positional directory argument, allowing npm create emdash . to scaffold into the current directory and npm create emdash my-project to 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 9db4c2c Thanks @ascorbic! - Remove manual bootstrap step from CLI output

    The create-emdash CLI no longer suggests running bootstrap as a manual step, since EmDash now auto-bootstraps on first run.

0.0.4

Patch Changes

  • #7 2022b77 Thanks @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 8e389d5 Thanks @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 2dc5815 Thanks @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 from emdash-cms/templates instead of the old monorepo path.