Commit Graph

97 Commits

Author SHA1 Message Date
Clément SAILLANT 9d526e9d88 feat: complete BMU assembly — board + 4x switch MOSFET + components
- BMU v2 board (from STEP, 225K verts)
- 4x switch MOSFET boards (from STEP, offset positions)
- 76 SMD components (Part::Feature from FCStd)
- Properly simplified with fast_simplification (560K faces, 8.4MB)
- No mesh corruption (proper topology-preserving decimation)
- Loading screen forced to 10s minimum

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:55:48 +00:00
Clément SAILLANT fdedaf77bb fix: countdown cartouche footer + mouse capture zone fix
Countdown page:
- Cartouche footer bottom-right: titre, copyright, contact LinkedIn/email
- Glassmorphism (blur 12px, dark 50%)
- Mobile: becomes full-width centered
- Links are pointer-events: auto (clickable through overlay)

Mouse capture fix:
- .webgl-bg now has pointer-events: auto (was missing)
- .overlay children are pointer-events: none (was auto — was blocking mouse events)
- Only links and tagline area are interactive
- Three.js canvas receives mouse events across entire viewport

PCB silkscreen labels still present on preview (SectionLabel with scrollTarget)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:21:59 +00:00
Clément SAILLANT a053bdbceb feat: loading screen with BMU photo while WebGL loads
- Full-screen loading overlay with BMU.jpeg from KXKM repo
- Title "L'electron rare" with cyan accent
- Animated progress bar (gradient cyan → amber)
- Rotating status messages (electronics-themed)
- Floating animation on BMU photo
- Auto-detects when WebGL canvas renders, then fades out (1s)
- Falls back gracefully if WebGL never loads

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:08:09 +00:00
Clément SAILLANT b5ed4ec309 fix: full assembly (380 objects, 4 MOSFET boards + BMU + I2C) + remove silkscreen labels
- Assembly now exports ALL 380 meshable objects (was 76)
- Includes: 4x switch MOSFET boards, BMU v2, I2C repeater, all SMD components
- Subsampled to 267K faces / 5.7MB GLB for web performance
- Removed BoardTitle silkscreen text overlay (was white labels on board)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 11:57:01 +00:00
Clément SAILLANT 05a9a220d8 feat: complete FreeCAD BMU assembly (76 real components, 4.6MB GLB)
- Exported from BMU.FCStd via amrit3701/freecad-cli Docker container
- 686 objects in FCStd, 76 Part::Feature exported (real geometry only)
- Full assembly: BMU v2 board + switch MOSFET + I2C repeater + all SMD components
- Components: D2PAK MOSFETs, SOT-23, R_0603, capacitors, connectors, inductors
- Replaces separate bmu-v2-full.glb + bmu-switch-mosfet.glb
- SwitchBoard component removed (included in assembly)
- Hero HTML removed — PCB 3D is the full-page hero

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 11:35:50 +00:00
Clément SAILLANT be20ae4400 feat: Hero removed — PCB silkscreen labels ARE the navigation
- Hero HTML deleted — the 3D PCB board IS the hero
- First viewport = 100vh spacer showing full board overview
- SectionLabel now clickable:
  MCU → #a-propos (Approche)
  ANALOG → #cas-concrets
  POWER → #photos
  FORMATION → /formation/
  MISSIONS → #graphic-sprints-title
  CONTACT → opens 3D popup
- Hover: label glows white, grows, ring appears
- Click: smooth scroll to target section
- Cursor changes to pointer on hover
- Labels visible directly on the PCB 3D as silkscreen text

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 11:13:23 +00:00
Clément SAILLANT 00b94c3cfa feat: Hero becomes BMU overview with clickable component zones
- Hero replaced by PCB-style navigation with 5 zones:
  MCU (Approche), ANALOG (Cas concrets), MISSIONS (Sprints),
  FORMATION (link), CONTACT (popup)
