Skip to content

Configurer l'icône, le splash screen, la bannière de consentement et les demandes de permission (E-18) #188

Closed

Description

@IlanAMG

Contexte

Epic : #8
Maquette : E-18 · validée le 2026-09-28
Securite-et-RGPD

Comportement attendu

Critères d'acceptation

Activity

  1. added this to the v0.3 milestone on Sep 28, 2026
  2. IlanAMG commented on Sep 28, 2026

    @IlanAMG
    MemberAuthor

    Planche 1 de #185 validée le 2026-09-28 (D-060, https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog), maquettes dans https://github.com/Inprogress-Agency/widoo-app/wiki/Ecrans#e-18--premier-lancement. Le ticket garde needs-design jusqu'à la planche 2 (états), mais l'icône et le splash peuvent partir dès maintenant (utiles pour le build de test).

    • Source unique : design/design-system/logo-widoo.svg, retirer shape-rendering="crispEdges" avant export
    • app.config : icon 1024 sans transparence, ios.icon sombre et teintée, android.adaptiveIcon (foregroundImage, monochromeImage, backgroundColor #5A7FCF)
    • expo-splash-screen : W au cadrage de l'écran, resizeMode cover, fond #5A7FCF ; Android 12 : icône dans un disque sur #4E74C8
    • NSLocationWhenInUseUsageDescription : texte de la section E-18
    • ordre du premier lancement : splash, position, sheet de consentement (sans poignée, ne se ferme pas sans choix) ; stockage local du choix et de « rappels déjà proposés »
    • clés : mappings.firstLaunch, uiIcons reminders-off, analytics, sign-in (tokens v27)
  3. added
    status:readySpec complète, prêt à coder
    and removed
    needs-designQuestion ou maquette à produire en mode DESIGN
    on Sep 28, 2026
  4. IlanAMG commented on Sep 28, 2026

    @IlanAMG
    MemberAuthor

    Maquettes complètes (planches 1 à 3 de #185, D-060 et D-061, https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog), ticket prêt. À reporter en plus de la planche 1 :

    • SplashScreen.hideAsync() quand la carte est prête, 2 s au plus (firstLaunch.splash.maxMs)
    • sheet de consentement proposée au premier accueil chargé, jamais par-dessus la demande de position ; geste d'échappement sans effet sur elle
    • hors connexion au premier lancement : carte en fond uni, en-tête « Hors connexion », position demandée quand même
    • position approximative : zone bleue (bord bleu plein) et « Autour de Paris 10e » ; précision temporaire iOS demandée seulement au lancement d'une sortie
    • coupure de la mesure d'audience : posthog.optOut() immédiat, toast ; réactivation : optIn, toast
    • texte agrandi et lecteur d'écran : firstLaunch.largeText, firstLaunch.screenReader (tokens v28)
  5. IlanAMG commented on Sep 28, 2026

    @IlanAMG
    MemberAuthor

    CODE — première partie livrée dans la PR #196 (Refs #188), pour le prochain build de test :

    • icône : iOS 1024 sans alpha ni coins arrondis, variantes sombre et teintée ; Android adaptative (#5A7FCF, premier plan, calque monochrome), exportées de logo-widoo.svg sans shape-rendering="crispEdges" ;
    • écran de lancement : iOS plein écran en cover sur #5A7FCF (option enableFullScreenImage_legacy d'Expo, seule façon d'avoir une image plein écran) ; Android 12, icône dans le disque du système sur #4E74C8 ; barre d'état claire ; vérifié sur l'émulateur Android ;
    • délai : l'écran reste jusqu'à ce que l'accueil soit prêt, 2 s au plus, fondu de 200 ms sur iOS. Pour Afficher la carte Mapbox stylée avec les marqueurs de parcours (E-01) #26 : la carte appelle useReleaseSplash(isMapReady) (apps/mobile/src/launch/splash.ts) quand elle est prête ; d'ici là, l'accueil provisoire libère l'écran quand la configuration s'affiche ;
    • tokens.json v28 synchronisé.

    Reste, dans une seconde PR qui fermera ce ticket : sheet « Mesure d'audience », demande de position au premier affichage de la carte (NSLocationWhenInUseUsageDescription compris), rappels au premier « Programmer », états (hors connexion, position approximative, texte agrandi, lecteur d'écran). Ils dépendent de la carte (#26) et de la programmation, pas encore sur main.

  6. IlanAMG commented on Sep 28, 2026

    @IlanAMG
    MemberAuthor

    D-063 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : le retrait de la mesure d'audience se fait dans Réglages › Confidentialité (E-19) ; le toast « politique hors connexion » de D-061 est retiré, ne pas l'implémenter.

  7. IlanAMG commented on Sep 28, 2026

    @IlanAMG
    MemberAuthor

    analytics_consent_given validé par Ilan le 2026-09-28 : envoyé juste après « Accepter », jamais après un refus (wiki Analytics).

  8. PaulThiberville commented on Sep 28, 2026

    @PaulThiberville
    Collaborator

    📋 MANAGER — écart relevé par DESIGN entre la page Analytics et le catalogue (D-067) : analytics_consent_given (Analytics › Découverte, D-060) n'est pas dans packages/shared/src/analytics.ts. Il revient à ce ticket, avec la bannière de consentement : l'ajouter au catalogue (sans propriété) et l'émettre seulement après « Accepter », premier événement autorisé ; rien après un refus. Aussi : l'icône de reminderPermission.off dans tokens.json est une clé de uiIcons, question posée à DESIGN dans #231, à régler avant la partie rappels.

  9. IlanAMG commented on Oct 13, 2026

    @IlanAMG
    MemberAuthor

    Chef de projet (point du 2026-10-13) : colonne En cours → Prêts : ni branche ni PR, aucune activité depuis le 06/10. Reste P1 en v0.3.

  10. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    Collaborator

    🔨 Démarrage — plan :

    Branche issue/188-first-launch-consent-permissions, une seule PR Fixes #188 (l'icône et l'écran de lancement sont déjà sur main depuis la PR #196 ; #293 est fermé par la PR #300). Un commit par partie, chacun sous 400 lignes utiles :

    1. Catalogue analytics (packages/shared) : analytics_consent_given, sans propriété, émis juste après « Accepter », premier événement autorisé ; rien après un refus.
    2. Sheet « Mesure d'audience » (E-18, D-060, D-061) : remplace la bannière provisoire de la barre d'onglets ; sheet modale sur l'accueil, sans poignée, qui ne se ferme ni en glissant, ni sur le voile, ni par le Retour Android ou le geste d'échappement ; proposée au premier accueil chargé (jamais sur un état d'erreur ou hors connexion, jamais pendant la demande de position) ; lien « Politique de confidentialité » vers l'écran natif (D-063), la sheet revenant au retour sur l'accueil ; texte agrandi : la sheet grandit, boutons côte à côte, contenu qui défile au-delà de l'écran.
    3. Position : texte de la demande de E-18 (NSLocationWhenInUseUsageDescription, nouveau build nécessaire) ; l'écran de lancement s'efface dès que la fenêtre du système s'ouvre, la demande se fait sur l'accueil en chargement.
    4. Rappels au premier « Programmer » si le temps le permet dans la session : sheet « Recevoir un rappel ? » et demande d'autorisation des notifications ; sinon, dit dans la PR.

    Recette iOS et Android à 100 % et 150 %, textes fr et en, API locale sur une base de recette dédiée.

  11. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    Collaborator

    ⛔ Bloqué : recette sur appareil impossible dans cette session. Le disque du Mac est descendu à 0,8 Go pendant le build iOS (8 Go libres au départ) ; l'agent a arrêté son build et supprimé ses seuls artefacts, sans rien toucher d'autre. Docker Desktop ne répondait pas (Postgres injoignable sur 5432). La PR #494 reste en brouillon, non fusionnée, jusqu'à une recette iOS et Android sur builds neufs.

  12. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    Collaborator

    📋 MANAGER, 2026-10-15 — périmètre restant de E-18 sorti de ce ticket, d'après les découvertes de CODE pendant la PR #494 :

    Le corps de ce ticket est corrigé en conséquence. Ses trois critères (icône et splash, aucun événement avant consentement, sheet « Mesure d'audience » au-dessus de la barre d'onglets) ne changent pas. La PR #494 peut donc garder Fixes #188 une fois la recette faite. Status laissé « En cours » (PR en brouillon).

  13. PaulThiberville commented on Oct 16, 2026

    @PaulThiberville
    Collaborator

    📋 MANAGER, 2026-10-16 — fermé par la PR #494, fusionnée à 1fe80f4 (niveau 2).

    Critères tenus en recette simulateur et émulateur (recette de l'agent CODE du 2026-10-16, builds de développement neufs : simulateur iPhone 17 Pro iOS 26.4, émulateur Medium_Phone API 34) : icône et écran de lancement iOS et Android ; aucun événement analytics avant le choix, analytics_consent_given puis app_opened après « Accepter », rien après « Refuser » ; sheet « Mesure d'audience » au-dessus de la barre d'onglets, aucun bouton recouvert, à 100 % et 150 %.

    Reste à faire sur appareil, d'où le Status laissé « À déployer » :

    • VoiceOver et TalkBack réellement actifs (focus sur le titre à l'ouverture, geste d'échappement VoiceOver) : seul l'arbre d'accessibilité a été relevé ;
    • un nouveau build (preview), nécessaire pour le texte de la demande de position (NSLocationWhenInUseUsageDescription) et pour vérifier l'ensemble hors client de développement.

    Epic #8 : coché. Sprint 0 posé.

  14. IlanAMG commented on Oct 16, 2026

    @IlanAMG
    MemberAuthor

    Board : À review → En cours. La PR #494 (#494) est en brouillon et la recette sur appareil n'a pas pu se faire le 15/10 (disque du Mac plein) ; rien n'est encore à relire. Le ticket reste en v0.3.

    — Chef de projet (point quotidien du 16/10/2026)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions