diff --git a/.changeset/analytics-emdash-1-0-1.md b/.changeset/analytics-emdash-1-0-1.md new file mode 100644 index 0000000..d22d7b9 --- /dev/null +++ b/.changeset/analytics-emdash-1-0-1.md @@ -0,0 +1,5 @@ +--- +"@eisbachcode/emdash-plugin-analytics": patch +--- + +Tested on EmDash 1.0.1, the first stable release; no change was needed. diff --git a/.github/workflows/compat-matrix.yml b/.github/workflows/compat-matrix.yml index 5c5d245..7ccd111 100644 --- a/.github/workflows/compat-matrix.yml +++ b/.github/workflows/compat-matrix.yml @@ -3,10 +3,14 @@ # Deliberately NOT named emdash-release.yml: `emdash-plugin release setup` # generates that file, and this must not collide with it. # -# Two jobs, because they answer different questions: +# Three jobs, because they answer different questions: # -# declared gating. The versions inside our published range. A failure here -# is our regression and blocks the branch. +# tests gating. Typecheck, manifest validation and every suite on the +# EmDash version each package's harness pins. This is the +# baseline that tells a harness breakage from a plugin regression. +# declared gating, one job per version so they run in parallel. The +# versions inside our published range. A failure here is our +# regression and blocks the branch. # latest informational, never blocks. Runs against whatever EmDash is # current on npm. EmDash ships a minor every 6-8 days and any minor # may carry breaking changes, so this is the signal to widen the @@ -26,9 +30,13 @@ on: permissions: contents: read +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + jobs: - declared: - name: declared range + tests: + name: tests runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -41,7 +49,26 @@ jobs: cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm typecheck - - run: ./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-rc.0:0.2.6-rc.0 + # One package at a time, like the compat script: suites running in + # parallel on one runner are untested. + - run: pnpm --filter "./packages/*" --workspace-concurrency=1 run test + + declared: + name: EmDash ${{ matrix.emdash }} + runs-on: ubuntu-latest + 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"] + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version-file: .nvmrc + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: ./scripts/compat-matrix.sh --no-baseline "${{ matrix.emdash }}" latest: name: current EmDash (informational) @@ -67,4 +94,4 @@ jobs: echo "harness=$(npm view @emdash-cms/plugin-test dist-tags.latest)" >> "$GITHUB_OUTPUT" - run: | echo "current EmDash on npm: ${{ steps.resolve.outputs.version }} (plugin-test ${{ steps.resolve.outputs.harness }})" - ./scripts/compat-matrix.sh "${{ steps.resolve.outputs.version }}:${{ steps.resolve.outputs.harness }}" + ./scripts/compat-matrix.sh --no-baseline "${{ steps.resolve.outputs.version }}:${{ steps.resolve.outputs.harness }}" diff --git a/AGENTS.md b/AGENTS.md index c8802b5..7d9f959 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -43,7 +43,7 @@ pnpm install pnpm typecheck pnpm test # emdash-plugin validate, then vitest, per package 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-rc.0:0.2.6-rc.0 # suites against other EmDash releases +./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 ``` ## Releases diff --git a/packages/analytics/README.md b/packages/analytics/README.md index ec336ad..60843a6 100644 --- a/packages/analytics/README.md +++ b/packages/analytics/README.md @@ -9,8 +9,7 @@ entry that earned them rather than to a URL string. > **Status: early releases.** Cloudflare Web Analytics plus demo data: a > dashboard widget, an Analytics page with a setup check, a per-entry page, > an Analytics panel in the entry editor and four read-only MCP tools. -> Tested on EmDash 0.39 to 0.42 and on the 1.0 release candidate -> (1.0.1-rc.0). See "Not in this version". +> Tested on EmDash 0.39 to 1.0. See "Not in this version". The screenshots show demo data on a site made from EmDash's blog template. diff --git a/packages/content-freshness/emdash-plugin.jsonc b/packages/content-freshness/emdash-plugin.jsonc index f4e0841..89930a1 100644 --- a/packages/content-freshness/emdash-plugin.jsonc +++ b/packages/content-freshness/emdash-plugin.jsonc @@ -18,7 +18,7 @@ "release": { "requires": { "env:emdash": ">=0.39.0" } }, - "description": "Audits your content for staleness: entries untouched for too long, missing or badly sized SEO descriptions, forgotten drafts, schedules that never fired, and collections without a URL pattern.", + "description": "Audits your content: stale entries, weak or missing SEO descriptions, forgotten drafts, schedules that never fired and missing URL patterns.", "keywords": ["content", "audit", "seo", "maintenance", "editorial"], // Trust contract: read content and the collection list, nothing else. diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a2c413e..9e001ad 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -21,15 +21,15 @@ allowBuilds: strictDepBuilds: true dangerouslyAllowAllBuilds: false minimumReleaseAgeExclude: - - '@emdash-cms/admin@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1-rc.0' - - '@emdash-cms/auth@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1-rc.0' - - '@emdash-cms/blocks@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1-rc.0' - - '@emdash-cms/cloudflare@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1-rc.0' - - '@emdash-cms/gutenberg-to-portable-text@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1-rc.0' - - '@emdash-cms/plugin-cli@0.12.0 || 0.13.0' - - '@emdash-cms/plugin-test@0.2.0 || 0.2.3 || 0.2.5 || 0.2.6-rc.0' + - '@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-rc.0 + - emdash@0.39.0 || 0.40.1 || 0.42.0 || 1.0.1 diff --git a/scripts/compat-matrix.sh b/scripts/compat-matrix.sh index 3b87086..c1c5559 100755 --- a/scripts/compat-matrix.sh +++ b/scripts/compat-matrix.sh @@ -21,15 +21,24 @@ # (`emdash/plugin-test-runtime` became `emdash/internal/plugin-test-runtime`), # so no harness before plugin-test 0.2.6 can start a 1.0 host. A version # written as `version:harness` also overrides plugin-test, for example -# `1.0.1-rc.0:0.2.6-rc.0`. +# `1.0.1:0.2.6`. # -# Usage: scripts/compat-matrix.sh [version[:harness]...] (default: 0.39.1 0.40.0) +# `--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) set -euo pipefail ROOT="$(git rev-parse --show-toplevel)" cd "$ROOT" +BASELINE=1 +if [ "${1:-}" = "--no-baseline" ]; then + BASELINE=0 + shift +fi + VERSIONS=("${@:-}") [ -z "${VERSIONS[0]:-}" ] && VERSIONS=(0.39.1 0.40.0) @@ -100,8 +109,10 @@ run_suites() { done } -echo "baseline (harness's own pinned host, no overrides)" -run_suites "baseline" +if [ "$BASELINE" -eq 1 ]; then + echo "baseline (harness's own pinned host, no overrides)" + run_suites "baseline" +fi for spec in "${VERSIONS[@]}"; do v="${spec%%:*}" @@ -127,7 +138,8 @@ printf '%-26s %-12s' "package" "baseline" for spec in "${VERSIONS[@]}"; do printf '%-12s' "${spec%%:*}"; done echo for p in "${PKGS[@]}"; do - printf '%-26s %-12s' "$p" "$(lookup baseline "$p")" + if [ "$BASELINE" -eq 1 ]; then base="$(lookup baseline "$p")"; else base="skipped"; fi + printf '%-26s %-12s' "$p" "$base" for spec in "${VERSIONS[@]}"; do printf '%-12s' "$(lookup "${spec%%:*}" "$p")"; done echo done