Skip to content

v0.2.0 — First public release

Choose a tag to compare

@aagarwal1012 aagarwal1012 released this 05 May 16:15
· 112 commits to main since this release
09810c1

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/solution
  • pseoConverter — programmatic SEO (calculator pages, location pages, etc.)
  • pricingConverter — tier comparison with recommended badge + CTAs
  • compareConverter — "us vs. competitor" / "alternatives" pages
  • caseStudyConverter — customer wins with optional pull-quote
  • changelogConverter — release notes (Keep-a-Changelog style)
  • docsConverter — documentation pages with section grouping
  • blogConverter, glossaryConverter, legalConverter, toolConverter, videoConverter

@dualmark/clidualmark 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/pricing

The 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:

Links