Skip to content

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 20 Jun 19:58
· 67 commits to main since this release
cc4969c

[0.1.9] — 2026-06-20

The release that makes the engine usable at write-time: scan code that isn't on disk
yet, report only what a change introduced, and never claim a file is "done" — plus
first-class Astro support.

Added

  • In-memory scanning (API). runScan({ files: [{ path, content }] }) and
    scanBuffer(content, filename) scan source held in memory, with no disk write. This is
    the groundwork for the agent / MCP write-time flow (v0.2): code can be checked while
    it is being written.
  • Diff-aware "only-new" scanning (API). runDiffScan({ base, head }) reports only the
    violations a change introduced, instead of the whole project backlog — you act on what
    you just wrote, not on legacy noise. API only for now — it is not a equall scan flag;
    it feeds the upcoming MCP.
  • Full Astro support. .astro files are now scanned by every engine (axe-core +
    eslint-jsx-a11y + readability + error-identification), not axe alone — catching
    JSX-pattern issues axe misses (e.g. label-has-associated-control).

Changed

  • Honest coverage — the output never says "all clean". Each WCAG criterion is reported
    as auto (genuinely exercised), partial (nominally covered but statically incomplete,
    e.g. contrast — needs a rendered check), or manual (no eligible file in this scan).
    The "X/Y criteria checked" line now reflects what was actually exercised, not what a
    scanner is theoretically capable of. Surfaced on ScanResult.coverage.

Fixed

  • No more phantom violations on dynamic attributes. Expressions in attribute values
    (aria-selected={i === 0}, class={…}, href={…}) in .astro / .jsx / .vue no
    longer break extraction and produce false axe findings — including a false CRITICAL
    aria-valid-attr-value. Accessible-name attributes (alt, aria-label, title,
    aria-labelledby) are preserved, so they are not wrongly reported as missing.

Known limitations

  • Dynamic attribute values in .astro / .jsx / .vue are not statically asserted (the
    value is unknown until runtime). Full-fidelity Astro parsing via @astrojs/compiler is a
    planned v0.1.11 follow-up.

Full Changelog: v0.1.8...v0.1.9