Commit graph

86 commits

Author SHA1 Message Date
isUnknown
600ce937a3 Feat: transitions Play soignées — exit/enter directionnel + bg crossfade + game-preview
All checks were successful
Deploy / Deploy to Production (push) Successful in 17s
- Phase exiting (300ms) : featured + game-preview glissent/fondent dans slideDir
- Phase entering (350ms) : nouvel contenu entre depuis la direction opposée
- Swap currentIndex à 300ms : carousel grossit + bg crossfade simultanés
- Ajout game-preview (image preview côté droit, grid-area 3/13)
- Ajout preview dans le template JSON PHP
- Masqué sur mobile

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 19:24:41 +01:00
isUnknown
bbab752fd6 Fix: suppression de la classe slide en doublon dans toutes les vues
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 18:54:51 +01:00
isUnknown
5eaf99f7cd Feat: page Play — backgroundColor, playLink, play-icon + fix slug jouer
All checks were successful
Deploy / Deploy to Production (push) Successful in 5m22s
- Renommage dossier content 3_play → 3_jouer (slug /jouer)
- Champ backgroundColor (code-editor) dans game.yml + exposé en API
- playLinks simplifié en champ url simple → playLink dans l'API
- Variable CSS --background-color sur la section .play
- Bouton "Jouer" avec icône play-icon (SVG data URI dans buttons.css)
- Plugin sylvainjule/code-editor ajouté via composer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 18:41:05 +01:00
isUnknown
3cafcf3167 Feat: lignes courbes SVG sur Play + refonte blueprint game
- Play.svelte : ajout overlay SVG (background-play), suppression des vertical-line
- game.yml : restructuration du blueprint
- Header.svelte : modifications mineures

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:18:38 +01:00
isUnknown
69859cc60f Refactor: snake_case → camelCase dans blueprints, templates et vues
- Blueprints : renommage des champs (member_name, related_articles,
  background_video, play_links, images_gallery, external_links) et
  des noms de sections
- Templates JSON PHP : clés de sortie et appels ->method() en camelCase
- Vues Svelte (Play, Portfolio) : accès aux données alignés

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:40:33 +01:00
isUnknown
d8a0fde34c Upgrade Svelte 5.0.0 → 5.53.7 + fix Cursor class syntax
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
- Mise à jour de Svelte vers 5.53.7 pour supporter la syntaxe tableau/objet sur l'attribut class
- Cursor.svelte : class={[...]} avec états onTarget et onClick
- blueprints : catchphrase → catchPhrase
- buttons.css : suppression cursor: pointer
- Portfolio.svelte : scale hover nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 13:20:28 +01:00
isUnknown
c41eec0385 style button and earth icon variant
All checks were successful
Deploy / Deploy to Production (push) Successful in 16s
2026-03-09 11:57:28 +01:00
isUnknown
802a3ed5bf Feat: couleur d'arrière-plan dynamique sur GalleryAnimation (galleryBackgroundColor)
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 18:22:50 +01:00
isUnknown
47be2b4662 Refactor: styles GalleryAnimation migrés dans le composant
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 18:11:31 +01:00
isUnknown
6151dd5a31 Feat: page Jouer renommée Play + vue implémentée
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
Renommage jouer → play (blueprint, template, txt, vue)
API play.json.php : title, lettering, description, thumbnail,
background_image, play_links par jeu enfant listed()
Vue Play.svelte :
- Fond image avec crossfade (transition opacity sur .play-bg)
- Section principale (.play-featured) : glissé/fondu au changement de jeu
  via --slide-dir CSS var + classes is-out
