Repository navigation
chore: add CI/CD workflows, internal link checker, and project docs - #7
Merged
Merged
Conversation
- .github/workflows/ci.yml: on every PR, run lint, check-links, and build; on push to main, re-run checks and deploy dist/ to gh-pages. - .github/workflows/links.yml: weekly/manual external link check (lychee). - scripts/check-links.mjs (npm run check-links): fail on plain hrefs to app routes, missing/hidden guide slugs, broken in-guide anchors, public/ redirect pages drifting from src/data/links.js, missing headshot files. - Pin Node 22 (.nvmrc) and engines >=20.19 (Vite 7 minimum). - CONTRIBUTING.md: document automatic deploys and the new checks. - CLAUDE.md: update architecture notes; import PROMPT.md. - PROMPT.md: working brief with goals, constraints, and audit status.
PR checks on #7/#8 showed cancelled "verify" runs and a "deploy" job marked with "!", which read as CI not running. CI did run and pass: pushing the stacked branches together fired two pull_request runs per PR, and the concurrency group (cancel-in-progress on PRs) cancelled the older one. The deploy job always appeared on PRs as skipped. - ci.yml: verify only; no concurrency group (runs take ~20s), so duplicate runs both complete instead of posting cancelled checks. - deploy.yml: new; runs via workflow_run after CI passes on a push to main (or manually) and publishes the verified commit to gh-pages. - actions/checkout and actions/setup-node v4 -> v6 (Node 24), in ci.yml, deploy.yml, and links.yml, clearing the Node 20 deprecation warnings. - CONTRIBUTING.md and CLAUDE.md describe the new Deploy workflow.
- ci.yml: new `performance` job runs Lighthouse CI (mobile preset, 3 runs, median) on Home and About, fails on budget violations, writes a results table to the run summary, and uploads the reports. - lighthouserc.cjs: budgets for the current pages (score >= 60, LCP <= 3.5s, TBT <= 2.5s, CLS <= 0.1, weight <= 1 MB). A ?page= query keeps hash routes separate, since LHCI groups URLs without the #hash. - npm run perf: same check locally; scripts/perf-summary.mjs prints medians. - CONTRIBUTING.md / CLAUDE.md: run `npm run perf` before every commit/PR and report the numbers. Measured on this branch (local, Edge, mobile preset, median of 3): Home score 94, LCP 2.49s, TBT 0ms, CLS 0.001, 177 KB About score 77, LCP 2.70s, TBT 648ms, CLS 0.014, 384 KB
BK5102
added a commit
that referenced
this pull request
Oct 1, 2026
…oad Lexend Merges the Lighthouse CI performance job from #7, then ratchets the budgets to the redesigned site and fixes the one budget it missed: - vite.config.js: preload the hashed Latin Lexend woff2 so text paints in its final face sooner (About's LCP element is a text block that waited on the font). FCP 1.93s -> 1.65s, About LCP 2.73s -> 2.56s, Home LCP 2.22s -> 2.13s. - lighthouserc.cjs: score >= 85, LCP <= 3.0s, TBT <= 400ms, CLS <= 0.05, weight <= 600 KB (from 60 / 3.5s / 2.5s / 0.1 / 1 MB on #7). Measured (local, Edge, mobile preset, median of 3): Home score 98, FCP 1.65s, LCP 2.13s, TBT 82ms, CLS 0, 197 KB About score 96, FCP 1.63s, LCP 2.56s, TBT 100ms, CLS 0, 388 KB
Contributor
Author
Performance resultsLighthouse, mobile preset (simulated slow 4G, 4x CPU), median of 3 runs, local Edge build served with gzip. Compared with
CI (GitHub runner, new Verdict: no runtime change (CI/docs only). This PR adds the Lighthouse CI performance gate ( |
The maintainer keeps Claude Code guidance and the working brief in local, untracked files outside the repo. Ignore both names so they aren't recommitted. No runtime change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed and why
CI on every PR (
.github/workflows/ci.yml)npm ci,npm run lint,npm run check-links, andnpm run buildon every pull request.main(a merged PR), it re-runs the checks, then deploysdist/to thegh-pagesbranch with the samegh-pagestool asnpm run deploy. GitHub'spages-build-deploymentworkflow then publishes it.npm run deployremains available as a manual fallback.Internal link checker (
scripts/check-links.mjs,npm run check-links)It fails the build if any of the dead-link bugs from #5 come back:
<a href="/path">pointing at an app route, which bypasses HashRouter.?guide=<slug>that doesn't exist or is hidden.#anchorwith no matching section.public/<name>/index.htmlredirect pages that drift fromsrc/data/links.js.leaders.jsonthat's missing fromsrc/assets/Headshots/.External link check (
.github/workflows/links.yml)Tooling and docs
.nvmrc) andengines: >=20.19(the minimum for Vite 7).CONTRIBUTING.md: deploys are now automatic on merge; documents the new checks.How it was tested
check-links, and build all pass locally on this branch.check-linksreported all of them and correctly allowed/discord.ci.yml.After merging
CIdeploy job onmainand thepages-build-deploymentworkflow both succeed, then check devilquant.com.mainand require theCI / verifycheck, so failing PRs can't be merged.links.ymlcan be triggered once by hand from the Actions tab to see the baseline.