Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/compat-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
strategy:
fail-fast: false
matrix:
emdash: [0.39.0, 0.39.1, 0.40.0, 0.40.1, 0.41.0, 0.42.0, "1.0.1:0.2.6"]
emdash: [1.0.1]
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
Expand Down
12 changes: 7 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ Keep `emdash-plugin.jsonc` aligned with the runtime implementation, declare ever

## Toolchain

`emdash` is a peer with a floor and no ceiling (`>=0.39.0`, the same as
`env:emdash` in the manifest); the dev dependency stays below the next
major until the toolchain is moved on purpose. Built with
`@emdash-cms/plugin-cli@0.12.0` and `@emdash-cms/plugin-test@0.2.3` (EmDash 0.40.1);
`emdash` is a peer with a floor and no ceiling (`>=1.0.1`, the same as
`env:emdash` in the manifest). Never write the floor as `>=1.0.0` or
`^1.0.0`: npm carries an accidental, deprecated `emdash@1.0.0` published
in April 2026, five months before the real 1.0. The dev dependency stays
below the next major until the toolchain is moved on purpose. Built with
`@emdash-cms/plugin-cli@0.13.1` and `@emdash-cms/plugin-test@0.2.6` (EmDash 1.0.1);
`scripts/compat-matrix.sh` runs the suite against later EmDash releases.
A plain `pnpm install` is enough.

