Ouvrir un PDF est une navigation : le repli SPA du service worker
(navigateFallback) répondait index.html à la place du fichier. Les assets
de jeux sont désormais exclus du repli.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Un nom saisi à la main recevait un nouvel id même si le joueur existait
déjà : la même personne apparaissait plusieurs fois dans le classement,
chaque ligne avec une seule partie.
- NewGame : réutilise l'id (et l'avatar) du joueur existant quand le nom
correspond, sauf si deux joueurs homonymes sont dans la même partie
- Stats : classement agrégé par personne (nom normalisé) et non par id,
y compris parties, victoires et compteurs Cabo ; les filtres par joueur
suivent la même logique pour retrouver les anciennes parties
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
L'overlay de célébration (confettis + avatar du vainqueur) se rejouait à
chaque consultation d'une partie terminée. Il n'est désormais déclenché
que lorsqu'on arrive depuis la fin de partie (état de navigation
justFinished), état consommé ensuite pour qu'un rechargement ne le rejoue
pas. Depuis l'historique ou l'accueil, l'écran de fin s'affiche sans
célébration.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Historique : bouton de suppression sur chaque partie (soft-delete), elle
disparaît de l'historique, de l'accueil et des statistiques
- Joueurs : la suppression propose aussi de supprimer ses parties, et le
joueur supprimé est désormais exclu du classement et des records
- Correspondance par id ou par nom (un joueur saisi à la main reçoit un id
différent de celui du roster), sans masquer un joueur actif homonyme
- SessionCard : carte convertie en div cliquable pour héberger le bouton
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Nouvelle section "Meilleurs scores" : par jeu, le meilleur score en une
partie et le joueur qui l'a réalisé — le plus haut pour les jeux positifs,
le plus bas pour les jeux négatifs (Skyjo, Cabo, Odin). Respecte les filtres.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
En plus de :latest, chaque image (frontend + backend) est taguée :
- <version> (semver de package.json, ex. 1.0.0)
- <version>-<build> (numéro de run Gitea, unique/incrémental)
- <sha court> (commit exact)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ScoringCategory.requiresOption : une catégorie n'apparaît/compte que si
l'option booléenne correspondante est activée (mode/extension déclaratif)
- toGameConfig génère getScoringCategories filtrant selon les options
- Gabarit harmonies-esprits.json : mode "Esprits de la nature" activable
ajoutant la catégorie "Animaux spirituels" au décompte
- Doc à jour
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Annule display_override ["fullscreen","standalone"] : retour au mode
standalone (barres système fondues via theme-color).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ajoute display_override ["fullscreen","standalone"] au manifeste : mode
plein écran (barre de statut masquée) sur Android où c'est supporté, repli
standalone ailleurs (iOS). Réinstaller la PWA pour appliquer.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Les barres système (statut/navigation) affichaient des bandes ne
correspondant pas au fond de l'app. La meta theme-color est désormais
mise à jour dynamiquement selon le thème (navy en sombre, clair en clair),
et le manifeste + index.html passent en navy. Les barres se fondent avec
l'app (rendu edge-to-edge).
Note : réinstaller la PWA pour appliquer le nouveau manifeste.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Le détail des manches a une colonne "Manche" sticky (z-10) qui passait
au-dessus de la barre de boutons fixe au scroll. La barre reçoit z-50.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Navigation :
- Suppression du menu hamburger, remplacé par le logo de l'app dans l'en-tête
- Barre du bas à 5 onglets : Accueil, Mes jeux, Parties, Stats, Joueurs
- Menu profil sur l'avatar (haut-droite) : profil/switch, Emplacements,
Jeux importés, Paramètres
- Nouvelle page "Mes jeux" (/jeux) : bibliothèque de tous les jeux
Format d'import enrichi + gabarits :
- Champ icon (lucide) au niveau du jeu, et icon/color sur les catégories
- Gabarits JSON des 5 jeux natifs dans public/game-templates/ (référence,
au format d'import) + doc à jour
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- GameOver : nouvelle section "Détail des manches" (tableau manches × joueurs
avec ligne Total) pour les parties multi-manches ; indicateurs Cabo/Kamikaze
- ScoringCategory : champs icon (lucide) + color pour un visuel par catégorie
- Harmonies : icônes + couleurs de terrain (arbres, montagnes, champs,
bâtiments, rivière, animaux, esprits) affichées dans PlayGame et GameOver
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Harmonies : nouvelle option activable "Extension : Esprits de la nature" qui
ajoute une catégorie de score en fin de partie (incluse dans le total)
- GameConfig.getScoringCategories(options) : catégories dépendantes des options
(PlayGame et GameOver utilisent les catégories effectives)
- Nouveau logo vectorisé public/logo.svg + favicon SVG dans index.html
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Nouveau logo planète flat (PlanetMark) + icônes PWA régénérées + splash navy cosmique
- Tokens de thème unifiés : accent teal de marque, rayons plus doux, dark mode cosmique (surfaces élevées)
- Fond CosmicBackground raffiné (halos aurora teal/indigo)
- Navigation par barre d'onglets en bas (BottomNav) ; menu ☰ réduit au secondaire
- Composants partagés PageHeader + SessionCard
- Accueil = dashboard : tuiles de stats + démarrage rapide + feed d'activité
- Stats : classement en barres horizontales (teinte unique, méthode dataviz)
- Restyle de tous les écrans liste + boucle de jeu immersive conservée
- Doc du format de création de jeu (docs/creation-jeu.md)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Create the Board Score PWA with offline support, Kurzgesagt-style themes, multiple game configs, dynamic players, avatars via DiceBear, and complete statistics.