Skip to content

v0.8.0 — @dualmark/deno + status-page converter + CLI v1.0 JSON

Choose a tag to compare

@aagarwal1012 aagarwal1012 released this 30 May 07:11
· 51 commits to main since this release

Highlights

Three things land in this release:

  • New package: @dualmark/deno — a Deno Deploy edge adapter that wraps any Deno fetch handler. AI bots get the markdown twin at the edge; lifecycle hooks (analytics/telemetry) are scheduled on info.completed. examples/deno-deploy scores a perfect 125/125 under deno run.
  • New converter: status-page — a built-in converter for public uptime/status pages (component health + incidents). Drop converter: "status-page" into an Astro or Next.js collection and status pages get the same battle-tested markdown layout as the rest.
  • Stable dualmark verify --json@dualmark/cli now emits the public AEO Spec v1.0 JSON contract instead of the internal report shape. See the migration note below.

No breaking API changes for the framework adapters. Drop-in upgrade from 0.7.x. The whole @dualmark/* family moves to 0.8.0 together (linked versioning).

What's new

@dualmark/deno@0.8.0 (new)

  • Deno Deploy edge adapter (6a6bf8a) — wraps any upstream Deno fetch handler, serves markdown to known AI bots at the edge, and schedules lifecycle hooks on info.completed.
  • 23 tests pass. Integration docs included.

@dualmark/converters@0.8.0

  • New: statusPageConverter (dd0512c, closes #12) for uptime/status pages — public component health plus incident history, with the standard brand-footer + breadcrumb conventions.
  • Registered as the built-in status-page resolver in @dualmark/astro and @dualmark/nextjs — no config beyond converter: "status-page".
  • Separators in the status converter now render conditionally (b2d925e).

@dualmark/cli@0.8.0

  • verify --json now emits the AEO Spec v1.0 JSON contract (65ab17e) and enforces --json mutual exclusivity with --quiet/--color. Required-check failures still exit non-zero.

    Migration note: --json previously emitted the internal VerifyReport shape (mdUrl, maxScore, passed[], failed[], skippedNegotiation). It now emits the v1.0 public schema (url, markdownUrl, score, max, level, skippedNegotiation, durationMs, checks[]) with checks in canonical evaluation order. Update any CI parsing that read the old field names.

@dualmark/core@0.8.0, @dualmark/astro@0.8.0, @dualmark/nextjs@0.8.0, @dualmark/cloudflare@0.8.0

Version bumps to keep the linked @dualmark/* family in lockstep (and to register the status-page resolver in astro / nextjs). No API changes.

Upgrade

# Astro
bun add @dualmark/astro@^0.8.0

# Next.js
bun add @dualmark/nextjs@^0.8.0

# Cloudflare
bun add @dualmark/cloudflare@^0.8.0

# Deno (new!)
bun add @dualmark/deno@^0.8.0

# CLI
bun add -g @dualmark/cli@^0.8.0

To use the new status-page converter:

// astro.config.mjs
dualmark({
  siteUrl: "https://yourcompany.com",
  collections: {
    status: { converter: "status-page" }, // ← new
  },
});

Verified

  • ✅ All package tests pass across @dualmark/* (build 7/7, test 7/7, typecheck 7/7)
  • ✅ Conformance E2E: examples/deno-deploy 125/125, examples/astro-cloudflare-full 125/125, examples/nextjs-app-router 120/125