- Each zone: glassmorphism card with icon, Orbitron label, description
- Color-coded: cyan MCU, amber ANALOG, green MISSIONS, orange FORMATION, red CONTACT
- Gradient glow border on hover
- Smooth scroll to target sections
- Contact opens 3D popup
- Mobile: zones stack vertically
- Title: "L'electron rare" with cyan accent
- Subtitle: "Systemes electroniques specifiques, du besoin au livrable fiable"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 10:59:02 +00:00
Clément SAILLANT 4b5de5df8f fix: brighter PCB lighting + camera-follow light
- Ambient light 0.1 → 0.25
- Directional lights doubled (0.4→0.7, 0.15→0.3)
- Point light 0.2 → 0.4
- CameraLight: PointLight that follows camera position (intensity 0.6)
- Fog pushed back (8,30 → 12,40) for better PCB visibility

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 10:47:16 +00:00
Clément SAILLANT 6b914f088e fix: add 60vh PCB spacers between sections for board visibility
- 6x pcb-spacer (60vh transparent) between each content section
- Allows the PCB 3D model to be visible during scroll transitions
- Camera zooms on components during spacer gaps

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 10:25:15 +00:00
Clément SAILLANT 0f3990ca3d feat: ER logo PNG orbiting nucleus — 3 copies on elliptical paths
- LogoOrbit uses logo-mark.png as texture on 3D plane (not text)
- 3 copies at different tilts/speeds/colors (cyan, amber, green)
- Radii 1.0-1.3 (very close to nucleus)
- Billboard rendering (always faces camera)
- Glow sphere behind each logo
- Emissive tint matches orbit color

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:50:18 +00:00
Clément SAILLANT 1f960a1bb1 feat: real FreeCAD BMU v2 3D model + Orbitron font + ER nucleus logo
PCB 3D Models:
- bmu-v2-full.glb (1.6MB) — complete BMU v2 from FreeCAD with all components
- bmu-switch-mosfet.glb (369KB) — switch MOSFET daughter board
- Source: KXKM_Batterie_Parallelator branch object-orriented
- Converted via cascadio/trimesh from STEP

Fonts:
- Orbitron Bold (17KB) — geometric futuristic font for 3D text
- Space Mono Bold (80KB) — tech monospace
- Applied to all WebGL text (section labels, silkscreen, countdown)

Countdown (AtomGlitch):
- 3x "ER" logo at nucleus center, each on different rotation axis
- Cyan, amber, green glow variants
- Orbitron font for all orbital text

WebGL Background:
- RealPCB now uses bmu-v2-full.glb (real FreeCAD model)
- SwitchBoard added as secondary board
- Orbitron font for section labels

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:31:52 +00:00
Clément SAILLANT 4f9f464dab feat: real PCB refonte + tighter countdown text orbits
WebGL Background v2:
- Real KXKM BMU v2 PCB (GLB) as central 3D object
- 6 component zones with real KiCad GLB models:
  MCU (QFP32+SOIC8), ANALOG (SOIC8s), POWER (QFP32+caps+inductor),
  COM (SOIC8s), MISSIONS (QFP32), CONTACT
- ~70 real components (resistors, caps, inductors, LEDs, ICs)
- 25 extra scattered passives for realism
- Camera orbits PCB, zooms into each zone on scroll (8 stops)
- Current flow: 80 cyan + 40 amber particles circling the board
- Section labels as silkscreen text
- Board title: "L'ELECTRON RARE REV 2026.1"

Countdown (AtomGlitch):
- Text orbits tightened (radius 3.8→2.0, 3.5→1.8, etc.)
- Countdown ring radius 4.2→2.5
- Decorative ring 5.8→3.5
- All text closer to nucleus for denser, more energetic feel

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 08:07:24 +00:00
Clément SAILLANT a7fd9dbac2 feat: integrate real KiCad GLB models into WebGL PCB scene
- ICComponent: uses qfp32.glb (large) or soic8.glb (small) with fallback to procedural
- Capacitor: uses capacitor_0805.glb with scroll-reactive glow
- Resistor: uses resistor_0603.glb
- LED: uses led_0603.glb + dynamic PointLight for glow effect
- All models preloaded via useGLTF.preload()
- Fallback to procedural geometry if GLB fails to load
- Models from KiCad 10.0 official 3D library (STEP → GLB via cascadio)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 07:54:26 +00:00
Clément SAILLANT 0a0a6fdfa9 feat: real KiCad 3D component models (GLB) for WebGL PCB
7 GLB models converted from KiCad official STEP library via cascadio/trimesh:
- resistor_0603.glb (8KB) — SMD 0603 resistor
- capacitor_0805.glb (11KB) — SMD 0805 capacitor
- inductor_0805.glb (11KB) — SMD 0805 inductor
- led_0603.glb (11KB) — SMD 0603 LED
- soic8.glb (33KB) — SOIC-8 IC package
- qfp32.glb (118KB) — LQFP-32 IC package
- pcb-bmu-v2.glb (275KB) — KXKM BMU v2 PCB with copper traces