- Carrousel nav (ul > li > button) : thumbnail + titre, active bordure verte
- Jeu sans play_links → bouton "Coming soon" désactivé
- Layout golden-grid, mobile adapté

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 17:58:29 +01:00
isUnknown
3ce350d2d7 portfolio > nav : increase gap between items
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
2026-03-06 17:39:22 +01:00
isUnknown
7bc6451ae5 Fix: classe active sur le li au lieu du button dans la nav Portfolio
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 17:38:25 +01:00
isUnknown
594d53f50e Refactor: sémantique nav Portfolio — ul > li > button
- nav > ul[role=list] > li > button
- aria-current sur l'item actif
- aria-label={project.title} sur le button (le texte visible est le numéro)
- alt="" sur la vignette (décorative, le titre est porté par aria-label)
- aria-hidden sur le numéro (redondant avec aria-label)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 17:32:22 +01:00
isUnknown
0b19589288 Tweak: ajustements style Portfolio
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
- Catchphrase en gradient-blue + Danzza Medium
- Titre en font-size-title-main + uppercase
- Description en font-size-subtitle
- Numéro nav après la vignette, align-items flex-start
- Vignette active scale(1.5) translateX(-20%)
- padding-right nav sidebar augmenté
- grid-area portfolio-text réduit d'une colonne

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 16:42:25 +01:00
isUnknown
88a5c78d7a Opti: images galerie portfolio en srcset webp
Kirby: preset 'gallery' + 'gallery-webp' (200→800px, qualité 80)
API: images_gallery retourne {src, srcset, webp} au lieu d'une simple URL
GalleryAnimation: <picture> + srcset, sizes 15vw desktop / 33vw mobile
decoding="async" ajouté

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 16:41:50 +01:00
isUnknown
88379fe073 Fix: fonts déplacées dans assets/fonts/ (chemin correct)
- Déplacement de assets/css/fonts/ → assets/fonts/
- Mise à jour des URLs dans fonts.css et le plugin Vite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 16:22:47 +01:00
isUnknown
31ab9a1b69 Refactor: fonts — nouveaux fichiers otf/ttf dans assets/css/fonts/
- Chemins mis à jour vers /assets/css/fonts/
- Suppression des fichiers .woff inexistants
- Suppression de Danzza Light (fichier absent) → font-face-danzza-light pointe vers Regular
- Noms de fichiers avec espaces encodés en %20 dans le CSS source
- Plugin keepFontsInPlace : restaure les noms décodés dans le CSS buildé

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 16:19:19 +01:00
isUnknown
436a4371da Fix: is-animated et ancre URL au chargement
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
is-animated : double rAF garantit un paint avec le bon translateX
avant d'activer la transition (évite l'animation parasite au load).

Ancre : capture du hash synchrone à la création du composant +
flag wasActive pour que clearAnchor() ne s'exécute pas au montage
quand isActive est encore false (slides non initialisées).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 12:23:47 +01:00
isUnknown
37b6ca7a5f Feat: ancres URL par projet dans la page Portfolio
- Navigation scroll/clavier → history.replaceState('#slug')
- Clic sidebar → idem
- Chargement avec #slug dans l'URL → affiche le bon projet directement
- Quitter la slide Portfolio → efface le hash

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 12:17:58 +01:00
isUnknown
01adf70585 Fix: pas de slide animé au chargement initial sur une page autre qu'accueil
All checks were successful
Deploy / Deploy to Production (push) Successful in 17s
La transition n'est activée qu'après le premier paint à la bonne position
(requestAnimationFrame une fois slides.all initialisé).
Remplace is-resizing par is-animated pour unifier les deux cas.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:54:28 +01:00
isUnknown
8dcec0e2c7 Fix: supprime la transition slides-wrapper pendant le redimensionnement
Classe is-resizing ajoutée sur resize, retirée 150ms après le dernier
événement — évite le glissement animé lors du resize de fenêtre.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:48:15 +01:00
isUnknown
09d05f53da Fix: fonts non dupliquées dans dist/, URLs CSS pointent vers assets/fonts/
All checks were successful
Deploy / Deploy to Production (push) Successful in 17s
Plugin Vite keepFontsInPlace : supprime les fonts que Vite copie dans dist/
et réécrit leurs URLs dans le CSS pour pointer vers /assets/fonts/.
Reverts base: '/assets/dist/' — inutile avec cette approche.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:45:18 +01:00
isUnknown
fca67beb6b Fix: URLs des fonts correctes dans le CSS buildé
Vite copiait les fonts dans assets/dist/ mais générait url(/NomFont.woff)
(chemin racine) au lieu de url(/assets/dist/NomFont.woff).
Correction : base = '/assets/dist/' en mode build, '/' en dev.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:41:41 +01:00
isUnknown
544a74a340 fix css file path
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
2026-03-05 17:33:51 +01:00
isUnknown
b1e4f50c9c CI: utiliser l'image ci-node (Node 20 + lftp + PHP préinstallés)
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Remplace ci-php + installation runtime de Node par l'image ci-node
qui embarque tout le nécessaire — build plus rapide et plus propre.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:30:32 +01:00
isUnknown
7e1a92449d CI: build Svelte avant le déploiement FTP
Installe Node 22 via NodeSource, npm ci + vite build.
Le résultat (assets/dist) est inclus dans le mirror FTP existant.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:28:37 +01:00
isUnknown
0b563b4697 Feat: page Portfolio avec galerie animée, navigation par scroll/touch/clavier
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
- Composable useScrollNav partagé entre Expertise et Portfolio (wheel/touch/clavier)
- GalleryAnimation : 3 colonnes CSS défilantes infinies avec décalage et delay
- Portfolio : golden grid, mockup centré, infos projet, sidebar vignettes navigables
- API portfolio.json.php alignée sur blueprint project.yml (catchphrase, images_gallery, mockup, keywords, external_links)
- Variable --ease-standard partagée dans variables.css
- Alias @composables ajouté dans vite.config.js
- Refactor Expertise pour utiliser le composable (comportement identique)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:13:50 +01:00
isUnknown
feb300f76e Tweak: animation expertise — courbe et transform des items
All checks were successful
Deploy / Deploy to Production (push) Successful in 16s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 16:10:27 +01:00
isUnknown
8148a1e63b Fix: ajout des lignes verticales manquantes (start, center, end) sur Expertise
All checks were successful
Deploy / Deploy to Production (push) Successful in 16s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 15:58:29 +01:00
isUnknown
d9c45d40fe Refactor: lisibilité Expertise + navigation clavier
All checks were successful
Deploy / Deploy to Production (push) Successful in 16s
- Renomme N → itemCount et fwdPosition → currentFwdTime
- Extrait stopActiveVideo, playForward, playReverse depuis navigate()
- Extrait initPlayback et resetPlayback depuis $effect
- Nomme les magic numbers en constantes (SCROLL_LOCK_MS, etc.)
- Ajoute navigation clavier ArrowUp / ArrowDown

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 20:38:55 +01:00
isUnknown
85b2145bb0 Fix: HTML valide et styles expertise
All checks were successful
Deploy / Deploy to Production (push) Successful in 16s
- Expertise: items en <div> au lieu de <p> (évite les <p> imbriqués)
- Expertise: espacement entre les paragraphes internes via :global
- fonts.css: classe utilitaire .green

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 19:08:38 +01:00
isUnknown
3618137657 Feat: vue Expertise avec scroll capturé et vidéo segmentée
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
- Expertise.svelte : effet fullpage vertical avec wheel/touch capturé,
  vidéo forward/reverse découpée en N segments égaux (1 par bloc body),
  centrage texte actif via offsetTop, transitions CSS 0.6s
