Skip to content

feat: the content-link-check plugin - #15

Merged
danielmlr merged 1 commit into
mainfrom
feat/content-link-check-import
Sep 26, 2026
Merged

danielmlr merged 1 commit into
mainfrom
feat/content-link-check-import

Conversation

@danielmlr

Copy link
Copy Markdown
Member

Imports the content-link-check plugin from the private proof-of-concept repository at fd21fe5, as fresh files rather than its history, the same way analytics and content-freshness came across. Nothing is published: the package stays "private": true and there is no changeset.

What is in it

  • packages/content-link-check: @eisbachcode/emdash-plugin-content-link-check. A scheduled check of the links in published entries, internal and outbound. It reports broken links, dead domains and internal redirects, but only once they persist. A 401, 403 or 429 is never reported, and a rate-limited host is left alone until its Retry-After. Each distinct link is checked once per sweep. Every run stays inside a sandboxed plugin's 10 bridge calls, and in-process inside Workers Free's 50 D1 queries and 50 outbound subrequests. It reports and never edits (content:read, schema:read, network:request:unrestricted). See its README.
  • packages/shared: no change. Link-check uses chain.ts, listCollections(), the roles and clampNumber, all already here and identical to the proof of concept's.
  • Aligned with this workspace on the way in, as content-freshness was:
    • registry:publish and registry:login replace the generated publish and login;
    • prepublishOnly builds the package;
    • repository metadata for trusted publishing;
    • a peer range with a floor and no ceiling;
    • 30 s test timeouts with serial test files;
    • plugin-test 0.2.3 (EmDash 0.40.1).
  • A row in the root README.

Verified

  • content-link-check: 89 tests, emdash-plugin validate, typecheck, build.
  • The workspace: shared 16, content-freshness 99 and analytics 312 tests.
  • Compat matrix, run locally: link-check 89/89, freshness 99/99 and analytics 312/312 on 0.39.0, 0.39.1, 0.40.0 and 0.40.1.
  • Content review: the only site references are the author and security contact fields. The publisher DID is the one content-freshness uses. gitleaks found nothing, and fd21fe5 does not exist in this repository.

Before the first release

Per AGENTS.md "Releases", a separate PR will remove private and add the first changeset, and the first publish is manual, because npm's trusted-publisher setting needs the package to exist. Until then, the changeset bot's "No Changeset found" on this PR is expected.

A scheduled check of the links in EmDash content, moved over from the
private poc repository (at fd21fe5) as fresh commits: broken links, dead
domains and redirects, reported only once they persist; one check per
distinct link; every run inside a sandboxed plugin's 10 bridge calls and
Workers Free's 50 D1 queries and 50 outbound subrequests.

Brought in line with the other packages here: private until its first
release, the registry scripts renamed so npm publish does not trigger a
registry publish, prepublishOnly builds, 30 s test timeouts with serial
test files, a peer range with a floor and no ceiling, and plugin-test
0.2.3 (EmDash 0.40.1). packages/shared needs no change: link-check uses
chain.ts, listCollections, the roles and clampNumber, all already here.
@changeset-bot

changeset-bot Bot commented Sep 26, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0d9763a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@danielmlr
danielmlr merged commit 4cf41c4 into main Sep 26, 2026
2 checks passed
@danielmlr
danielmlr deleted the feat/content-link-check-import branch September 26, 2026 00:21
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