Commit graph

202 commits

Author SHA1 Message Date
isUnknown
9b548ecc12 article > game bloc : always show close button. closes #42
All checks were successful
Deploy / Deploy to Production (push) Successful in 5m23s
2026-03-26 15:44:25 +01:00
isUnknown
0bda4f8c21 blog > article > game bloc : add scroll into view on game launch. closes #43
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-26 15:42:06 +01:00
isUnknown
1cce398ee4 play page : replace backgroundColor with backgroundImage, remove curves. closes #37
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 15:07:30 +01:00
isUnknown
3339528d9b play page > item : scale up on hover
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-26 14:50:35 +01:00
isUnknown
80a7b41112 play page : add dynamical coming soon status. related to #37
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-26 14:43:45 +01:00
isUnknown
f087260398 portfolio : add secondsPerImage field to control gallery animation speed. closes #33
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 11:56:30 +01:00
isUnknown
88bc02b9cf site panel : add dynamic favicon
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
2026-03-26 11:38:19 +01:00
isUnknown
9be03113e3 portfolio : remove first vertical line. closes #18
All checks were successful
Deploy / Deploy to Production (push) Successful in 25s
2026-03-26 10:55:27 +01:00
isUnknown
0672841f8b white paper : add asterisque
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
2026-03-25 15:46:01 +01:00
isUnknown
045c0be583 play page : mobile layout
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
2026-03-25 13:52:02 +01:00
isUnknown
afda918cae play page : max height on img title
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-25 13:48:39 +01:00
isUnknown
e74e7d249d fix: background-image via style inline pour éviter la réécriture Vite
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Vite traite les url() dans les blocs <style> et réécrit le chemin au build.
Déplacement de l'url en attribut style inline (non traité par Vite).
Annule la tentative de correction via generateBundle.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 13:44:03 +01:00
isUnknown
411b281317 fix: préserver les URLs /assets/img/ dans le CSS au build
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Vite réécrit les url() du CSS en supprimant le chemin (assetFileNames: '[name].[ext]').
Extension du plugin keepFontsInPlace pour corriger les URLs /assets/img/ dans le bundle CSS final.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 13:41:16 +01:00
isUnknown
e41a730b4d feat: navigation swipe mobile horizontale
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
- App.svelte : swipe gauche/droite → même comportement que les touches clavier (navigation entre slides)
- Play.svelte : stopImmediatePropagation sur touchend, blocage du scroll vertical (touchmove)
- Portfolio.svelte : migration du touch vertical (composable) vers horizontal — navigation entre projets, slide voisine aux bords, blocage scroll vertical, debounce 650ms anti-spam

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 13:20:57 +01:00
isUnknown
58c31ea391 feat: intégration plugin Kirby SEO
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
- Ajout de tobimori/kirby-seo via Composer
- snippet('seo/head') dans header.php (remplace les meta manuels)
- snippet('seo/schemas') dans footer.php pour JSON-LD
- Onglet SEO ajouté dans site.yml et tous les blueprints de pages
- Configuration SEO dans config.php (sitemap, robots, canonicalBase TODO)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 12:59:18 +01:00
isUnknown
baab2fb3a1 play page : hide preview on tablet. closes #29
All checks were successful
Deploy / Deploy to Production (push) Successful in 27s
2026-03-25 12:46:43 +01:00
isUnknown
28bb757f5c Chrome > portfolio : fix overflow x. closes #11
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-25 07:23:17 +01:00
isUnknown
65821bddf4 portfolio : require thumbnail and improve mobile style. closes #27
All checks were successful
Deploy / Deploy to Production (push) Successful in 5m30s
2026-03-25 07:14:01 +01:00
isUnknown
2bd531f7b2 fix: autoplay vidéos mobile + remplacement background image
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
- Home : matchMedia pour ne jouer que la vidéo visible (desktop/mobile)
- Expertise : play-then-pause pour forcer le décodage frame 0
- App : remplacement image de fond scrollable-page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 19:29:06 +01:00
isUnknown
e6062ba2e7 portfolio : ajustements mobile layout
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 19:10:05 +01:00
isUnknown
cb51e050e4 portfolio : galerie horizontale 3 rangées + mockup conditionnel
All checks were successful
Deploy / Deploy to Production (push) Successful in 25s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 18:53:27 +01:00
isUnknown
133651c35d portfolio : animation horizontale — toggle panel + composant
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
Ajout du mode horizontal dans GalleryAnimation (5 rangées, scrollLeft/scrollRight)
avec toggle vertical/horizontal dans le panel projet.

