github biomejs/biome @biomejs/biome@2.0.0-beta
CLI v2.0.0-beta

latest releases: @biomejs/js-api@v0.8.0-beta.1, @biomejs/js-api@v0.8.0-beta, @biomejs/biome@2.0.0-beta.1...
pre-release14 days ago

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 in PathInterner 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 and style 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 for file_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 to complexity 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 reguler async 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 with is_ok_and and is_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 value unset 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 and include 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 new pull_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 to suspicious/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 into HtmlTagName and HtmlAttributeName 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 into expand 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 and RuleDomainValue 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 to ci 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 to noUnusedVariables 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

Full Changelog: https://github.com/biomejs/biome/compare/cli/v1.9.5-nightly.81fdedb...@biomejs/biome@2.0.0-beta

Don't miss a new biome release

NewReleases is sending notifications on new releases.