Source: KiCad 10.0 official 3D library (/usr/share/kicad/3dmodels/)
Conversion: cascadio (OpenCASCADE) + trimesh → GLB on KXKM-AI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 07:44:27 +00:00
Clément SAILLANT 177458fd07 feat: 50+ transition components — STM32, FPGA, ARM NPU, DSP, selfs
Transition components between each section:
- HERO→ABOUT: STM32F030 (Cortex-M0) + 8 passives + LEDs
- ABOUT→CASES: 74HC595 shift register + 2 selfs (inductors) + passives
- CASES→MEDIA: XC7A35T FPGA Artix-7 + DONE/INIT LEDs + passives
- MEDIA→SPRINTS: STM32N6 ARM Neural Unit + self + decoupling
- SPRINTS→CONTACT: TMS320F DSP C2000 + PWM/ADC LEDs + self

All with silkscreen ref designators and component values.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 07:18:54 +00:00
Clément SAILLANT e3b202cde6 fix: dimmer hero background (10% opacity) + transition components between sections
- Hero panel image opacity 0.3 → 0.1 (much more subtle)
- Added ~20 transition components between each section:
  - HERO→ABOUT: caps, resistors, LED
  - ABOUT→CASES: 74HC595 shift register + passives
  - CASES→MEDIA: resistors, cap, LED
  - MEDIA→SPRINTS: AMS1117 regulator + decoupling caps
  - SPRINTS→CONTACT: caps, resistors, LED
- At least 2 components visible between each section stop

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 07:08:18 +00:00
Clément SAILLANT c4cfd63eb6 feat: space out PCB journey — 2.4x wider component spacing
- Board expanded from 38 to 90 units depth
- All component positions, vias, branches, labels rescaled
- Zoom stops recalibrated for wider travel
- Substrate expanded (35x110)
- More breathing room between sections
- Camera Z range updated to match

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 06:52:44 +00:00
Clément SAILLANT 582fee2e44 feat: silkscreen labels + zoom camera stops on PCB components
- Silkscreen text on all components (ref designators, values, section labels)
- SectionLabel component: glows when camera approaches (scroll proximity)
- Camera zoom stops: 8 waypoints, smooth interpolation between components
- FOV transitions (50→40→42 etc.) for cinematic zoom effect
- smoothstep easing between stops
- Mouse parallax on camera position and lookAt
- Board markings: "L'ELECTRON RARE REV 2026.1", "Made in France"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 23:50:35 +00:00
Clément SAILLANT 16341a9889 feat: PCB journey — 3D components + trace current + contact popup
WebGL Background:
- Camera follows copper trace path (CatmullRom curve) on scroll
- Green PCB substrate with solder mask grid
- Main copper trace tube + 10 secondary branch traces
- 15 vias (metallic rings with holes)
- Current flow: 60 cyan + 30 amber particles along traces
- 200 ambient dust particles

3D Electronic Components:
- IC/MCU (ESP32, LM358, IRFZ44, LM7805) with pins + silkscreen
- Capacitors (cylinders, electrolytic + ceramic)
- Resistors (SMD rectangles with solder pads)
- LEDs (glowing domes, intensity = scroll proximity)
- USB-C connector

