Skip to content

ci: add GitHub Actions workflow (lint, typecheck, test, build) - #8

Merged
drogers0 merged 1 commit into
masterfrom
ci/github-actions
Jul 1, 2026
Merged

ci: add GitHub Actions workflow (lint, typecheck, test, build)#8
drogers0 merged 1 commit into
masterfrom
ci/github-actions

Conversation

@drogers0

@drogers0 drogers0 commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Adds the repo's first CI. Runs the four gates CLAUDE.md already defines as required, so PRs can't merge red and regressions (like #1) get caught automatically.

Checks (.github/workflows/ci.yml, job verify)

Ordered cheap → expensive, mirroring the local scripts exactly:

  1. lintnpm run lint (eslint)
  2. typechecknpm run typecheck (tsc --noEmit on both tsconfigs)
  3. testnpm run test (vitest, 416 tests)
  4. buildnpm run build (all 4 Vite configs + manifest/styles copy), then test -f dist/manifest.json to fail loudly if the copy step breaks

Setup

  • Triggers: pull_request + push to master + workflow_dispatch.
  • Node 22 (active LTS; tooling is version-agnostic here — one-line bump if you want to match local Node 24).
  • npm ci with npm caching via actions/setup-node@v4; single job / single install.
  • concurrency cancels a PR's superseded runs; permissions: contents: read (least privilege).

Not automated (by design)

Unit tests run in Node with no DOM, service worker, or live Fidelity endpoints. Per CLAUDE.md, green tests are necessary but not sufficient — the in-Chrome manual verification stays a human step. CI is a floor, not a ceiling.

Recommended follow-up (repo setting, not a file)

Enable branch protection on master requiring the verify check to pass before merge (Settings → Branches). Happy to walk through it or script it with gh api if you'd like.

Runs the four local gates from CLAUDE.md on every pull request and on pushes to
master: eslint, tsc (both tsconfigs), vitest, and the full Vite build (asserting
dist/manifest.json is produced). Single ubuntu job on Node 22 with npm cache and
npm ci; concurrency cancels superseded PR runs; least-privilege read-only token.

Unit tests run in Node with no DOM/service-worker/live Fidelity, so CI is a floor,
not a replacement for the in-Chrome manual verification CLAUDE.md requires.
@drogers0
drogers0 merged commit 80f7676 into master Jul 1, 2026
1 check passed
@drogers0
drogers0 deleted the ci/github-actions branch July 1, 2026 01:10
@drogers0 drogers0 mentioned this pull request Jul 1, 2026
drogers0 added a commit that referenced this pull request Jul 1, 2026
Runs the four local gates from CLAUDE.md on every pull request and on pushes to
master: eslint, tsc (both tsconfigs), vitest, and the full Vite build (asserting
dist/manifest.json is produced). Single ubuntu job on Node 22 with npm cache and
npm ci; concurrency cancels superseded PR runs; least-privilege read-only token.

Unit tests run in Node with no DOM/service-worker/live Fidelity, so CI is a floor,
not a replacement for the in-Chrome manual verification CLAUDE.md requires.
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.

1 participant