mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-15 04:40:40 -07:00
biome.json is strict JSON; the jsonc extension allows the annotations on the baseline entries. Rules that currently fail are downgraded to warn with a note against issue #421 — restore each to error as its occurrences are fixed. files.experimentalScannerIgnores keeps the scanner out of .worktrees/ so a local worktree's own config can't conflict with the root one. Also fixes the handful of auto-fixable errors (unused imports in docs/ and landing/, @ts-expect-error over @ts-ignore). bun run lint is now green: 0 errors, 96 warnings visible as debt.
85 lines
2.2 KiB
JSON
85 lines
2.2 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.3.12/schema.json",
|
|
"vcs": {
|
|
"enabled": true,
|
|
"clientKind": "git",
|
|
"useIgnoreFile": true
|
|
},
|
|
"files": {
|
|
// Local git worktrees carry their own root biome.json; keep the scanner
|
|
// out so they don't conflict with this one.
|
|
"experimentalScannerIgnores": [".worktrees"]
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineWidth": 100
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"a11y": {
|
|
"useButtonType": "warn",
|
|
// Baseline (issue #421): interactive-div patterns in the dictation
|
|
// pill and chord picker.
|
|
"noStaticElementInteractions": "warn",
|
|
"useFocusableInteractive": "warn",
|
|
"useSemanticElements": "warn",
|
|
"useAriaPropsSupportedByRole": "warn",
|
|
"useKeyWithClickEvents": "warn",
|
|
"noLabelWithoutControl": "warn",
|
|
"useAriaPropsForRole": "warn"
|
|
},
|
|
"correctness": {
|
|
"noUnusedVariables": "warn",
|
|
"noUnusedImports": "error",
|
|
"useExhaustiveDependencies": "warn",
|
|
"useHookAtTopLevel": "error",
|
|
// Existing-violation baseline (issue #421); restore to error as
|
|
// occurrences are fixed. Counts as of 2026-07-26.
|
|
"noInnerDeclarations": "warn"
|
|
},
|
|
"suspicious": {
|
|
"noDoubleEquals": "error",
|
|
"noExplicitAny": "warn",
|
|
"noUnknownAtRules": "off",
|
|
// Baseline (issue #421): 16 array-index keys, 2 iterable-callback
|
|
// returns, 1 then-property.
|
|
"noArrayIndexKey": "warn",
|
|
"useIterableCallbackReturn": "warn",
|
|
"noThenProperty": "warn"
|
|
},
|
|
"style": {
|
|
"useFilenamingConvention": "off",
|
|
"noNonNullAssertion": "off"
|
|
}
|
|
}
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"quoteStyle": "single",
|
|
"jsxQuoteStyle": "double",
|
|
"trailingCommas": "all",
|
|
"semicolons": "always",
|
|
"arrowParentheses": "always"
|
|
}
|
|
},
|
|
"json": {
|
|
"formatter": {
|
|
"trailingCommas": "none"
|
|
}
|
|
},
|
|
"css": {
|
|
"parser": {
|
|
"cssModules": false,
|
|
"allowWrongLineComments": false,
|
|
"tailwindDirectives": true
|
|
},
|
|
"linter": {
|
|
"enabled": true
|
|
}
|
|
}
|
|
}
|