Section mapping on PCB:
- Hero = ESP32 MCU area
- About = Op-amp + passives
- Cases = Power MOSFET stage
- Media = USB connector
- Sprints = Voltage regulator
- Contact = Energy storage capacitors

Contact 3D popup:
- Hidden by default, opens on #contact click or scroll >95%
- 3D perspective entry (rotateY -15deg → 0)
- Glassmorphism backdrop blur
- Close via backdrop click, X button, or Escape

CSS:
- Orbital card entry animations (left/right alternating)
- Atomic carousel with electron dot hover
- Dark tech design tokens

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 23:36:13 +00:00
Clément SAILLANT 96f4ca0f4e feat: 3D scroll tilt cards + atomic carousel for photos/videos
- Cards: perspective 3D enter animation (rotateX/Y from blur)
- Scroll tilt: cards subtly rotate based on viewport position
- Atomic carousel: orbital scroll container with electron dot animation on hover
- Navigation arrows with glow + orbital track indicator
- Video hover autoplay in carousel items
- Lightbox: click any photo/video for full-view with energy rings
- Carousel items: 3D perspective rotateY(-3deg) on hover + glow border

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:55:44 +00:00
Clément SAILLANT dab02bdfb8 feat: full dark tech WebGL refonte — atomic scroll cards + media lightbox
- WebGLBackground: fixed subtle atom + particles (dimmed, camera z=14)
- WebGLCards: scroll-triggered tile materialize with particle burst
- MediaLightbox: click photos/videos for full-view with orbital energy rings
- Dark design tokens in global.css (.dark-site variant)
- Glassmorphism cards, glow borders, staggered reveals
- Photo/video hover glow effects
- Each section wrapped in webgl-section for atomic reveal
- Each content block in webgl-card with per-section accent color
- Respects prefers-reduced-motion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 22:36:08 +00:00
Clément SAILLANT 9b0cdd4dea feat: add WebGL atom background to preview Hero section
- AtomGlitch component integrated as Hero background (25% opacity)
- Respects prefers-reduced-motion
- Preview page now matches post-launch index.astro layout

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:58:04 +00:00
Clément SAILLANT acab730922 feat(seo): SOTA 2026 AI-ready SEO overhaul
- Schema.org: FAQPage, OfferCatalog, Occupation, EducationalOccupationalCredential, SearchAction, ContactPoint
- E-E-A-T signals: author, credentials (BTS SN), memberOf (KXKM), hasOccupation, priceRange
- AI crawling: llms.txt (llmstxt.org standard), robots.txt with GPTBot/Claude-Web/PerplexityBot/Google-Extended
- Meta: ai-content-declaration=human-created, generator-assisted, speakable, keywords, geo.region
- Auto date-switch: countdown (before May 1) / full site (after May 1) with Hero WebGL background
- Theme color updated to brand cyan #5bd1d8

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 21:49:04 +00:00
Clément SAILLANT d5f1ce84b4 feat: WebGL cinematic countdown — 3D atom with circular orbital text
- Three.js + React Three Fiber + postprocessing (bloom, chromatic aberration, glitch, scanlines)
- Nucleus with pulsing energy core, wireframe icosahedron shell
- 3 electron orbits with trail particles + energy arcs
- 600 particle cloud with organic movement
- Circular orbital text: title, countdown timer, subtitle curved on 3D rings
- Mouse interactions: camera parallax, atom speed boost, nucleus glow on proximity
- Camera smooth lerp follow with gentle auto-drift
- Font fix: woff2 → ttf for troika-three-text compatibility
- Logo: static mark instead of missing sprite frames

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:32:38 +00:00
Clément SAILLANT 666f05bf59 ci: harden monthly report branch-protection check 2026-03-28 14:12:56 +01:00
Clément SAILLANT fd9af8c2ba ci: add monthly cross-stack report workflow 2026-03-28 14:10:06 +01:00
L'électron rare 41389a88b7 feat: add CI E2E workflow with ntfy alerts
- Self-hosted runner on Tower
- Playwright E2E 23 tests
- ntfy notifications on pass/fail
- Runs on push to main + PRs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:38:11 +01:00
L'électron rare d97db3d918 fix: deploy workflow Photon -> Tower
- SCP + restart on Tower instead of unreachable Photon
- Node SSR container with mascarade-frontend network
- Requires TOWER_HOST, TOWER_USER, TOWER_SSH_KEY secrets

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 20:31:41 +01:00
L'électron rare dfee9a58d7 fix: enrich ops health display + API contracts + auth prep
- Health: parse agents count + providers from /health
- API contracts documented in script header
- Auth Bearer header prepared (token from data-attr/meta)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 12:34:30 +01:00
Clément SAILLANT 389b5ca6cd refactor: countdown + ops Apple SOTA 2026
- index.astro: white bg, Manrope font, Apple blue accent,
  clean timer (light weight, tabular-nums), gentle-float logo,
  fade-in stagger, no retro/glitch effects
