3849b78f83
.claude/worktrees/agent-a82a3716/ lag mit 369 getrackten Dateien im Repo — eine vollständige, veraltete Kopie von src/. Zwei Folgen: `eslint .` brach mit 965 fatalen Parse-Errors ab, weil der Worktree eine eigene tsconfig mitbringt und tsconfigRootDir mehrdeutig wurde. Und jeder repo-weite Glob traf Duplikate, was die reale Gefahr barg, Änderungen in der Kopie statt im Original zu machen. - git rm -r --cached auf das Verzeichnis, Dateien auf der Platte bleiben - .claude/worktrees/ in .gitignore - .claude/** in die ESLint-Ignoreliste; Untracking allein genügt ESLint nicht, es liest die Platte, nicht den Index ESLint liefert damit statt 965 Parse-Errors wieder echte Befunde. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
import js from '@eslint/js'
|
|
import globals from 'globals'
|
|
import reactHooks from 'eslint-plugin-react-hooks'
|
|
import reactRefresh from 'eslint-plugin-react-refresh'
|
|
import tseslint from 'typescript-eslint'
|
|
import { defineConfig, globalIgnores } from 'eslint/config'
|
|
|
|
export default defineConfig([
|
|
// `.claude/worktrees/` holds transient agent copies of src/ — linting them
|
|
// produces thousands of duplicate parse errors and drowns out real findings.
|
|
globalIgnores(['dist', '.claude/**']),
|
|
{
|
|
files: ['**/*.{ts,tsx}'],
|
|
extends: [
|
|
js.configs.recommended,
|
|
tseslint.configs.recommended,
|
|
reactHooks.configs.flat.recommended,
|
|
reactRefresh.configs.vite,
|
|
],
|
|
languageOptions: {
|
|
globals: globals.browser,
|
|
},
|
|
},
|
|
// ── Design Token Enforcement ────────────────────────────────────────────────
|
|
// New hardcoded hex colors in components/pages are blocked (error).
|
|
// Existing violations are tracked by: npm run check:tokens
|
|
//
|
|
// Use instead:
|
|
// DS_TEXT.secondary, DS_SURFACE.success.bg (src/lib/ds.ts)
|
|
// matchScoreHex(score), criterionScoreTextColor(score) (src/lib/utils.ts)
|
|
// RESULT_TYPE_META[type].color (src/lib/ds.ts)
|
|
// MUI theme tokens: "primary.main", "text.secondary"
|
|
{
|
|
files: ['src/components/**/*.{ts,tsx}', 'src/pages/**/*.{ts,tsx}'],
|
|
rules: {
|
|
'no-restricted-syntax': [
|
|
'warn',
|
|
{
|
|
selector: [
|
|
'Property[key.name=/^(bgcolor|color|borderColor|background|fill|stroke)$/]',
|
|
' > Literal[value=/^#[0-9A-Fa-f]{3,8}$/]',
|
|
].join(''),
|
|
message:
|
|
'No hardcoded hex colors in sx/style props. Use DS_TEXT, DS_SURFACE, DS_BORDER, DS_BG, BADGE_COLORS from src/lib/ds.ts, or helper functions from src/lib/utils.ts.',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
])
|