Skip to content

Changelog

All notable changes to SpiraCSS packages are documented here.


0.4.3-beta

@spiracss/stylelint-plugin

Added

  • spiracss/property-placement: add marginSideTags option (default: true) so tag-selector rules also follow marginSide.

Changed

  • spiracss/property-placement: refine marginSideTags tag detection to count only tags in the selector chain (exclude tags only inside pseudo arguments such as :is(main)).
  • spiracss/property-placement: add regression tests for tag/class mixed selectors, marginSide: 'bottom' with tag selectors, and non-tag unverified selector skip behavior.

@spiracss/html-cli

  • Align package version with the monorepo release.

VS Code Extensions

  • Align extension version with the monorepo release.

spiracss-html-to-scss

  • Update @spiracss/html-cli dependency to ^0.4.3.
  • Align extension version with the monorepo release.

Documentation

  • Updated spiracss/property-placement docs (en/ja) for marginSideTags behavior and selector coverage notes.
  • Updated AI agent guide to v0.4.3-beta.
  • Updated header/quickstart version badges to v0.4.3-beta.

0.4.2-beta

@spiracss/stylelint-plugin

Fixed

  • spiracss/class-structure: report repeated definitions of the same root Block as duplicateRootBlock when rootSingle: true.
  • spiracss/class-structure: suppress duplicate rootSelectorNeedNesting warnings when duplicateRootBlock is already reported for the same selector.
  • spiracss/class-structure: add explicit Auto-fix guidance for root-related diagnostics (multipleRootBlocks, duplicateRootBlock, rootSelectorMissingBlock, rootSelectorNeedNesting).

@spiracss/html-cli

  • Align package version with the monorepo release.

VS Code Extensions

  • Align extension version with the monorepo release.

spiracss-html-to-scss

  • Update @spiracss/html-cli dependency to ^0.4.2.
  • Align extension version with the monorepo release.

Documentation

  • Added duplicateRootBlock / rootSelectorNeedNesting sections to class-structure docs (en/ja).
  • Updated AI agent guide to v0.4.2-beta.
  • Updated header/quickstart version badges to v0.4.2-beta.

0.4.1-beta

@spiracss/stylelint-plugin

Fixed

  • spiracss/class-structure: with rootSingle: true, top-level selectors made only of external.classes / external.prefixes can no longer bypass root Block inclusion checks.
  • spiracss/class-structure: report duplicateRootBlock when the same root Block is defined multiple times in one file, and clarify nested rewrite guidance for rootSelectorNeedNesting.

@spiracss/html-cli

  • Align package version with the monorepo release.

VS Code Extensions

  • Align extension version with the monorepo release.

spiracss-html-to-scss

  • Update @spiracss/html-cli dependency to ^0.4.1.
  • Align extension version with the monorepo release.

Documentation

  • Updated AI agent guide to v0.4.1-beta.
  • Updated header/quickstart version badges to v0.4.1-beta.

0.4.0-beta

@spiracss/stylelint-plugin

Breaking Changes

  • Stylelint v17 required: Dropped Stylelint v16 support. Users on v16 should pin @spiracss/stylelint-plugin@0.3.x.
  • ESM only: Dropped CommonJS build. The package now ships ESM only.
  • Node.js >= 20.19.0: Minimum Node.js version raised to match Stylelint 17.
  • moduleResolution: TypeScript moduleResolution must be Bundler, Node16, or NodeNext (Stylelint 17 uses exports for type declarations).
  • createRules() accepts config object only: createRules(path) no longer accepts a file path string. Import spiracss.config.js and pass the config object directly, or use createRulesAsync(path) for path-based loading.

Changed

  • Simplified helpers.ts: removed CJS compatibility code (~80 lines), loadConfigFromPathAsync now uses native import() directly.
  • Removed CJS build scripts and tsconfig.build.cjs.json.
  • Build scripts converted from .cjs to .mjs.

@spiracss/html-cli

  • Align package version with the monorepo release.

VS Code Extensions

  • Align extension version with the monorepo release.

spiracss-html-to-scss

  • Update @spiracss/html-cli dependency to ^0.4.0.
  • Align extension version with the monorepo release.

Documentation

  • Updated all docs to remove CJS examples and add ESM-only configuration.
  • Added v0.3 AI agent documentation for Stylelint v16 users.
  • Updated AI agent guide to v0.4.0-beta.

0.3.4-beta

@spiracss/stylelint-plugin

Fixed

  • Allow @at-root inside interaction sections for external-only root selectors (external classes only).

Documentation

  • Document external-only root exceptions for @at-root.

0.3.3-beta

@spiracss/stylelint-plugin

Fixed

  • When using createRules(), fall back to aliasRoots.components for componentsDirs if stylelint.base.paths.components is not set, avoiding nonComponentLink false positives.

