design/synthesis: lavender chalk + Forgejo + smoother stages #2

Merged
karma merged 1 commit from design/synthesis into main 2026-08-07 15:39:55 +02:00
Owner

Summary

  • Retune synthesis to the lavender chalk pastel palette (tokens, chips, raytracer lights).
  • Replace GitHub repo counts with Forgejo (FORGEJO_TOKEN, /api/forgejo/repos-count), drop Epitech-as-current framing from public copy.
  • Perf: JetBrains Mono via next/font/google instead of ~2MB Nerd fonts; dynamic below-fold sections; cheaper ambient contact raytracer; idle-aware cursor.
  • Motion: wheel-lock scroll stages for projects/lab, softer reveals/stage swaps/hovers.

Test plan

  • npm run typecheck and npm run test:unit
  • Hard refresh http://127.0.0.1:3002 — lavender paper, soft lilac/peach/mint accents
  • Hero + contact raytracers; contact cheaper when ambient
  • Projects + skills: pin under header, wheel steps stages, chips still work
  • About shows Forgejo repo count when FORGEJO_TOKEN set
  • Confirm no Nerd font assets in network panel
## Summary - Retune synthesis to the lavender chalk pastel palette (tokens, chips, raytracer lights). - Replace GitHub repo counts with Forgejo (`FORGEJO_TOKEN`, `/api/forgejo/repos-count`), drop Epitech-as-current framing from public copy. - Perf: JetBrains Mono via `next/font/google` instead of ~2MB Nerd fonts; dynamic below-fold sections; cheaper ambient contact raytracer; idle-aware cursor. - Motion: wheel-lock scroll stages for projects/lab, softer reveals/stage swaps/hovers. ## Test plan - [x] `npm run typecheck` and `npm run test:unit` - [x] Hard refresh `http://127.0.0.1:3002` — lavender paper, soft lilac/peach/mint accents - [x] Hero + contact raytracers; contact cheaper when ambient - [x] Projects + skills: pin under header, wheel steps stages, chips still work - [x] About shows Forgejo repo count when `FORGEJO_TOKEN` set - [x] Confirm no Nerd font assets in network panel
New home page design proposal on its own branch:

- Hero runs a real-time raymarched scene (checkerboard, chrome sphere,
  torus, two orbiting colored lights) — a GLSL port of the Epitech C++
  raytracer, resolving in render tiles on load with a live HUD
  (tiles/SPP/FPS). Mouse steers the lights; theme toggle relights the
  scene (night render vs white studio).
- Software rasterizers (CI, no-GPU machines) and reduced-motion get an
  original C++ render as a static fallback; canvas pauses off-screen
  and adapts internal resolution to frame time.
- Editorial layout: Anton display type, marquee tickers, project index
  rows with a cursor-trailing demo preview (webm demos + cycling
  raytracer stills), skills marquee, oversized contact section, custom
  cursor, scroll progress, grain overlay.
- e2e specs updated for the new structure; visual audit, a11y testids,
  SEO checks and light/dark themes preserved. Unit + typecheck + e2e
  all green.
- Work rows: per-project accent color washes, colored indexes, and
  always-visible tilted thumbnails that play the demo webms inline
  (they fade out when the cursor preview takes over). Ghost 02 numeral
  and violet/cyan section washes behind the index.
- Stack: ghost 03 numeral, violet-to-cyan glow band behind the chip
  marquees, brand-cycled icon colors, and the closing line promoted to
  a colored statement.
- Contact: the raytracer scene returns behind the section from a second
  camera angle (new uCamOff uniform), with its own C++ render fallback;
  gradient underline on the giant mailto and violet CTA.
- Resilience: page-level 2.5s budget on the GitHub repo count so a slow
  API can never block first paint; Tailwind now scans lib/ so data-file
  accent gradients generate.

Unit + typecheck + e2e all green.
Raw <script> tags in RootLayout head trip Next 16 / React 19 ("Scripts
inside React components are never executed") and cascade into false
hydration mismatches under Turbopack HMR.

- Theme FOUC script → /scripts/theme-init.js via next/script beforeInteractive
- JSON-LD → JsonLdScript helper (same pattern)
- SiteAnalytics moved into body with the other scripts
- SectionHeading marked "use client" (only wraps Reveal)
Previous pop pass was too shy (7% washes). Rewrite:

- Work: split media/text cards with live demos at rest, thick accent
  bars, strong color washes + glow, colored tech chips, alternating
  layout — no more black text-only index rows
- Stack: full-bleed violet/cyan band + grid, jewel-tone chip pills,
  giant colored statement line
- Contact: thinner veil over second-camera raytracer so the scene
  actually reads; glass cards; violet CTA glow
About was the last flat black slab between hero and work. Now has
violet/cyan atmosphere, ghost 01, glass bio card with accent bar +
gradient wash + tags, and per-stat colored fact cards. Ticker strip
gets a violet→cyan band so the hero→about handoff isn't a void.
Next 16 blocked cross-origin /_next/* from the machine IP because
allowedDevOrigins only listed localhost — HTML loaded, JS never did.
Merge live GLSL raytracer hero/contact with Codex ProjectStage, InfrastructureConsole, and kinetic ribbon — drop purple-glow slabs, retune lights to lime/coral/cyan, e2e on :3002.
feat(design): lavender chalk palette, Forgejo counts, smoother scroll stages
All checks were successful
CI / test (pull_request) Successful in 3m52s
CI / docker-verify (pull_request) Successful in 2m33s
CI / docker-publish (pull_request) Has been skipped
CI / deploy (pull_request) Has been skipped
1289a7838f
Swap GitHub for Forgejo repo counts, retune synthesis to lavender chalk, cut Nerd-font weight, and soften reveal/stage/wheel motion for the pinned project and lab consoles.
fix(design): clearer Forgejo repo count unavailable fallback
All checks were successful
CI / test (pull_request) Successful in 2m13s
CI / docker-verify (pull_request) Successful in 1m1s
CI / docker-publish (pull_request) Has been skipped
CI / deploy (pull_request) Has been skipped
fa893d5e9d
Use n/a instead of an em dash when the count is missing so the About fact card does not look broken.
karma force-pushed design/synthesis from fa893d5e9d
All checks were successful
CI / test (pull_request) Successful in 2m13s
CI / docker-verify (pull_request) Successful in 1m1s
CI / docker-publish (pull_request) Has been skipped
CI / deploy (pull_request) Has been skipped
to 43a95ad197
All checks were successful
CI / test (pull_request) Successful in 2m18s
CI / docker-verify (pull_request) Successful in 1m0s
CI / docker-publish (pull_request) Has been skipped
CI / deploy (pull_request) Has been skipped
2026-08-07 15:32:48 +02:00
Compare
karma merged commit 87fdade5f0 into main 2026-08-07 15:39:55 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
karma/portfolio!2
No description provided.