Expand Down Expand Up @@ -39,7 +41,7 @@ pnpm install
pnpm typecheck
pnpm test # emdash-plugin validate, then vitest
pnpm build
./scripts/compat-matrix.sh 0.39.0 0.39.1 0.40.0 0.40.1 0.41.0 0.42.0 1.0.1:0.2.6 # suites against other EmDash releases
./scripts/compat-matrix.sh 1.0.1 # suites against other EmDash releases
```

## Releases
Expand Down
28 changes: 10 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,24 +107,16 @@ package with a `file:` dependency and register it in `plugins: []`.
| EmDash | Plugin test suite |
| ------ | ----------------- |
| 1.0.1 | 105 passed |
| 0.42.0 | 105 passed |
| 0.41.0 | 105 passed |
| 0.40.1 | 105 passed |
| 0.40.0 | 105 passed |
| 0.39.1 | 105 passed |
| 0.39.0 | 105 passed |

Declared range: `emdash >=0.39.0`, with no upper bound. The table covers
**every EmDash release since the floor**. 0.39.0 is the floor because the
plugin lists collections through `schema:read`, which earlier versions do not
have.

Reproduce with `scripts/compat-matrix.sh 0.39.0 0.39.1 0.40.0 0.40.1 0.41.0
0.42.0 1.0.1:0.2.6` from the repo root; EmDash 1.0 needs plugin-test 0.2.6,
hence `1.0.1:0.2.6`. Last run 2026-09-29, when 1.0.1 was the latest EmDash
release. A newer EmDash than the table's top row is untested rather than
unsupported: nothing blocks the install, and this table is how you tell the
difference.

Declared range: `emdash >=1.0.1`, with no upper bound. The table covers
**every EmDash release since the floor**. 1.0.1 is the floor because it is
EmDash's first stable release; the `emdash@1.0.0` on npm is an accidental
publish from April 2026, not a stable release.

Reproduce with `scripts/compat-matrix.sh 1.0.1` from the repo root. Last run
2026-09-30, when 1.0.1 was the latest EmDash release. A newer EmDash than the
table's top row is untested rather than unsupported: nothing blocks the
install, and this table is how you tell the difference.

## Licence

Expand Down
2 changes: 1 addition & 1 deletion emdash-plugin.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
// break. The manifest has no advisory "tested up to" field to express
// caution without blocking, so the tested range belongs in the README.
"release": {
"requires": { "env:emdash": ">=0.39.0" }
"requires": { "env:emdash": ">=1.0.1" }
},
"description": "Checks internal and outbound links in your content on a schedule and reports broken links, dead domains, and redirects in the admin.",
"keywords": ["links", "seo", "audit", "maintenance"],
Expand Down
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@
"node": ">=22.16"
},
"peerDependencies": {
"emdash": ">=0.39.0"
"emdash": ">=1.0.1"
},
"devDependencies": {
"@changesets/cli": "^3.0.3",
"@emdash-cms/plugin-cli": "0.12.0",
"@emdash-cms/plugin-test": "0.2.3",
"emdash": ">=0.39.0 <1.0.0",
"@emdash-cms/plugin-cli": "0.13.1",
"@emdash-cms/plugin-test": "0.2.6",
"emdash": "^1.0.1",
"typescript": "^5.9.0",
"vitest": "^4.1.0"
},
Expand Down
412 changes: 62 additions & 350 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ allowBuilds:
strictDepBuilds: true
dangerouslyAllowAllBuilds: false
minimumReleaseAgeExclude:
- '@emdash-cms/admin@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1'
- '@emdash-cms/auth@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1'
- '@emdash-cms/blocks@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1'
- '@emdash-cms/cloudflare@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1'
- '@emdash-cms/gutenberg-to-portable-text@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1'
- '@emdash-cms/plugin-cli@0.12.0 || 0.13.1'
- '@emdash-cms/plugin-test@0.2.0 || 0.2.3 || 0.2.6'
- '@emdash-cms/plugin-types@0.4.0 || 0.5.0'
- '@emdash-cms/registry-client@0.6.1 || 0.7.0'
- '@emdash-cms/registry-lexicons@0.6.0 || 0.7.0'
- '@emdash-cms/registry-verification@0.3.2 || 0.3.3'
- emdash@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1
- '@emdash-cms/admin@1.0.1'
- '@emdash-cms/auth@1.0.1'
- '@emdash-cms/blocks@1.0.1'
- '@emdash-cms/cloudflare@1.0.1'
- '@emdash-cms/gutenberg-to-portable-text@1.0.1'
- '@emdash-cms/plugin-cli@0.13.1'
- '@emdash-cms/plugin-test@0.2.6'
- '@emdash-cms/plugin-types@0.5.0'
- '@emdash-cms/registry-client@0.7.0'
- '@emdash-cms/registry-lexicons@0.7.0'
- '@emdash-cms/registry-verification@0.3.3'
- emdash@1.0.1
8 changes: 4 additions & 4 deletions scripts/compat-matrix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# Run the plugin's suite against a list of EmDash versions and print which
# combinations pass.
#
# Why this exists: `@emdash-cms/plugin-test` pins `emdash` exactly (0.2.0 pins
# 0.39.0), so out of the box a plugin is only ever tested against the one host
# Why this exists: `@emdash-cms/plugin-test` pins `emdash` exactly (0.2.6 pins
# 1.0.1), so out of the box a plugin is only ever tested against the one host
# version the harness chose. pnpm `overrides` rewire the harness's own pinned
# dependency, which is how a range becomes testable at all.
#
Expand All @@ -22,7 +22,7 @@
# `--no-baseline` skips the baseline row, for CI jobs that each run one
# version while a separate job runs the suites on their pinned host.
#
# Usage: scripts/compat-matrix.sh [--no-baseline] [version[:harness]...] (default: 0.39.1 0.40.0)
# Usage: scripts/compat-matrix.sh [--no-baseline] [version[:harness]...] (default: 1.0.1)

set -euo pipefail

Expand All @@ -36,7 +36,7 @@ if [ "${1:-}" = "--no-baseline" ]; then
fi

VERSIONS=("${@:-}")
[ -z "${VERSIONS[0]:-}" ] && VERSIONS=(0.39.1 0.40.0)
[ -z "${VERSIONS[0]:-}" ] && VERSIONS=(1.0.1)

if [ -n "$(git status --porcelain pnpm-workspace.yaml pnpm-lock.yaml)" ]; then
echo "refusing to run: pnpm-workspace.yaml or pnpm-lock.yaml already modified" >&2
Expand Down
Loading