* chore: migrate from ESLint to oxlint with type-aware linting
- Replace ESLint with oxlint + oxlint-tsgolint (type-aware via tsgolint)
- Generate .oxlintrc.json via `@oxlint/migrate --type-aware --js-plugins`
- Remove ESLint devDependencies (@eslint/js, eslint, typescript-eslint,
eslint-plugin-import, eslint-plugin-jsx-a11y, eslint-plugin-promise,
eslint-plugin-react, eslint-plugin-react-hooks, eslint-plugin-react-refresh,
eslint-config-prettier, globals, @vitest/eslint-plugin)
- Keep eslint-plugin-storybook and eslint-plugin-turbo as oxlint JS plugins
- Add eslint-plugin-jsx-a11y and eslint-plugin-react-hooks back as aliased
JS plugins to cover 9 rules not yet natively implemented in oxlint
- Delete eslint.config.mjs
- Update all workspace check:lint / fix:lint scripts to use oxlint --type-aware
- Update lint-staged to use oxlint --type-aware --fix
- Update turbo.json: globalDependencies and check:lint outputs
- Update CI workflow trigger to watch .oxlintrc.json instead of eslint.config.mjs
- Convert eslint-disable comments to oxlint-disable via --replace-eslint-comments
- Fix no-duplicate-enum-values suppressions in packages/constants and packages/ui
(disable comment must precede the first occurrence, not the second)
162 rules active (153 native + 9 via JS plugins), including full type-aware
@typescript-eslint rules via tsgolint. Only import/no-unresolved dropped
permanently (intentionally unsupported by oxlint).
Known oxlint bugs found during migration (reported upstream):
- @oxlint/migrate generates extraHOCs but schema requires customHOCs
- @oxlint/migrate --type-aware writes options.typeAware not in 1.50.0 schema
- @oxlint/migrate bloats settings block with turbo internal cache key state
- oxlint-disable-next-line targets wrong line for multi-line diagnostics
* chore: address PR review comments
- Revert workbox-9f2f79cf.js (generated public asset, already in ignorePatterns)
- Fix oxlint-disable-next-line placement in render-if-visible-HOC.tsx:
exhaustive-deps fires on useEffect call, not inside the cleanup function
* chore: address Copilot PR review comments
- pie-chart-grouping.tsx: fix disable comment placement (must precede useCallback
call, not be inside it), use void for floating promises
- badge/helper.tsx: fix missing @ prefix on @typescript-eslint/no-duplicate-enum-values
- constants/src/issue/common.ts: fix missing @ prefix on @typescript-eslint/no-duplicate-enum-values
- package.json: add --deny-warnings to lint-staged oxlint command to preserve pre-commit strictness