Skip to content

chore(lint): adopt shared TypeScript coverage and scoped exceptions - #231

Merged
DoctorDerek merged 4 commits into
mainfrom
chore/230-typescript-lint-coverage
Oct 21, 2026
Merged

DoctorDerek merged 4 commits into
mainfrom
chore/230-typescript-lint-coverage

Conversation

@DoctorDerek

Copy link
Copy Markdown
Owner

Summary

Closes #230

  • Adopt the existing shared TypeScript lint-configuration guard at immutable workflow commit 28018031ea1409487e9919b0c62dd58602a3e649; keep this site's typecheck command, coverage owner, and workflow inputs unchanged.
  • Enable the installed Next.js TypeScript preset for TS/TSX/MTS/CTS. Replace the unchecked lint-plugin cast with its documented flat-config side-effect import, preserving advisory rule findings.
  • Keep justified exceptions in ESLint config: local fullPage extension initialization in ClientShell.tsx, and intentional rest-prop omission in four existing image mocks. No inline suppressions or new source ignores.
  • Remove one unused Playwright import and add 48 real-ESLint integration checks covering typed JSX, hooks, diagnostics, private/generated exclusions, and positive/negative exception boundaries.
  • Document the guard's responsibility and the reasons for both exceptions.

Why

Before this change, ordinary lint completed cleanly but the shared guard found 0/125 tracked TypeScript files with TypeScript-specific rules. Afterward it verifies 126/126, including the new regression suite, with zero ignored tracked files and zero gaps. Parsing TypeScript was not equivalent to enabling its lint rules.

The existing synchronous fullPage plugin loader follows the upstream initialization contract; converting it to top-level or asynchronous imports just to satisfy lint would change behavior. The image mocks deliberately remove Next.js-only props before forwarding remaining props to an img. Both exceptions are narrowly scoped and tested against prohibited neighboring cases.

Verification

Repository runtime: fnm Node 24.18.0, pnpm 11.9.0; no upgrades.

  • Actual shared checkTypeScriptLintCoverage.ts: 126/126 covered, 0 ignored, 0 gaps. Local scanner and workflow source verified against their immutable pins.
  • pnpm lint: passed with no findings.
  • pnpm format with repository ignores plus a private changed-path allowlist: passed; final run left no diff. Existing untracked store and private files preserved.
  • pnpm exec next typegen and pnpm exec tsc --noEmit --incremental false: passed.
  • pnpm exec vitest run --coverage: 42 files, 233 tests passed, including 48 real-ESLint cases. Existing measured report: statements 792/792, branches 355/355, functions 198/198, lines 749/749 (100% each).
  • Exact diff and git diff --check: passed. Four semantic commits, five files.

Boundaries / review

No application component, styling, runtime logic, dependency, lockfile, license asset, secret, Playwright/Lighthouse workflow, timeout or coverage-policy change. No build, browser session, hosted QA or deployment performed by the agent; ordinary CI retains its existing triggers. Local checks are not a claim of hosted or manual acceptance.

Review the two scoped config exceptions and shared-workflow pin. Normal site smoke checks remain available to the reviewer, but this PR intentionally leaves the site's runtime and presentation unchanged.

@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
doctor-derek Ready Ready Preview Oct 21, 2026 10:21pm UTC

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🧹 ESLint

Quality check 1 of 3

✅ Zero warnings.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🧪 Vitest

Quality check 2 of 3

✅ Vitest completed successfully.

 Test Files  42 passed (42)
      Tests  233 passed (233)
   Duration  16.85s (transform 1.09s, setup 10.05s, import 2.77s, tests 8.42s, environment 16.79s)

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🎭 Playwright

Quality check 3 of 3

✅ Playwright completed successfully.

Running 90 tests using 1 worker
  90 passed (3.3m)

Open preview deployment

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🗺️ XState v5 State Machine Diff Visualization

Architecture visualization

Base 43540518bc6c → Head fb3a930a1445

No XState state-machine topology changes detected.

Download canonical graphs, structured diff, Mermaid, and diagnostics

@DoctorDerek

Copy link
Copy Markdown
Owner Author

Code reviewed and approved. QA deferred. Merging now.

@DoctorDerek
DoctorDerek merged commit 10a7e05 into main Oct 21, 2026
10 checks passed
@DoctorDerek
DoctorDerek deleted the chore/230-typescript-lint-coverage branch October 21, 2026 22:23
@codecov

codecov Bot commented Oct 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (4354051) to head (fb3a930).
⚠️ Report is 5 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #231   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           53        54    +1     
  Lines          827       828    +1     
  Branches       162       162           
=========================================
+ Hits           827       828    +1     
Flag Coverage Δ
vitest 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This branch was successfully deployed

1 active deployment
Preview — fb3a930a Deployed Oct 21, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopt shared TypeScript lint guard and perform bounded lint cleanup

1 participant