diff --git a/dev-docs/BACKLOG.md b/dev-docs/BACKLOG.md index baa8568f..815a0ce7 100644 --- a/dev-docs/BACKLOG.md +++ b/dev-docs/BACKLOG.md @@ -543,6 +543,85 @@ apps/portal om drift te voorkomen. --- +### TECH-PORTAL-ESLINT-DEPS — Audit apps/portal/package.json op missing direct ESLint deps + +**Aanleiding:** Tijdens de Cursor ESLint-integratie fix in `apps/app/` +(commit `4369806`, 2026-04-30) bleek dat 15 ESLint plugins, parsers en +configs alleen via pnpm-hoisting werden gevonden, niet als directe +dependencies in `package.json`. Cursor's ESLint extension gebruikt +strict module resolution en crashte op elke missing plugin in de +`@antfu/eslint-config-vue` extends-chain. Aannemelijk dat +`apps/portal/package.json` hetzelfde patroon heeft, want zelfde antfu- +config-keten en zelfde pnpm-monorepo-structuur. Zonder fix breekt het +ESLint-formatter pad voor iedereen die de portal opent in Cursor — +zelfde 3-uur-diagnose die we vandaag hebben doorgemaakt. +**Wat:** +- Run de diagnose-keten van vandaag (`ls node_modules/.pnpm | grep + "^eslint-plugin-"` vs `ls node_modules | grep "^eslint-plugin-"`, + plus de scoped variant en `vue-eslint-parser`/`@antfu/eslint-config-*` + audits) op `apps/portal/`. +- Voeg alle ontbrekende plugins als directe deps toe via `pnpm add -D` + met versies die matchen wat in pnpm store zit (zero version shifts). +- Verifieer in Cursor dat de portal ESLint extension activeert zonder + errors in Output Channel, en dat save-on-format ESLint correct firet. +**Prioriteit:** Middel — moet vóór sessie 2 (Pages migration) waar +portal-files actief in Cursor bewerkt worden. Niet kritisch nu, maar +de eerste developer die portal in Cursor opent stuit op hetzelfde +issue als vandaag. + +--- + +### TECH-ESLINT-V9-MIGRATION — Migreer apps/app + apps/portal naar ESLint v9 + flat config + +**Aanleiding:** ESLint v8.57.1 is end-of-life sinds eind 2024 +(zie pnpm install warnings: `eslint@8.57.1: This version is no longer +supported`). Daarnaast zijn meerdere config-pakketten in onze chain +deprecated en migreren naar flat config: `@antfu/eslint-config-vue`, +`@antfu/eslint-config-basic`, `@antfu/eslint-config-ts`, en +`eslint-plugin-markdown`. De huidige `.eslintrc.cjs` legacy-config +werkt, maar er komen geen security fixes meer voor v8 en de transitieve +deprecated-warnings groeien per `pnpm install`. Migratie naar v9 + flat +config (`eslint.config.js`) + modern `@antfu/eslint-config` lost in één +klap alle deprecated warnings op én moderniseert de toolchain. +**Wat:** +- Eigen workstream — niet meeliften op andere sprints want config- + rewrite raakt 200+ regels. +- ESLint 8.57.1 → 9.x upgrade. +- `.eslintrc.cjs` (legacy) → `eslint.config.js` (flat config). +- `@antfu/eslint-config@0.43.x` (legacy) → `@antfu/eslint-config@latest` + (flat-config variant). +- Alle plugins meeschalen naar versies die met v9 + flat config werken. +- Test op apps/app + apps/portal — de hele lint-baseline moet groen + blijven (0 problems voor app, baseline voor portal). +- Hoort vóór WS-3 sessie 2 (pages migration) als de portal-eslint + baseline ook op 0 staat, anders na alle WS-3 sessies. Schat 1-2 + dagen werk inclusief regression-fixing. +**Prioriteit:** Middel-Hoog — security-EOL is een doorslaggevend +argument; uitstel tot na WS-3 acceptabel maar niet onbeperkt. Eigen +sprint waard, geen meelift-pad. + +--- + +### TECH-VSCODE-STALE-ADMIN-ENTRY — Verwijder apps/admin uit .vscode/settings.json eslint.workingDirectories + +**Aanleiding:** `.vscode/settings.json` bevat in +`eslint.workingDirectories` nog een entry voor `apps/admin`, een +directory die in april 2026 volledig is verwijderd (admin SPA gemerged +in apps/app/ onder `/platform/*`). Cursor's ESLint extension skipt +missende directories silently dus is harmless, maar het is dode config +die bij toekomstig debugging voor verwarring kan zorgen. +**Wat:** +- Open `.vscode/settings.json`. +- Verwijder uit `eslint.workingDirectories` de regel: + `{ "directory": "apps/admin", "changeProcessCWD": true },` +- Commit als `chore(tooling): remove stale apps/admin entry from + .vscode/settings.json`. +**Prioriteit:** Laag — triviaal cleanup-item, kan in elke gerelateerde +tooling-sprint meeliften (TECH-PORTAL-ESLINT-DEPS of +TECH-ESLINT-V9-MIGRATION zijn natuurlijke kandidaten). + +--- + ### TECH-08 — Paginated response meta wordt weggegooid in organizer composables **Aanleiding:** `apps/app/src/composables/api/useSections.ts` en