Changelog
Release history for Astro Doctor and its integrations. This page is generated directly from each package changelog and updates on the next documentation build after Changesets publishes a version.
Astro Doctor CLI and GitHub Action
Package: @santi020k/astro-doctor
@santi020k/astro-doctor
1.2.2
Patch Changes
-
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts. -
Updated dependencies [
0695440]:- @santi020k/eslint-plugin-astro-doctor@1.2.2
1.2.1
Patch Changes
-
#16
f7fa4a3Thanks @santi020k! - Remove the incompatibleeslint-plugin-jsx-a11ydependency and align the runtime witheslint-plugin-astro3 andastro-eslint-parser3. Astro Doctor’s proprietary accessibility diagnostics and official Astro rules remain enabled. -
Updated dependencies [
f7fa4a3]:- @santi020k/eslint-plugin-astro-doctor@1.2.1
1.2.0
Minor Changes
- #14
b2f1ddaThanks @santi020k! - Make the GitHub Action skip comments for fork and Dependabot pull requests, add a nativemin-scorequality gate, and remove its unused changed-files manifest.
Patch Changes
- Updated dependencies [
b2f1dda]:- @santi020k/eslint-plugin-astro-doctor@1.2.0
1.1.0
Minor Changes
-
#12
e5bb5a7Thanks @santi020k! - Compose Astro Doctor with the official Astro ESLint ecosystem. The recommended preset now includes official recommended rules, strict adds accessibility, security, and best-practice checks, and the new all preset enables every non-deprecated upstream rule with automatic overlap deduplication. -
#12
c538858Thanks @santi020k! - Add project-aware audits for missing Astro Action input schemas, insecure session cookie overrides, and ClientRouter scripts that incorrectly rely onDOMContentLoaded. -
#12
d71e1d1Thanks @santi020k! - Add safe automatic fixes and suggestions to the CLI and editor, official eslint-plugin-astro rule presets, baseline-aware changed scope, persistent baseline files, content-based scan caching, glob-based config overrides, SARIF output, strict CLI validation, verbose phase timings, and versioned JSON and baseline schemas. Harden the LSP with incremental document sync, debounced stale-result protection, configuration watching, workspace caching, and path-safe project selection. Category filters now score only visible diagnostics, GitHub workflows receive annotations, unresolved errors or unhealthy workspace projects cannot receive misleadingly high scores, and package-manager preference is opt-in.
Patch Changes
-
#12
a7e3981Thanks @santi020k! - Ignore diagnostics from ESLint rules that are not part of Astro Doctor’s standalone scanner, and inherit pnpm package-manager configuration from a workspace root when auditing included nested projects. Package-manager audits now recognize npm, Yarn, and Bun lockfiles. -
#12
c538858Thanks @santi020k! - Fix current-file scanning and conflict-safe automatic fixes in the language server, restart the VS Code client when extension settings change, and escape dynamic sidebar content. -
#12
7269d52Thanks @santi020k! - Make GitHub Action releases reproducible by running the matching CLI package version with a supported Node.js runtime, automate the floatingv1action tag, and correct package metadata for the Node.js requirement already introduced by the Astro parser dependency in 1.0.3. The VS Code extension now requires VS Code 1.125 or newer, launches its bundled language server with the supported Node.js executable from the user’s environment instead of VS Code’s embedded runtime, and includes the cross-platform WASI compiler required by Astro Parser 3. Reduce false positives for explicit inline scripts, JSON-LD structured data, and runtime-populated images, and restore audit mode on ESLint 10.7. -
Updated dependencies [
e5bb5a7,d71e1d1]:- @santi020k/eslint-plugin-astro-doctor@1.1.0
1.0.4
Patch Changes
-
#9
9501d73Thanks @santi020k! - Make GitHub Action releases reproducible by running the matching CLI package version with a supported Node.js runtime, automate the floatingv1action tag, and correct package metadata for the Node.js requirement already introduced by the Astro parser dependency in 1.0.3. The VS Code extension now requires VS Code 1.125 or newer, launches its bundled language server with the supported Node.js executable from the user’s environment instead of VS Code’s embedded runtime, and includes the cross-platform WASI compiler required by Astro Parser 3. Reduce false positives for explicit inline scripts, JSON-LD structured data, and runtime-populated images, and restore audit mode on ESLint 10.7. -
Updated dependencies []:
- @santi020k/eslint-plugin-astro-doctor@1.0.4
1.0.3
Patch Changes
-
#7
2584508Thanks @santi020k! - Update dependencies and support the JSX-shaped Astro AST introduced byastro-eslint-parser3. -
Updated dependencies [
2584508]:- @santi020k/eslint-plugin-astro-doctor@1.0.3
1.0.2
Patch Changes
-
#5
faeaf66Thanks @santi020k! - Fix post-launch documentation and plugin meta accuracy- eslint-plugin: plugin
meta.versionnow reads dynamically frompackage.jsoninstead of being hardcoded to0.1.0 - docs/README/llms.txt: corrected score formula description — each file is scored independently (errors cost 25 pts, warnings cost 10 pts, clamped per-file then averaged); previous docs described the old global density formula
- docs/README/action.yml: updated score grade references from
A–FtoS, A–Fto reflect that a perfect score of 100 returns theSgrade; clarified thatSmeans zero diagnostics — no issues found anywhere in the codebase (not just “high score” but truly clean); docs homepage grade cards now show a description label for each grade - console reporter: added missing
S: '🌟'entry toSCORE_EMOJI— previously a perfect score would fall through to the🟡fallback - GitHub Action PR comment: same fix —
scoreEmojimap now includesS: '🌟'so PR comments show the correct emoji for a clean codebase
- eslint-plugin: plugin
-
Updated dependencies [
faeaf66]:- @santi020k/eslint-plugin-astro-doctor@1.0.2
1.0.1
Patch Changes
-
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions -
Updated dependencies [
ac335ba]:- @santi020k/eslint-plugin-astro-doctor@1.0.1
1.0.0
Major Changes
-
f1af77dThanks @santi020k! - Six improvements: per-file scoring, smarter client:load rule, derived rule categories,--quietflag, scan error handling, and a better--changed-files-fromwarning.Breaking changes
computeScoresignature changed (@santi020k/astro-doctor)The exported
computeScorefunction now takes(diagnostics: readonly Diagnostic[], fileCount: number)instead of(errorCount: number, warningCount: number, fileCount: number). Update any direct calls to pass the diagnostics array.no-client-load-overusedefault behaviour changed (@santi020k/eslint-plugin-astro-doctor)The rule now allows one
client:loadper file by default (max: 1). Previously it warned on every occurrence. To restore the old strict behaviour, add"astro-doctor/no-client-load-overuse": ["warn", { "max": 0 }]to your ESLint config.New features
Per-file scoring —
computeScorenow scores each file independently (errors −10 pts, warnings −3 pts, clamped to [0, 100]) and averages the results. A single heavily-broken file in a large project no longer drags the overall score below its actual impact.no-client-load-overuse: configurablemaxoption — Set{ "max": N }to allow up to Nclient:loadusages per file before warning.max: 0reports every occurrence individually (old behaviour).max: 1(default) allows one per file and reports a single file-level message when exceeded, including the usage count.Rule categories derived from plugin metadata — The scanner no longer maintains a separate hard-coded
RULE_CATEGORY_MAP. Categories are read directly from each rule’smeta.docs.category, so new rules are automatically classified without any extra bookkeeping. This also fixesprefer-content-collectionswhich was silently missing from the old map.--quietflag — Pass--quietto suppress warning diagnostics from console output. Errors are still shown, and the health score / exit-code thresholds still reflect all diagnostics.Scan error handling — If ESLint throws during a scan (e.g. a malformed
.astrofile), the CLI now prints a friendly error message and exits with code 1 instead of crashing with an unhandled exception.--changed-files-fromempty-list warning — When the changed files list is non-empty but contains no.astrofiles, the CLI now prints a clear message and exits cleanly instead of silently returning a perfect score of 100.
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.
Patch Changes
ESLint plugin
Package: @santi020k/eslint-plugin-astro-doctor
@santi020k/eslint-plugin-astro-doctor
1.2.2
Patch Changes
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts.
1.2.1
Patch Changes
- #16
f7fa4a3Thanks @santi020k! - Remove the incompatibleeslint-plugin-jsx-a11ydependency and align the runtime witheslint-plugin-astro3 andastro-eslint-parser3. Astro Doctor’s proprietary accessibility diagnostics and official Astro rules remain enabled.
1.2.0
Patch Changes
- #14
b2f1ddaThanks @santi020k! - Restore Node.js 20 support with the compatible Astro parser and plugin line. Align the ESLint peer range with@santi020k/eslint-config-basicv2, include the accessibility plugin required by thestrictpreset, and derive deprecated upstream rules from plugin metadata so theallpreset stays current.
1.1.0
Minor Changes
-
#12
e5bb5a7Thanks @santi020k! - Compose Astro Doctor with the official Astro ESLint ecosystem. The recommended preset now includes official recommended rules, strict adds accessibility, security, and best-practice checks, and the new all preset enables every non-deprecated upstream rule with automatic overlap deduplication. -
#12
d71e1d1Thanks @santi020k! - Add safe automatic fixes and suggestions to the CLI and editor, official eslint-plugin-astro rule presets, baseline-aware changed scope, persistent baseline files, content-based scan caching, glob-based config overrides, SARIF output, strict CLI validation, verbose phase timings, and versioned JSON and baseline schemas. Harden the LSP with incremental document sync, debounced stale-result protection, configuration watching, workspace caching, and path-safe project selection. Category filters now score only visible diagnostics, GitHub workflows receive annotations, unresolved errors or unhealthy workspace projects cannot receive misleadingly high scores, and package-manager preference is opt-in.
1.0.4
1.0.3
Patch Changes
- #7
2584508Thanks @santi020k! - Update dependencies and support the JSX-shaped Astro AST introduced byastro-eslint-parser3.
1.0.2
Patch Changes
-
#5
faeaf66Thanks @santi020k! - Fix post-launch documentation and plugin meta accuracy- eslint-plugin: plugin
meta.versionnow reads dynamically frompackage.jsoninstead of being hardcoded to0.1.0 - docs/README/llms.txt: corrected score formula description — each file is scored independently (errors cost 25 pts, warnings cost 10 pts, clamped per-file then averaged); previous docs described the old global density formula
- docs/README/action.yml: updated score grade references from
A–FtoS, A–Fto reflect that a perfect score of 100 returns theSgrade; clarified thatSmeans zero diagnostics — no issues found anywhere in the codebase (not just “high score” but truly clean); docs homepage grade cards now show a description label for each grade - console reporter: added missing
S: '🌟'entry toSCORE_EMOJI— previously a perfect score would fall through to the🟡fallback - GitHub Action PR comment: same fix —
scoreEmojimap now includesS: '🌟'so PR comments show the correct emoji for a clean codebase
- eslint-plugin: plugin
1.0.1
Patch Changes
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions
1.0.0
Major Changes
-
f1af77dThanks @santi020k! - Six improvements: per-file scoring, smarter client:load rule, derived rule categories,--quietflag, scan error handling, and a better--changed-files-fromwarning.Breaking changes
computeScoresignature changed (@santi020k/astro-doctor)The exported
computeScorefunction now takes(diagnostics: readonly Diagnostic[], fileCount: number)instead of(errorCount: number, warningCount: number, fileCount: number). Update any direct calls to pass the diagnostics array.no-client-load-overusedefault behaviour changed (@santi020k/eslint-plugin-astro-doctor)The rule now allows one
client:loadper file by default (max: 1). Previously it warned on every occurrence. To restore the old strict behaviour, add"astro-doctor/no-client-load-overuse": ["warn", { "max": 0 }]to your ESLint config.New features
Per-file scoring —
computeScorenow scores each file independently (errors −10 pts, warnings −3 pts, clamped to [0, 100]) and averages the results. A single heavily-broken file in a large project no longer drags the overall score below its actual impact.no-client-load-overuse: configurablemaxoption — Set{ "max": N }to allow up to Nclient:loadusages per file before warning.max: 0reports every occurrence individually (old behaviour).max: 1(default) allows one per file and reports a single file-level message when exceeded, including the usage count.Rule categories derived from plugin metadata — The scanner no longer maintains a separate hard-coded
RULE_CATEGORY_MAP. Categories are read directly from each rule’smeta.docs.category, so new rules are automatically classified without any extra bookkeeping. This also fixesprefer-content-collectionswhich was silently missing from the old map.--quietflag — Pass--quietto suppress warning diagnostics from console output. Errors are still shown, and the health score / exit-code thresholds still reflect all diagnostics.Scan error handling — If ESLint throws during a scan (e.g. a malformed
.astrofile), the CLI now prints a friendly error message and exits with code 1 instead of crashing with an unhandled exception.--changed-files-fromempty-list warning — When the changed files list is non-empty but contains no.astrofiles, the CLI now prints a clear message and exits cleanly instead of silently returning a perfect score of 100.
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.
VS Code extension
Extension: santi020k.vscode-astro-doctor
vscode-astro-doctor
1.2.2
1.2.1
1.2.0
1.1.0
Patch Changes
- #12
c538858Thanks @santi020k! - Fix current-file scanning and conflict-safe automatic fixes in the language server, restart the VS Code client when extension settings change, and escape dynamic sidebar content.
1.0.4
1.0.3
1.0.2
1.0.1
Patch Changes
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions
1.0.0
Major Changes
-
f1af77dThanks @santi020k! - Six improvements: per-file scoring, smarter client:load rule, derived rule categories,--quietflag, scan error handling, and a better--changed-files-fromwarning.Breaking changes
computeScoresignature changed (@santi020k/astro-doctor)The exported
computeScorefunction now takes(diagnostics: readonly Diagnostic[], fileCount: number)instead of(errorCount: number, warningCount: number, fileCount: number). Update any direct calls to pass the diagnostics array.no-client-load-overusedefault behaviour changed (@santi020k/eslint-plugin-astro-doctor)The rule now allows one
client:loadper file by default (max: 1). Previously it warned on every occurrence. To restore the old strict behaviour, add"astro-doctor/no-client-load-overuse": ["warn", { "max": 0 }]to your ESLint config.New features
Per-file scoring —
computeScorenow scores each file independently (errors −10 pts, warnings −3 pts, clamped to [0, 100]) and averages the results. A single heavily-broken file in a large project no longer drags the overall score below its actual impact.no-client-load-overuse: configurablemaxoption — Set{ "max": N }to allow up to Nclient:loadusages per file before warning.max: 0reports every occurrence individually (old behaviour).max: 1(default) allows one per file and reports a single file-level message when exceeded, including the usage count.Rule categories derived from plugin metadata — The scanner no longer maintains a separate hard-coded
RULE_CATEGORY_MAP. Categories are read directly from each rule’smeta.docs.category, so new rules are automatically classified without any extra bookkeeping. This also fixesprefer-content-collectionswhich was silently missing from the old map.--quietflag — Pass--quietto suppress warning diagnostics from console output. Errors are still shown, and the health score / exit-code thresholds still reflect all diagnostics.Scan error handling — If ESLint throws during a scan (e.g. a malformed
.astrofile), the CLI now prints a friendly error message and exits with code 1 instead of crashing with an unhandled exception.--changed-files-fromempty-list warning — When the changed files list is non-empty but contains no.astrofiles, the CLI now prints a clear message and exits cleanly instead of silently returning a perfect score of 100.
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.
Oxlint configuration
Package: @santi020k/oxlint-config-astro-doctor
@santi020k/oxlint-config-astro-doctor
1.2.2
1.2.1
1.2.0
1.1.0
Patch Changes
- #12
49f6b59Thanks @santi020k! - Add package installation and usage documentation.
1.0.4
1.0.3
1.0.2
1.0.1
Patch Changes
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions
0.1.0
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.