From 91ae6587fa801621bd58157ff78965cf9dfdfb27 Mon Sep 17 00:00:00 2001 From: Rene Luria Date: Mon, 31 Aug 2026 15:08:36 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20plan=20d'impl=C3=A9mentation=20de=20la?= =?UTF-8?q?=20politique=20de=20confidentialit=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-08-31-politique-confidentialite.md | 393 ++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 docs/superpowers/plans/2026-08-31-politique-confidentialite.md diff --git a/docs/superpowers/plans/2026-08-31-politique-confidentialite.md b/docs/superpowers/plans/2026-08-31-politique-confidentialite.md new file mode 100644 index 0000000..55a218b --- /dev/null +++ b/docs/superpowers/plans/2026-08-31-politique-confidentialite.md @@ -0,0 +1,393 @@ +# Politique de confidentialité — plan d'implémentation + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal :** livrer `privacy.html` — page autonome bilingue FR/EN (toggle) à héberger pour le formulaire Google Play. + +**Architecture :** un seul fichier HTML statique, tout le contenu en double (`data-lang="fr"` / `data-lang="en"`), bascule par classes sur `` + script inline (~15 lignes) gérant hash `#fr`/`#en` et `localStorage`. Tailwind via CDN configuré avec la palette du logo ; mode sombre automatique via `prefers-color-scheme`. + +**Tech stack :** HTML5 + Tailwind CDN + JS inline. Aucun build, aucune dépendance Gradle. + +**Spec :** `docs/superpowers/specs/2026-08-31-politique-confidentialite-design.md` + +## Global Constraints + +- Un seul fichier livrable : `privacy.html`, à la racine du dépôt. +- Français par défaut ; bascule EN via bouton, hash `#en`/`#fr`, persistance `localStorage` (`livrets-lang`). +- Palette du logo, valeurs exactes : `#1D3557` (navy/encre), `#A8DADC` (mist), `#E63946` (coral), `#F1FAEE` (paper), `#457B9D` (accent). +- Mode sombre uniquement via `prefers-color-scheme` (`darkMode: 'media'`), pas de toggle manuel. +- Placeholders visibles : `[ÉDITEUR — À REMPLIR]`, `[EMAIL — À REMPLIR]`, `[DATE]` (style pointillé coral), à remplacer avant publication. +- Pas d'analytique, pas de police externe, pas d'image externe ; seul appel réseau autorisé : le script CDN Tailwind. +- Commits en conventional commits français. +- Page hors build Gradle : vérification par tests manuels navigateur (pas de `:sharedUI:jvmTest` concerné). + +--- + +### Task 1 : Créer `privacy.html` bilingue + +**Files:** +- Create: `privacy.html` + +**Interfaces:** +- Consumes : logo `docs/branding/logo.svg` (contenu inline reproduit tel quel ci-dessous, sans `` ni attributs `role`/`aria-labelledby` — l'en-tête de page porte déjà le nom). +- Produces : fichier autonome déployable tel quel ; l'URL finale sera saisie dans Play Console (hors périmètre de ce plan). + +- [ ] **Step 1 : Créer le fichier complet** + +Créer `privacy.html` avec exactement ce contenu : + +```html +<!DOCTYPE html> +<html lang="fr" class="fr"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <title>Politique de confidentialité — Livrets + + + + + + +
+
+
+ +
+

Livrets

+

Politique de confidentialité

+

Privacy Policy

+
+
+ +
+ +

+ En résumé : vos données restent sur votre appareil. Le jeu ne contient + ni publicité ni analytique, et rien n'est envoyé à des serveurs, sauf si vous activez + volontairement Google Play Jeux sur Android. +

+

+ In short: your data stays on your device. The game contains no ads and + no analytics, and nothing is sent to servers unless you voluntarily sign in to + Google Play Games on Android. +

+ +
+
+

1. Éditeur

+

1. Publisher

+

+ Cette politique de confidentialité décrit la manière dont Livrets (« le jeu »), + édité par [ÉDITEUR — À REMPLIR], traite les données. + Dernière mise à jour : [DATE]. +

+

+ This privacy policy describes how Livrets (“the game”), published by + [ÉDITEUR — À REMPLIR], handles data. + Last updated: [DATE]. +

+
+ +
+

+ 2. Données stockées localement +

+

+ 2. Data stored locally +

+

