4b697374f6
* feat: obsolete medication archiving, start date, and UI improvements - Add soft-archive (obsolete) for medications with dedicated section and toggle - Add medication start date field with date picker and validation - Add obsolete/reactivate API endpoints with proper auth - Filter obsolete meds from schedule, coverage, planner, and notifications - Improve UserFilterModal with intake schedules, stock badges, and click-to-open - Improve dashboard taken-by badges with per-intake bell icons - Add Escape key support to ConfirmModal and MobileEditModal - Fix Lightbox close button positioning near image - Add read-only mode support for MobileEditModal - DB migrations: 0008 (is_obsolete, obsolete_at), 0009 (medication_start_date) - All user-facing text uses i18n keys (en + de) * test: fix tests for obsolete medications and UI changes - Backend: add is_obsolete, obsolete_at, medication_start_date columns to test schemas - Backend: add test medication inserts in planner tests for active-med filtering - Frontend: update useMedications URL to include includeObsolete param - Frontend: fix MobileEditModal selectors and validation assertions - Frontend: add onClearUser prop to UserFilterModal test renders - Frontend: fix MedicationsPage and DashboardPage test assertions
63 lines
1.4 KiB
JSON
63 lines
1.4 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.3.12/schema.json",
|
|
"assist": { "actions": { "source": { "organizeImports": "on" } } },
|
|
"files": {
|
|
"includes": [
|
|
"backend/src/**/*.ts",
|
|
"frontend/src/**/*.ts",
|
|
"frontend/src/**/*.tsx",
|
|
"frontend/src/**/*.css",
|
|
"frontend/e2e/**/*.ts",
|
|
"frontend/playwright.config.ts"
|
|
]
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"complexity": {
|
|
"noForEach": "off"
|
|
},
|
|
"suspicious": {
|
|
"noExplicitAny": "warn",
|
|
"useIterableCallbackReturn": "off",
|
|
"noImplicitAnyLet": "warn",
|
|
"noArrayIndexKey": "warn",
|
|
"noAssignInExpressions": "off"
|
|
},
|
|
"style": {
|
|
"noNonNullAssertion": "off",
|
|
"useConst": "error",
|
|
"noParameterAssign": "off",
|
|
"noNestedTernary": "warn"
|
|
},
|
|
"correctness": {
|
|
"noUnusedVariables": "warn",
|
|
"noUnusedImports": "warn",
|
|
"noUnusedFunctionParameters": "warn",
|
|
"useExhaustiveDependencies": "warn"
|
|
},
|
|
"a11y": {
|
|
"useKeyWithClickEvents": "warn",
|
|
"noSvgWithoutTitle": "off",
|
|
"noStaticElementInteractions": "off",
|
|
"useButtonType": "off",
|
|
"noLabelWithoutControl": "warn"
|
|
}
|
|
}
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"indentStyle": "tab",
|
|
"indentWidth": 2,
|
|
"lineWidth": 120
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"quoteStyle": "double",
|
|
"semicolons": "always",
|
|
"trailingCommas": "es5"
|
|
}
|
|
}
|
|
}
|