Skip to content

ESLint debt: 59 errors blocking strict CI gating #209

@stultus

Description

@stultus

Context

The new CI workflow (PR #208) added npm run lint enforcement, but the codebase has 59 pre-existing eslint errors. To unblock the cross-platform CI rollout, eslint runs with continue-on-error: true — it's visible in the run summary but doesn't fail the job. This issue tracks the cleanup needed to flip that flag.

Breakdown

After running npx eslint . --fix (which auto-resolved 1 of 60), the remaining errors are:

Count Rule Difficulty Notes
14 @typescript-eslint/no-unused-vars Easy Remove imports or _ prefix
13 svelte/no-unused-svelte-ignore Easy Just delete the stale comments
12 svelte/prefer-svelte-reactivity Hard Svelte 5 runes migration ($state, etc.)
10 svelte/require-each-key Medium Add stable key per {#each} block
5 @typescript-eslint/no-unused-expressions Medium Inspect each — could be intent or bug
2 svelte/no-dom-manipulating Medium Refactor direct DOM access
2 svelte/no-at-html-tags Security Audit {@html} usage for XSS
1 no-control-regex Medium Review the regex in question

Suggested cleanup order

  1. Mechanical pass (deletes + renames): unused-vars, unused-svelte-ignore, prefer-const. Low risk, big visual win (~28 errors).
  2. Each-block keys: pick stable keys per loop (likely id or index). ~10 errors.
  3. {@html} audit: confirm each call site only renders trusted content; switch to safe alternatives where possible. Do this before any prefer-svelte-reactivity migration touches the same files. ~2 errors.
  4. Unused-expressions + control-regex + dom-manipulating: case-by-case. ~8 errors.
  5. Svelte 5 reactivity migration: 12 errors, riskiest. Bundle with related rendering changes if any.

Done when

.github/workflows/ci.yml has continue-on-error: true removed from the ESLint step, the CI gate is strict, and PRs fail on new lint regressions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions