Changelog

Checks run themselves

Productv0.6.0Breaking

Content checks run automatically when a change set changes, and appear as pending before they do. Custom checks get a settings screen, and published reads got faster.

Automatic runs

Editing a change set schedules a check run. A burst of edits coalesces into one run a few seconds later, and the run reads the change set fresh when it fires, so results are usually waiting by the time you open it.

$ myna changes checks chs_01...
CHECK       STATUS   STALE  ISSUES
schema      passed   no     0
references  passed   no     0
seo         pending  no     0

Checks that have not produced a verdict yet are listed as pending rather than left out, so a gate you have to satisfy is never invisible. A result goes stale the moment the contents move underneath it, with a fresh run already queued. myna changes checks --run still forces one immediately when you do not want to wait out the debounce.

Custom checks in settings

Project settings → Checks lists the built-in suite with what each one verifies, and lets you declare, edit, and remove your own:

$ myna checks declare link-check --description "No broken links in staged copy" --required

Declared checks appear on every change set as pending until their reporter posts. Marking one required blocks publishing until it passes on the current contents.

Faster reads

Project configuration is cached behind a short TTL and invalidated on write. Usage is counted in memory and flushed on an interval. Backlink queries use an indexed lookup. Entry lists resolve a collection key and revision once per page rather than once per row.

Upload and delivery rules

Uploads refuse active document types — HTML, XHTML, SVG, XML, and scripts — by both content type and extension. The check ignores parameters, so image/svg+xml; charset=utf-8 is refused like image/svg+xml. Use raster formats for images.

Delivery serves a narrower allowlist inline: images, audio, video, PDF, plain text, CSV, Markdown, and web fonts. Anything else is served as a download.

Fixes

  • Reviews and comments carry a resolved identity: display name, username, and avatar for a person, or the key's name for an API key. reviewerId and authorId are unchanged as the stable key.
  • Cursor pagination no longer repeats a row at page boundaries.
  • Filtering entries by status is part of the query, so a page is full whenever more matching rows exist.

Upgrading

$ npm install @myna-sh/[email protected]

One breaking type change. A check can be pending, so id, runId, itemsFingerprint, ranByType, and createdAt are nullable and status gained "pending". Narrow on status first:

if (check.status !== "pending") {
  console.log(check.id, check.createdAt);
}

Nothing fails at runtime on an older client. Reporting a check result still takes passed, failed, or skipped.

Affects api · dashboard · sdk · cli · mcp · docs

Give your agent something to work with.

Free to start, no card required. Sign in with GitHub, enable the products you want, and point your agent at them.