Files
Denis Pisarev 8fbc0950a7 ci: add pre-commit hooks and fix repo-wide lint errors (#109)
* fix(lint): resolve eslint errors in lib

- lib/stats.ts: replace any with unknown in extra fields access
- lib/uploads.test.ts: replace any with Record<string, unknown>
- lib/utils.ts: remove unused catch bindings

* fix(lint): resolve all eslint errors across codebase

- Replace all `any` types with proper types (Record<string,unknown>,
  discriminated unions, generic constraints, etc.)
- Remove unused imports and variables
- Escape entities in JSX text
- Fix no-unused-expressions in currency-converter
- Add argsIgnorePattern/varsIgnorePattern for _-prefixed unused vars
- Define EmailServer and ImapSearchCriteria types in email-sync module
- Extract InvoiceFormAction discriminated union for invoice reducer
- Fix buildSearchCriteria return type consistency (nested arrays)
- tsc --noEmit and next lint both pass clean, all 20 tests pass

* ci: add pre-commit hooks and enforce lint in CI

- Add .pre-commit-config.yaml with prek: lint, typecheck (pre-commit),
  tests (pre-push), plus basic hygiene hooks
- Remove continue-on-error from CI lint job so it blocks on errors
- Install prek hooks for pre-commit and pre-push

* fix(lint): resolve remaining pre-existing eslint warnings

- invoice-generator.tsx: include user/settings in useMemo deps for templates
- invoice-pdf.tsx: suppress jsx-a11y/alt-text for react-pdf's Image (no alt prop)
- currency-converter.tsx: document intentional useEffect dep omissions
- simple.tsx: suppress no-img-element for client-side avatar data URL preview
- llm-settings-form.tsx: remove unused idx prop from SortableProviderBlock
- list.tsx: document intentional useEffect dep omission for router/searchParams

These predate this branch's other lint fixes (unrelated to the cherry-picked
commits) but block the zero-warnings policy enforced by .pre-commit-config.yaml.

* style: strip trailing whitespace in crud.tsx
2026-07-05 23:29:11 +02:00
..