From 6f897fafb935a7880a7e0a00eda4bd86f1d19769 Mon Sep 17 00:00:00 2001 From: Builder Date: Mon, 11 May 2026 23:06:42 -0400 Subject: [PATCH] Add lint, typecheck, and html-validate guardrails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tooling: - ESLint 9 flat config (eslint.config.mjs) with three scopes: - browser vanilla JS for js/ (no modules, window globals) - Node ESM for scripts/ - typescript-eslint for tests/ and *.ts - Stylelint with a deliberately minimal "bug-only" ruleset (block-no-empty, color-no-invalid-hex, function-no-unknown, property-no-unknown, …) — no nags about compact handwritten CSS - html-validate against index.html (DOCTYPE, accessible names, non-redundant ARIA roles, valid landmark usage) - TypeScript --noEmit strict on playwright.config.ts + tests/*.ts npm scripts: - lint — parallel run of lint:js, lint:css, lint:html (~3s) - lint:js{,:fix}, lint:css{,:fix}, lint:html - typecheck — tsc --noEmit - check — lint + typecheck + test in parallel (CI entry point) Fixes uncovered by the new checks: - js/app.js: drop unused `activeTimers`, drop unused `t` lookup in refreshTreeRow, switch `activeTags` let→const, replace empty `catch(_)` blocks with parameter-less catch + intent comment - js/data.js: drop unused index arg in renderExperience - index.html: uppercase DOCTYPE, drop redundant role="banner" / role="contentinfo" on
/