What's Changed
Other changes
- feat(wasm): expose
getTypeInfo
by @ematipico in #5815 - refactor(core): break down type info and registered types by @ematipico in #5816
- fix(core): fix downgrading of project references by @arendjr in #5818
- chore: fix Windows CI by @arendjr in #5824
- fix(core): ignore node_modules during the traversal by @ematipico in #5825
- feat(analyze/js): implement
noShadow
by @dyc3 in #5761 - fix(core): don't scan
node_modules
when using the light scanner by @ematipico in #5827 - fix(biome_migrate): use object-level syntax node as rule state for the
organize_imports
analyzer to do action mutation by @bushuai in #5828 - feat(workspace): add semantic model debug printer by @dyc3 in #5821
- fix(package_json): catch panic error when by @ematipico in #5829
- feat(core): implement full (project-level) inference by @arendjr in #5830
- chore(deps): update dependency vite to v6.3.4 [security] by @renovate in #5833
- fix(lint/useNumericSeparators): avoid false positive on single-digit 0 by @lucasweng in #5834
- perf(lint): use
Arc<T>
to sharePackageJson
among analyzer rules by @siketyan in #5839 - feat(lint/noUselessBackrefInRegex): add rule by @Conaclos in #5813
- perf(scanner): update type info in worker threads by @siketyan in #5840
- fix(core): printed directories by @ematipico in #5841
- fix(core): scanner should not descend into symlinked directories by @arendjr in #5853
- fix(lint): mark whole fragment as incorrect if without key by @DerTimonius in #5773
- feat(lint/noShadow): handle some cases from typescript-eslint by @dyc3 in #5843
- fix(core): fix incorrect module ID in reexport by @arendjr in #5855
- fix(core): don't load manifests inside
node_modules
for now by @arendjr in #5857 - fix(yaml_parser): only allows maximum 2 properties per node by @vohoanglong0107 in #5864
- fix(yaml_parser): add properties to yaml block scalars by @vohoanglong0107 in #5866
- fix(schema): more precise type for organizeImports predfined groups by @Conaclos in #5869
- docs: add @vitest/eslint-plugin as rule source by @drwpow in #5872
- fix(organizeImports): fix Display impl by @Conaclos in #5878
- perf(js_analyze): use Box in more places to reduce memory by @minht11 in #5880
- feat(yaml_parser): lex plain token by @vohoanglong0107 in #5870
- fix(deps): update @biomejs packages by @renovate in #5887
- chore(deps): update rust crate insta to 1.43.1 by @renovate in #5890
- chore(deps): update dependency eslint to v9.26.0 by @renovate in #5888
- chore(deps): update typescript-eslint monorepo to v8.31.1 by @renovate in #5892
- chore(deps): update rust crate oxc_resolver to v5.3.0 by @renovate in #5891
- chore(js_analyze): enforce usage of
should not generate diagnostics
comment for tests by @minht11 in #5883 - chore(deps): update rust:1.86.0 docker digest to 640960f by @renovate in #5886
- feat(yaml): implement BumpWithContext for YamlTokenSource by @vohoanglong0107 in #5895
- feat(yaml): implement rewind and checkpoint for yaml parser by @vohoanglong0107 in #5894
- fix(watcher): fix failing watcher tests on macOS by @siketyan in #5905
- feat(cli): prettify ESLint config on loading for migration by @siketyan in #5902
- feat(yaml): parse plain node by @vohoanglong0107 in #5904
- perf(core): reusable scoped resolver by @arendjr in #5906
- fix(cli): support nested
files
property in ESLint flat config by @siketyan in #5903 - refactor(core): pull manifest on demand by @ematipico in #5910
- feat(lint): handle jsdoc and tsdoc syntax in nounusedimports by @Danielku15 in #5698
- fix(cli): format diagnostic location by @ematipico in #5911
- feat(linter): useSingleJsDocAsterisk by @minht11 in #5844
- fix(cli): apply
--skip-parse-errors
to lint, check and ci commands by @unvalley in #5780 - fix(lint/useJsxKeyIterable): reports missing keys inside
if
andswitch
by @unvalley in #5909 - fix(core): track resolver data by @arendjr in #5918
- chore: upgrade to
oxc-resolver
8 by @arendjr in #5922 - fix(core): handle named reexports by @arendjr in #5921
- perf: faster manifest handling by @arendjr in #5926
- fix(analyzer): placeholder shouldn't block signals by @ematipico in #5923
- chore: update rust-toolchain.toml on Renovate by @siketyan in #5928
- chore(config): migrate renovate config by @renovate in #5929
- ci: build GNU/Linux binaries in Docker by @siketyan in #5924
- docs(readme): fix wrong translations by @hms5232 in #5927
- feat(lint): implement
useExhaustiveSwitchCases
-typescript-eslint/switch-exhaustiveness-check
by @siketyan in #5762 - fix(core): infer type of dynamic import by @arendjr in #5933
- chore(deps): update dependency rust to v1.86.0 by @renovate in #5931
- fix(core): fix resolving of (relative) imports by @arendjr in #5934
- refactor(lsp): use
tower-lsp-server
by @ematipico in #5930 - feat(lint): promote rules by @Conaclos in #5899
- docs(linter): add rule naming and severity choice guidelines by @Conaclos in #5937
- fix(core): fix flattening issues by @arendjr in #5940
- fix(js-api): regression of tests by @ematipico in #5943
- fix(core): add guard for flattening depth by @arendjr in #5945
- fix(core): update crossbeam channel due to CVE by @ematipico in #5946
- fix(lint): ignore async and generator callbacks in useIterableCallbackReturn by @siketyan in #5951
- chore(tests): add test utils for asserting valid snapshots did not generate diagnostics by @minht11 in #5912
- fix(yaml): make indented block in mapping optional by @vohoanglong0107 in #5956
- fix(js_analyze): suggest fix for unused
JsFunctionDeclaration
by @daivinhtran in #5955 - fix(parser): should parse Fragment syntax correct by @fireairforce in #5938
- chore(css_analyzer): add "should not generate diagnostics" to valid test snapshots by @minht11 in #5961
- refactor(migrate): add rule mover migration by @Conaclos in #5959
- fix(core): scanner tweak: mostly respect ignored dirs by @arendjr in #5952
- feat(yaml_parser): parse explicit mapping by @vohoanglong0107 in #5957
- refactor(migrate): improve organizeImports migration by @Conaclos in #5962
- fix(cli): normalise config-path path by @ematipico in #5920
New Contributors
- @Danielku15 made their first contribution in #5698
- @hms5232 made their first contribution in #5927
- @daivinhtran made their first contribution in #5955
Full Changelog: https://github.com/biomejs/biome/compare/@biomejs/biome@2.0.0-beta.2...@biomejs/biome@2.0.0-beta.3