Version History
Version 2.1.2
Patch Changes
-
#6865
b35bf64Thanks @denbezrukov! - Fix #6485: Handle multiple semicolons correctly in blocks (#6485)div {box-sizing: border-box;color: red;} -
#6798
3579ffaThanks @dyc3! - Fixed #6762, Biome now knows that~/.config/zed/settings.jsonand~/.config/Code/User/settings.jsonallows comments by default. -
#6839
4cd62d8Thanks @ematipico! - Fixed #6838, where the Biome File Watcher incorrectly watched and stored ignored files, causing possible memory leaks when those files were dynamically created (e.g. built files). -
#6879
0059cd9Thanks @denbezrukov! - Refactor: remove one level of indirection for CSS declarations with semicolon Previously, accessing a declaration from a list required an extra step:item.as_any_css_declaration_with_semicolon().as_css_declaration_with_semicolon()Now, it can be done directly with:
item.as_css_declaration_with_semicolon() -
#6839
4cd62d8Thanks @ematipico! - Fixed a bug where the Biome Language Server didn’t correctly ignore specific files whenvcs.useIgnoreFileis set totrue. -
#6884
5ff50f8Thanks @arendjr! - Improved the performance ofnoImportCyclesby ~30%. -
#6903
241dd9eThanks @arendjr! - Fixed #6829: Fixed a false positive reported byuseImportExtensionswhen importing a.jsfile that had a matching.d.tsfile in the same folder. -
#6846
446112eThanks @darricheng! - Fixed an issue where biome was using the wrong string quotes when the classes string has quotes, resulting in invalid code after applying the fix. -
#6823
eebc48eThanks @arendjr! - Improved #6172: Optimised the way function arguments are stored in Biome’s type inference. This led to about 10% performance improvement inRedisCommander.d.tsand about 2% on@next/fonttype definitions. -
#6878
3402976Thanks @ematipico! - Fixed a bug where the Biome Language Server would apply an unsafe fix when using the code actionquickfix.biome.Now Biome no longer applies an unsafe code fix when using the code action
quickfix.biome. -
#6794
4d5fc0eThanks @vladimir-ivanov! - Fixed #6719: ThenoInvalidUseBeforeDeclarationrule covers additional use cases.Examples:
type Bar = { [BAR]: true };const BAR = "bar";interface Bar {child: { grandChild: { [BAR]: typeof BAR; enumFoo: EnumFoo } };}const BAR = "bar";enum EnumFoo {BAR = "bar",} -
#6863
531e97eThanks @dyc3! - Biome now considers whether the linter is enabled when figuring out how the project should be scanned. Resolves #6815. -
#6832
bdbc2b1Thanks @togami2864! - Fixed #6165: Fixed false negative innoUnusedPrivateClassMembersrule when checking member usage in classes -
#6839
4cd62d8Thanks @ematipico! - Fixed a bug where the root ignore file wasn’t correctly loaded during the scanning phase, causing false positives and incorrect expectations among users.Now, when using
vcs.useIgnoreFile, the **the globs specified in the ignore file from the project root ** will have the same semantics as thefiles.includessetting of the root configuration.Refer to the relative web page to understand how they work.
-
#6898
5beb024Thanks @arendjr! - Fixed #6891: Improved type inference for array indices.Example:
const numbers: number[];numbers[42]; // This now infers to `number | undefined`. -
#6809
8192451Thanks @arendjr! - Fixed #6796: Fixed a false positive that happened innoFloatingPromiseswhen calling functions that were declared as part offor ... ofsyntax insideasyncfunctions.Instead, the variables declared inside
for ... ofloops are now correctly inferred if the expression being iterated evaluates to anArray(support for other iterables will follow later).Invalid example
const txStatements: Array<(tx) => Promise<any>> = [];db.transaction((tx: any) => {for (const stmt of txStatements) {// We correctly flag this resolves to a `Promise`:stmt(tx);}});Valid example
async function valid(db) {const txStatements: Array<(tx: any) => void> = [(tx) => tx.insert().run()];db.transaction((tx: any) => {for (const stmt of txStatements) {// We don't flag a false positive here anymore:stmt(tx);}});} -
#6757
13a0818Thanks @mdevils! - Added the rulenoVueReservedProps, resolves #6309.It prevents the use of reserved Vue prop names such as
keyandrefwhich can cause conflicts and unexpected behavior in Vue components.Invalid example
import { defineComponent } from "vue";export default defineComponent({props: ["ref", "key", "foo"],});<script setup>defineProps({ref: String,key: String,foo: String,});</script>Valid examples
import { defineComponent } from "vue";export default defineComponent({props: ["foo"],});<script setup>defineProps({ foo: String });</script> -
#6840
1a57b51Thanks @denbezrukov! - Allow multiple identifiers in ::part() pseudo-element selector.::part(first second) {} -
#6845
4fd44ecThanks @arendjr! - Fixed #6510: The scanner no longer shows diagnostics on inaccessible files unless--verboseis used. -
#6844
b7e2d4dThanks @sterliakov! - Fixed #6837: Fixed regression with multiple consecutive line suppression comments using instances (like// biome-ignore lint/correctness/useExhaustiveDependencies(depName): reason). -
#6818
5f3f5a6Thanks @siketyan! - Fixed an issue wheretextDocument/codeActionin the LSP could respond with outdated text edits after the workspace watcher observed outdated changes to the file. -
#6804
3e6ab16Thanks @arendjr! -noFloatingPromiseswill no longer suggest to addawaitkeyword inside synchronous callbacks nested insideasyncfunctions. -
#6901
c9e969aThanks @arendjr! - Fixed #6777: Fixed type inference handling ofthisto avoid infinite recursion.Thanks to @sterliakov for the thorough investigation!
-
#6855
d1581c7Thanks @vladimir-ivanov! - Fixed #6775:useReadonlyClassPropertiesnow also captures mutations inside function arguments.Example:
class Counter {private counter: number;count() {console.log(this.counter++);const counterString = `${this.counter++}`;}} -
#6839
4cd62d8Thanks @ematipico! - Fixed a bug where Biome didn’t throw any error whenvcs.useIgnoreFileis set totrue, and there wasn’t any ignore file read. Now Biome correctly throws an error if no ignore files are found. -
#6911
6d68074Thanks @arendjr! - Fixed #6838: Reduce resource consumption in the Biome Language Server by using non-recursive filesystem watchers instead of recursive ones.Watchers are responsible for notifying Biome of changes to files in the filesystem. We used to set up a single recursive watcher, but that meant that Biome would receive filesystem notifications for all files in your project, even for ignored folders such as
build/ordist/folders.With this patch, we set up non-recursive watchers only for the folders that are relevant to a project.
Related to this, we also solved an issue where incoming notifications were incorrectly filtered, causing ignored files to be processed and stored in our module graph anyway.
Copyright (c) 2023-present Biome Developers and Contributors.