refs #21

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 14:37:05 +01:00
isUnknown
347ccd33eb panel : fix fonts
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
2026-03-21 14:17:39 +01:00
isUnknown
eeb4cb4e3a panel > portfolio : improve layout
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
2026-03-21 14:10:44 +01:00
isUnknown
75330bea7b panel > site : menu images
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
2026-03-21 13:58:16 +01:00
isUnknown
2cefdd8867 little style adjustments
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-21 13:41:18 +01:00
isUnknown
6f26c94308 article style
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
2026-03-21 13:38:42 +01:00
isUnknown
1f8abcd305 closes #7
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
2026-03-21 13:24:25 +01:00
isUnknown
008fc41823 closes #19
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
2026-03-21 13:16:32 +01:00
isUnknown
4538392003 finish portfolio animation without box shadow - related #20
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
2026-03-21 12:54:33 +01:00
isUnknown
436772502b portfolio gallery animation : decrease opacity - related to #20 2026-03-21 12:42:32 +01:00
isUnknown
376db9d72f remove useless help
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
2026-03-21 12:36:38 +01:00
isUnknown
deb5f59d5e portfolio > gallery animation : invert col animations directions
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
related to #20
2026-03-21 12:36:05 +01:00
isUnknown
8829817e48 feat(portfolio): image d'arrière-plan pour la galerie animée
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s
related to #20

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:34:46 +01:00
isUnknown
b455cbb82e a11y
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
2026-03-21 09:40:23 +01:00
isUnknown
7863828fb4 fix(blog): retour à la liste quand on clique sur Blog depuis un article
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
closes #10

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:39:54 +01:00
isUnknown
e2df8d04e0 feat(about): team members cliquables si champ link rempli + fix ARIA warning
All checks were successful
Deploy / Deploy to Production (push) Successful in 19s
closes #3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:30:16 +01:00
isUnknown
3499fd0d34 fix(security): rate limiting basé sur REMOTE_ADDR uniquement
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
X-Forwarded-For est un header client spoofable, REMOTE_ADDR est l'IP TCP.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:25:27 +01:00
isUnknown
1ee0a4e640 closes #12
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:18:24 +01:00
isUnknown
764a36edb5 closes #13
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:08:50 +01:00
isUnknown
4803390a1f closes #22
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:03:11 +01:00
isUnknown
875e4d63f5 closes #23
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-03-21 08:41:12 +01:00
isUnknown
cb1e961faf closes #18
All checks were successful
Deploy / Deploy to Production (push) Successful in 26s
2026-03-21 08:25:13 +01:00
isUnknown
5cfecd7786 fix(expertise): vidéo bloquée quand fwdTarget = duration (3+ items)
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
Bug : quand la vidéo forward atteint la fin (duration), timeupdate
ne fire pas toujours avec currentTime >= duration exactement.
Le handler ne se déclenche jamais, fwdTarget n'est pas nettoyé,
currentFwdTime garde l'ancienne valeur → la reprise en reverse
part du mauvais point.

Corrections :
- Écoute l'événement ended sur les deux vidéos pour garantir
  le snap de currentFwdTime aux bornes (0 ou duration)
- Tolérance de 50ms dans les comparaisons timeupdate (>= target - 0.05)
  pour capter la cible avant la fin naturelle de la vidéo
- Suppression du reassign de currentTime dans les handlers timeupdate
  (inutile et pouvait causer un seek superflu)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 14:55:39 +01:00
isUnknown
7838342f96 fix(expertise): attend seeked avant de switcher la vidéo visible
All checks were successful
Deploy / Deploy to Production (push) Successful in 5m25s
Le flash venait du fait que isReverse changeait immédiatement après
le seek (synchrone), mais le navigateur n'avait pas encore décodé
le frame cible. Maintenant on attend l'événement seeked du <video>
avant de changer isReverse, garantissant que le bon frame est affiché
au moment du switch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 14:32:27 +01:00
isUnknown
ff5b0028f1 fix(expertise): refonte logique vidéo forward/reverse sans flash
Problèmes corrigés :
- Flash au changement de direction : l'ancien code attendait un événement
  seeked avant de switcher la visibilité, montrant un mauvais frame.
  Maintenant on positionne la vidéo cible AVANT de la rendre visible.
- Reprise forward depuis mauvaise position : stopActiveVideo() + playForward()
  synchronisent correctement currentFwdTime avant le switch.
- segmentEnds[0] = 0 → currentFwdTime snappé exactement à la cible dans
  les handlers timeupdate (plus de dérive à 0.1).

Changements :
- switchToForward/switchToReverse : positionnent la cible puis changent isReverse
- playForward/playReverse simplifiés : plus de logique seeked conditionnelle
- navigate() simplifié : forward=down, reverse=up, extension de cible si déjà actif
- CSS : opacity 0/1 + transition au lieu de display none/block pour éviter les flashes
- timeupdate : snap exact à la cible au lieu d'approximation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 14:29:41 +01:00
isUnknown
dd69e54746 feat(expertise): vidéo démarre au premier scroll, pas à l'entrée du slide
- segmentEnds : i/(itemCount-1) au lieu de (i+1)/itemCount
  → item 0 = position 0 (vidéo à l'arrêt), item final = fin de vidéo
- initPlayback : supprime fwdTarget et play() immédiats, positionne juste à 0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 14:23:53 +01:00
isUnknown
dee786e9e2 fix(article): section share centrée + suppression bordure articles recommandés 2026-03-20 14:08:37 +01:00
isUnknown
3ce0f939d8 revert(jeu): retour à l'état ddfcf4d — iframe directe + overlay CSS 2026-03-20 13:51:37 +01:00
isUnknown
421d39d773 debug(jeu): charge l'iframe directement pour diagnostiquer 2026-03-20 13:48:23 +01:00