v0.2.0 — First public release
First public release of all five @dualmark/* packages to npm. The AEO Spec v1.0 is authoritative; framework code follows.
Pre-1.0 versioning: Per semver §4, breaking changes are allowed in minor bumps before 1.0. Every release before 1.0 may include API changes; pin exact versions if you need stability.
What ships
| Package | Version | npm |
|---|---|---|
@dualmark/core |
0.2.0 | npm i @dualmark/core |
@dualmark/converters |
0.2.0 | npm i @dualmark/converters |
@dualmark/astro |
0.2.0 | npm i @dualmark/astro |
@dualmark/cloudflare |
0.2.0 | npm i @dualmark/cloudflare |
@dualmark/cli |
0.2.0 | npm i -g @dualmark/cli |
All published with npm provenance.
Highlights
@dualmark/converters — 12 generic converters
Replaces the original fintech-specific factories. Now ships with general-purpose converters for any marketing site:
featureConverter— feature/product pages with siblings, FAQ, problem/solutionpseoConverter— programmatic SEO (calculator pages, location pages, etc.)pricingConverter— tier comparison with recommended badge + CTAscompareConverter— "us vs. competitor" / "alternatives" pagescaseStudyConverter— customer wins with optional pull-quotechangelogConverter— release notes (Keep-a-Changelog style)docsConverter— documentation pages with section groupingblogConverter,glossaryConverter,legalConverter,toolConverter,videoConverter
@dualmark/cli — dualmark verify <url>
dualmark verify --help and dualmark verify -h now work as expected (print help, exit 0). Internal: cli.ts is a thin shim over main.ts to eliminate duplicate parsing logic.
@dualmark/cloudflare — Edge-correct headers
Direct .md URLs now receive the full set of AEO headers when fetched from ASSETS binding (Content-Type, X-Markdown-Tokens, X-Robots-Tag: noindex, Vary: Accept, X-Content-Type-Options: nosniff).
@dualmark/core — API consolidation
Path utilities and analytics types consolidated. Public primitives (detectAIBot, negotiateFormat, buildMarkdownResponse, renderLlmsTxt) unchanged.
Quick start
bun add @dualmark/astro @dualmark/core @dualmark/converters// astro.config.mjs
import dualmark from "@dualmark/astro";
export default defineConfig({
site: "https://yourcompany.com",
integrations: [
dualmark({
siteUrl: "https://yourcompany.com",
collections: { blog: { converter: "blog" } },
llmsTxt: { enabled: true },
}),
],
});bun run build
bunx @dualmark/cli verify https://localhost:4321/blog/your-post
# → Score 80/80 ✓Verify any site
bunx @dualmark/cli verify https://yourcompany.com/pricingThe same engine powers dualmark.dev/play.
Migration from a previous local install
If you'd installed pre-release builds from this repo:
- import { productConverter, taxConverter, countryConverter } from "@dualmark/converters";
+ import { featureConverter, pseoConverter } from "@dualmark/converters";Removed: productConverter, taxConverter, countryConverter, currencyConverter, paymentMethodConverter, caseStudyConverter.paymentProvider.
Use featureConverter for product/feature pages and pseoConverter for programmatic SEO. See per-package CHANGELOGs for full details:
- packages/core/CHANGELOG.md
- packages/converters/CHANGELOG.md
- packages/astro/CHANGELOG.md
- packages/cloudflare/CHANGELOG.md
- packages/cli/CHANGELOG.md