+ Le jeu enregistre sur votre appareil — et uniquement sur votre appareil : + l'historique des parties (score, date, réponses) et le taux de réussite cumulé + par table. Ces données ne sont jamais transmises à des serveurs : elles restent + dans le stockage local de l'application (~/.livrets/ sur desktop, + stockage privé de l'app sur Android et iOS). Désinstaller l'application + les supprime définitivement. +

+

+ The game saves the following data on your device — and only on your device: + game history (score, date, answers) and cumulative success rate per table. + This data is never transmitted to servers: it stays in the app's local storage + (~/.livrets/ on desktop, private app storage on Android and iOS). + Uninstalling the app permanently deletes it. +

+
+ +
+

+ 3. Google Play Jeux (Android, optionnel) +

+

+ 3. Google Play Games (Android, optional) +

+

+ Sur Android, si vous choisissez de vous connecter à Google Play Jeux, le jeu envoie + vos scores aux classements. Google traite alors votre identifiant joueur et votre + pseudonyme Play Jeux conformément à + sa propre politique de confidentialité. La connexion est optionnelle : sans elle, le jeu reste pleinement jouable et + aucune donnée ne quitte votre appareil. +

+

+ On Android, if you choose to sign in to Google Play Games, the game submits your + scores to leaderboards. Google then processes your Play Games player ID and + nickname under + its own privacy policy. Signing in is optional: without it, the game remains fully playable and no data + leaves your device. +

+
+ +
+

+ 4. Ce que le jeu ne fait pas +

+

+ 4. What the game does not do +

+
    +
  • pas de publicité ;
  • +
  • pas d'analytique ni de mesure d'audience ;
  • +
  • pas de création de compte par nos soins ;
  • +
  • pas d'accès à votre position ;
  • +
  • pas d'accès à vos contacts, photos ou fichiers ;
  • +
  • aucune donnée vendue ni partagée à des tiers.
  • +
+
    +
  • no advertising;
  • +
  • no analytics or audience measurement;
  • +
  • no account creation on our side;
  • +
  • no access to your location;
  • +
  • no access to your contacts, photos or files;
  • +
  • no data sold or shared with third parties.
  • +
+
+ +
+

5. Mineurs

+

5. Minors

+

+ Livrets est un jeu éducatif destiné à l'apprentissage des tables de multiplication. + Le jeu ne collecte délibérément aucune donnée personnelle d'enfant. Les seules + données susceptibles de transiter le sont via Google Play Jeux, sous la + responsabilité de Google. +

+

+ Livrets is an educational game for learning multiplication tables. The game does not + knowingly collect any personal data from children. The only data that may transit + does so via Google Play Games, under Google's responsibility. +

+
+ +
+

+ 6. Conservation des données +

+

+ 6. Data retention +

+

+ Les données locales sont conservées tant que l'application est installée sur votre + appareil ; vous pouvez les effacer à tout moment en désinstallant l'application. + Les scores envoyés aux classements Play Jeux sont conservés par Google selon ses + propres règles. +

+

+ Local data is kept as long as the app is installed on your device; you can erase it + at any time by uninstalling the app. Scores submitted to Play Games leaderboards are + retained by Google under its own rules. +

+
+ +
+

+ 7. Vos droits +

+

+ 7. Your rights +

+

+ Conformément au RGPD, vous disposez de droits d'accès, de rectification et de + suppression. Comme l'essentiel des données reste sur votre appareil, l'exercice de + ces droits passe par la désinstallation de l'application. Pour toute autre demande : + [EMAIL — À REMPLIR]. +

+

+ Under the GDPR, you have rights of access, rectification and erasure. Since most + data stays on your device, exercising these rights is done by uninstalling the app. + For any other request: + [EMAIL — À REMPLIR]. +

+
+ +
+

+ 8. iOS et desktop +

+

+ 8. iOS and desktop +

+

+ Sur iOS et macOS, le jeu n'a aucune fonctionnalité en ligne : toutes les données + restent sur votre appareil. +

+

+ On iOS and macOS, the game has no online features: all data stays on your device. +

+
+
+ +
+

+ Contact : [EMAIL — À REMPLIR] +

+

+ Contact: [EMAIL — À REMPLIR] +

+
+
+ + + + +``` + +- [ ] **Step 2 : Vérification manuelle navigateur** + +Ouvrir la page : + +```bash +open privacy.html +``` + +Checklist attendue : +1. **Défaut FR** : tout le texte visible est en français ; aucun bloc EN visible ; le bouton affiche « English ». +2. **Toggle** : cliquer « English » → tout le contenu bascule en anglais, le bouton affiche « Français », `` (vérifier dans l'inspecteur). +3. **Persistance** : recharger la page → reste en anglais ; recharger une fenêtre privée → français. +4. **Hash** : ouvrir `privacy.html#en` dans une fenêtre privée → anglais dès le chargement. +5. **Sombre** : basculer l'apparence du système (macOS Réglages → Apparence) → fond navy `#1D3557`, texte clair, aucun contraste cassé (badges placeholder restent lisibles). +6. **Mobile** : réduire la fenêtre à ~360px de large → pas de débordement horizontal, bouton et logo sur une ligne. +7. **Logo** : rendu identique à l'icône de l'app (4 tuiles colorées sur fond navy). + +- [ ] **Step 3 : Vérifier les placeholders et l'autonomie du fichier** + +```bash +grep -o "À REMPLIR" privacy.html | wc -l +``` + +Attendu : `6` (éditeur ×2 FR/EN, email ×4 : section 7 FR/EN + footer FR/EN). + +```bash +grep -o "\[DATE\]" privacy.html | wc -l +``` + +Attendu : `2` (section 1 FR/EN). + +```bash +grep -Eo 'src="[^"]*"|href="[^"]*"' privacy.html | sort -u +``` + +Attendu uniquement : `https://cdn.tailwindcss.com` (src) et `https://policies.google.com/privacy` (href). Aucune autre ressource externe. + +- [ ] **Step 4 : Commit** + +```bash +git add privacy.html +git commit -m "feat: ajouter la page de politique de confidentialité bilingue" +``` + +--- + +### Task 2 : Checklist de publication (hors dépôt) + +**Files:** +- Aucun fichier modifié. Étapes à réaliser par le propriétaire avant/après déploiement. + +- [ ] **Step 1 : Remplacer les placeholders** + +Dans `privacy.html` : `[ÉDITEUR — À REMPLIR]` → nom/pseudo de l'éditeur ; `[EMAIL — À REMPLIR]` (3 occurrences) → email de contact ; `[DATE]` (1 occurrence) → date de publication. + +- [ ] **Step 2 : Déployer et saisir l'URL dans Play Console** + +Héberger le fichier publiquement (GitHub Pages : committer `privacy.html` sur la branche publiée, ou dossier `docs/` d'un dépôt dédié). Vérifier que l'URL répond en HTTPS. Coller l'URL dans Play Console → Contenu de l'app → Politique de confidentialité. + +- [ ] **Step 3 : Re-vérifier les 7 points de la Step 2 du Task 1 sur l'URL déployée**