Changelog

biomejs/biome · · 12 commits

Bug fixes land across lint, format, and LSP

Highlights include new markdown linting, test-suite alias support, and several important fixes for analyzers, formatters, and editor actions.

Markdown lint rule for fenced code languages (saberoueslati4968415)

Biome now ports markdownlint’s MD040 rule, flagging fenced code blocks that omit a language tag. This adds a new markdown analyzer rule plus formatter/parser support so code fences and their info strings are handled consistently.

Support suite() as a test alias (m1handrf047985)

Test analysis and formatting now recognize suite, fsuite, xsuite, and test.suite as describe-style blocks. That broadens coverage for Jest-like test APIs and avoids false negatives in rules that depend on test structure.

noFloatingPromises now follows generic method signatures (dyc3b7e3559)

The analyzer can now detect unhandled promises returned through generic methods, including patterns used by Playwright fixtures. This closes a class of false negatives where promise-returning callbacks were previously missed.

useExhaustiveSwitchCases handles for...of bindings correctly (dyc37030068)

Switch-exhaustiveness analysis now infers types for loop bindings such as destructured for...of variables. That lets the rule report missing union cases in code paths that were previously analyzed too loosely.

Template closing brace indentation is preserved (FoundDream22e9966)

The JS formatter no longer disturbs the indentation of closing braces in template literals. This is a targeted formatting fix that improves stability for oddly indented template content.

SCSS at-rules can omit a final semicolon (denbezrukov05950a7)

CSS/SCSS parsing and formatting were updated to accept final semicolon omission in several at-rule forms. The change also adjusts generated node builders and related formatter logic, so valid SCSS no longer gets misparsed or reformatted incorrectly.

useSimplifiedLogicExpression preserves trivia (ematipico1534885)

The simplification fix now keeps line breaks and comments intact in multiline conditions, preventing the right-hand side from being accidentally commented out. The same commit also adds editor suppression support for noDynamicNamespaceImportAccess and restores Grit plugin code actions.

Code actions use the right offsets in embedded HTML-ish files (dyc31dd1fc4)

Biome fixed a bug where code actions could target the wrong range inside Vue, Svelte, and Astro files when full HTML support is disabled. This matters for editor reliability: organizing imports and similar actions now apply to the intended embedded section.

Various analyzer bugs fixed (ematipicoc7c4e2b)

This patch bundle fixes several correctness issues across JS and HTML analysis, including noUselessStringConcat, useReadonlyClassProperties, noNoninteractiveElementInteractions, and useHookAtTopLevel. It also includes a large internal semantic-class refactor to support those fixes.

Resolve generic method signatures in their own scope (dyc3b7e3559)

Type inference now resolves generic method signatures in their own scope, which improves callback parameter analysis and promise detection. That makes type-driven rules behave correctly in nested generic contexts instead of leaking or mis-resolving bindings.

Other misc changes

  • Lint rule umbrella relationship maintenance (Netail39da887)
  • Miscellaneous bug-fix bundle and snapshot updates (ematipico9bd70c7)
  • Case-insensitive binary search utilities and benchmark scaffolding (dyc343cdaad)
  • CSS formatter/parser adjustments for at-rule endings and semicolon handling (denbezrukov05950a7)
  • LSP and service test expansions for simplification/code-action regressions (ematipico1534885, dyc31dd1fc4, dyc3b7e3559)