Commit Graph
76 Commits
Author SHA1 Message Date
herel 459344caf8 chore: bump version 1.0.5 (versionCode 6) 2026-08-31 23:11:32 +02:00
herel f8bd0996bd feat: conserver la sélection de l'accueil entre les lancements
Les steppers de l'accueil vivaient dans des remember simples : la sélection
était perdue à la fin de chaque partie et à chaque redémarrage de l'app.
Remonter l'état dans App() et le persister via un ConfigRepository
(config.json, même pattern que HistoryRepository) sauvegardé à chaque
changement et rechargé au lancement.
2026-08-31 23:11:29 +02:00
herel ef0e4e582c fix(android): épingler le keystore debug dans la config de signature
Avec XDG_CONFIG_HOME défini, AGP cherche le keystore debug dans
$XDG_CONFIG_HOME/.android au lieu de ~/.android : les builds debug
étaient signés différemment selon l'environnement et la connexion
Play Jeux échouait (DEVELOPER_ERROR) faute d'empreinte correspondante.
Pointer explicitement ~/.android/debug.keystore rend la signature debug
déterministe, quelle que soit la machine ou l'environnement.
2026-08-31 23:11:26 +02:00
herel 853541d41b fix(android): brancher les classements sur les vrais IDs Play Jeux
La console Play génère les IDs de leaderboard (format CgkI…), contrairement
à l'hypothèse de la spec : l'app demandait des boards questions_N inexistants,
d'où un chargement infini et des scores silencieusement perdus. Remplacer le
mapping par la table des vrais IDs (GameConfig.leaderboardId() devient
nullable, null = pas de board) et logguer les échecs GMS jusqu'ici avalés
par runCatching. Spec corrigée en conséquence (§6, §7).
2026-08-31 23:11:22 +02:00
herel b7c958cd5b chore: bump version 1.0.3 (versionCode 4) 2026-08-31 21:09:16 +02:00
herel 0a0d043ee9 chore: générer l'icône Play Store 512x512 plein cadre
Étend generate-icons.sh pour produire play-store-icon.png depuis
icon-square.svg (Play Store exige une icône 512x512 sans transparence).
2026-08-31 21:09:13 +02:00
herel 69647e0193 feat: câbler l'app_id Play Jeux dans le manifest Android
Ajoute la meta-data com.google.android.gms.games.APP_ID référencée depuis
res/values/games-ids.xml (app_id généré dans la Play Console) et documente
le câblage dans le README.
2026-08-31 21:09:10 +02:00
herel 27c8fb6294 update placeholders in privacy.html 2026-08-31 15:37:39 +02:00
herel 650647f791 fix: accessibilité et robustesse de la page de confidentialité 2026-08-31 15:18:07 +02:00
herel b4f450c6f8 feat: ajouter la page de politique de confidentialité bilingue 2026-08-31 15:12:27 +02:00
herel 91ae6587fa docs: plan d'implémentation de la politique de confidentialité 2026-08-31 15:08:36 +02:00
herel eacba73547 docs: spec politique de confidentialité (page web bilingue) 2026-08-31 15:06:13 +02:00
herel c4a503bfd8 docs: ajouter AGENTS.md pour les sessions OpenCode
Commandes, architecture des modules, conventions (spec/plan superpowers,
commits français) et pièges (signature release, quirk répétition clavier
CMP 1.12, icônes générées).
2026-08-31 15:04:34 +02:00
herel a673a9dc60 feat: configurer la signature release Android
Le build release lit androidApp/keystore.properties (gitigné) pour signer
l'AAB ; sans ce fichier, il échoue volontairement. La keystore servira de
clé d'upload Play : la section Publication du README documente la
procédure et la nécessité de la sauvegarder.
2026-08-31 15:04:27 +02:00
herel 7aaef28f9e docs: préciser l effet de l auto-répétition touche par touche 2026-08-31 10:11:34 +02:00
herel 4505fe85a3 docs: noter le comportement de l auto-répétition de touche (pas de KeyRepeat en CMP 1.12) 2026-08-31 10:09:00 +02:00
herel 54d4d2c54e docs: préciser le comportement positionnel des touches chiffres sur AZERTY 2026-08-31 10:08:25 +02:00
herel 94cac69e36 feat: répondre au clavier (chiffres, Entrée, Backspace) sur desktop 2026-08-31 10:01:12 +02:00
herel 75033324b9 feat: mapping des touches clavier vers les actions du pavé 2026-08-31 09:58:26 +02:00
herel 71f342349e docs: plan clavier physique sur la version desktop 2026-08-31 09:57:35 +02:00
herel b651864fad docs: spec clavier physique sur la version desktop 2026-08-31 09:56:28 +02:00
herel 691c98f862 feat: génération pondérée des questions (les grands facteurs sortent plus souvent) 2026-08-31 09:35:11 +02:00
herel b454fbd0d7 docs: plan génération pondérée des questions 2026-08-31 09:33:04 +02:00
herel 5a87562e94 docs: spec génération pondérée des questions (moins de questions faciles) 2026-08-31 09:30:44 +02:00
herel 917bf7a47f feat: icône de fenêtre desktop 2026-08-31 09:20:52 +02:00
herel aa1ed58cb2 feat: générer les icônes launcher depuis le logo (script + assets) 2026-08-31 09:20:08 +02:00
herel 48916aef2b feat: variantes svg des icônes (square, foreground, monochrome) 2026-08-31 09:18:14 +02:00
herel fd929e6c8e docs: plan icônes launcher et correction zone sûre circulaire 2026-08-31 09:18:03 +02:00
herel dd75875521 docs: spec génération des icônes launcher depuis le logo 2026-08-31 09:15:26 +02:00
herel bc89f098f0 feat: afficher le nom du joueur connecté sur l'accueil 2026-08-31 09:12:49 +02:00
herel 2cc73959c0 feat: logo vectoriel tuiles quiz fond navy 2026-08-31 09:11:33 +02:00
herel bd070ba3a4 fix: intercepter le back système pour revenir à l'accueil
Le geste back Android part du bord même de l'écran : l'OS intercepte
le geste avant le SwipeBack custom (zone de départ > 24 dp) et, sans
callback back enregistré, l'activité est envoyée en arrière-plan vers
le launcher au lieu de revenir à l'écran précédent. Enregistre un
BackHandler par écran (Historique et Résultats retournent à l'accueil,
la partie ouvre le dialogue d'abandon) et active le predictive back
dans le manifest.
2026-08-31 09:10:48 +02:00
herel b3fde748d2 docs: plan d'implémentation du logo vectoriel 2026-08-31 09:08:34 +02:00
herel 599d4c5132 chore: ignorer .superpowers (sessions de brainstorming) 2026-08-31 09:01:47 +02:00
herel 6846f2ba60 docs: spec design du logo vectoriel tuiles quiz 2026-08-31 09:01:42 +02:00
herel 639a34de5b fix: fiabilité de la soumission du score en fin de partie 2026-08-29 09:05:38 +02:00
herel 2f73d2cd15 docs: prérequis Play Console pour Play Jeux Services 2026-08-29 09:02:11 +02:00
herel 1acb39e6ad fix: dépendance fragment-ktx requise par l'Activity Result API 2026-08-29 09:02:10 +02:00
herel a86b534659 feat: implémentation Play Games Services v2 sur Android 2026-08-29 08:43:11 +02:00
herel d2c5fa0fdb docs: minSdk 24 requis par play-services-games-v2 22.0.0 2026-08-29 08:40:45 +02:00
herel fbb0371992 feat: connexion et envoi du score Play Jeux dans l'UI partagée 2026-08-29 08:32:00 +02:00
herel 5078693a5f feat: interface GamesServices injectable 2026-08-29 08:29:59 +02:00
herel 285d92b1b2 feat: score leaderboard pondéré et id de board 2026-08-29 08:28:52 +02:00
herel 2b8dd19e72 docs: plan Play Games Services Android 2026-08-29 08:27:22 +02:00
herel 8eb95bc02f docs: spec Play Games Services Android (auth + leaderboards) 2026-08-29 08:21:02 +02:00
herel 90479ae34e feat: 5 secondes par question par défaut sur l'accueil 2026-08-28 16:57:23 +02:00
herel 1e6b1e488e refactor: densité vivante, constante settle, tests de limite swipe-back 2026-08-28 16:56:00 +02:00
herel d480c1a0cd fix: ajustements suite à la vérification multi-cibles 2026-08-28 16:44:39 +02:00
herel ec31b38d72 feat: swipe-back vers l'accueil depuis les scores et l'historique 2026-08-28 16:23:52 +02:00
herel bc14056d3e feat: logique de décision du swipe-back 2026-08-28 16:14:00 +02:00
herel 61dc9f1d59 docs: plan swipe-back 2026-08-28 16:11:39 +02:00
herel 2e51c3e7bd docs: spec swipe-back vers l'accueil 2026-08-28 16:07:01 +02:00
herel 68d9f7e0a5 feat: cible desktop macOS via :desktopApp:run 2026-08-28 15:55:17 +02:00
herel bef47dde27 docs: plan cible desktop macOS 2026-08-28 15:54:07 +02:00
herel 4608848794 docs: spec cible desktop macOS 2026-08-28 15:53:39 +02:00
herel 1eb840d519 fix: dates de l'historique en heure locale 2026-08-28 15:41:23 +02:00
herel a115647015 fix: scope dédié à l'écran de jeu pour annuler le moteur à la sortie 2026-08-28 15:41:22 +02:00
herel b7426e09eb fix: Dispatchers.Default pour la compat native iOS (IO internal en K/N) 2026-08-28 15:33:53 +02:00
herel 2c7c07377e docs: readme avec règles du jeu et instructions de lancement 2026-08-28 15:30:14 +02:00
herel 9b46efb020 feat: historique des parties et statistiques de réussite par table 2026-08-28 15:27:13 +02:00
herel e3075853bf feat: écran de résultats avec statistiques et résumé des réponses fausses 2026-08-28 15:25:26 +02:00
herel b189deba72 feat: écran de jeu avec pavé numérique, barre de temps et feedback 2026-08-28 15:23:19 +02:00
herel 164c3ffce7 feat: navigation par écrans et accueil avec configuration de partie 2026-08-28 15:20:57 +02:00
herel f8f506ae92 feat: persistance de l'historique des parties en JSON (okio) 2026-08-28 15:18:07 +02:00
herel c1a7a1f961 feat: moteur de jeu machine à états (chrono, feedback auto, fin de partie) 2026-08-28 15:15:28 +02:00
herel 65ac01a2b2 docs: kotlin.time.Instant dans le plan (conflit variantes kotlinx-datetime via okio) 2026-08-28 15:02:01 +02:00
herel ba977880ed feat: résultats de partie, enregistrements de réponses et stats par table 2026-08-28 15:01:22 +02:00
herel 21353aac41 feat: types de questions et générateur (tables 1..maxTable) 2026-08-28 14:48:14 +02:00
herel 135947be3f docs: retirer imports inutilisés de l'App.kt du plan 2026-08-28 14:46:57 +02:00
herel 80d6bfd04c docs: ajout import safeDrawing manquant dans le plan (retour Task 1) 2026-08-28 14:46:47 +02:00
herel 2e2048aea9 chore: scaffold KMP (wizard JetBrains) avec cible jvm et wiring filesDirPath 2026-08-28 14:45:19 +02:00
herel 8f008354bc docs: renuméroter les tâches 9-10 du plan 2026-08-28 14:42:35 +02:00
herel 828e29dc98 docs: plan d'implémentation du jeu de multiplications KMP 2026-08-28 14:41:50 +02:00
herel 87854da1cc docs: paramètre table maximum (1-12) dans la config de partie 2026-08-28 14:12:42 +02:00
herel 613b5bd62d docs: design spec pour le jeu de multiplications KMP 2026-08-28 14:09:58 +02:00
herel c6fe66d121 Initial commit 2026-08-28 14:02:01 +02:00