All versions since 2.3.2
2.3.2
Patch Changes
-
#7859
c600618Thanks @Netail! - Added the nursery rulenoIncrementDecrement, disallows the usage of the unary operators ++ and —. -
#7901
0d17b05Thanks @ematipico! - Fixed #7837, where Biome couldn’t properly parse text expressions that contained nested curly brackets. This was breaking parsing in Astro and Svelte files. -
#7874
e617d36Thanks @Bertie690! - Fixed #7230:noUselessStringConcatno longer emits false positives for multi-line strings with leading+operators.Previously, the rule did not check for leading newlines on the
+operator, emitting false positives if one occurred at the start of a line.
Notably, formatting withoperatorLinebreak="before"would move the+operators to the start of lines automatically, resulting in spurious errors whenever a multi-line string was used.Now, the rule correctly detects and ignores multi-line concatenations with leading operators as well, working regardless of the setting of
operatorLinebreak.Example
// The following code used to error if the `+` operators were at the start of lines (as opposed to the end).// Now, the rule correctly recognizes this as a stylistic concatenation and ignores it.const reallyLongStringThatShouldNotError ="Lorem ipsum dolor sit amet consectetur adipiscing elit." +"Quisque faucibus ex sapien vitae pellentesque sem placerat." +"In id cursus mi pretium tellus duis convallis." +"Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla"; -
#7786
33ffcd5Thanks @daivinhtran! - Fixed #7601: Properly match Grit plugin’s code snippet with only one child. -
#7901
0d17b05Thanks @ematipico! - Fixed #7837, where Biome Language Server panicked when opening HTML-ish files when the experimental full support is enabled.
2.3.3
Patch Changes
-
#7907
57bd662Thanks @ematipico! - Fixed #7839. Now the Biome parser correctly parses the Astro frontmatter even when a triple fence is inside quotes. -
#7934
a35c496Thanks @alissonlauffer! - Fixed #7919: The HTML parser now correctly handles Unicode BOM (Byte Order Mark) characters at the beginning of HTML files, ensuring proper parsing and tokenization. -
#7869
c80361dThanks @matanshavit! - Fixed #7864: Biome now preserves component tag name casing in Svelte, Astro, and Vue files. -
#7926
69cececThanks @matanshavit! - Added the rulenoParametersOnlyUsedInRecursion.This rule detects function parameters that are exclusively used in recursive calls and can be removed to simplify the function signature since they are effectively unused.
function factorial(n, acc) {if (n === 0) return 1;return factorial(n - 1, acc); // acc is only used here}Fixes #6484.
-
#7774
2509b91Thanks @dibashthapa! - Fixed #7657: Added the new ruleno-unknown-propertyfrom ESLint -
#7918
7165d06Thanks @dyc3! - Fixed #7913: The CSS parser, withtailwindDirectivesenabled, will now correctly handle@slot. -
#7959
ffae203Thanks @siketyan! - Fixed the Biome Language Server so it no longer returns an internal error when the formatter is disabled in the configuration.
2.3.4 Latest
Patch Changes
-
#7989
4855c4aThanks @alissonlauffer! - Fixed a regression in Astro frontmatter parsing where comments inside quoted strings were incorrectly detected as actual comments. This caused the parser to prematurely terminate frontmatter parsing when encountering strings likeconst test = "//";. For example, the following Astro frontmatter now parses correctly:---const test = "// not a real comment";--- -
#7968
0b28f5fThanks @denbezrukov! - Refactored formatter to use strictTokenelement for better performance. The newTokenvariant is optimized for static, ASCII-only text (keywords, operators, punctuation) with the following constraints:- ASCII only (no Unicode characters)
- No newlines (
\n,\r) - No tab characters (
\t)
This enables faster printing and fitting logic by using bulk string operations (
push_str,len()) instead of character-by-character iteration with Unicode width calculations. -
#7941
19b8280Thanks @Conaclos! - Fixed #7943. Rules’optionsare now properly merged with the inheritedoptionsfrom a shared configuration.This means that you can now override a specific option from a rule without resetting the other options to their default.
Given the following shared configuration:
{"linter": {"rules": {"style": {"useNamingConvention": {"level": "on","options": {"strictCase": false,"conventions": [{"selector": { "kind": "variable", "scope": "global" },"formats": ["CONSTANT_CASE"]}]}}}}}}And the user configuration that extends this shared configuration:
{"extends": ["shared.json"],"linter": {"rules": {"style": {"useNamingConvention": {"level": "on","options": { "strictCase": true }}}}}}The obtained merged configuration is now as follows:
{"extends": ["shared.json"],"linter": {"rules": {"style": {"useNamingConvention": {"level": "on","options": {"strictCase": true,"conventions": [{"selector": { "kind": "variable", "scope": "global" },"formats": ["CONSTANT_CASE"]}]}}}}}} -
#7969
425963dThanks @ematipico! - Added support for the Svelte syntax{@debug}. The Biome HTML parser is now able to parse and format the blocks:{@debug foo,bar, something}{@debug foo, bar, something} -
#7986
3256f82Thanks @lisiur! - Fixed #7981. Now Biome correctly detects and parseslang='tsx'andlang='jsx'languages when used inside in.vuefiles, when.experimentalFullSupportEnabledis enabled. -
#7921
547c2daThanks @dyc3! - Fixed #7854: The CSS parser, withtailwindDirectivesenabled, will now parse@source inline("underline");. -
#7856
c9e20c3Thanks @Netail! - Added the nursery rulenoContinue. Disallowing the usage of thecontinuestatement, structured control flow statements such asifshould be used instead.Invalid:
let sum = 0,i;for (i = 0; i < 10; i++) {if (i >= 5) {continue;}sum += i;}Valid:
let sum = 0,i;for (i = 0; i < 10; i++) {if (i < 5) {sum += i;}}
Copyright (c) 2023-present Biome Developers and Contributors.