Skip to content

Changelog

All releases are published to npm from GitHub Actions. Source history is on GitHub.

  • Docs: the npm homepage now points at this documentation site, and the README links to it.
  • No runtime or admin changes from 0.1.1.
  • Release: published through npm trusted publishing (OIDC), with no long-lived npm token. Every release now carries an npm provenance attestation that links the tarball to the exact commit and workflow that built it.
  • No runtime or admin changes from 0.1.0.

First public release.

  • page:fragments hook that outputs snippets in the head, body start or body end of public pages.
  • Targeting by include/exclude path patterns, page kind and locale, with exclude winning over include. Path patterns match decoded paths, so non-ASCII patterns such as /blog/café/* work as typed.
  • Ordering by priority, then creation time, then id.
  • Admin page in the EmDash admin: snippet list with search and placement filter, code editor with line numbers, Code/Targeting tabs with a sticky Settings card, duplicate, delete, and per-row on/off.
  • Kill switch that turns off all output without touching snippets.
  • Change log of every create, update, enable, disable, duplicate, delete and kill-switch change.
  • Role-aware API: Admins (plugins:manage) write; Editors (plugins:read) get a list without code.
  • Limits: 64 KB per snippet, 512 KB total, 100 snippets.
  • Per-isolate cache with a revision check at most once a second. The revision is bumped before the change-log write, so a log failure can’t leave stale output.
  • Synchronous transform pipeline for extension packages.

The package follows semver.

  • Patch: bug fixes and docs; no behaviour change you have to act on.
  • Minor: new features that are backwards compatible, such as new snippet fields with defaults or new admin features.
  • Major: anything breaking, including any new capability, a removed option, or a change to how existing snippets match or render.

Stored snippets carry a schemaVersion, so a newer schema never gets rewritten by older code. See Data model.