Read our blog post announcement.
What's Changed
Other changes
- chore: add zoomdong to member list by @fireairforce in #4644
- chore: extract
noPackagePrivateImports
rule by @arendjr in #4651 - feat(biome_glob): add dedicated crate for globs by @Conaclos in #4609
- docs: how to write a changeset by @ematipico in #4654
- feat(linter): rule
noTsIgnore
by @ematipico in #4650 - refactor(glob): stricter validation by @Conaclos in #4659
- feat: codegen crate utility by @ematipico in #4657
- refactor: use
papaya
instead of DashMap for workspace documents by @arendjr in #4624 - feat(linter): implement noLowerCaseEnum by @eMerzh in #4031
- feat(analyzer): range suppressions by @ematipico in #4649
- chore: use
papaya
inPathInterner
by @arendjr in #4669 - fix(deps): update rust crates by @renovate in #4675
- chore(deps): update pnpm to v9.14.4 by @renovate in #4673
- chore(deps): update dependency dprint to v0.47.6 - autoclosed by @renovate in #4672
- chore(deps): update @biomejs packages by @renovate in #4671
- chore(deps): update tokio-tracing monorepo by @renovate in #4674
- chore(deps): update codspeedhq/action action to v3.2.0 by @renovate in #4676
- chore(deps): update dependency eslint to v9.16.0 by @renovate in #4679
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v8.17.0 by @renovate in #4678
- refactor: remove the
all
option by @ematipico in #4664 - refactor: cleaned up workspaceError enum in biome_service/diagnostics.rs by @sikehish in #4681
- refactor: get rule severity from metadata severity by @ematipico in #4687
- chore: add some comments for selector list formatted by @fireairforce in #4691
- feat(linter): add NoUnknownAtRule by @togami2864 in #4689
- refactor: add
Workspace
scanner by @arendjr in #4682 - chore: drop
slotmap
and simplify locking by @arendjr in #4696 - chore(deps): update rust crate anyhow to 1.0.94 by @renovate in #4703
- fix(deps): update rust crates by @renovate in #4705
- chore(deps): update rust crate indexmap to 2.7.0 by @renovate in #4708
- chore(deps): update rust crate tokio to 1.42.0 by @renovate in #4710
- chore(deps): update actions/cache action to v4.2.0 by @renovate in #4706
- chore(deps): update pnpm to v9.15.0 by @renovate in #4707
- chore(deps): update rust crate rustc-hash to 2.1.0 - autoclosed by @renovate in #4709
- fix(deps): update @biomejs packages by @renovate in #4704
- feat(parser): better control on JSX parsing by @ematipico in #4718
- feat(linter): domains and deps by @ematipico in #4713
- feat(format/html): opt out of formatting for
pre
,script
andstyle
tags by @dyc3 in #4729 - refactor: style recommendation and new recommended severity by @ematipico in #4730
- fix(analyzer): don't use organize imports implicitly by @ematipico in #4724
- refactor: protect scanned files against closing by LSP by @arendjr in #4735
- feat: add translation of README.md into French by @webdevbynight in #4728
- chore(deps): update rust crate serde to 1.0.216 by @renovate in #4741
- chore(deps): update softprops/action-gh-release action to v2.2.0 by @renovate in #4745
- chore(deps): update dependency eslint to v9.17.0 by @renovate in #4743
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v8.18.1 by @renovate in #4742
- docs: add gold sponsor by @ematipico in #4752
- feat(lint): add
noProcessGlobal
rule by @wanghaoPolar in #4694 - feat: implement
useParseIntRadix
-eslint/radix
(#3932) by @Jantje19 in #4524 - refactor: track too large files inside workspace server by @arendjr in #4738
- docs(noRestrictedImports): update version notice by @MaxtuneLee in #4758
- fix(json): treat
tsconfig.*.json
files as well known, allow comments and trailing comments by default by @dyc3 in #4771 - perf: use
AppendOnlyVec
forfile_sources
by @arendjr in #4772 - ci: fix formatting by @janie314 in #4774
- feat: add migration for styling rules by @ematipico in #4759
- refactor: remove deprecated rules by @ematipico in #4766
- chore(deps): update rust crate anyhow to 1.0.95 by @renovate in #4780
- fix(deps): update rust crates by @renovate in #4785
- chore(deps): update actions/upload-artifact action to v4.5.0 by @renovate in #4783
- feat: move
useWhile
tocomplexity
by @ematipico in #4777 - chore(deps): update rust crate serde_json to 1.0.134 by @renovate in #4781
- chore(deps): update rust crate oxc_resolver to v3 by @renovate in #4787
- chore(deps): update dependency dprint to v0.48.0 by @renovate in #4784
- feat(css_parser): parse @position-try and @view-transition at-rules by @kevinmingtarja in #4793
- chore(deps): update rust docker tag to v1.83.0 by @renovate in #4744
- refactor: remove
organizeImports
by @ematipico in #4788 - chore(deps): update pnpm to v9.15.1 by @renovate in #4779
- fix(deps): update dependency tailwindcss to ^3.4.17 by @renovate in #4782
- refactor: use camino for paths by @ematipico in #4797
- fix(biome_diagnostics_categories): fix incorrect URLs for linter rules by @ynishimura in #4800
- feat(html): plumbing for new HTML options, make
bracket_same_line
global by @dyc3 in #4790 - refactor: cargo features by @ematipico in #4801
- refactor: convert clippy allows to clippy expects by @janie314 in #4791
- chore(deps): update pnpm to v9.15.2 by @renovate in #4807
- docs: redact incorrect docs by @ematipico in #4815
- chore(deps): update rust crate serde to 1.0.217 by @renovate in #4809
- chore(deps): update rust crate quote to 1.0.38 by @renovate in #4808
- feat(cli): better header in diagnostics by @ematipico in #4814
- refactor(formatter): no trailing commas in JSON files by @ematipico in #4803
- refactor: resolve paths and globs from the configuration path by @ematipico in #4823
- feat: add GritQL formatting options by @ematipico in #4824
- feat(formatter): add
expand
by @ematipico in #4819 - feat(linter): add
noNoninteractiveElementInteractions
rule by @tunamaguro in #4358 - feat(html): set up HTML configuration by @dyc3 in #4831
- refactor: drop "current" project from workspace and cleanup workspace methods by @arendjr in #4827
- chore(deps): update rust crate insta to 1.42.0 by @renovate in #4839
- chore(deps): update pnpm to v9.15.3 by @renovate in #4838
- chore(deps): update dependency @types/node to v20.17.12 by @renovate in #4837
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v8.19.1 by @renovate in #4806
- feat(format/html): implement whitespace sensitivity by @dyc3 in #4818
- refactor(formatter): don't allocate strings, and use try operator early by @ematipico in #4850
- refactor: initial project layout by @arendjr in #4846
- refactor: expose ProjectLayout as service by @arendjr in #4851
- refactor: remove
ROME_BINARY
by @SuperchupuDev in #4853 - refactor(core): configuration, settings and capabilities by @ematipico in #4845
- fix(js_parser): parse huge binary expressions by @arendjr in #4856
- fix(parser/html): misc minor parsing fixes by @dyc3 in #4852
- fix(core): scan files in order by @arendjr in #4860
- fix(core): print diagnostic for scanner panics by @arendjr in #4861
- fix(css_parser): don't panic on unexpected EOF by @arendjr in #4862
- fix(lint): don't panic on incomplete code in noFallthroughSwitchClause by @arendjr in #4863
- fix(lint): don't report missing dependency on incomplete statement by @arendjr in #4864
- feat(parser,format/html): add CDATA sections by @dyc3 in #4859
- chore: improve task comments for creating new lint rules by @bushuai in #4866
- fix(parser/html): strictly detect tag starts,
<pre>
tag fixes by @dyc3 in #4869 - feat(linter): assign severity to groups by @ematipico in #4867
- chore: paid contracting proposal by @arendjr in #4843
- chore(deps): update rust crate serde_json to 1.0.135 by @renovate in #4878
- chore(deps): update rust crate tokio to 1.43.0 by @renovate in #4883
- chore(deps): update github-actions by @renovate in #4881
- chore(deps): update rust docker tag to v1.84.0 by @renovate in #4884
- fix(noUselessFragments): check Fragment when it under JSX Element or Condition Expr by @fireairforce in #4882
- fix(biome_diagnostics): fix JetBrains relative file URLs should be clickable when given line and column numbers by @Andrew-Chen-Wang in #4876
- fix(js_parser): don't crash on malformed
for
statement by @arendjr in #4889 - chore: remove postinstall script by @ekoeditaa in #4887
- refactor(editorconfig): remove support for
max_line_length
by @ematipico in #4894 - chore: commercial support request issue template by @arendjr in #4895
- chore(core): better debug logging by @ematipico in #4891
- chore(deps): update @biomejs packages by @renovate in #4877
- chore: use issue types in templates by @ematipico in #4904
- chore: remove unused workflow by @nhedger in #4909
- build: upgrade rust v1.84.0 by @unvalley in #4912
- refactor: replace some lines for readability by @hamirmahal in #4914
- chore(deps): update pnpm to v9.15.4 by @renovate in #4916
- chore(deps): update rust crate enumflags2 to 0.7.11 by @renovate in #4917
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v8.20.0 by @renovate in #4920
- chore(deps): update rust crate serde_json to 1.0.137 by @renovate in #4919
- chore(deps): update rust crate indexmap to 2.7.1 by @renovate in #4918
- chore(deps): update rust crate similar to 2.7.0 by @renovate in #4922
- fix(analyzer): suppression comment fails with inner comments in functions by @fireairforce in #4714
- fix(parser): export_named_type should parse default as normal by @fireairforce in #4903
- fix: add RegExpStringIterator to globals by @hrishikesh-k in #4923
- chore(deps): update rust:1.84.0 docker digest to e6e40c0 by @renovate in #4915
- chore(deps): update dependency vite to v5.4.12 [security] by @renovate in #4938
- fix(grit): allow parsing alternative engine/language names by @morgante in #4937
- fix(lint): don't crash on malformed JSX by @arendjr in #4939
- chore: stabilize parser tests by @arendjr in #4940
- feat(core): implement
DependencyGraph
by @arendjr in #4929 - fix(core): raise an error when invalid config extension is passed by @ematipico in #4944
- refactor(js_analyze): turn on
requireAscii
by @Conaclos in #4945 - feat(lint): implement
noFloatingPromises
rule for regulerasync
function by @kaykdm in #4911 - feat(lint): new rule:
noImportCycles
by @arendjr in #4948 - feat(lint): support assigned functions in
noFloatingPromises
by @kaykdm in #4958 - chore: add governance changes approval by @ematipico in #4943
- chore: update Just install link by @kerolloz in #4960
- chore: add Lokalise as silver sponsor by @ematipico in #4961
- fix(core): fix symlink handling by @arendjr in #4954
- fix(useStrictMode): strict directive insertion logic by @bushuai in #4901
- chore: fix typos in CONTRIBUTING.md by @kerolloz in #4962
- fix(core): don't build control flow graph inside bogus nodes by @arendjr in #4963
- chore: add note to readme by @ematipico in #4965
- fix(lint): support some of wrapped hook calls in useExhaustiveDependencies by @siketyan in #4964
- fix(core): raise an error when invalid config extension is passed by @ematipico in #4949
- feat(config): add the includes field by @Conaclos in #4899
- refactor(noFloatingPromises): update functions to return Option by @kaykdm in #4970
- refactor: replace
map_or
withis_ok_and
andis_some_and
by @unvalley in #4969 - refactor: enable
needless_lifetimes
clippy rule by @unvalley in #4973 - chore(deps): update @biomejs packages by @renovate in #4979
- chore(deps): update rust crate bpaf to 0.9.16 by @renovate in #4975
- chore(deps): update actions/setup-node action to v4.2.0 by @renovate in #4980
- chore(deps): update rust crate insta to 1.42.1 by @renovate in #4976
- feat(migrate): migrate to
includes
by @Conaclos in #4974 - chore(migrate): remove version check by @ematipico in #4987
- fix(migrate): fix a typo in organizeImports migration message by @dyc3 in #4985
- feat(format/html): apply line break with multiple attributes in multiline configuration by @Geun-Oh in #4984
- chore(migrate): remove version check by @ematipico in #4990
- feat(lint): make useSelfClosingElements safe and improve error message by @mehm8128 in #4998
- feat(lint): support promise expression in noFloatingPromises by @kaykdm in #4977
- feat(biome_css_analyze): add rule
useSortedProperties
by @simon-paris in #4063 - fix(deps): update rust crates (major) by @renovate in #4886
- fix(deps): update dependency prettier to v3.4.2 by @renovate in #4746
- fix(deps): update rust crates by @renovate in #4885
- chore:
gen-tw
description by @bushuai in #5010 - fix(css): fix css codegen by @dyc3 in #5011
- fix(css): fix css lint/assist registry codegen by @dyc3 in #5013
- fix(biome_css_analyze): false positive of container name in
noMissingVarFunction
by @bushuai in #5008 - refactor(migrate): use includes when migrating from eslint and prettier by @Conaclos in #5012
- feat(format/html): implement bracketSameLine by @dyc3 in #4968
- chore(deps): pin dependency @types/node to 22.13.0 by @renovate in #5018
- feat(format/html): add
css
option for whitespace sensitivity by @dyc3 in #5016 - fix(format/html): enforce whitespace sensitivity for siblings in HtmlElementList by @dyc3 in #5025
- chore: use
@changesets
for changelog automation by @ematipico in #5023 - chore: print diagnostics using relative paths by @ematipico in #5009
- ci: workaround for dispatch action by @ematipico in #5030
- fix(css_formatter): insert a whitespace after first selector in complex selector combinations by @vohoanglong0107 in #5014
- fix(grit): broaden GritQL parser support by @morgante in #4978
- fix: repair explosive memory leak in GritQL parser by @morgante in #5033
- fix(grit): patch more parser incompatibilities for complex patterns by @morgante in #5037
- fix(js-api): fix type definition for IFileFeaturesResult by @dyc3 in #5040
- chore: move changes to changesets by @ematipico in #5044
- chore(deps): update rust docker tag to v1.84.1 by @renovate in #5021
- fix(lint): add react domain to
useJsxKeyInIterable
by @Jayllyz in #5043 - chore: fix windows specific script errors by @dy0gu in #5051
- chore(deps): update pnpm to v9.15.5 by @renovate in #5019
- fix(format/html): make element children break if attributes break by @dyc3 in #5027
- ci: rebrand nightly releases as preview releases by @ematipico in #5047
- fix(format/html): fix long content failing to print if element has <= 1 attributes by @dyc3 in #5055
- fix(lint): add missing domain to next.js rules by @Jayllyz in #5046
- fix(css_formatter): improve CSS numeric formatting by @ah-yu in #5052
- fix(linter):
noConsole
inside arrow function expressions by @ematipico in #5066 - test(format/html): add prettier tests by @dyc3 in #5056
- fix: patch js-api openProject() by @ianzone in #5000
- fix(formatter): handling of comments in js holes with newlines by @ematipico in #5072
- fix(lsp): better error message when editorconfig is broken by @ematipico in #5073
- fix(editorconfig): fix
insert_final_newline
being unable to parse valueunset
by @dyc3 in #5067 - chore(deps): update @biomejs packages by @renovate in #5071
- feat(biome_js_formatter): introduce the new objectWrap option by @siketyan in #5068
- chore(format/js): fix missing snapshot update by @dyc3 in #5075
- feat(analyzer): useAltText don't check object spread by @fireairforce in #4935
- chore(lsp): add more logging when running the daemon by @ematipico in #5086
- feat(formatter): support
bracketSpacing
option in JSON by @siketyan in #5083 - ci: use
pkg.pr.new
for preview releases by @ematipico in #5092 - feat(lint): support class methods in noFloatingPromises by @kaykdm in #5028
- ci: fix incorrect syntax by @ematipico in #5094
- feat(lint): add noConstantBinaryExpression lint rule for JS by @siketyan in #5076
- test(lint): add test cases for unnamed class expression in noFloating… by @kaykdm in #5098
- refactor(formatter): remove non-printing related options from
FormatOptions
by @ah-yu in #5088 - fix(lint): ignore multiline literals in useTemplate rule by @siketyan in #5085
- chore: update workflows and readme by @ematipico in #5104
- ci: correctly import composite action by @ematipico in #5105
- ci: correctly import composite action by @ematipico in #5106
- ci: don't use composite action by @ematipico in #5107
- chore(deps): update hashbrown to fix advisory by @ematipico in #5108
- fix(parser): throw syntax error for import without arguments by @fireairforce in #5099
- ci: fix release workflow by @ematipico in #5112
- ci: install dependencies by @ematipico in #5113
- ci: install required packages for changesets by @ematipico in #5114
- test: add end-to-end tests by @Conaclos in #5117
- refactor(biome_fs): make paths absolute to correctly match against globs by @Conaclos in #5017
- fix(js-api): fix the generated types for rule domains by @dyc3 in #5120
- docs(html): fix docs for html's whitespace sensitivity option by @dyc3 in #5123
- chore: format e2e test files by @unvalley in #5131
- feat(cli)!: rename
--javascript-attribute-position
to--javascript-formatter-attribute-position
by @siketyan in #5132 - fix(format/html): fix extra characters getting added in attribute quotes by @dyc3 in #5128
- chore: add codespace configuration by @Th3S4mur41 in #5122
- fix(cli): fix CLI flag of
bracketSpacing
option for lang-specific override by @siketyan in #5130 - chore: changeset for
--suppress
flag by @anthonyshew in #5121 - chore(deps): update @biomejs packages by @renovate in #5135
- chore(deps): pin dependency @changesets/changelog-github to 0.5.0 by @renovate in #5134
- chore(deps): update rust crate papaya to 0.1.9 by @renovate in #5141
- chore(deps): update dependency dprint to v0.49.0 by @renovate in #5143
- fix: improve GritQL formatter by @morgante in #5136
- chore(deps): update dependency vitest to v1.6.1 [security] by @renovate in #5034
- chore(deps): update rust crate grit-util to 0.5.1 by @renovate in #5138
- chore(deps): update dependency eslint to v9.20.1 by @renovate in #5144
- chore(deps): update rust crate grit-pattern-matcher to 0.5.1 by @renovate in #5137
- feat(lint): add
noAwaitInLoop
by @unvalley in #5129 - chore(deps): update rust crate rustc-hash to 2.1.1 by @renovate in #5142
- feat(biome_glob): add Editorconfig globs by @Conaclos in #5147
- fix(html): fix html configuration having no effect by @dyc3 in #5149
- refactor(linter): severity and recommendation of lint rules by @ematipico in #5133
- chore: fix snaphots by @arendjr in #5161
- chore(deps): update rust crate serde_json to 1.0.139 by @renovate in #5020
- feat(core): implement workspace plugin loading by @arendjr in #5160
- feat(config): remove the
ignore
andinclude
field by @Conaclos in #5158 - chore: add siketyan to maintainers by @siketyan in #5168
- fix(cli): rename
--javascript-object-wrap
to--javascript-formatter-object-wrap
by @siketyan in #5166 - feat(formatter): support objectWrap option in JSON, promoting it to global by @siketyan in #5082
- chore: eliminate some warnings on release build by @siketyan in #5169
- feat(biome_css_analyzer): update known pseudo elements by @Th3S4mur41 in #5118
- ci: reduce max build jobs on cargo to mitigate OOM by @siketyan in #5171
- feat(rage): display configuration path in output by @isjavierdiaz in #5156
- feat(html): set up html parser and formatter benchmarks by @dyc3 in #5155
- fix(formatter): do not break properties of type annotation in function parameters by @siketyan in #5174
- fix(linter): allow escaping at the start of a regex group by @Conaclos in #5177
- refactor(config): remove
overrides.include
by @Conaclos in #5176 - fix(format/html): resolve some edge cases with whitespace and how inline elements are treated by @dyc3 in #5148
- refactor(useNamingConvention): remove
enumMemberCase
option by @Conaclos in #5178 - chore(deps): update dependency @types/node to v22.13.5 by @renovate in #5182
- chore(deps): update dependency @changesets/changelog-github to v0.5.1 by @renovate in #5181
- chore(deps): update rust crate anyhow to 1.0.96 by @renovate in #5183
- chore(deps): update rust crate serde to 1.0.218 by @renovate in #5184
- chore(deps): update dependency @changesets/cli to v2.28.1 by @renovate in #5185
- chore(deps): update dependency eslint to v9.21.0 by @renovate in #5186
- chore: merge next to main by @siketyan in #5187
- ci: move
test-node-api
job to a newpull_request_node.yml
workflow by @siketyan in #5192 - test(lint): update snapshots for #5139 by @siketyan in #5189
- build: upgrade pnpm to v10 by @siketyan in #5190
- chore: workspace cleanups by @arendjr in #5191
- feat(lint): support object method in noFloatingPromises by @kaykdm in #5103
- refactor: persist workspaces across connections by @arendjr in #5193
- fix(parser): gracefully handle stalled parser in object patterns by @arendjr in #5198
- feat(lint): add
noDestructuredProps
by @ematipico in #4983 - feat(biome_js_analyze): implement
useConsistentObjectDefinition
rule by @dy0gu in #5042 - refactor(css_semantic): improve CSS semantic model structure and API by @togami2864 in #4908
- test: update snapshots by @ematipico in #5199
- fix(lsp): fill in missing workspaceFolders capabilities by @osiewicz in #5204
- feat: support for nested ignore files by @ematipico in #5195
- feat(lint): add useForComponent by @fireairforce in #5203
- fix: explain command for rule by @ematipico in #5214
- feat(biome_cli): add schema version check to
check
,lint
,format
commands by @MaxtuneLee in #4796 - feat(lint): support promise in function argument for
noFloatingPromises
by @kaykdm in #5206 - feat(lsp): allow overriding the configuration path from LSP workspaces by @siketyan in #5093
- chore: update useForComponent diagnostic note by @fireairforce in #5220
- build: upgrade toolchain to Rust 1.85.0 by @siketyan in #5225
- feat(core): workspace watcher by @arendjr in #5200
- fix: add missing unsafe blocks and unsafe keyword on extern blocks by @siketyan in #5223
- refactor(js_analyze): remove support for dynamic regexes by @Conaclos in #5226
- fix: remove usages of gen reserved keyword by @siketyan in #5221
- refactor(formatter): preserve useless escapes by @Conaclos in #5228
- fix: add missing
use<>
to RPIT's by @siketyan in #5222 - build: upgrade to Rust 2024 edition by @siketyan in #5224
- chore: switch to Rustfmt 2024 style edition by @siketyan in #5236
- chore: add #5236 to .git-blame-ignore-revs by @siketyan in #5238
- feat(js/noUselessEscapeInString): add lint rule by @Conaclos in #5229
- refactor(formatter): preserve useless escaped quotes and single quotes in CSS charset by @Conaclos in #5237
- feat(css/noUselessEscapeInString): add rule by @Conaclos in #5240
- fix(noUselessEscapeInString): use text_trimmed instead of text by @Conaclos in #5241
- fix(js/linter): use text_trimmed instead of text by @Conaclos in #5246
- chore(deps): update @biomejs packages by @renovate in #5247
- chore(deps): update rust crate bpaf to 0.9.17 by @renovate in #5248
- chore(deps): update rust crate insta to 1.42.2 by @renovate in #5250
- chore(deps): update rust crate globset to 0.4.16 by @renovate in #5249
- chore(deps): update github-actions by @renovate in #5252
- chore(deps): update rust crate proc-macro2 to 1.0.94 by @renovate in #5254
- chore(deps): update rust crate anyhow to 1.0.97 by @renovate in #5253
- chore(deps): update rust crate quote to 1.0.39 by @renovate in #5256
- chore(deps): update pnpm to v10.5.2 by @renovate in #5257
- refactor: better handling for the lifetime extension issue by @siketyan in #5239
- feat(lint): add
allowLabels
option tosuspicious/noConfusingLabels
by @tim-we in #5230 - feat(xtask): check rustfmt version in codegen by @siketyan in #5259
- feat(linter): implement
useSymbolDescription
by @minht11 in #5232 - ci: fix
udeps
workflows by @arendjr in #5265 - fix(core): resolve extensionless imports to TS/JSX files by @arendjr in #5260
- refactor(noOctalEscape): fixes and improvements by @Conaclos in #5243
- fix: organizeImports and internal service language by @ematipico in #5264
- refactor(parse/html): split
HtmlName
intoHtmlTagName
andHtmlAttributeName
by @dyc3 in #5267 - fix(js_parser): allow metavariables to be placed in more locations by @ah-yu in #5209
- fix: canonicalize the path of TemporaryFs by @siketyan in #5227
- refactor(noNonoctalDecimalEscape): check member name by @Conaclos in #5269
- fix(lsp): order of code actions by @ematipico in #5268
- feat: merge the
objectWrap
option intoexpand
by @siketyan in #5262 - chore: stabilise tests on macOS by @arendjr in #5275
- fix(biome_js_analyze): false positive for range operator in regular expression by @bushuai in #5234
- feat(lsp)!: remove
--config-path
from lsp-proxy and daemon by @siketyan in #5235 - chore: uncomment tracing annotation by @arendjr in #5276
- fix(analyzer): top-level action with existing comments by @ematipico in #5273
- feat(format/html): normalize casing for directive by @dyc3 in #5266
- chore: bump papaya by @arendjr in #5284
- ci: beta and preview releases by @ematipico in #5282
- feat(linter): implement noBitwiseOperators rule by @huangtiandi1999 in #5274
- feat(core): watcher + LSP improvements by @arendjr in #5283
- fix(core): fix workspace scanner in LSP by @arendjr in #5286
- chore: update issue config by @arendjr in #5287
- fix(lint): useArrowFunction should parenthesise the expr starting with
{
by @siketyan in #5170 - fix(parser): don't apply
jsxEverywhere
to.ts
files by @arendjr in #5297 - chore: past tense in changesets by @arendjr in #5299
- fix(lint): allow single spaces in useConsistentCurlyBraces rule by @Pascalmh in #5298
- fix(wasm): add missing
RuleDomain
andRuleDomainValue
types to the generated declaration by @siketyan in #5306 - fix(codegen): use optional mapped type for rule domains by @siketyan in #5308
- build(deps): update dependencies to fix cargo audit by @siketyan in #5310
- fix: use alphabetical order in Ord and PartialOrd impls on RuleDomain by @siketyan in #5311
- docs: fix documentation by @ematipico in #5314
- chore(deps): update @biomejs packages by @renovate in #5317
- chore(deps): update rust crate bpaf to 0.9.18 by @renovate in #5318
- chore(deps): update rust crate serde_json to 1.0.140 by @renovate in #5320
- chore(deps): update rust crate serde to 1.0.219 by @renovate in #5319
- docs: copy docs of import sorting from website by @ematipico in #5315
- chore(deps): update rust crate terminal_size to 0.4.2 by @renovate in #5321
- fix(deps): update rust crates by @renovate in #5322
- chore(deps): update pnpm to v10.6.2 by @renovate in #5324
- chore(deps): update dependency eslint to v9.22.0 by @renovate in #5323
- fix: propagate plugin load error LSP by @wanghaoPolar in #5294
- feat(format/html): normalize casing for tag names and attribute names by @dyc3 in #5303
- fix(core): force exit the daemon on shutdown by @arendjr in #5330
- feat(linter): update useImportExtensions to suggest actual extensions by @arendjr in #5332
- feat(core): add JSDoc comments to dependency graph by @arendjr in #5329
- feat(cli): add
--threads
toci
command by @ematipico in #5337 - chore: cleanup changesets by @arendjr in #5338
- fix: add scanning time to traverse time by @ematipico in #5343
- chore(markdown): better grammar by @ematipico in #5335
- fix(formatter): hug the object type in the only function parameter by @siketyan in #5347
- feat(biome_cli): enable .editorconfig by default by @fireairforce in #5127
- refactor(linter): rename
noMultipleSpacesInRegularExpressionLiterals
by @ematipico in #5351 - chore(html): remove feature flag, expose html formatter, disabled by default by @dyc3 in #5354
- chore: add dogfood plugin by @arendjr in #5355
- fix(cli): check
TERMINAL_EMULATOR
variable by @arendjr in #5359 - chore(deps): update rust crate bpaf to 0.9.19 by @renovate in #5367
- chore(deps): update github-actions by @renovate in #5369
- chore(deps): update rust crate quote to 1.0.40 by @renovate in #5368
- chore(deps): update rust crate smallvec to 1.14.0 by @renovate in #5373
- chore(deps): update rust crate indexmap to 2.8.0 - autoclosed by @renovate in #5372
- chore(deps): update rust crate tokio to 1.44.1 by @renovate in #5374
- chore(deps): update rust docker tag to v1.85.0 by @renovate in #5375
- feat(core): allow plugins to control severity of diagnostics by @arendjr in #5363
- chore: format config by @arendjr in #5378
- chore(deps): update pnpm to v10.6.3 by @renovate in #5366
- chore(deps): update node.js to >=20.19.0 by @renovate in #5370
- fix(deps): update dependency prettier to v3.5.3 by @renovate in #5377
- chore(deps): update typescript-eslint monorepo to v8.26.1 by @renovate in #5376
- perf: read package.json only once in a run by @siketyan in #5380
- feat: add option to skip arrow function by @ematipico in #5348
- docs: update docs for website by @ematipico in #5385
- fix(migrate): don't migrate if recommended rules are disabled by @ematipico in #5386
- fix: fix of ru/uk readme translations by @e965 in #5281
- chore: remove detection of multiple config files by @ematipico in #5390
- refactor: rename rule to
noAdjacentSpacesInRegex
by @ematipico in #5392 - feat(lint):
ignoreRestSiblings
option tonoUnusedVariables
by @iamakulov in #5157 - feat(biome_js_analyze): add useSortedKeys assist rule by @r1tsuu in #5079
- fix(lint): handle const + type bindings in useExportType by @siketyan in #5396
- fix(diagnostics): correctly print emulator files by @ematipico in #5394
- chore: upgrade rust by @ematipico in #5398
- chore: rename rules by @ematipico in #5403
- feat(lint): add quick fix for
useExhaustiveDependencies
rule by @siketyan in #5326 - fix(linter): false positive for
noUnknownFunction
by @ematipico in #5404 - feat(lint): implement
noPrivateImports
by @arendjr in #5388 - chore:
noPrivateImports
doc tweak by @arendjr in #5412 - feat(assist): import organizer revamping by @Conaclos in #5364
- docs(assist/organizeImports): remove invalid trailing comma in config by @Conaclos in #5413
- docs(assist/organizeImports): add missing comma in config by @Conaclos in #5415
- refactor(noUndeclaredVariables): set checkTypes to false by default by @Conaclos in #5414
- refactor(lint): a11y utils to reduce duplicate function definitions by @unvalley in #5405
- docs(assist/organizeImports): remove expect_diagnostic,use_options by @Conaclos in #5416
- docs(assist/organizeImports): remove options marker and use ts where required by @Conaclos in #5417
- refactor(assist/useSortedAttributes): natural sorting and avoid cloning by @Conaclos in #5418
- refactor(assist/useSortedKeys): use our own natural order impl by @Conaclos in #5419
- chore(deps): update @biomejs packages by @renovate in #5421
- chore(deps): update github-actions by @renovate in #5423
- chore(deps): update dependency dprint to v0.49.1 by @renovate in #5422
- chore(deps): update rust:1.85.0 docker digest to 0ff31c9 - autoclosed by @renovate in #5420
- chore(deps): update pnpm to v10.6.5 by @renovate in #5425
- chore(deps): update @biomejs packages by @renovate in #5424
- chore: beta preparation by @arendjr in #5427
- chore: update versions in JS packages before publishing by @arendjr in #5428
New Contributors
- @tommymorgan made their first contribution in #4172
- @sikehish made their first contribution in #4681
- @webdevbynight made their first contribution in #4728
- @Jantje19 made their first contribution in #4524
- @Yz4230 made their first contribution in #4699
- @MaxtuneLee made their first contribution in #4758
- @janie314 made their first contribution in #4774
- @kevinmingtarja made their first contribution in #4793
- @Andrew-Chen-Wang made their first contribution in #4876
- @ekoeditaa made their first contribution in #4887
- @hrishikesh-k made their first contribution in #4923
- @morgante made their first contribution in #4937
- @kerolloz made their first contribution in #4960
- @Geun-Oh made their first contribution in #4984
- @dy0gu made their first contribution in #5051
- @ianzone made their first contribution in #5000
- @Th3S4mur41 made their first contribution in #5122
- @isjavierdiaz made their first contribution in #5156
- @osiewicz made their first contribution in #5204
- @tim-we made their first contribution in #5230
- @huangtiandi1999 made their first contribution in #5274
- @Pascalmh made their first contribution in #5298
- @iamakulov made their first contribution in #5157
- @r1tsuu made their first contribution in #5079
Full Changelog: https://github.com/biomejs/biome/compare/cli/v1.9.5-nightly.81fdedb...@biomejs/biome@2.0.0-beta