Skip to content

chore(content-freshness): test against EmDash 0.40.1 - #9

Merged
danielmlr merged 9 commits into
mainfrom
chore/content-freshness-emdash-0.40
Sep 25, 2026
Merged

danielmlr merged 9 commits into
mainfrom
chore/content-freshness-emdash-0.40

Conversation

@danielmlr

@danielmlr danielmlr commented Sep 25, 2026 •

Copy link
Copy Markdown
Member

Moves content-freshness's test toolchain to the current EmDash release. Stacked on #8. Merge #8 first with a merge commit, as usual here. A squash merge would make this PR show #8's commits again. Then delete #8's branch, and GitHub retargets this PR to main. The repository doesn't delete merged branches automatically.

Changes

  • content-freshness: @emdash-cms/plugin-test 0.2.1 → 0.2.3, which pins EmDash 0.40.1. The suite's baseline moves from 0.39.1 to 0.40.1. The peer floor stays at >=0.39.0: every API the plugin uses exists in 0.39.0.
  • shared: its EmDash dev dependency now resolves 0.40.1. shared takes its EmDash types from its own install, and on 0.39.1 its PluginContext rejected the plugin's 0.40.1 one, because 0.40 added the blocks field type. shared imports EmDash for types only. analytics keeps its toolchain (plugin-test 0.2.0) and still typechecks.
  • pnpm-workspace.yaml: pnpm added the 0.40.1 packages to minimumReleaseAgeExclude itself on the explicit pnpm add, as it did for 0.39.0. They were published today, so they are younger than pnpm 11's default release-age minimum.
  • CI: the gating job also runs 0.39.0. It used to cover the floor only because every harness pinned 0.39.0. Freshness's harness no longer does.
  • README compatibility table: 0.39.0 through 0.40.1.

Verified

scripts/compat-matrix.sh 0.39.0 0.39.1 0.40.0 locally:

package baseline 0.39.0 0.39.1 0.40.0
analytics (baseline 0.39.0) 288 288 288 288
content-freshness (baseline 0.40.1) 38 38 38 38

pnpm typecheck passes for all three packages, and shared 16/16.

… plugins

Copied unchanged from the proof-of-concept repository at ef4884d, where
the content plugins use them: `chain.ts` carries a sweep across cron runs
with alternating one-shot follow-ups, and `listCollections()` finds every
collection through `schema:read`. `parseCollections()` stays for now.

The floor rises to 0.39.0 because `ctx.schema` first exists there; the
analytics plugin already requires 0.39.0.
Imported from the proof-of-concept repository at ef4884d as fresh files.
A scheduled, network-free audit: overdue schedules, missing or badly
sized SEO descriptions, stale entries, forgotten drafts, and routable
collections without a URL pattern. Capabilities `content:read` and
`schema:read`; it reports and never edits.

Aligned with the workspace on the way in: `registry:publish` and
`registry:login` instead of the generated `publish` and `login`,
`prepublishOnly` builds, repository metadata for trusted publishing, a
peer range with a floor and no ceiling, and the analytics plugin's vitest
limits (30 s timeouts, one test file at a time). Toolchain unchanged from
the proof of concept: plugin-cli 0.12.0, plugin-test 0.2.1, EmDash 0.39.1.
The full-audit test pinned the host's scheduler clock to 04:00:05 on
2026-09-25, but the plugin schedules its follow-up runs from
`Date.now()`. While that night lay ahead of the real time, follow-ups
fell due; since then they land after the host's clock, never run, and
the sweep never finishes. The test now uses tomorrow's night, which is
always ahead of the wall clock. It still fails if a follow-up is lost.
plugin-test 0.2.3 pins EmDash 0.40.1, so the suite's baseline moves from
0.39.1 to the current release. The peer floor stays at 0.39.0: every API
the plugin uses exists there.

`shared` takes its EmDash types from its own dev dependency. Left on
0.39.1, its `PluginContext` rejected the plugin's 0.40.1 one, because 0.40
added the `blocks` field type, so it resolves 0.40.1 as well. `shared`
imports EmDash for types only; analytics keeps its own toolchain and
still typechecks. pnpm added the 0.40.1 packages to
minimumReleaseAgeExclude itself, as it did for 0.39.0.
The gating job ran each suite on its harness's own EmDash plus 0.39.1 and
0.40.0. That covered the floor only while every harness pinned 0.39.0.
content-freshness now runs on plugin-test 0.2.3, which pins 0.40.1, so
0.39.0, the floor both plugins declare, joins the list.
Base automatically changed from feat/content-freshness-import to main September 25, 2026 20:46
…ss-emdash-0.40

# Conflicts:
#	packages/content-freshness/AGENTS.md
#	packages/content-freshness/README.md
#	packages/content-freshness/package.json
#	pnpm-lock.yaml
@danielmlr
danielmlr merged commit 13573a9 into main Sep 25, 2026
2 checks passed
@danielmlr
danielmlr deleted the chore/content-freshness-emdash-0.40 branch September 25, 2026 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant