Repository navigation
chore: land #6–#8 on main (stacked PRs merged into intermediate branches) - #9
Merged
Merged
Conversation
Performance - Compress headshots to 28-88 KB JPEGs (were up to 1.4 MB). - Remove hero background video (14 MB) and unused old video (46 MB); the hero will be redesigned. - Store project images locally instead of hotlinking Unsplash. Bugs / fragile code - Add catch-all NotFound route (unknown URLs rendered an empty page). - Navbar Contact: scroll via router state instead of a 100 ms setTimeout. - pulse-grid: deterministic pattern instead of Math.random() in render. - Centralize Discord/LinkedIn/Sun Devil Central URLs in src/data/links.js. Lint (10 errors -> 0) - Remove unused imports; comment out hidden-guide imports. - Replace setState-in-effect in Navbar and Resources with derived state. Dead code - Delete react.svg, duplicate src/assets/DQ.png, public/vite.svg, interactive-grid-pattern.jsx, tailwind.config.js (ignored by v4), unused gridFade keyframes, aspect-w-* classes, Navbar scroll listener, unused bradley headshot. Data / content - About: derive Founders from leaders.json; exact headshot filename lookup; stable list keys. - leaders.json: fix typo/capitalization, "" -> null. - index.html: add meta description and Open Graph tags.
- .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.
Replace the plain black look with a dark graph-paper notebook world so a visitor immediately sees what DevilQuant is and how to join. Homepage - Hero: "DevilQuant" display, the approved claim handwritten on a highlighter stroke, and a pen-drawn tree from "you" to the two ways to join (Discord primary, Sun Devil Central secondary). - Desktop red-pen margin note with member placements; placements logo grid; closing "Your move." with one Join the Discord action. - Motion: one-time pen-draw + highlighter swipe, off for reduced motion. Site-wide - Navbar: monogram wordmark, red-pen loop on the current page, highlighter CTA, full-screen mobile menu (switches at lg). - About, Projects, Resources, 404, footer and redirect pages restyled into the same tokens; content and behavior unchanged. Year picker is a native select. Placements icon cloud replaced by the logo grid. - Tokens in src/index.css (@theme): pad, rule, chalk, pencil, highlighter, redpen; Lexend + Kalam self-hosted via @fontsource. - Placement logos: official wordmarks from Wikimedia Commons for Amazon, Capital One, General Dynamics, Microsoft, ServiceNow; Wells Fargo background box removed; viewBoxes trimmed (sources in placements.js). - Removed magicui patterns and the motion, clsx, tailwind-merge deps. Docs - PRODUCT.md (product truth), DESIGN.md + .impeccable/design.json (design system), homepage direction contract in .impeccable/surfaces/. - CLAUDE.md style notes and PROMPT.md status updated.
Review on #6 measured the Contact link at ~2-2.5s under CPU/network throttling. Profiling (4x CPU, ~1.6 Mbps) showed scrollIntoView is called as soon as About renders (~0.7s); the delay was the *smooth* scroll being starved by a ~1.5s main-thread task from About's DotPattern (~1,000 animated SVG nodes) and IconCloud mounting. (On main the 100 ms timeout fires before About renders under throttling, so it never scrolls at all.) - Jump to the section (behavior: 'auto') instead of animating, so the scroll lands when About renders: Contact from Home now settles in ~1.2-1.5s throttled vs ~2.6-3.2s, with scrolling starting at render. - Memoize DotPattern and IconCloud so About re-renders (navigation state, year select) don't re-reconcile the dot field.
# Conflicts: # src/components/magicui/dot-pattern.jsx # src/components/magicui/icon-cloud.jsx
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.
Design skills with a no-decorative-grid rule (design-taste-frontend) would otherwise strip the grid during routine UI work. The note also records that the team may replace the whole direction, in which case DESIGN.md and this section should change with it.
- 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
…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
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.
# Conflicts: # CLAUDE.md # PROMPT.md
feat: redesign site as "The Working Notebook"
This was referenced Oct 3, 2026
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.
Why
PRs #6, #7 and #8 were stacked: each targeted the branch below it, not
main. Their head branches weren't deleted, so GitHub didn't retarget them tomainwhen the PR below merged. Each one merged into an intermediate branch instead, and all of that work now sits onchore/add-ci-cd, 14 commits ahead ofmain. Only #5 reachedmain.Because
deploy.yml(added in #7) isn't onmain, nothing has deployed.gh-pageswas last updated on 2026-09-24, so devilquant.com doesn't include #5–#8 yet.What
This PR merges
chore/add-ci-cdintomain. It brings in the already-reviewed and merged contents of:links.js, lint 0)ci.yml,deploy.yml, weekly link check, check-links, Node pin)There are no new code changes.
After merge
The push to
mainruns CI, then Deploy (publishes togh-pages), then pages-build-deployment. If Deploy doesn't start, run it manually from Actions → Deploy → Run workflow.To avoid this with future stacks, a repo admin can turn on Settings → General → "Automatically delete head branches".
Checks (local,
3e00ba1)npm run lint: 0 errorsnpm run check-links: no internal dead linksnpm run perf: alllighthouserc.cjsbudgets passPerformance (Lighthouse, mobile, median of 3, local Edge)
#/#/about