L'électron rare f424026117 feat: add the four content stops in 3d
Context: the ride passed 4 stops (boot, identities, electron
fou, greetings) but rendered no content at any of them.

Approach: shared StopPanel component places a pole, a yellow
sign with the stop title, and a drei Html transform panel
anchored beside the road via stopAnchor(); each stop composes
it with its own content module.

Changes:
- StopPanel.tsx: pole + sign + Html panel, panel--active class
  driven by useRide selector on the active stop id
- StopBoot.tsx: avatar art, name, tagline, bio lines
- StopIdentities.tsx: identity links list
- StopElectronFou.tsx: music blurb + pulsing tube amp with VU
  needles animated via useFrame
- StopGreetings.tsx: greetings list + ride-again reset button
- Stops.tsx: mounts the four stop components
- style.css: .panel styling, active glow, sign buttons/links
- App.tsx: mount <Stops /> in the Canvas, drop the placeholder

Impact: the ride now has readable, interactive content at every
stop; build (tsc -b + vite build) and full vitest suite (12/12)
pass.
2026-07-09 11:43:06 +02:00

clement.saillant.cc — LE BUS

Demoscene-style personal identity hub: a bus driving across a giant PCB. Spec: docs/superpowers/specs/2026-07-09-clement-saillant-cc-design.md

  • npm run dev — dev server
  • npm test — unit tests (vitest)
  • npm run e2e — smoke tests (playwright)
  • npm run build — static build in dist/
S
Description
Personal identity hub - demoscene bus on a PCB
Readme 248 KiB
Languages
TypeScript 91.9%
CSS 5%
HTML 2.3%
Dockerfile 0.8%