- ops.astro: max-width 1200px (aligned with content grid),
  fluid padding clamp()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 06:40:17 +01:00
Clément SAILLANT 193f2cc67d refactor: Apple SOTA 2026 design system
- Rewrite global.css: CSS Grid named columns layout (full-bleed sections
  with centered content), Apple color tokens, glassmorphism nav,
  fluid typography clamp(), generous whitespace
- Remove home-workbench.css v12 variant overrides (all in global.css)
- Contact.astro: clean labels, no terminal/minitel aesthetic
- ops.astro: Apple-style segmented tabs, cards, KPIs, agent grid
- Uniform responsive: all panels full-bleed with 1200px centered content
- Override Tailwind p-5/p-6/rounded-2xl/mt-* on circuit-board panels
- Alternate section backgrounds (bg-secondary / surface)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 06:25:26 +01:00
Clément SAILLANT 6a1c2f7383 refactor: ops IA-native 3 vues (547 lignes vs 1381) 2026-03-21 15:38:52 +01:00
Clément SAILLANT 857f69b9db feat: ops tasks from Frappe DB + CRUD + AI execute 2026-03-21 09:24:05 +01:00
Clément SAILLANT 60bd17bd1b feat: catalogue 14 formations (initiation, créatif, pro, enfants) 2026-03-20 22:55:02 +01:00
Clément SAILLANT 9085533265 fix: location Beaujolais/Lyon (not Marseille) 2026-03-20 18:38:34 +01:00
Clément SAILLANT e14c59d708 feat: ops with full collab tools integration 2026-03-20 17:15:09 +01:00
Clément SAILLANT 5ad9be9582 feat: ops with business plan + marketing + KPIs 2026-03-20 16:43:41 +01:00
Clément SAILLANT 7d49213fbb perf: optimize images + robots noindex 2026-03-20 16:05:12 +01:00
Clément SAILLANT 874224fdbb perf: optimize images + robots noindex 2026-03-20 16:05:11 +01:00
Clément SAILLANT 418cc06c17 feat: ops page synced with plan execution avril 2026-03-20 14:59:36 +01:00
Clément SAILLANT 3fcf089e92 feat: update robots.txt.ts 2026-03-20 14:53:51 +01:00
Clément SAILLANT 285d8e71a0 feat: update ops.astro 2026-03-20 14:53:49 +01:00
Clément SAILLANT 9e7a54c716 feat: update intranet.astro 2026-03-20 14:53:48 +01:00
Clément SAILLANT 4420f18eb0 feat: update portfolio.astro 2026-03-20 14:53:47 +01:00
Clément SAILLANT eb7de7f44d feat: update index.astro 2026-03-20 14:53:45 +01:00
Clément SAILLANT 1a07d17230 feat: countdown with new logo + hero-bg + aria-live 2026-03-20 08:54:54 +01:00
Clément SAILLANT 5b505b04f1 feat: update Contact.astro 2026-03-20 00:12:05 +01:00
Clément SAILLANT 6ed434c44d feat: update intranet.astro 2026-03-20 00:12:04 +01:00
Clément SAILLANT bada31c775 feat: update portfolio.astro 2026-03-20 00:12:03 +01:00
Clément SAILLANT 8ca257f4dd feat: update countdown.astro 2026-03-20 00:12:02 +01:00