ci: add lint and typecheck workflow on push/PR#208
ci: add lint and typecheck workflow on push/PR#208claygeo wants to merge 4 commits intopascalorg:mainfrom
Conversation
Adds a CI quality gate that runs biome check (lint + format) and tsc --noEmit (typecheck via turbo) on every push to main and every pull request. Uses bun (the repo's package manager) instead of npm, matching the setup from release.yml. Closes pascalorg#147
|
CI is working as expected — it caught 7 pre-existing lint errors that have been accumulating on main without a quality gate. All are auto-fixable:
I can fix all of these in a follow-up commit here if you'd like, or they can be addressed separately. The CLAUDE.md errors would go away by adding Let me know which approach you prefer and I'll update the PR. |
biome check includes format verification which fails on the current codebase due to pre-existing formatting differences. Use biome lint (code quality rules only) to avoid a massive formatting diff while still catching real issues like unused imports and missing deps. Format enforcement can be added later once the codebase is formatted consistently.
|
Updated — switched from The current codebase has pre-existing formatting differences that cause
|
The codebase currently has ~20 TypeScript errors introduced by the layout redesign (pascalorg#207) — missing exports, missing @types/node, etc. These pre-date the CI workflow and need to be fixed separately. Ship lint-only CI as the first quality gate. Typecheck is commented out with instructions to re-enable once the codebase passes tsc.
Summary
Closes #147
Adds a CI quality gate that catches lint errors and type issues before they hit main. Runs on every push to main and every pull request.
What it runs
bun run checkbiome.jsoncbun run check-typestsc --noEmitvia turbo across workspacesSetup
Matches the existing
release.ymlpatterns exactly:oven-sh/setup-bun@v2for bunactions/setup-node@v4with Node 22bun install --frozen-lockfilefor deterministic installsWhy not PR #192?
That PR uses
npm cibut this repo uses bun as its package manager (specified inpackage.json, withbun.lockcommitted). This PR uses bun throughout, matching the working setup inrelease.yml.Test plan
The workflow will run on this PR itself — check the Actions tab for results.