Releases: biomejs/biome
CLI v1.5.3
LSP
Bug fixes
-
Fix #1584. Ensure the LSP only registers the formatter once. Contributed by @nhedger
-
Fix #1589. Fix invalid formatting of own line comments when they were at the end of an import/export list. Contributed by @spanishpear
Configuration
Bug fixes
-
Override correctly the recommended preset (#1349).
Previously, if unspecified, Biome turned on the recommended preset in overrides.
This resulted in reporting diagnostics with a severity level set tooff
.
This in turn caused Biome to fail.Now Biome won't switch on the recommended preset in
overrides
unless told to do so.Contributed by @Conaclos
-
Don't format ignored files that are well-known JSONC files when
files.ignoreUnknown
is enabled (#1607).Previously, Biome always formatted files that are known to be JSONC files (e.g.
.eslintrc
) whenfiles.ignoreUnknown
was enabled.Contributed by @Conaclos
Formatter
Bug fixes
- Fix #1178, where the line ending option wasn't correctly applied. Contributed by @ematipico
- Fix #1571. Fix invalid formatting of nested multiline comments. Contributed by @ah-yu
Linter
Bug fixes
-
Fix #1575. noArrayIndexKey now captures array index value inside template literals and with string concatination. Contributed by @vasucp1207
-
Linter rules that inspect regexes now handle multibyte characters correctly (#1522).
Previously, noMisleadingCharacterClass, noMultipleSpacesInRegularExpressionLiterals, and noEmptyCharacterClassInRegex made Biome errors on multi-bytes characters.
Multibyte characters are now handled correctly.The following code no longer raises an internal error:
// Cyrillic characters /[\u200E\u2066-\u2069]/gu;
Contributed by @Conaclos
-
useExhaustiveDependencies no longer made Biome errors in code TypeScript import equal declarations (#1194). Contributed by @Conaclos
-
Fix typo in the diagnostic of noNodejsModules. Contributed by @huseeiin
Parser
Bug fixes
-
Accept the
const
modifier for type parameter in method type signature (#1624).The following code is now correctly parsed:
type Foo = { <const T>(); method<const T>(); };
Contributed by @magic-akari
Website
New
- Add a page that maps the Biome rule to its source. Contributed by @ematipico
Fixes
-
Generate Open Graph images based on the linked page. Contributed by @ematipico
-
Fix examples of the git hook page. Contributed by @9renpoto, @lmauromb, and @Conaclos
-
Fix dead and erroneous hyperlinks. Contributed by @Sec-ant and Conaclos
New Contributors
- @spanishpear made their first contribution in #1604
- @9renpoto made their first contribution in #1612
- @huseeiin made their first contribution in #1621
- @Sec-ant made their first contribution in #1632
Full Changelog: cli/v1.5.2-nightly.91c7730...cli/v1.5.3
CLI v1.5.2
CLI
Bug fixes
-
Fix #1512 by skipping verbose diagnostics from the count. Contributed by @ematipico
-
Correctly handle cascading
include
andignore
.Previously Biome incorrectly included files that were included at tool level and ignored at global level.
In the following example,file.js
was formatted when it should have been ignored.
Now, Biome correctly ignores the directory./src/sub/
.❯ tree src src └── sub └── file.js ❯ cat biome.json { "files": { "ignore": ["./src/sub/"] }, "formatter": { "include": ["./src"] } }
Contributed by @Conaclos
-
Don't emit verbose warnings when a protected file is ignored.
Some files, such as
package.json
andtsconfig.json
, are protected.
Biome emits a verbose warning when it encounters a protected file.Previously, Biome emitted this verbose warning even if the file was ignored by the configuration.
Now, it doesn't emit verbose warnings for protected files that are ignored.Contributed by @Conaclos
-
overrides
no longer affect which files are ignored. Contributed by @Conaclos -
The file
biome.json
can't be ignored anymore. Contributed by @ematipico -
Fix #1541 where the content of protected files wasn't returned to
stdout
. Contributed by @ematipico -
Don't handle CSS files, the formatter isn't ready yet. Contributed by @ematipico
Configuration
Bug fixes
-
Fix 1440, a case where
extends
andoverrides
weren't correctly emitting the final configuration. Contributed by @arendjr -
Correctly handle
include
whenignore
is set (#1468). Contributed by @ConaclosPreviously, Biome ignored
include
ifignore
was set.
Now, Biome check bothinclude
andignore
.
A file is processed if it is included and not ignored.
Ifinclude
is not set all files are considered included.
Formatter
Bug fixes
-
Fix placement of comments before
*
token in generator methods with decorators. #1537 Contributed by @ah-yu -
Fix #1406. Ensure comments before the
async
keyword are placed before it. Contributed by @ah-yu -
Fix #1172. Fix placement of line comment after function expression parentheses, they are now attached to first statement in body. Contributed by @kalleep
-
Fix #1511 that made the JavaScript formatter crash. Contributed @Conaclos
Linter
Enhancements
-
Add an unsafe code fix for noConsoleLog. Contributed by @vasucp1207
-
useArrowFunction no longer reports function in
extends
clauses or in anew
expression. Contributed by @ConaclosThis cases requires the presence of a prototype.
Bug fixes
-
The fix of useArrowFunction now adds parentheses around the arrow function in more cases where it is needed (#1524).
A function expression doesn't need parentheses in most expressions where it can appear.
This is not the case with the arrow function.
We previously added parentheses when the function appears in a call or member expression.
We now add parentheses in binary-like expressions and other cases where they are needed, hopefully covering all cases.Previously:
- f = f ?? function() {}; + f = f ?? () => {};
Now:
- f = f ?? function() {}; + f = f ?? (() => {});
Contributed by @Conaclos
-
Fix #1514. Fix autofix suggestion to avoid the syntax error in
no_useless_fragments
. Contributed by @togami2864
What's Changed
Other changes
- docs(website): sync minor differences with the english version by @makotot in #1515
- docs(website): update
biomejs/setup-biome@v2
by @Marukome0743 in #1520 - refactor(cli): some cleanup by @ematipico in #1526
- docs(website): fix code snippets that take more space by @vasucp1207 in #1529
- chore: add myself as a maintainer by @vasucp1207 in #1532
- doc(website): upgrade doc for cn by @eryue0220 in #1525
- refactor(linter): add source metadata by @Conaclos in #1519
- docs(website): add git-hook Japanese translation by @OldBigBuddha in #1503
- Arendjr maintainer by @arendjr in #1540
- fix(docs): update $schema url by @malobre in #1539
- docs(pt-br): translated git hooks page by @CookieDasora in #1498
- feat: HTML grammar by @ematipico in #1544
- feat: foudations for migration from prettier by @ematipico in #1545
- chore: move
nhedger
to core contributors by @nhedger in #1557
New Contributors
- @makotot made their first contribution in #1515
- @ah-yu made their first contribution in #1500
- @OldBigBuddha made their first contribution in #1503
- @malobre made their first contribution in #1539
Full Changelog: cli/v1.5.1...cli/v1.5.2
CLI v1.5.1
CLI
Bug fixes
- The diagnostics
files/missingHandler
are now shown only when the option--verbose
is passed. Contributed by @ematipico - The diagnostics for protected files are now shown only when the option
--verbose
is passed. Contributed by @ematipico - Fix #1465, by taking in consideration the workspace folder when matching a pattern. Contributed by @ematipico
- Fix #1465, by correctly process globs that contain file names. Contributed by @ematipico
Formatter
Bug fixes
- Fix #1170. Fix placement of comments inside default switch clause. Now all line comments that have a preceding node will keep their position. Contributed by @kalleep
Linter
Bug fixes
-
Fix #1335. noUselessFragments now ignores code action on component props when the fragment is empty. Contributed by @vasucp1207
-
useConsistentArrayType was accidentally placed in the
style
rule group instead of thenursery
group. It is now correctly placed undernursery
. -
Fix #1483. useConsistentArrayType now correctly handles its option. Contributed by @Conaclos
-
Fix #1502. useArrowFunction now correctly handle functions that return a (comma) sequence expression. Contributed by @Conaclos
Previously the rule made an erroneous suggestion:
- f(function() { return 0, 1; }, ""); + f(() => 0, 1, "")
Now, the rule wraps any comma sequence between parentheses:
- f(function() { return 0, 1; }, ""); + f(() => (0, 1), "")
What's Changed
Other changes
- feat: update vscode extension image on website by @unvalley in #1470
- doc: add git-hook translation by @eryue0220 in #1444
- Fix typo in roadmap-2024.md by @yukukotani in #1474
- docs: update language server setup info for Helix by @David-Else in #1031
- fix: Use the correct diagnostic level in advice by @thewilloftheshadow in #1475
- docs(website): add
<link rel=alternate>
to RSS feeds by @azu in #1486
New Contributors
- @yukukotani made their first contribution in #1474
- @David-Else made their first contribution in #1031
- @thewilloftheshadow made their first contribution in #1475
- @azu made their first contribution in #1486
Full Changelog: cli/v1.5.0...cli/v1.5.1
CLI v1.5.0
Biome now scores 97% compatibility with Prettier and features more than 190 linter rules.
CLI
New features
-
Biome now shows a diagnostic when it encounters a protected file. Contributed by @ematipico
-
The command
biome migrate
now updates the$schema
if there's an outdated version. -
The CLI now takes in consideration the
.gitignore
in the home directory of the user, if it exists. Contributed by @ematipico -
The
biome ci
command is now able to print GitHub Workflow Commands when there are diagnostics in our code. Contributed by @nikeee
This might require setting the proper permissions on your GitHub action:permissions: pull-requests: write
-
The commands
format
,lint
,check
andci
now accept two new arguments:--changed
and--since
. Use these options with the VCS integration
is enabled to process only the files that were changed. Contributed by @simonxabrisbiome format --write --changed
-
Introduced a new command called
biome explain
, which has the capability to display documentation for lint rules. Contributed by @kalleep -
You can use the command
biome explain
to print the documentation of lint rules. Contributed by @kalleepbiome explain noDebugger biome explain useAltText
-
You can use the command
biome explain
to print the directory where daemon logs are stored. Contributed by @ematipicobiome explain daemon-logs
-
Removed the hard coded limit of 200 printable diagnostics. Contributed by @ematipico
Bug fixes
-
Fix #1247, Biome now prints a warning diagnostic if it encounters files that can't handle. Contributed by @ematipico
You can ignore unknown file types using the
files.ignoreUnknown
configuration inbiome.json
:{ "files": { "ignoreUnknown": true } }
Or the
--files-ignore-unknown
CLI option:biome format --files-ignore-unknown=true --write .
-
Fix #709 and #805 by correctly parsing
.gitignore
files. Contributed by @ematipico -
Fix #1117 by correctly respecting the matching. Contributed by @ematipico
-
Fix #691 and #1190, by correctly apply the configuration when computing
overrides
configuration. Contributed by @ematipico
Configuration
New features
-
Users can specify git ignore patterns inside
ignore
andinclude
properties, for example it's possible to allow list globs of files using the!
character:{ "files": { "ignore": [ "node_modules/**", "!**/dist/**" // this is now accepted and allow files inside the `dist` folder ] } }
Editors
New features
-
The LSP registers formatting without the need of using dynamic capabilities from the client.
This brings formatting services to the editors that don't support or have limited support for dynamic capabilities.
Formatter
Bug fixes
-
Fix #1169. Account for escaped strings when computing layout for assignments. Contributed by @kalleep
-
Fix #851. Allow regular function expressions to group and break as call arguments, just like arrow function expressions. #1003 Contributed by @faultyserver
-
Fix #914. Only parenthesize type-casted function expressions as default exports. #1023 Contributed by @faultyserver
-
Fix #1112. Break block bodies in case clauses onto their own lines and preserve trailing fallthrough comments. #1035 Contributed by @faultyserver
-
Fix
RemoveSoftLinesBuffer
behavior to also removed conditional expanded content, ensuring no accidental, unused line breaks are included #1032 Contributed by @faultyserver -
Fix #1024. Allow JSX expressions to nestle in arrow chains #1033 Contributed by @faultyserver
-
Fix incorrect breaking on the left side of assignments by always using fluid assignment. #1021 Contributed by @faultyserver
-
Fix breaking strategy for nested object patterns in function parameters #1054 Contributed by @faultyserver
-
Fix over-indention of arrow chain expressions by simplifying the way each chain is grouped #1036, #1136, and #1162 Contributed by @faultyserver.
-
Fix "simple" checks for calls and member expressions to correctly handle array accesses, complex arguments to single-argument function calls, and multiple-argument function calls. #1057 Contributed by @faultyserver
-
Fix text wrapping and empty line handling for JSX Text elements to match Prettier's behavior. #1075 Contributed by @faultyserver
-
Fix leading comments in concisely-printed arrays to prevent unwanted line breaks. #1135 Contributed by @faultyserver
-
Fix
best_fitting
and interned elements preventing expansion propagation from sibling elements. #1141 Contributed by @faultyserver -
Fix heuristic for grouping function parameters when type parameters with constraints are present. #1153. Contributed by @faultyserver.
-
Fix binary-ish and type annotation handling for grouping call arguments in function expressions and call signatures. #1152 and #1160 Contributed by @faultyserver
-
Fix handling of nestled JSDoc comments to preserve behavior for overloads. #1195 Contributed by @faultyserver
-
Fix #1208. Fix extraction of inner types when checking for simple type annotations in call arguments. #1195 Contributed by @faultyserver
-
Fix #1220. Avoid duplicating comments in type unions for mapped, empty object, and empty tuple types. #1240 Contributed by @faultyserver
-
Fix #1356. Ensure
if_group_fits_on_line
content is always written inRemoveSoftLinesBuffer
s. #1357 Contributed by @faultyserver -
Fix #1171. Correctly format empty statement with comment inside arrow body when used as single argument in call expression. Contributed by @kalleep
-
Fix #1106. Fix invalid formatting of single bindings when Arrow Parentheses is set to "AsNeeded" and the expression breaks over multiple lines. #1449 Contributed by @faultyserver
Linter
Promoted rules
New rules are incubated in the nursery group.
Once stable, we promote them to a stable group.
The following rules are promoted:
- a11y/noAriaHiddenOnFocusable
- a11y/useValidAriaRole
- complexity/useRegexLiterals
- suspicious/noImplicitAnyLet
- style/noDefaultExport
New features
-
Add useExportType that enforces the use of type-only exports for types. Contributed by @Conaclos
interface A {} interface B {} class C {} - export type { A, C } + export { type A, C } - export { type B } + export type { B }
-
Add useImportType that enforces the use of type-only imports for types. Contributed by @Conaclos
- import { A, B } from "./mod.js"; + import { type A, B } from "mod"; let a: A; const b: B = new B();
Also, the rule groups type-only imports:
- import { type A, type B } from "./mod.js"; + import type { A, B } from "./mod.js";
-
Add useFilenamingConvention, that enforces naming conventions for JavaScript and TypeScript filenames. Contributed by @Conaclos
By default, the rule requires that a filename be in
camelCase
,kebab-case
,snake_case
, or matches the name of anexport
in the file.
The rule provides options to restrict the allowed cases. -
Add useNodejsImportProtocol that enforces the use of the
node:
protocol when importing...
Intellij Plugin v0.0.7
Editors
New features
- The LSP register formatting without the need of using dynamic capabilities from the client.
Linter
Bug fixes
-
Fix #959. noEmptyInterface no longer reports interface that extends a type and is in an external module. Contributed by @Conaclos
Empty interface that extends a type are sometimes used to extend an existing interface.
This is generally used to extend an interface of an external module.interface Extension { metadata: unknown; } declare module "@external/module" { export interface ExistingInterface extends Extension {} }
-
Fix #1061. noRedeclare no longer reports overloads of
export default function
. Contributed by @ConaclosThe following code is no longer reported:
export default function(a: boolean): boolean; export default function(a: number): number; export default function(a: number | boolean): number | boolean { return a; }
-
Fix #651, useExhaustiveDependencies no longer reports out of scope dependecies. Contributed by @kalleep
The following code is no longer reported:
let outer = false; const Component = ({}) => { useEffect(() => { outer = true; }, []); }
-
Fix #728. useSingleVarDeclarator no longer outputs invalid code. Contributed by @Conaclos
What's Changed
Other changes
- feat(css_parser):simple block by @suxin2017 in #976
- fix(js_parser): Illegal duplicate default export declarations by @suxin2017 in #1053
- fix(js_formatter): break nested destructured binding patterns by @faultyserver in #1054
- feat(playground): use Starlight by @victor-teles in #985
- fix(js_formatter): fix indention when huggable expressions break in arrow chains by @faultyserver in #1036
- fix(js_formatter): fix SimpleArgument checks for call and member expressions by @faultyserver in #1057
- feat(website): Introduction to textlint by @yossydev in #986
- Fix typo by @printfn in #1071
- docs(website): update CODEOWNERS and broken links by @nissy-dev in #1078
- feat(website): add autolink headings back by @Yan-Thomas in #1074
- docs(website): add missing indentwidth for js in config reference by @thunfisch987 in #1073
- fix(js_formatter): fix JSX text wrapping and empty line handling by @faultyserver in #1075
- chore(js_formatter): update compat reports by @Conaclos in #1080
- docs(website): add non-null asserted optional chain Prettier divergence by @Conaclos in #1066
- docs(website): add missing indentWidth for json by @thunfisch987 in #1086
- docs(website): add multiple language support for the sidebar by @morinokami in #1085
- docs(website): portuguese translation by @CookieDasora in #1068
- fix(js_parser): multiple function overload bug by @suxin2017 in #1079
- feat(css_parser): support
@font-face
by @togami2864 in #1097 - fix(lint/useHookAtTopLevel): detect early returns before calls to hooks by @arendjr in #1018
- docs(website): break down formatter in three pages by @ematipico in #1098
- fix(editors/intellij): remove build range by @victor-teles in #1093
- feat: add musl target support in npm pakcage by @matteosacchetto in #1067
New Contributors
- @printfn made their first contribution in #1071
- @thunfisch987 made their first contribution in #1073
- @CookieDasora made their first contribution in #1068
- @matteosacchetto made their first contribution in #1067
Full Changelog: cli/v1.4.1-nightly.bc772a3...lsp-intellij/v0.0.7
CLI v1.4.1
Biome scores 96% compatibility with Prettier! Read our announcement on our blog.
Editors
- Fix #933. Some files are properly ignored in the LSP too. E.g.
package.json
,tsconfig.json
, etc.
Formatter
Bug fixes
-
Fix some accidental line breaks when printing array expressions within arrow functions and other long lines #917. Contributed by @faultyserver
-
Match Prettier's breaking strategy for
ArrowChain
layouts #934. Contributed by @faultyserver -
Fix double-printing of leading comments in arrow chain expressions #951. Contributed by @faultyserver
Linter
Bug fixes
- Fix #910, where the rule
noSvgWithoutTitle
should skip elements that havearia-hidden
attributes. Contributed by @vasucp1207
Enhancement
-
Implements #924 and #920. noUselessElse now ignores
else
clauses that follow at least oneif
statement that doesn't break early. Contributed by @ConaclosFor example, the following code is no longer reported by the rule:
function f(x) { if (x < 0) { // this `if` doesn't break early. } else if (x > 0) { return x; } else { // This `else` block was previously reported as useless. } }
Bug fixes
-
Fix #918, useSimpleNumberKeys no longer repports false positive on comments. Contributed by @kalleep
-
Fix #953, noRedeclare no longer reports type parameters with the same name in different mapped types as redeclarations. Contributed by @Conaclos
-
Fix #608, useExhaustiveDependencies no longer repports missing dependencies for React hooks without dependency array. Contributed by @kalleep
Parser
What's Changed
Other changes
- fix: fix blog list not showing all posts by @Yan-Thomas in #915
- fix(js_formatter): array printing and grouping in arrows by @faultyserver in #917
- ci(release_cli): fix homebrew job by @nhedger in #919
- fix(website): fix title tags by @Yan-Thomas in #925
- fix: typo by @u-abyss in #929
- doc(ja): translate
How Biome works
into Japanese by @Spice-Z in #930 - doc(ja): translate
versioning
into Japanese by @yossydev in #906 - doc(ja): translate
Formatter
doc into Japanese by @Gumichocopengin8 in #904 - doc(ja): translate
credits
into Japanese by @hitohata in #903 - fix: typo by @gc in #936
- fix:
noSvgWithoutTitle
skip on aria-hidden by @vasucp1207 in #928 - docs(ja): translate
Getting Started
into Japanese by @Yuiki in #940 - docs(website): show sponsors on japanese document by @unvalley in #945
- fix(website): json schema for 1.4.0 by @Conaclos in #948
- fix(js_formatter): Match Prettier's breaking strategy for ArrowChain layouts by @faultyserver in #934
- feat(css_parser): CSS Parser pseudo element selector #268 by @denbezrukov in #883
- fix(js_formatter): Avoid double-printing the first leading comments in arrow chains by @faultyserver in #951
- fix(package): add ROME MIT license by @Conaclos in #949
- docs(ja): translate
vscode
into Japanese by @sakimyto in #938 - doc(ja): translate continuous-integration into Japanese by @yossydev in #955
- docs(ja): translate
Philosophy
into Japanese by @yoshi2no in #944 - docs(ja): translate
Architecture
into Japanese by @seo1nk in #912 - feat(website): Move blog to CC and fix RSS by @Yan-Thomas in #937
- docs(ja): translate big-projects into Japanese by @u-abyss in #962
- feat(css_parser): CSS Parser charset #268 by @denbezrukov in #950
- fix(website): fix fragile blog links by @Yan-Thomas in #965
- feat(css_parser): CSS Parser color profile at rule #268 by @denbezrukov in #966
- feat(website): optimize blog images and fix meta/a11y by @Yan-Thomas in #973
- chore: improve issue templates by @Conaclos in #981
New Contributors
- @Yan-Thomas made their first contribution in #915
- @u-abyss made their first contribution in #929
- @Spice-Z made their first contribution in #930
- @hitohata made their first contribution in #903
- @gc made their first contribution in #936
- @sakimyto made their first contribution in #938
- @kalleep made their first contribution in #957
- @seo1nk made their first contribution in #912
Full Changelog: cli/v1.4.0...cli/v1.4.1
CLI v1.4.0
Biome scores 96% compatibility with Prettier! Read our announcement on our blog.
CLI
-
Remove the CLI options from the
lsp-proxy
, as they were never meant to be passed to that command. Contributed by @ematipico -
Add option
--config-path
tolsp-proxy
andstart
commands. It's now possible to tell the Daemon server to loadbiome.json
from a custom path. Contributed by @ematipico -
Add new
--diagnostic-level
option to let users control the level of diagnostics printed by the CLI. Possible values are:"info"
,"warn"
,"hint"
. Contributed by @simonxabris -
Add option
--line-feed
to theformat
command. Contributed by @SuperchupuDev -
Add option
--bracket-same-line
to theformat
command. Contributed by @faultyserve -
Add option
--bracket-spacing
to theformat
command. Contributed by @faultyserve
Bug fixes
- Fix the command
format
, now it returns a non-zero exit code when if there pending diffs. Contributed by @ematipico
Configuration
- Add option
formatter.lineFeed
. Contributed by @SuperchupuDev - Add option
javascript.formatter.bracketSameLine
. Contributed by @faultyserve - Add option
javascript.formatter.bracketSpacing
. Contributed by @faultyserve
Formatter
New features
- Add a new option
--line-ending
. This option allows changing the type of line endings. Contributed by @SuperchupuDev - Added a new option called
--bracket-spacing
to the formatter. This option allows you to control whether spaces are inserted around the brackets of object literals. #627. Contributed by @faultyserver - Added a new option called
--bracket-same-line
to the formatter. This option allows you to control whether spaces are inserted around the brackets of object literals. #627. Contributed by @faultyserver
Bug fixes
-
Fix #832, the formatter no longer keeps an unnecessary trailing comma in type parameter lists. Contributed by @Conaclos
-
Fix #301, the formatter should not break before the
in
keyword. Contributed by @ematipico
Linter
Promoted rules
- a11y/noInteractiveElementToNoninteractiveRole
- complexity/noThisInStatic
- complexity/useArrowFunction
- correctness/noEmptyCharacterClassInRegex
- correctness/noInvalidNewBuiltin
- style/noUselessElse
- style/useAsConstAssertion
- style/useShorthandAssign
- suspicious/noApproximativeNumericConstant
- suspicious/noMisleadingInstantiator
- suspicious/noMisrefactoredShorthandAssign
The following rules are now recommended:
The following rules are now deprecated:
- correctness/noNewSymbol
The rule is replaced by correctness/noInvalidNewBuiltin
New features
-
Add noDefaultExport which disallows
export default
. Contributed by @Conaclos -
Add noAriaHiddenOnFocusable which reports hidden and focusable elements. Contributed by @vasucp1207
-
Add noImplicitAnyLet that reports variables declared with
let
and without initialization and type annotation. Contributed by @TaKO8Ki and @b4s36t4 -
Add useAwait that reports
async
functions that don't use anawait
expression. -
Add useValidAriaRole. Contributed by @vasucp1207
-
Add useRegexLiterals that suggests turning call to the regex constructor into regex literals. Contributed by @Yuiki
Enhancements
- Add an unsafe code fix for a11y/useAriaActivedescendantWithTabindex
Bug fixes
-
Fix #639 by ignoring unused TypeScript's mapped key. Contributed by @Conaclos
-
Fix #565 by handling several
infer
with the same name in extends clauses of TypeScript's conditional types. Contributed by @Conaclos -
Fix #653. noUnusedImports now correctly removes the entire line where the unused
import
is. Contributed by @Conaclos -
Fix #607
useExhaustiveDependencies
, ignore optional chaining, Contributed by @msdlisper -
Fix #676, by using the correct node for the
"noreferrer"
when applying the code action. Contributed by @ematipico -
Fix #455. The CLI can now print complex emojis to the console correctly.
-
Fix #727. noInferrableTypes now correctly keeps type annotations when the initialization expression is
null
. Contributed by @Conaclos -
Fix #784, noSvgWithoutTitle fixes false-positives to
aria-label
and reports svg's role attribute is implicit. Contributed by @unvalley -
Fix #834 that made noUselessLoneBlockStatements reports block statements of switch clauses. Contributed by @vasucp1207
-
Fix #783 that made noUselessLoneBlockStatements reports block statements of
try-catch
structures. Contributed by @hougesen -
Fix #69 that made correctness/noUnnecessaryContinue incorrectly reports a
continue
used to break a switch clause. Contributed by @TaKO8Ki -
Fix #664 by improving the diagnostic of style/useNamingConvention when double capital are detected in strict camel case mode. Contributed by @vasucp1207
-
Fix #643 that erroneously parsed the option of complexity/useExhaustiveDependencies. Contributed by @arendjr
Parser
Bug fixes
- Fix #846 that erroneously parsed
<const T,>() => {}
as a JSX tag instead of an arrow function when both TypeScript and JSX are enabled.
VSCode
What's Changed
Other changes
- fix: avoid escape for jsx by @Gumichocopengin8 in #842
- feat(js_formatter): es5 trailing comma revision by @Conaclos in #848
- chore: upgrade prettier to v3.1.0 by @seitarof in #855
- fix(formatter): fix wrong Indentation for leading comments in empty statement by @TaKO8Ki in #858
- fix(matcher): fix wrongly ignored paths by @TaKO8Ki in #859
- chore: Add TaKO8Ki to Maintainers team by @TaKO8Ki in #862
- chore: use the same
Prettier
version in Biome by @Gumichocopengin8 in #864 - docs: clarify
organizeImports
is opt-out by @kt3k in #866 - feat(css_parser): CSS Parser pseudo element selector #268 by @denbezrukov in #839
- feat: add more ignored files by @Gumichocopengin8 in #875
- fix(formatter): Line breaking after
extends
in type parameters by @Yuiki in #876 - challenge: update reports by @Conaclos in #877
- fix(tooling): update the script to bump the nightly version by @chansuke in #874
- chore: Add myself as a maintainer in CONTRIBUTING.md by @faultyserver in #884
- chore: upgrade Rust to 1.74.0 by @togami2864 in #889
- docs: fix link to playground instrunctions by @chansuke in #888
- docs: fix link to technical principals by @yoshi2no in https://github.com/bio...
VSCode Extension v1.7.20231109
Analyzer
CLI
-
Remove the CLI options from the
lsp-proxy
, as they were never meant to be passed to that command. Contributed by @ematipico -
Add option
--config-path
tolsp-proxy
andstart
commands. It's now possible to tell the Daemon server to loadbiome.json
from a custom path. Contributed by @ematipico -
Add new
--diagnostic-level
option to let users control the level of diagnostics printed by the CLI. Possible values are:"info"
,"warn"
,"hint"
. Contributed by @simonxabris
Bug fixes
- Fix the command
format
, now it returns a non-zero exit code when if there pending diffs. Contributed by @ematipico
Configuration
Editors
Formatter
JavaScript APIs
Linter
Bug fixes
-
Fix #639 by ignoring unused TypeScript's mapped key. Contributed by @Conaclos
-
Fix #565 by handling several
infer
with the same name in extends clauses of TypeScript's conditional types. Contributed by @Conaclos -
Fix #653. noUnusedImports now correctly removes the entire line where the unused
import
is. Contributed by @Conaclos -
Fix #607
useExhaustiveDependencies
, ignore optional chaining, Contributed by @msdlisper -
Fix #676, by using the correct node for the
"noreferrer"
when applying the code action. Contributed by @ematipico
Parser
VSCode
What's Changed
Other changes
- refactor(diagnostics): use
ParseDiagnostic
instead by @ematipico in #640 - ci(release_cli): move homebrew bump to own job by @nhedger in #641
- Fix parsing
maxAllowedComplexity
by @arendjr in #646 - feat: add
biome_project
by @ematipico in #626 - docs(website): add page that explains some biome's assumptions/behaviour by @ematipico in #649
- docs(website): new guide for editors by @ematipico in #652
- refactor(js_semantic): handle bindings with bogus names by @Conaclos in #654
- feat(cli): help with colours by @ematipico in #658
- chore: refactor readme by @ematipico in #663
- docs(website): reworked the editor plugins section by @ematipico in #665
- ci(pull_request): free disk space on ubuntu-latest by @nhedger in #667
- refactor: small test infrastructure by @msdlisper in #672
- docs: replace deprecated
indentSize
withindentWidth
by @4strodev in #687 - feat(css_parser): CSS Parser pseudo element selector #268 by @denbezrukov in #673
New Contributors
- @4strodev made their first contribution in #687
- @simonxabris made their first contribution in #677
Full Changelog: cli/v1.3.3...lsp/v1.7.20231109
VSCode Extension v1.6.2
Analyzer
Bug fixes
- Fix #604 which made noConfusingVoidType report false positives when the
void
type is used in a generic type parameter. Contributed by @unvalley
CLI
Bug fixes
- Fix how
overrides
behave. Nowignore
andinclude
apply or not the override pattern, so they override each other.
Now the options insideoverrides
override the top-level options. - Bootstrap the logger only when needed. Contributed by @ematipico
Editors
Bug fixes
- Fix #592, by changing binary resolution in the IntelliJ plugin. Contributed by @Joshuabaker2
Formatter
Bug fixes
- Apply the correct layout when the right hand of an assignment expression is a await expression or a yield expression. Contributed by @ematipico
- Fix #303, where nested arrow functions didn't break. Contributed by @victor-teles
Linter
Bug fixes
-
Fix #175 which made noRedeclare report index signatures using the name of a variable in the parent scope.
-
Fix #557 which made noUnusedImports report imported types used in
typeof
expression. Contributed by @Conaclos -
Fix #576 by removing some erroneous logic in noSelfAssign. Contributed by @ematipico
-
Fix #595 by updating unsafe-apply logic to avoid unexpected errors in noUselessFragments. Contributed by @nissy-dev
-
Fix #591 which made noRedeclare report type parameters with identical names but in different method signatures. Contributed by @Conaclos
-
Support more a11y roles and fix some methods for a11y lint rules Contributed @nissy-dev
-
Fix
useExhaustiveDependencies
, by removinguseContext
,useId
anduseSyncExternalStore
from the known hooks. Contributed by @msdlisper
Parser
Enhancements
- Support RegExp v flag. Contributed by @nissy-dev
- Improve error messages. Contributed by @ematipico
What's Changed
Other changes
- ci(release_cli): add homebrew formula bumper by @nhedger in #569
- docs(website): fix
useYield
source reference by @unvalley in #583 - fix: check
elseClause
insidenoUselessLoneBlockStatements
by @vasucp1207 in #584 - docs(lint/useNamingConvention): type prop and method names in camelCase by @Conaclos in #588
- chore: fix hook linting message grammar by @crutchcorn in #580
- fix(project): changed structure to correctly emit schema for overrides by @ematipico in #602
- fix(intellij): binary resolution execution sequence by @Joshuabaker2 in #601
- refactor(linter-config): remove dead code and deduplicate code by @Conaclos in #612
- refactor(json_deserialize): improve
map_to_*
API by @Conaclos in #616 - refactor(json_deserailize): remove
visit_member_name
by @Conaclos in #618 - fix: bug with useContext/useSyncExternalStore (#609) by @msdlisper in #621
- feat(css_parser): CSS Parser pseudo element selector #268 by @denbezrukov in #600
- fix(biome_js_parser): report error when using u and v flag at the same time by @nissy-dev in #631
- ci(release_cli): continue on error when bumping homebrew formula by @nhedger in #637
New Contributors
- @crutchcorn made their first contribution in #580
- @Joshuabaker2 made their first contribution in #601
- @ditorodev made their first contribution in #366
- @msdlisper made their first contribution in #621
Full Changelog: cli/v1.3.1...lsp/v1.6.2
Intellij Plugin v0.0.6
Analyzer
Bug fixes
- Fix #604 which made noConfusingVoidType report false positives when the
void
type is used in a generic type parameter. Contributed by @unvalley
CLI
Bug fixes
- Fix how
overrides
behave. Nowignore
andinclude
apply or not the override pattern, so they override each other.
Now the options insideoverrides
override the top-level options. - Bootstrap the logger only when needed. Contributed by @ematipico
Editors
Bug fixes
- Fix #592, by changing binary resolution in the IntelliJ plugin. Contributed by @Joshuabaker2
Formatter
Bug fixes
- Apply the correct layout when the right hand of an assignment expression is a await expression or a yield expression. Contributed by @ematipico
- Fix #303, where nested arrow functions didn't break. Contributed by @victor-teles
Linter
Bug fixes
-
Fix #175 which made noRedeclare report index signatures using the name of a variable in the parent scope.
-
Fix #557 which made noUnusedImports report imported types used in
typeof
expression. Contributed by @Conaclos -
Fix #576 by removing some erroneous logic in noSelfAssign. Contributed by @ematipico
-
Fix #595 by updating unsafe-apply logic to avoid unexpected errors in noUselessFragments. Contributed by @nissy-dev
-
Fix #591 which made noRedeclare report type parameters with identical names but in different method signatures. Contributed by @Conaclos
-
Support more a11y roles and fix some methods for a11y lint rules Contributed @nissy-dev
-
Fix
useExhaustiveDependencies
, by removinguseContext
,useId
anduseSyncExternalStore
from the known hooks. Contributed by @msdlisper
Parser
Enhancements
- Support RegExp v flag. Contributed by @nissy-dev
- Improve error messages. Contributed by @ematipico
What's Changed
Other changes
- ci(release_cli): add homebrew formula bumper by @nhedger in #569
- docs(website): fix
useYield
source reference by @unvalley in #583 - fix: check
elseClause
insidenoUselessLoneBlockStatements
by @vasucp1207 in #584 - docs(lint/useNamingConvention): type prop and method names in camelCase by @Conaclos in #588
- chore: fix hook linting message grammar by @crutchcorn in #580
- fix(project): changed structure to correctly emit schema for overrides by @ematipico in #602
- fix(intellij): binary resolution execution sequence by @Joshuabaker2 in #601
- refactor(linter-config): remove dead code and deduplicate code by @Conaclos in #612
- refactor(json_deserialize): improve
map_to_*
API by @Conaclos in #616 - refactor(json_deserailize): remove
visit_member_name
by @Conaclos in #618 - fix: bug with useContext/useSyncExternalStore (#609) by @msdlisper in #621
- feat(css_parser): CSS Parser pseudo element selector #268 by @denbezrukov in #600
- fix(biome_js_parser): report error when using u and v flag at the same time by @nissy-dev in #631
- ci(release_cli): continue on error when bumping homebrew formula by @nhedger in #637
New Contributors
- @crutchcorn made their first contribution in #580
- @Joshuabaker2 made their first contribution in #601
- @ditorodev made their first contribution in #366
- @msdlisper made their first contribution in #621
Full Changelog: cli/v1.3.1...lsp-intellij/v0.0.6