Files
soroban-abacus-flashcards/apps/web/biome.jsonc
Thomas Hallock e2816ae88b feat(vision): improve remote camera calibration UX
- Add dual-stream calibration: phone sends both raw and cropped preview
  frames during calibration so users can see what practice will look like
- Add "Adjust" button to modify existing manual calibration without
  resetting to auto-detection first
- Hide calibration quad editor overlay when not in calibration mode
- Fix rotation buttons to update cropped preview immediately
- Add rate limiting (10fps) for cropped preview frames during calibration
- Fix multiple bugs preventing dual-stream mode from working:
  - Don't mark calibration as complete during preview mode
  - Don't stop detection loop when receiving preview calibration
  - Sync refs properly in frame mode change effects

Also includes accumulated formatting and cleanup changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 10:51:59 -06:00

70 lines
1.7 KiB
JSON

{
"$schema": "https://biomejs.dev/schemas/2.3.8/schema.json",
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"a11y": {
"useButtonType": "off",
"noSvgWithoutTitle": "off",
"noLabelWithoutControl": "off",
"noStaticElementInteractions": "off",
"useKeyWithClickEvents": "off",
"useSemanticElements": "off"
},
"suspicious": {
"noExplicitAny": "off",
"noArrayIndexKey": "off",
"noImplicitAnyLet": "off",
"noAssignInExpressions": "off",
"useIterableCallbackReturn": "off"
},
"style": {
"useNodejsImportProtocol": "off",
"noNonNullAssertion": "off",
"noDescendingSpecificity": "off"
},
"correctness": {
"noUnusedVariables": "off",
"noUnusedFunctionParameters": "off",
"useUniqueElementIds": "off",
"noChildrenProp": "off",
"useExhaustiveDependencies": "off",
"noInvalidUseBeforeDeclaration": "off",
"useHookAtTopLevel": "off",
"noNestedComponentDefinitions": "off",
"noUnreachable": "off"
},
"security": {
"noDangerouslySetInnerHtml": "off"
},
"performance": {
"noAccumulatingSpread": "off"
}
}
},
"files": {
"ignoreUnknown": true
},
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true,
"defaultBranch": "main"
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"jsxQuoteStyle": "double",
"semicolons": "asNeeded",
"trailingCommas": "es5"
}
}
}