Documentation

  • Update config docs and AI agent guide to document the componentsDirs fallback.

0.3.2-beta

@spiracss/stylelint-plugin

Changed

  • Treat CSS Modules :global / :local as transparent across rules (the inner selector is linted).
  • Improve selector handling for :global wrappers (including rightmost :global(...) targets and selector lists).
  • Root filename checks (rootFile) accept *.module.scss and support childFileCase for files under childDir.

@spiracss/html-cli

Added

  • Improve JSX class/className extraction (string/template literals, member access).
  • Add jsxClassBindings.memberAccessAllowlist to restrict member access extraction (empty array disables it).

Changed

  • Default generator.layoutMixins is now empty ([]) (no mixins are injected unless configured).

VS Code Extensions

spiracss-html-to-scss

  • Update @spiracss/html-cli dependency to ^0.3.2.
  • Align extension version with the monorepo release.

Documentation

  • Update AI agent guide and config docs for v0.3.2 (rootFile / @rel fileCase, CSS Modules notes).

0.3.1-beta

@spiracss/stylelint-plugin

Added

  • stylelint.rel.fileCase / stylelint.rel.childFileCase options.
  • Accepts *.module.scss for child link comments (CSS Modules).
  • stylelint.class.rootCase defaults stylelint.rel.fileCase when using createRules().

Changed

  • Child link checks now use childFileCase for childDir targets and fileCase for other targets.

@spiracss/html-cli

Added

  • Support childFileCase when generating child SCSS filenames and @rel comments.

VS Code Extensions

spiracss-html-to-scss

  • Support childFileCase for child SCSS generation (aligned with HTML CLI).
  • Update @spiracss/html-cli dependency to ^0.3.1.
  • Align extension version with the monorepo release.

Documentation

  • Update rel-comments option docs (fileCase / childFileCase / *.module.scss).
  • Update AI agent guide compatibility.

0.3.0-beta

@spiracss/stylelint-plugin

Breaking Changes

  • Stylelint config restructured: stylelint.classStructure replaced by stylelint.base / stylelint.class, plus new per-rule sections (stylelint.placement, stylelint.pageLayer, stylelint.interactionProps, stylelint.keyframes, stylelint.pseudo, stylelint.rel).
  • Section renames: interactionPropertiesinteractionProps, keyframesNamingkeyframes, pseudoNestingpseudo, relCommentsrel.
  • Comment/cache keys renamed: stylelint.sectionCommentPatternsstylelint.base.comments, stylelint.cacheSizesstylelint.base.cache, sharedCommentPattern / interactionCommentPatterncomments.shared / comments.interaction.
  • External allowlist moved: allowExternalClasses / allowExternalPrefixesexternal.classes / external.prefixes.
  • New rules enabled by default: spiracss/property-placement, spiracss/page-layer.

Added

  • New rule: spiracss/page-layer — Validates page-layer SCSS (component link comments required for child Blocks)
  • New rule: spiracss/property-placement — Validates property placement (container/item/internal) based on selector role
  • stylelint.pseudo.enabled option

Changed

  • Improved selector parsing and validation logic
  • Error messages updated for clarity
  • Better support for selectorPolicy (data/class mode)

@spiracss/html-cli

Breaking Changes

  • Config schema aligned with the new stylelint config: naming/external settings now read from stylelint.base / stylelint.class (old stylelint.classStructure keys removed).
  • External allowlist renamed to external.classes / external.prefixes.

Changed

  • HTML lint and SCSS generation now use the new external option shape.
  • Config warnings now report the naming source.

VS Code Extensions

  • Documentation links updated to the official site.

spiracss-html-to-scss

  • Config schema aligned with the new stylelint config (same breaking changes as HTML CLI).
  • External allowlist renamed to external.classes / external.prefixes.

Documentation

  • Documentation updated on the official site (spiracss.jp)
  • New rule documentation: spiracss/page-layer, spiracss/property-placement
  • Wording update: “AI” → “AI agents” for consistency
  • Rule docs updated to reflect new error messages and examples

0.2.2-beta

@spiracss/stylelint-plugin

Added

  • keyframes.enabled option to disable the spiracss/keyframes-naming rule entirely

Documentation

  • Add SpiraCSS Design Principles link to README
  • Add Japanese documentation links to Docs section

@spiracss/html-cli

Documentation

  • Add SpiraCSS Design Principles link to README
  • Add Japanese documentation links to Docs section
  • Improve description wording for clarity

VS Code Extensions

  • Add SpiraCSS Design Principles link to README
  • Add Japanese documentation links to Docs section

spiracss-html-to-scss

  • Add SpiraCSS Design Principles link to README
  • Add Japanese documentation links to Docs section

0.2.1-beta

First beta release of all SpiraCSS packages.


0.1.x (Alpha)

Experimental releases during initial development.