- Variables CSS : ajout font-size expertise desktop/tablet/mobile
- JSON template : pageTitle depuis writer, items depuis body blocks
- Vidéos : BACKGROUND_VIDEO_MISSION + REVERSE copiées dans assets/video/

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 18:54:25 +01:00
isUnknown
66afa1daad Fix: pointer-events: none sur les lignes verticales
All checks were successful
Deploy / Deploy to Production (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:49:58 +01:00
isUnknown
a737fea100 Feat: navbar mobile padding et hauteur minimale
All checks were successful
Deploy / Deploy to Production (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:40:37 +01:00
isUnknown
d44c886e8c Feat: responsive header mobile + variables breakpoints
- variables.css : --breakpoint-mobile (700px) et --breakpoint-tablet (912px)
- Header : .navbar-item { display: none } en dessous de 700px
- Header/Menu : annotation des media queries avec les variables de référence

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:38:06 +01:00
isUnknown
a1785743c9 Fix: cursor outline scale depuis le bon centre
All checks were successful
Deploy / Deploy to Production (push) Successful in 13s
scale() dans le transform plutôt qu'en propriété CSS séparée.
La propriété scale CSS calcule son transform-origin sur la position
layout (avant translate), pas la position visuelle — d'où le décalage.
Avec transform: translate(-50%, -50%) scale(0.5), le centre reste en (0,0).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:29:09 +01:00
isUnknown
8b4fa2aa47 Refactor: cursor dans un wrapper commun pour centrage parfait
- Un seul wrapper positionné par transform, les deux éléments à l'intérieur
- translate(-50%, -50%) sur chaque enfant : centre exact = origine du wrapper
- upon-target sur le wrapper → scale(0.5) sur cursor-outline sans décalage
- Suppression du lerp JS (plus nécessaire avec le centrage CSS)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:24:56 +01:00
isUnknown
ebd8ad5e7b Feat: cursor upon-target sur liens et boutons
- Détection de survol via mouseover sur a, button, [role="button"], [tabindex]
- Classe upon-target appliquée au curseur et à son outline
- cursor-outline scale(0.5) au survol d'un élément interactif

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:18:59 +01:00
isUnknown
47e993be58 Fix: camelCase cohérent dans blueprint et contrôleur
- Blueprint : ajout siteTitle, siteTagline, siteDescription, logo
- Contrôleur : site_title() → siteTitle()

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:14:35 +01:00
isUnknown
d81eaa1c15 Feat: header transparent quand le menu est ouvert
All checks were successful
Deploy / Deploy to Production (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:07:54 +01:00
isUnknown
dc66d57306 Refactor: consolider toutes les variables CSS dans variables.css
- variables.css : z-index, couleurs et font-sizes au même endroit
- layout.css, buttons.css : z-index: 1 → var(--z-base)
- Suppression de src/style.css (fichier mort, jamais importé)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:02:06 +01:00
isUnknown
b7d825b2f0 Feat: variables z-index + header au-dessus du menu
- style.css : plage z-index (--z-base, --z-content, --z-menu, --z-header, --z-cursor)
- Menu : show() au lieu de showModal() pour sortir du top-layer natif,
  Escape géré manuellement via keydown, z-index: var(--z-menu), position: fixed
- Header : z-index: var(--z-header) sur navbar, logo et toggle (toujours au-dessus du menu)
- Cursor/cursor.css : z-index: var(--z-cursor)
- Home : z-index: var(--z-content) sur home-text

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 13:59:19 +01:00
isUnknown
3e9657430f Fix: champs camelCase + anglais, contact data, nettoyage debug
All checks were successful
Deploy / Deploy to Production (push) Successful in 15s
- Blueprint site.yml : renommage en camelCase (contactEmail, contactAddress, socialLinks, legalNotices)
- Controller site.php : mentionsLegales() → legalNotices(), fix (string) casts pour la sérialisation JSON
- state/site.svelte.js : ajout champ contact
- Menu.svelte : nouveau composant dialog pour le menu overlay
- Header.svelte : intégration Menu, animation hamburger CSS
- router/index.js : suppression des console.log de debug

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 13:43:50 +01:00
isUnknown
cfdaf1a6e2 Refactor: sémantique HTML et suppression des styles inline
All checks were successful
Deploy / Deploy to Production (push) Successful in 13s
- App.svelte : suppression du wrapper .app redondant, montage direct sur #app, <section> pour les slides
- Header.svelte : <nav>, <ul><li><a> pour le menu, <button> pour le hamburger, animation hamburger en CSS pur (plus de style inline sur les cercles SVG)
- Home.svelte : fusion div[grid-area]+.olly en .home-bg, suppression de tous les style="" statiques

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 12:58:32 +01:00
isUnknown
e65389534e logo : improve responsive 2026-02-19 12:44:50 +01:00
isUnknown
d7dacd6b6c Feat: navigation au clavier entre slides (← →)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 12:41:50 +01:00
isUnknown
8e01cbe611 Feat: navigation par slides horizontaux
All checks were successful
Deploy / Deploy to Production (push) Successful in 14s
- Nouveau store slides.svelte.js : gestion de l'état des slides (activeIndex, pendingPath, chargement progressif)
- Réécriture du router : remplace navaid par une logique custom avec chargement de la slide initiale puis des autres en arrière-plan
- App.svelte : layout slides-wrapper avec translateX, transition 1000ms
- Header.svelte : menu 100% dynamique depuis slides.all (ordre et titres multilingues depuis Kirby)
- site/controllers/site.php : navigation exposée via site->pages()->listed() avec titres par langue, home prependue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 12:38:07 +01:00
isUnknown
614098baf6 plan : redesign navigation 2026-02-19 11:58:19 +01:00
isUnknown
5c3568a12a Fix: golden-grid height 100vh au lieu de 100%
All checks were successful
Deploy / Deploy to Production (push) Successful in 15s
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-18 12:08:12 +01:00
isUnknown
50f81269ac Feat: Home récupère subtitle et CTA depuis les données Kirby
- Renommage des champs blueprint : cta_text → ctaText, cta_link → ctaLink
- Template home.json.php : expose ctaText et ctaPath (id de page Kirby)
- Home.svelte : suppression des traductions en dur, lecture de data.hero

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-18 12:08:08 +01:00