Repository navigation
Design Changelog
Journal des évolutions de spécification. Chaque entrée porte un identifiant monotone jamais réutilisé. Le mode MANAGER lit ce journal pour créer les tickets et annote les entrées traitées (→ #N).
- Pages : toutes (création du wiki)
- Quoi : cahier des charges initial du MVP, à partir du document « WIDOO — Concept, Vision & UX Produit » (PDF, Markdown) et des décisions de cadrage du 21 septembre 2026 : Postgres/PostGIS, création de parcours dans le MVP avec modération, vérification communautaire, Go via Google Maps, météo contextuelle, consultation sans compte, analytics dès le premier jour, admin web en v0.6.
-
Impact tickets : bootstrap complet du backlog, jalons v0.1 à v1.0 ; tickets
status:readypour v0.1 et v0.2, le reste en backlog jusqu'à validation des maquettes. - Répond à : —
- Pages : Perimetre-MVP, Ecrans, Filtres-et-Recherche, Compte-et-Monetisation, Creation-et-Moderation, Modele-de-Donnees, API, Analytics, Personas-et-Parcours-Utilisateurs, Roadmap, Direction-Artistique
- Quoi : accueil en deux vues (carte et liste) avec algorithme de recommandation explicable ; notation des parcours en fin de sortie (E-15) et avis sur la fiche ; vérification des lieux à chaque étape du Go ; profil public de créateur (E-16) ; freemium dès le MVP sur le modèle « consulter libre, agir limité » avec RevenueCat et écran Premium (E-17) ; charte graphique (palette secondaire, Baloo 2 + Poppins, flat arrondi, exigences d'accessibilité) ; roadmap réorganisée en jalons → epics → tickets.
- Impact tickets : 11 epics créés ; tickets #47 à #52 ajoutés (vue liste, recommandation, notation, profil public, quotas, RevenueCat) ; #10, #13, #27, #35 amendés.
- Répond à : —
- Pages : Ecrans (E-01 validé, E-04 à réaligner), Direction-Artistique (à mettre à jour), Filtres-et-Recherche (chips en une rangée)
- Quoi : accueil E-01 validé sur maquette (vue carte, sheet remontée, card). Plus de logo ni de wordmark dans l'interface ; barre du haut avatar + salutation + position + notifications ; recherche avec bouton filtres intégré ; une seule rangée de chips, météo en chip (plus de bandeau) ; carte bord à bord avec tracé du parcours sélectionné ; suppression de la vue liste et de la bascule carte / liste : la bottom sheet remontée est organisée en sections (titre, sous-titre, « Voir tout », carrousel), « Voir tout » ouvrant la liste complète d'une section ; nouvelle card de parcours photo en tête (budget en chiffre clé, durée et distance en tags, Vérifié et Signature sur la photo, hauteur fixe) ; barre d'onglets blanche flottante avec une légère ombre (seule exception au « sans ombre »). Direction artistique : police unique Plus Jakarta Sans (800 titres et chiffres, 500/400 texte ; Baloo 2 et Poppins abandonnées) ; fond blanc pur ; gris chaud #F6F5F1 (cards, disques, bascules) ; encre #14171F réservée à la chip active et à l'onglet actif ; bleu #4E74C8 pour marqueur sélectionné, tracé, compteur de filtres et « Voir tout » ; bleu #5A7FCF sur l'icône de l'onglet actif ; corail #F2592A favori ; jaune #F5B301 étoiles et soleil ; pastilles douces Vérifié #E3F3EC / #1F6B52 et Signature #FFE4D9 / #A63D12 ; chips d'ambiance teintées (prune, vert, corail) ; rayons 18 cards, 12 photos, 999 pilules ; muted #5F6B80.
- Impact tickets : #69 (E-01/E-04) : E-01 validée, E-04 à réaligner sur les sections et « Voir tout » (le tri se déplace dans « Voir tout ») ; #62 (vue liste et bascule carte / liste) à requalifier en liste « Voir tout » d'une section ; tickets dev de l'accueil déblocables ; ticket à créer pour la mise à jour de Direction-Artistique et du design system (tokens et police) → #81.
- Répond à : —
- Pages : Ecrans (E-01 révisé, E-04 planche 1), Filtres-et-Recherche (chips)
- Quoi : résultats E-04, planche 1 validée sur maquette (tap parcours, tap étape, mi-hauteur, plein, composants) : sheet à trois crans (repos, mi-hauteur, plein avec recherche et chips épinglées dans la sheet) ; au tap sur un marqueur, la carte se recadre, le marqueur photo est remplacé par une tooltip encre (nom du parcours et note, photo et nom du lieu, « Étape i/n · catégorie · durée », « Voir plus »), le tracé et les étapes apparaissent, la sheet au repos devient le résumé du parcours avec « Voir le parcours » ; étapes en pastilles colorées par famille d'activité avec icône par catégorie de lieu, l'étape 1 étant le départ ; tap sur une étape = même tooltip ; tap hors de tout = retour à la recommandation. Révision de E-01 : chips réduites à 36 px, chip météo supprimée (météo dans la ligne de position « Paris 10e · République · ☀ 22 °C »), chip « Extérieur » ajoutée, aucune sélection à l'ouverture, « Journée » remplacé par la durée en heures, ligne créateur dans les cards (avatar et prénom, logo pour « Par Widoo », appui → E-16 ; card 348 px en carrousel, 388 px en liste). PNG E-01 réexportés.
- Impact tickets : #79 (E-04) : planche 1 faite, reste « Voir tout », états et accessibilité avant fermeture ; #28 (bottom sheet et cards, bloqué par #79) : la structure de la sheet, la sélection carte ↔ sheet et la card sont figées, à scinder ou libérer sans attendre « Voir tout » ; #62 (liste « Voir tout ») reste bloqué par #79 ; #69 (E-01) : E-01 révisé, tickets dev de l'accueil non commencés à repasser sur la maquette révisée (chips, météo, créateur) ; le modèle de données doit exposer l'auteur d'un parcours dans les résultats (avatar, prénom, « Widoo ») et la catégorie de chaque étape. → #28 #25 #81
- Répond à : —
- Pages : Ecrans (E-04 planche 2)
- Quoi : liste « Voir tout » d'une section validée sur maquette (Voir tout, sheet de tri, tri sans position, composants) : route de la pile Accueil avec barre d'onglets, en-tête retour + grand titre + sous-titre de zone, ligne épinglée « N parcours » + pilule de tri, liste de cards 358 en défilement infini ; tri dans une sheet basse à radios (recommandé, distance, durée, note) avec ligne d'explication, choix immédiat mémorisé pour la session ; sans position, « Distance » désactivée avec lien vers la demande de localisation. Forme « chips de tri » écartée par Ilan.
- Impact tickets : #62 (liste « Voir tout ») : structure figée, en-tête et tri spécifiés, reste bloqué par #79 jusqu'aux états ; #79 : restent les états et le contrôle accessibilité avant 🟢. → #62 #79
- Répond à : —
- Pages : Ecrans (E-01 états, E-04 planche 3)
- Quoi : états validés sur maquette (accueil : chargement, aucun résultat, erreur, hors connexion, géolocalisation refusée ; Voir tout : chargement, aucun résultat, erreur, page suivante ; composants). Tous les messages d'état vivent dans la sheet (pas de bandeau sur la carte, pas de toast) ; squelettes de card gris chaud aux cotes de la card ; hors connexion : derniers résultats en cache + bandeau discret ; géolocalisation refusée : bandeau « Position désactivée » avec « Activer », cards sans distance ; aucun résultat : « Élargir la zone » en principal et « Retirer les N filtres » en lien ; page suivante : anneau bleu « Chargement… » en bas de liste.
- Impact tickets : #79 : reste le contrôle accessibilité avant 🟢 ; #28 et #62 : les états sont spécifiés (chargement, vide, erreur, hors connexion, sans position, pagination) ; le cache des derniers résultats et l'horodatage « résultats du … » sont une exigence du store de découverte, à vérifier dans Architecture-Technique. → #28 #62 #79
- Répond à : —
- Pages : Ecrans (E-04 🟢, E-01 complété), Direction-Artistique (section Accessibilité)
-
Quoi : E-04 validé en entier : planche 4, contrôle accessibilité (accueil à 150 %, tap parcours à 150 %, Voir tout à 150 %, tableau des contrastes et libellés). Deux corrections de contraste appliquées à toutes les maquettes : lien bleu sur gris chaud en bleu encre
#3A4FA8, contour des radios non cochées en#7F8A9C. Règles pour le code écrites dans Direction-Artistique (texte dynamique sans hauteur fixe, plafond 1,3 sur les composants denses, deux reflows àfontScale >= 1.3, seuils de contraste, libellés et états lecteur d'écran, zones tactiles 44 px) et reprises dansCLAUDE.md(mode CODE) etdocs/decisions.md(D-013) par la branchechore/accessibility-rulesdu dépôt. -
Impact tickets : #79 à fermer par
scripts/validate-design.sh 79 --date 2026-09-23 --link https://claude.ai/artifact/8xdbKyHFehTvkynTLa8JW6; #28 et #62 libérés (ligne Maquette,needs-design→status:ready) ; #69 : E-01 et E-04 tous deux 🟢, à fermer ; #81 (direction artistique et design system) : ajouter la section Accessibilité et les familles d'activité ; PRchore/accessibility-rulesà ouvrir et merger. → #28 #62 #69 #79 #81 #85 - Répond à : —
-
Pages : Perimetre-MVP, Filtres-et-Recherche, Creation-et-Moderation, Compte-et-Monetisation, Analytics, Securite-et-RGPD, Architecture-Technique, Roadmap, Home
-
Quoi : dissolution de
docs/decisions.md(décision de Paul, 2026-09-23) : le wiki porte le quoi et le pourquoi, décisions comprises ; chaque décision vit dans la page qu'elle concerne, avec sa raison et ce qu'elle écarte, et ce changelog l'annonce. La sérieD-xxxdevient celle du seul changelog. Les anciennes mentions dedocs/decisions.md(tickets, entrées D-007 et antérieures) restent telles quelles, comme trace. Correspondance :Ancienne décision Nouvelle place Wiki decisions.md D-001 — PostgreSQL + PostGIS, pas Firestore Architecture-Technique › Choix et justifications (ligne Base, Firestore écarté) déjà présent decisions.md D-002 — API Fastify + TypeScript + Zod sur Cloud Run Architecture-Technique › Choix et justifications (lignes API et Hébergement API, Express écarté) et › Monorepo ( packages/shared)déjà présent decisions.md D-003 — création par les utilisateurs dès le MVP, publication modérée Creation-et-Moderation › introduction ; Perimetre-MVP › Décisions de cadrage raison ajoutée decisions.md D-004 — pas de GPS, Go ouvre Google Maps Perimetre-MVP › Décisions de cadrage (Suivi d'itinéraire) ; Orchestration › Ce que voit l'utilisateur final raison ajoutée decisions.md D-005 — vérification communautaire dès le MVP Creation-et-Moderation › Vérification communautaire déjà présent decisions.md D-006 — consultation sans compte, compte au premier engagement Compte-et-Monetisation › Principe (reprise de l'action après connexion) et › Modèle économique (champs présents dès le premier schéma) ; « aucune barrière payante au lancement » remplacé par decisions.md D-009 ajouté decisions.md D-007 — analytics et crash reporting dès v0.1 Analytics › introduction Sentry et raison ajoutés decisions.md D-008 — méthode de travail : modes et harnais CLAUDE.md(CODE)méthode, hors wiki decisions.md D-009 — freemium « consulter libre, agir limité » Compte-et-Monetisation › Principe et › Ce qui est exclu attribution et raison ajoutées decisions.md D-010 — accueil en deux vues et recommandation explicable deux vues : remplacée par l'entrée D-003 de ce changelog (Ecrans E-01, E-04) ; recommandation : Filtres-et-Recherche › Recommandation « autour de moi » alignés (Perimetre-MVP, Filtres-et-Recherche, Roadmap, Analytics) decisions.md D-011 — notation et vérification sur place Creation-et-Moderation › Notation des parcours et › Vérification communautaire › Signaux déjà présent decisions.md D-012 — profil public de créateur, communauté après Compte-et-Monetisation › Profil public et communauté déjà présent decisions.md D-013 — accessibilité mobile Direction-Artistique › Accessibilité — règles pour le code ; rappel dans CLAUDE.md(CODE)déjà présent decisions.md D-014 — une PR par ticket, rebase and merge, plafond par commit CLAUDE.md(CODE)méthode, hors wiki SECURITY.mdest réduit au seul signalement des vulnérabilités. Le wiki reprend : dans Securite-et-RGPD, la portée et les actifs (dont les clés des services tiers facturables), les entrées non fiables, la validation des sorties avec refus par défaut, les clés publiques restreintes, l'absence de donnée personnelle réelle hors production (tests, prompts, rapports, sorties de commande), staging et production séparés avec données fictives, les migrations additives, versionnées et testées, la règle d'alerte de dépendance, et le retour au cadrage de toute nouvelle donnée personnelle, table, export ou sous-traitant ; dans Architecture-Technique › Environnements : une fusion n'autorise pas un déploiement, staging se déploie automatiquement depuismain, la production à la main par Ilan ou Paul après un staging vert, un rollback ne restaure pas une donnée supprimée. Les niveaux de risque 1/2/3, la revue OWASP du diff et l'annonce des actions distantes sont des consignes d'agent : elles vont dansCLAUDE.md(CODE). Autres alignements : l'événementview_switchedquitte Analytics (plus de bascule carte / liste) ; Architecture-Technique › Qualité renvoie àCLAUDE.mdpour la taille et la fusion des PR ; Home › Conventions dit où vivent les décisions. -
Impact tickets : ticket CODE à créer par MANAGER : supprimer
docs/decisions.md, réduireSECURITY.mdau signalement, porter dansCLAUDE.mdles niveaux de risque, la revue OWASP, les règles de production et d'actions distantes et les décisions de méthode (decisions.md D-008, D-013, D-014), mettre à jour les renvois (template de PR,CODEOWNERS, README). #62 :view_switchedretiré d'Analytics, l'événement d'ouverture d'une section « Voir tout » reste à définir. → #119 #120 -
Répond à : —
- Pages : Securite-et-RGPD
- Quoi : nouvelle section Risques acceptés (décision de Paul, 2026-09-23, suite de D-008) : un risque résiduel qu'Ilan accepte lors d'une PR de niveau 2 ou 3 y est consigné (risque, contexte, raison de l'acceptation, PR, accepté par, date, date de révision), et ce changelog l'annonce. Aucun risque accepté à ce jour ; les risques résiduels déclarés dans les PR de l'epic #13 (#91, #95 à #97, #107 à #109, #110 à #112) attendent la décision d'Ilan.
-
Impact tickets : aucun ticket à créer. #119 : l'ancre
Securite-et-RGPD#risques-accept%C3%A9s, visée parCLAUDE.mddans la PR #121, existe désormais. - Répond à : —
- Pages : Ecrans (E-02 et E-03 planches 1 et 2, E-01 révisé), Filtres-et-Recherche (recherche par zones, libellés de budget et de durée, icônes, section météo)
- Quoi : recherche E-02 et filtres E-03 validés sur maquette (champ vide, saisie, aucun résultat, panneau de filtres, compteur en calcul, aucun parcours, composants). E-02 : la recherche monte la sheet au cran plein ; recherches récentes (zones) et parcours consultés récemment ; saisie en deux groupes, Zones (avec nombre de parcours) puis Parcours ; jamais d'adresse ni de lieu isolé, jamais d'épingle (retour d'Ilan : Widoo trouve des parcours, pas des lieux) ; la zone choisie s'affiche dans la pilule avec une croix. E-03 : sheet modale, six groupes en chips à choix multiples avec une icône par valeur (glyphes et teintes des familles de la carte pour Culture, Nature, Shopping, Gastronomie), budget en montants et durée en heures, barre collée « Réinitialiser » + « Voir N parcours » avec compteur en direct, état de calcul, zéro résultat avec suggestions chiffrées. E-01 révisé (sections quand il pleut, zone choisie, filtres appliqués) : pas de bandeau météo, la météo pilote une section de la sheet toujours placée après « À proximité » (« À l'abri de la pluie » par temps de pluie) ; filtres actifs en tête de la rangée de chips ; chip Extérieur avec une icône de banc, le soleil étant réservé à la météo et à Beau temps. PNG E-01, E-04 et composants réexportés (rangée de chips).
-
Impact tickets : #70 : planches 1 et 2 faites, restent les états (recherche hors connexion ou en erreur, suggestions en chargement, compteur indisponible) et le contrôle accessibilité avant 🟢 ; #29 (chips rapides et panneau de filtres) : panneau figé, libellés de budget et de durée à reprendre, icônes par valeur, comptage
countet comptage « tous les filtres sauf un » pour les suggestions ; #30 (recherche géographique) : zones et stations uniquement, nombre de parcours par zone dans la réponse, critère d'acceptation sur une adresse (« rue Oberkampf ») à remplacer par une zone ; #31 (bandeau météo) : à requalifier en section météo de la sheet, sans bandeau ni filtre appliqué. → #29 #30 #31 #25 #81 - Répond à : —
- Pages : Ecrans (E-02 et E-03, états), Filtres-et-Recherche (délais, requêtes parallèles, hors connexion)
- Quoi : états de la recherche et du panneau de filtres validés sur maquette, planche 3 du ticket #70 (hors connexion, hors connexion, saisie, chargement, zones indisponibles, erreur, nombre indisponible, filtres hors connexion, composants). Recherche : hors connexion, les récentes et les parcours consultés restent utilisables avec une ligne discrète (Ilan a refusé le bandeau gris de l'accueil, trop gros dans la recherche) ; chargement signalé par un anneau dans le champ, résultats précédents conservés ; zones et parcours en deux requêtes parallèles, erreur partielle par groupe avec « Réessayer », erreur totale en message centré ; délai de 5 s. Panneau de filtres : sans nombre (erreur ou hors connexion), le bouton reste utilisable avec « Voir les parcours » et une ligne discrète ; hors connexion, les filtres s'appliquent au cache et il n'y a pas de suggestions.
- Impact tickets : #70 : planches 1 à 3 faites, reste le contrôle accessibilité (planche 4) avant 🟢 ; #30 (recherche géographique) : états hors connexion, chargement, erreur partielle et totale, délai de 5 s, historique local des zones ; #29 (panneau de filtres) : bouton sans nombre, relance du comptage au tap suivant, filtres hors connexion sur le cache, pas de suggestions hors connexion ; store de découverte (cache des derniers résultats, D-006) réutilisé pour filtrer hors connexion. → #29 #30 #70
- Répond à : —
- Pages : Ecrans (E-02 et E-03 🟢, texte 150 %, lecteur d'écran), Direction-Artistique (Accessibilité : placeholder de recherche, rangée de deux actions)
-
Quoi : contrôle accessibilité de E-02 et E-03 validé, planche 4 du ticket #70 (recherche à 150 %, saisie, résultats, filtres à 150 %, aucun parcours à 150 %, contrastes et libellés). À 150 % : champ à hauteur minimale, texte indicatif « Zone ou parcours », lignes de résultats sans troncature, chips plafonnées à 1,3, barre du panneau qui passe à la ligne d'elle-même (bouton au-dessus, « Réinitialiser » dessous) sans nouveau reflow sur
fontScale, rendu à 100 % inchangé. Contrastes : vingt couples nouveaux, aucun en échec (bleu#4E74C8sur blanc à 4,51:1, violet Shopping 6,40:1) ; bouton désactivé « Aucun parcours » exempté (4,35:1, composant inactif). Libellés VoiceOver des vingt-deux contrôles de la recherche et du panneau. Correction : le libellé du champ de recherche devient « Rechercher une zone ou un parcours » partout (il disait « un lieu »), tableau E-01/E-04 réexporté. -
Impact tickets : #70 : E-02 et E-03 en 🟢, ticket à fermer par
scripts/validate-design.sh 70 --date 2026-09-23 --link https://claude.ai/artifact/8xdbKyHFehTvkynTLa8JW6; #29 (panneau de filtres) : rangée d'actions enwrap-reverse, plafond 1,3 sur les chips, libellés et états VoiceOver du tableau ; #30 (recherche géographique) : libellé du champ, texte indicatif court à 150 %, libellés des lignes et annonces de chargement ; ticket dev de la barre de recherche de l'accueil (E-01, à identifier) : libellé « Rechercher une zone ou un parcours ». → #29 #30 #70 #81 - Répond à : —
- Pages : Ecrans (E-05 planche 1)
- Quoi : fiche parcours E-05 validée sur maquette, planche 1 du ticket #71 (ouverture, infos, étapes, fin et avis, composants). Choix d'Ilan : photo pleine largeur en tête ; barre collée « Programmer » + « C'est parti » à parts égales, sans prix ; timeline verticale dépliable (une étape à la fois) avec heures suggérées, pastilles de la carte, durées à droite, trajets à pied et fin du parcours ; pas de carte dans la fiche, lien « Voir sur la carte » vers l'accueil avec le parcours sélectionné. Retouches d'Ilan : encart créateur réduit au nom et au nombre de parcours publiés, « Les étapes (4) », moins de points médians. La « carte miniature » de la spécification initiale est retirée. PNG « Par Widoo » réexportés avec le logo (l'export affichait une photo à la place) : E-01 sheet et sections pluie, E-04 sélection, crans, tri, 150 %, composants.
- Impact tickets : #71 : planche 1 faite, restent les états (lieu signalé, parcours privé, dépublié, signature en gratuit) et le contrôle accessibilité avant 🟢 ; ticket dev « Construire la fiche parcours (E-05) » (epic Fiche parcours et orchestration) : structure figée, carte miniature retirée, sections et barre spécifiées ; « Exposer GET /routes/:id et /routes/:id/timeline » : la fiche a besoin, par étape, des horaires du jour et du statut ouvert, du coût, de l'indication de réservation avec lien, du nombre de vérifications et de leur date, du conseil du créateur, et pour le parcours du nombre d'avis, des trois derniers avis et du nombre de parcours publiés par le créateur. → #36 #37 #71
- Répond à : —
-
Pages : Ecrans (E-05 🟢 : états, Premium sans abonnement, texte 150 %, lecteur d'écran ; E-04 révisé : tap sur un parcours Premium sans abonnement ; E-01 : pastilles Signature bleue et Premium ; E-17 : avantages), Compte-et-Monetisation (Signature et Premium distincts, Premium sans abonnement, Google Maps), Perimetre-MVP et Personas-et-Parcours-Utilisateurs (parcours Premium), Direction-Artistique (alerte, Signature, Premium, couronne, note des avis, plafonds 1,3), API (
GET /routes/:id,premium_required) -
Quoi : planches 2 et 3 du ticket #71 validées (lieu signalé, étape signalée, parcours privé, Premium sans abonnement, étapes verrouillées, parcours retiré, chargement, erreur, 150 %, ouverture, 150 %, étapes, 150 %, avis, composants fiche et pastille Premium, contrôle accessibilité, E-04 tap Premium). Précision d'Ilan : Signature = tout parcours de l'équipe Widoo, Premium = parcours réservé aux abonnés, de Widoo ou d'un utilisateur ; les deux se cumulent ; ce qui rend un parcours Premium reste à définir (nombre d'étapes ou choix manuel). Choix d'Ilan : lieu signalé en ligne discrète sous les tuiles et étape marquée ; pastille « Privé » ; message plein écran pour un parcours retiré ; pastille Premium encre à couronne dorée (l'or seulement en icône), à côté de la note sur les cards ; Premium sans abonnement : un seul bouton encre « Débloquer avec Premium » à la place de Programmer et C'est parti, étapes 2 et suivantes verrouillées (étape 1 visible), encart Premium gris chaud après les étapes, carte sans tracé ni étapes avec un départ encre à couronne et une tooltip « Parcours Premium, 4 étapes en 7 h » ; badges Signature en bleu partout (cards, fiche, composants) ; Google Maps seulement une fois le parcours lancé, pas dans la fiche ; conseil par étape ouvert à tout créateur. Contrôle accessibilité : un échec corrigé sur les écrans validés (note de chaque avis en « ★ 5 », les étoiles seules faisaient 1,85:1), nouvelle couleur d'alerte
#8C5A00, tuiles à largeur selon leur contenu, colonne des heures extensible, aucun nouveau reflow surfontScale. Variantes écartées en Sandbox (ligne « inclus dans Premium », pistes A, B, C). PNG réexportés : E-05 ouverture et avis ; E-04 Voir tout et contrôle accessibilité ; E-01 vue carte, sheet, sections pluie, filtres appliqués, texte 150 % ; composants. Les parcours de démonstration des écrans E-01 et E-04 ne sont pas Premium : la pastille Premium sur card est dessinée dans la planche composants. -
Impact tickets : #71 : E-05 en 🟢, ticket à fermer par
scripts/validate-design.sh 71 --date 2026-09-23 --link https://claude.ai/artifact/8xdbKyHFehTvkynTLa8JW6; #37 (fiche) : états, Premium sans abonnement (bouton unique, étapes verrouillées, encart), pastille Premium, tuilesflexBasis: 'auto', note des avis en chiffre, plafonds 1,3, libellés VoiceOver du tableau ; #36 (GET /routes/:id) : réduction des étapes pour un non-abonné sur un parcoursaccess = premium, lieux signalés avec nombre et date,410et date de retrait ; #66 (quotas et « parcours signature » dans l'API) : à requalifier en parcours Premium (access = premium, indépendant de Signature), même règle de réduction côté serveur, règle d'attribution de Premium à définir ; #67 (E-17) : deux points d'entrée depuis la fiche ; #26 et #28 (carte, cards et résumé) : tap sur un parcours Premium sans abonnement, pastille Signature bleue, pastille Premium à côté de la note ; #50 (vérification dans la fiche) : ligne, point et encadré d'alerte ; #42 (E-07) : Google Maps seulement depuis la journée en cours ; #76 (éditeur) : champ facultatif « conseil ou anecdote » par étape ; #81 (Direction-Artistique et design system) : tokens alerte, Signature et Premium, icône couronne. → #26 #28 #36 #37 #42 #50 #64 #66 #67 #71 #76 #81 - Répond à : —
-
Pages : Direction-Artistique (réécrite sur les tokens, section Accessibilité inchangée),
design/design-system/tokens.json(nouveau), Ecrans (E-10 et E-17 au vouvoiement), Creation-et-Moderation (notification créateur au vouvoiement), Vision-Produit (promesse au vouvoiement), Home (description de Direction-Artistique) -
Quoi : Direction-Artistique et le design system Widoo alignés sur D-003 à D-014 (ticket #81). Nouveau fichier tokens.json, source unique pour Claude Design et pour le thème de l'app, identique au
tokens.jsondu design system : 49 couleurs, 20 styles de texte en Plus Jakarta Sans, espacements, rayons, tailles de composants (chips 36 px, pastilles 26 px, zone tactile 44 px, tooltip 260 px), ombre unique de la barre d'onglets, etmappings: familles d'activité et leurs couleurs, les 14 valeurs deplaces.categoryavec famille et icône Phosphor, une icône par valeur de filtre (Extérieur en bancpark), icônes d'interface, pastilles Vérifié, Signature, Premium et Privé, surfaces sombres autorisées (chip active, onglet actif, tooltip, Premium, fin du parcours), seuils d'accessibilité, ton ; libellés repris depackages/shared. Retirés du wiki et du design system : palette de travail (#FAF9F6,#BFD7EA, « accent chaud à définir », « composants à définir »), Baloo 2 et Poppins ; les fichiers Plus Jakarta Sans 400 à 800 (licence OFL) sont dans le design system. Contrastes recalculés sur chaque couple d'usage, aucun échec en clair ; noms de quartiers de la carte à 4,68:1 ; pastilles Vérifié et Signature mesurées sur leur fond (5,57 et 6,17:1), 4,05 et 4,49:1 au pire cas sur une photo noire. Choix d'Ilan : vouvoiement partout (E-10 « Connectez-vous pour enregistrer ce parcours », E-17 « Vous avez programmé 3 sorties ce mois-ci », notification « 10 personnes ont programmé votre balade », promesse « Vous ne savez pas quoi faire ce week-end ? ») ; thème sombre recalculé depuis les nouveaux tokens, en proposition non validée et sans maquette. Restent à définir : la couleur du point d'ambiance de Romantique, Insolite, Instagrammable, Détente et Sportif. -
Impact tickets : #81 : critères remplis, à fermer ; #21 (initialisation de l'app, thème) : thème clair généré depuis
tokens.json(noms de tokens, aucune valeur en dur), Plus Jakarta Sans 400 à 800, icônes Phosphor, valeursdarknon livrées ; #26, #28, #29, #37 et #62 : couleurs, tailles, icônes et pastilles lues danstokens.json(mappings.placeCategories,mappings.filterIcons,mappings.badges) ; #38 (E-10), #51 (notifications créateur) et #67 (E-17) : textes au vouvoiement ; #61 (fiches stores et landing) : promesse au vouvoiement ; #72 et #75 (design E-09, E-10, E-16 et E-17) : planches au vouvoiement avec le design system à jour. → #21 #26 #28 #29 #37 #38 #51 #61 #62 #67 #72 #75 #81 #125 - Répond à : —
-
Pages : Filtres-et-Recherche (clé de budget
high), Direction-Artistique (section Points d'ambiance, tableau Couleurs),design/design-system/tokens.json(version 3) -
Quoi : deux décisions d'Ilan avant le ticket #72. Budget : le palier « Plus de 70 € » prend la clé
highau lieu depremium, pour ne pas le confondre avec les parcours Premium ; libellés inchangés. Points d'ambiance (propositions comparées) : proposition 1 retenue, cinq couleurs propres, Romantique#D0405F, Insolite#9A3FC0, Instagrammable#BC3797, Détente#1F87B5, Sportif#5E8F12(tokensmood-romantic,mood-unusual,mood-instagrammable,mood-relax,mood-sport, valeurs sombres en proposition) ; le point Nature passe au vert de la famillefamily-nature#2A8A62(l'ancien#4FA88Bétait à 2,87:1 sur blanc et 2,63:1 sur gris chaud), le tokenmood-naturedisparaît. Les neuf points tiennent 3:1 surbgetsurface(3,09:1 au plus bas, Gastronomie sur gris chaud) et restent distincts entre eux (ΔE2000 11,5 au minimum, 6 en deutéranopie et protanopie).mappings.moodDotsdevient une liste par clé depackages/shared(moods). Design system Widoo republié (tokens, README, index). Les maquettes validées gardent l'ancien vert sur le point Nature jusqu'au prochain réexport ; le code suittokens.json. -
Impact tickets : #29 (panneau de filtres, libellés de budget) : renommer la valeur
premiumdebudgetsenhighdanspackages/shared(taxonomies et libellés) et dans l'enumbudget_bucket(migration de renommage, la 0001 l'a créé avecpremium), requêtebudgets[]de #25 comprise ; #21 (thème de l'app) : tokensmood-*etmappings.moodDots; #26, #28, #37 et #62 : point d'ambiance lu dansmappings.moodDots. → #21 #25 #26 #28 #29 #37 #62 #81 #125 - Répond à : —
- Pages : Securite-et-RGPD (Risques acceptés)
- Quoi : deux premiers risques acceptés, par Paul sur délégation d'Ilan, à la revue des PR de l'authentification (#20) : révocation des jetons Firebase non vérifiée, un compte désactivé dans la console garde l'accès une heure au plus (#95) ; réinscription impossible pendant 30 jours après suppression du compte (#97). Révision des deux avant la soumission aux stores. Manque consigné à part, sans acceptation : la purge des comptes supprimés à 30 jours et la suppression du compte Firebase ne sont pas implémentées.
- Impact tickets : ticket à créer par MANAGER : purge à 30 jours des comptes supprimés et suppression du compte Firebase, avant les stores.
- Répond à : —
- Pages : Securite-et-RGPD (Risques acceptés › manques connus)
- Quoi : deux manques relevés à la revue de #107 (bannière de consentement et PostHog UE), à combler avant la soumission aux stores : retrait du consentement à la mesure d'audience depuis l'app (Profil, E-09), et lien de la bannière vers la politique de confidentialité, à rédiger.
- Impact tickets : à créer par MANAGER : retrait du consentement dans E-09 ; rédaction et publication de la politique de confidentialité, puis lien depuis la bannière.
- Répond à : —
- Pages : Securite-et-RGPD (Données personnelles)
- Quoi : réglages obligatoires de PostHog et de Sentry consignés, tels que vérifiés en recette de #107 et #108 : régions UE, IP non conservée, filtrage serveur de Sentry, et deux règles de suppression sur les projets mobiles (empreinte d'appareil et géolocalisation déduite de l'IP), sans lesquelles les rapports de plantage contenaient la ville de l'utilisateur et un identifiant stable de l'appareil.
- Impact tickets : aucun ticket ; à appliquer à chaque nouveau projet PostHog ou Sentry (API, production).
- Répond à : —
- Pages : Securite-et-RGPD (Données personnelles)
-
Quoi : complète D-019 : les deux règles de suppression de Sentry (empreinte d'appareil, géolocalisation déduite de l'IP) sont posées au niveau de l'organisation et couvrent tous les projets, dont
widoo-api; la recette de #109 a montré que Sentry y ajoutait la ville du serveur émetteur. - Impact tickets : aucun.
- Répond à : —
- Pages : Securite-et-RGPD (Risques acceptés)
- Quoi : trois écarts du staging GCP acceptés par Paul, par délégation d'Ilan, à la revue de #111 : utilisateur de base unique aux droits larges, TLS vers Cloud SQL sans vérification du certificat, sortie VPC directe au lieu du connecteur. Tous trois à revoir avant la mise en place de la production.
- Impact tickets : à prévoir avec le ticket de la production : rôles de base séparés et vérification du certificat.
- Répond à : —
- Pages : Roadmap (v0.2, nouvel epic « Exploitation et outillage »)
-
Quoi : l'epic Socle technique (#13) est clos ; ses découvertes d'outillage et d'exploitation n'entrent dans aucun epic ouvert. Nouvel epic « Exploitation et outillage », jalon v0.2, non bloquant pour Carte et découverte ni pour Filtres : CI et dépendances (pnpm 11, Dependabot
dockeretgithub-actions,shellchecketactionlinten CI, étape « Detect code to verify »), déploiement de staging (déclenchement manqué surmainle 2026-09-24, attente éventuelle de la CI), EAS (eas init, variables par environnement, buildpreviewsurmain,expo-updates, source maps Sentry). Décision de Paul, 2026-09-24. Le tri détaillé de toute l'Inbox, epic par epic, est dans le commentaire de passation de l'Inbox du 2026-09-24. -
Impact tickets : à faire par MANAGER : créer l'epic (
type:epic,area:infra, milestone v0.2) et ses tickets ; amender #32 (données de démonstration) pour qu'elles se chargent aussi en staging, oùdb:seedest refusé. - Répond à : —
-
Pages : Ecrans (E-09, E-10 et E-16 planche 1 🟡 ; E-17 : ouvertures et raisons ; E-01 : pastille « Nouveau » et sceau certifié sur la card ; E-05 : sceau dans l'encart créateur ; E-06 : sheet de connexion ; A-04 : badge Créateur certifié), Compte-et-Monetisation (freemium recentré, limite de création, profil public, créateur certifié), Perimetre-MVP, Personas-et-Parcours-Utilisateurs (PU-02, PU-04, PU-05, PU-08, PU-09), Creation-et-Moderation, API (
/users/:id/profile,/me,/config, favoris et programmations sans quota,POST /routes, certification), Modele-de-Donnees (users,user_anecdotes,anecdote_questions,user_featured_routes,settings), Analytics (paywall_shown, profil, KPI freemium), Direction-Artistique (pastille Nouveau, Créateur certifié),design/design-system/tokens.json(version 4) -
Quoi : planche 1 du ticket #72 validée (mon profil, suite, tri, fin et Premium, pas encore certifié, certification, profil vide, profil partiel, modifier, modifier, à la une, choisir un parcours, anecdote, question, anecdote, réponse, anecdote, modifier, réglages, réglages, bas, sans compte, connexion, connexion par e-mail, profil public, créateur certifié, profil minimal, composants). Choix d'Ilan : E-09 devient mon profil tel que les autres le voient, avec « Modifier le profil » ; réglages sur une page secondaire ouverte par la roue dentée ; espace perso avec statistiques plus tard. Profil inspiré des apps de rencontre : bio, anecdotes à partir de questions à choisir, parcours à la une, tous les parcours triables et filtrables. Chiffres : parcours publiés, parcours réalisés et note moyenne, sans les programmations ; note masquée sans avis. À la une modifiable uniquement par Modifier le profil, sans bouton sur le profil. E-mail seulement dans les Réglages. Encart Premium en tête des Réglages, en bas du profil et de Modifier le profil. Créateur certifié : critères automatiques (3 parcours vérifiés, note moyenne de 4,5 ou plus, 3 parcours réalisés) et attribution ou retrait par l'équipe dans l'admin ; encart « Devenez créateur certifié » pour donner envie. Quartier facultatif, hors des étapes « Complétez votre profil ». Freemium recentré : tout est gratuit et sans limite, favoris et programmations compris, sauf les parcours Premium et la création ; premier parcours offert, les suivants avec Premium. E-10 : textes centrés et pas de croix (retouches d'Ilan) ; logos Apple et Google fournis par Ilan, posés tels quels sur la maquette (cadre du G retiré), le code utilise les boutons des SDK. Décisions prises seule, à confirmer : tri et filtre à partir de 4 parcours ; pastille « Nouveau » et pas de Vérifié tant que le parcours n'est pas vérifié ; chaque chiffre absent s'il n'existe pas ; recherche dans « Choisir un parcours » au-delà de 10 parcours ; huit questions d'anecdote au lancement ; seuils de certification réglables dans
settings; E-17 ouvert aussi par les encarts ; limite de création comptée sur tout parcours non supprimé, brouillon compris ; « Supprimer mon compte » en encre ; ligne « Aide et contact » ; prix affiché « dès 2,50 € par mois » (annuel ramené au mois) ; Modifier le profil sans barre d'onglets ; sceau certifié sur la ligne créateur des cards et dans l'encart créateur de la fiche (spécifié, pas encore dessiné). Tokens version 4 : icônes d'interface du profil et des réglages (tracés Phosphor officiels 2.1.1 dans les maquettes), pastillesnewetcertified; design system Widoo republié. -
Impact tickets : #72 : planche 1 faite, reste la planche 2 avant 🟢 (chargement, erreur, hors connexion ; E-10 e-mail envoyé, première connexion, erreur ; confirmation de suppression du compte ; profil Widoo ; profil non public et créateur anonymisé ; version abonné ; texte à 150 % ; contrôle accessibilité) ; #38 (connexion, profil, suppression de compte) : sheet E-10 sans croix, boutons natifs Apple et Google, étape e-mail sur le clavier, E-09 profil, Modifier le profil, anecdotes, à la une, Réglages en page secondaire ; #65 (profil public E-16) : même page que E-09 sans « Modifier », sheet Créateur certifié, profil minimal ; #66 (quotas et parcours Premium dans l'API) : plus de quota de favoris ni de programmations,
quota_exceededsupprimé, limite de création (create_limit) ; #67 (E-17) : ouvertures depuis les encarts et « Créer un parcours », raisons ; #75 (design E-17) : mêmes ouvertures et raisons ; #45 : contrôle de la limite de création à « Créer un parcours » et dansPOST /routes; #20 (schéma) : colonnesusers(bio,neighborhood,is_certified,certified_override,certified_at), tablesuser_anecdotes,anecdote_questions,user_featured_routes, seuils danssettings; #26, #28, #37 et #62 : pastille « Nouveau », sceau certifié sur la ligne créateur ; #21 : tokens version 4 et icônes Phosphor ; #33 :paywall_shown(raisons et source),certified_info_opened,profile_updated, KPI freemium ; Roadmap, epic Freemium : la ligne « Appliquer les quotas gratuits » est à reformuler. Tickets probablement à créer : recalcul nocturne et attribution par l'équipe du badge Créateur certifié (API et admin A-04). → #26 #28 #33 #37 #38 #45 #62 #65 #66 #67 #72 #75 #125 #126 #127 - Répond à : —
- Pages : Architecture-Technique (choix « Style », section Mobile)
-
Quoi : le style de l'app passe à NativeWind, décision d'Ilan du 24 septembre après échange avec Paul. Preset Tailwind et correspondances générés depuis
tokens.json, copie du dépôt tenue identique au wiki et vérifiée en CI, aucune valeur de style en dur,StyleSheetseulement pour les cas particuliers (styles animés, couches Mapbox, valeurs calculées à l'exécution), composants de base porteurs des règles d'accessibilité. Écarté :StyleSheetpartout avec un thème recopié à la main, qui avait divergé detokens.json(livré par #21). - Impact tickets : #125 (thème NativeWind, créé par MANAGER le même jour) : déjà aligné, rien à changer. → #125
- Répond à : —
-
Pages : Ecrans (E-09, E-10 et E-16 planche 2, toujours 🟡 ; toast), Compte-et-Monetisation (première connexion, suppression de compte sans choix, interrupteur Profil public), API (
DELETE /me), Personas-et-Parcours-Utilisateurs (PU-02), Modele-de-Donnees (users.is_public), Direction-Artistique (toast, couleurs*-on-strong, iconographie, ombre, surface sombre),design/design-system/tokens.json(version 5) ; PNG de E-01 à E-05, de E-10 (choix, e-mail), des Réglages et des planches de composants réexportés avec les icônes Phosphor officielles, mise en page inchangée -
Quoi : planche 2 du ticket #72 validée (réglages, réglages, abonné, profil masqué, supprimer mon compte, confirmation, compte supprimé, hors connexion, enregistrement impossible, profil enregistré, abandonner les modifications, e-mail envoyé, première connexion, première connexion par e-mail, erreur de connexion, lien expiré, profil de Widoo, chargement, erreur, profil indisponible, composants, planche 2, icônes). Choix d'Ilan : première connexion avec Apple ou Google, prénom prérempli et étape facultative (Apple refuse une app qui redemande le nom qu'il a fourni) ; par e-mail, étape obligatoire. Suppression du compte sans choix : les parcours publiés restent en ligne avec leurs avis, signés « Membre Widoo », sans lien vers le profil ; tout le reste est effacé. Interrupteur « Profil public » dans les Réglages ; profil masqué : cards « Par Membre Widoo », profil introuvable par lien. Abonné : section Abonnement dans les Réglages seulement. Enregistrement impossible : toast plutôt qu'un message en haut du formulaire, que l'on ne voit pas après avoir fait défiler. Nouveau composant Toast (succès, info, attention, erreur), version encre préférée à la version blanche. E-16 erreur : bloc centré (icône, titre, texte, bouton) comme le profil indisponible, photo et prénom gardés quand on les a. Profil de Widoo : sceau certifié à droite du nom, pas de pastille Signature. Une seule bibliothèque d'icônes : toutes les maquettes passent aux tracés officiels Phosphor 2.1.1 et la planche « Icônes » (85 icônes, poids et usage) sert de référence. Décisions prises seule, à confirmer : titre « Bienvenue sur Widoo » ; « Renvoyer » actif après 30 s ; alertes système iOS pour confirmer la suppression et l'abandon des modifications (rouge système) ; rappel de l'abonnement du store sur la page de suppression d'un abonné ; plus de bouton Partager quand le profil est masqué ; profil de Widoo sans parcours réalisés ; hors connexion, mon profil reste actif avec la dernière version enregistrée ; durées des toasts (4 s succès et info, 6 s attention, erreur jusqu'à l'action ou au glissé) ; nouvelle couleur
error-on-strong#FF6B5A, lisible sur l'encre (6,40:1) ; le toast reprend l'ombre de la barre d'onglets ; noms d'icônes choisis pour les tracés dessinés à la main (binocularsaucun résultat,circle-notchchargement,gps-slashposition désactivée,arrows-down-uptri,arrows-clockwiserechercher dans cette zone) ; bio éditoriale du profil de Widoo. Tokens version 5 et design system Widoo republié. -
Impact tickets : #72 : planche 2 faite, reste la planche 3 avant 🟢 (texte système à 150 %, contrôle accessibilité) ; #38 (connexion, profil, suppression de compte) : E-10 e-mail envoyé, première connexion (règle Apple et Google, e-mail obligatoire), erreur, lien expiré ; E-09 interrupteur Profil public, section Abonnement, profil masqué, suppression sans choix avec alerte système et toast, profil hors connexion, toasts d'enregistrement, alerte d'abandon ; #65 (profil public E-16) : profil de Widoo, chargement, erreur en bloc centré, profil indisponible (masqué ou supprimé) ; #20 (schéma) :
users.is_publicpiloté par l'interrupteur, parcours publiés gardés à la suppression avec auteur anonymisé ; PR #97 (DELETE /me) : vérifier que les parcours publiés et leurs avis restent, signés « Membre Widoo », et que brouillons et parcours privés sont supprimés ; #21 (thème) : tokens version 5, composant Toast (mappings.toast), noms d'icônes dansuiIcons; #26, #28, #29, #30, #37 et #62 : icônes lues dansuiIcons, PNG réexportés, rien d'autre ne change ; #33 : événements de toast et de suppression de compte, facultatifs. À régler : Securite-et-RGPD, réinscription impossible pendant 30 jours après suppression, non maquettée. → #72 - Répond à : —
-
Pages : Ecrans (E-09 : les huit questions d'anecdote), Modele-de-Donnees (
anecdote_questions) -
Quoi : feu vert d'Ilan sur la planche 2 du ticket #72 : les décisions prises seule et soumises à confirmation dans D-025 sont confirmées. Les huit questions d'anecdote, jusqu'ici seulement sur la maquette anecdote, question, sont transcrites dans E-09 à l'identique, dans l'ordre du sheet, avec une clé technique stable pour
anecdote_questions. - Impact tickets : #126 (migration profil) : le seed reprend les huit questions et leurs clés d'Ecrans › E-09, la note « DESIGN les y inscrit » est levée ; #38 : libellés du sheet « Choisissez une question ». E-09, E-10 et E-16 restent en 🟡 : la planche 3 (texte à 150 %, contrôle accessibilité) reste à faire avant la validation de #72.
- Répond à : —
- Pages : Compte-et-Monetisation (réinscription après suppression), Securite-et-RGPD (risque accepté « Réinscription impossible pendant 30 jours » retiré, manque connu ajouté)
- Quoi : deux décisions d'Ilan. Feu vert sur la planche 1 du ticket #72 : les décisions prises seule et soumises à confirmation dans D-023 sont confirmées, comme celles de D-025 l'ont été par D-026. Réinscription permise : après suppression du compte, la même identité Apple, Google ou e-mail peut aussitôt recréer un compte, qui repart de zéro ; l'ancien reste anonymisé jusqu'à la purge. Le blocage de 30 jours accepté avec la PR #97 n'est plus un risque accepté : c'est un écart à corriger.
- Impact tickets : #128 (créé par MANAGER le même jour) : suppression alignée sur D-025 et réinscription ; PR #97 : écarts commentés. → #128
- Répond à : —
-
Pages : Ecrans (E-09, E-10 et E-16 🟢 : texte à 150 %, lecteur d'écran), Direction-Artistique (Accessibilité : composants denses, lignes en
flexWrap, sheet plus haute que l'écran, boutons des SDK, pas d'opacité sur un texte, réordonnancement, interrupteur, sheet sans croix, toasts),design/design-system/tokens.json(version 6,mappings.accessibility) -
Quoi : planche 3 du ticket #72 validée (texte 150 %, mon profil, suite, Modifier le profil et toast, réglages, connexion, première connexion, profil public, créateur certifié, contrôle accessibilité) : E-09, E-10 et E-16 passent en 🟢, le ticket design est terminé. Un couple de contraste en échec, corrigé sur les écrans validés : le compteur des chips d'ambiance à 80 % d'opacité tombait à 3,69:1 sur Gastronomie et 3,73:1 sur Nature ; il passe en pleine couleur (5,26:1 au pire), PNG mon profil, suite et tri réexportés. Décisions prises seule, à confirmer : barre du haut des pages secondaires (Modifier le profil, Réglages, Supprimer mon compte) plafonnée à 1,3, titre centré sur deux lignes plutôt que coupé ; action du toast et bouton « Continuer avec un e-mail » plafonnés à 1,3 ; lignes des Réglages en
flexWrap, la valeur passe sous le libellé et l'e-mail n'est jamais coupé ; sheet plus haute que l'écran qui s'arrête sous la barre d'état, contenu qui défile, bouton collé en bas ; boutons Apple et Google des SDK laissés à taille fixe (à vérifier sur appareil) ; plus aucune opacité sur un texte. Aucun nouveau reflow surfontScale. Tokens version 6 et design system Widoo republié. -
Impact tickets : #72 : terminé, à fermer ; #38 (connexion, profil, suppression de compte) : texte à 150 % et libellés lecteur d'écran de E-09 et E-10 (barre du haut plafonnée, Réglages en
flexWrap, encart Premium à hauteur libre, toasts, sheets, boutons des SDK, réordonnancement par « Monter » et « Descendre », interrupteur sur toute la ligne), compteur des chips d'ambiance en pleine couleur ; #65 (profil public E-16) : texte à 150 % et libellés, sheet Créateur certifié qui défile ; #21 (thème) et #125 (thème NativeWind) : tokens version 6,mappings.accessibility.denseComponentscomplété, plafond posé dans les composants de base. → #72 - Répond à : —
-
Pages : Ecrans (E-07 réécrit en « Parcours en cours », E-15 réécrit, tous deux 🟡 ; E-08 sans note personnelle ; E-12 : contenu facultatif de l'étape), Personas-et-Parcours-Utilisateurs (PU-04, PU-05, PU-06), Compte-et-Monetisation (compte demandé au lancement), Creation-et-Moderation (note facultative, confirmation après « J'y suis »), Perimetre-MVP (Go et vérification), Modele-de-Donnees (contenu de l'étape, photos d'étape,
planned_routes.personal_noteretiré, statutstopped,closed_by,planned_steps.arrived_at), Analytics (go_arrived,go_stopped,closed_by,route_rated.source), Direction-Artistique (surface sombre étendue à E-07 et au mini-lecteur, section « Parcours en cours »),design/design-system/tokens.json(version 7 :surface-strong-raised,radius-section,mappings.immersive) -
Quoi : planche 1 du ticket #74 validée (en route, sur place, en faisant glisser, contenu de l'étape, contenu, suite, arrivée suggérée, carte du parcours, le parcours étiré, mini-lecteur, de la photo au contenu, sortie terminée, note donnée, composants, icônes). E-07 devient une page immersive sur encre, sur le modèle d'un lecteur de musique : photo de l'étape en plein cadre, statut « En route vers l'étape N » puis « Étape N sur 4, vous y êtes », progression en segments, commandes fixes « Itinéraire » à gauche et « J'y suis » à droite ; le contenu de l'étape se découvre en faisant défiler, en sections ; le parcours est une timeline dans une sheet entrouverte qu'on étire ; la carte du parcours est une page poussée ; réduit, le parcours devient un mini-lecteur au-dessus des onglets. E-15 : récapitulatif, note facultative, commentaire, lieux non vérifiés, sans note personnelle. Choix d'Ilan au cadrage et en revue : arrivée manuelle, suggérée par la position ; compte demandé au lancement ; parcours réduit au-dessus des onglets ; Google Maps pour l'étape suivante, tout le parcours en lien ; note demandée, pas obligatoire ; sortie close seule le lendemain ; « Arrêter le parcours » sans note ; page immersive « à la Spotify » ; contenu du créateur plus riche que deux lignes, dans la page, en sections ; sheet identique au repos et étirée, en timeline ; « Terminer la sortie » en bleu ; Pratique en premier ; carte poussée de droite à gauche avec retour en haut à gauche ; note personnelle retirée. Décisions prises seule, à confirmer : seuil de 100 m pour suggérer l'arrivée, app ouverte seulement ; section Écouter (piste audio du créateur), tranchée par Ilan : hors MVP, colonne gardée, aucun écran ni lecteur ; limites de contenu (1 à 3 points à ne pas manquer, 5 photos par étape, le mot sur 6 lignes puis « Lire la suite ») ; ordre des sections après Pratique ; Ensuite sans rien de plus à saisir, « Le chemin de {prénom} » reprenant la note de transition existante ; page immersive et mini-lecteur sur encre (surface sombre étendue) ; libellés de note de Décevant à Parfait ; commentaire proposé une fois la note donnée ; « Notez ce parcours » dans Passés ; transitions de E-07 et E-15 (Ecrans) ; statut
stopped,closed_by,arrived_atet événements analytics. Tokens version 7 et design system Widoo republié. Les transitions de la maquette ne sont décrites qu'écran par écran, et pas partout : ticket design transversal proposé pour les fixer sur toutes les maquettes validées. -
Impact tickets : #74 : planche 1 faite, planches 2 et 3 restent ; #76 (éditeur) : contenu facultatif de l'étape (le mot du créateur, à ne pas manquer, photos ; pas de piste audio, hors MVP) ; #20 (schéma) :
steps.highlights, piste audio,media.owner_typestep,planned_routes.personal_noteretiré, statutstopped,closed_by,planned_steps.arrived_at; #33 :go_arrived,go_stopped,go_completed.closed_by,route_rated.source; #21 (thème) et #125 (thème NativeWind) : tokens version 7,mappings.immersive; #38 (connexion) : sheet E-10 au lancement d'un parcours ; #66 (parcours Premium dans l'API) : Go d'un parcours Premium, dessiné en planche 2. → #74 - Répond à : —
-
Pages : Direction-Artistique (principe « Un mouvement sobre » ; section « Mouvement » : durées, courbes, ressort des gestes, douze modèles M-01 à M-12, retours tactiles, Réduire les animations, notes pour le code), Ecrans (Navigation ; ligne Transitions sur E-01 à E-05, E-09, E-10 et E-16 ; E-07 et E-15 renvoient aux modèles),
design/design-system/tokens.json(version 8 :mappings.motion) -
Quoi : planche Transitions et mouvement validée (principes, catalogue 1, catalogue 2, écran par écran ; sur le canevas, page « Mouvement », les exemples tournent en boucle). Demandée par Ilan après la planche 1 de #74 : les transitions n'étaient décrites que par endroits. Choix d'Ilan au cadrage : mouvement sobre et natif, identique sur iOS et Android, la card s'agrandit en fiche, vibrations discrètes sur les actions clés. À la validation : durées et courbes à ajuster sur l'app réelle selon le ressenti ; la démo de M-07 est approximative (un fondu à la place du mouvement de caméra). Décisions prises seule, validées avec la planche : six durées nommées (
press100 ms,fade200 ms,base300 ms,page350 ms,map500 ms,shimmer1 200 ms pour le balayage), plus deux valeurs d'appoint demappings.motion.durationsMs:pressRelease200 ms, le relâché d'un appui, etloadingDelay300 ms, le seuil sous lequel un chargement ne s'affiche pas et trois courbes, ressort des gestes sans dépassement, retour d'appui, rien avant 300 ms de chargement, photo à demi-vitesse sur E-05 comme sur E-07, page quittée qui recule d'un tiers, toast chassé vers le bas, vibrations Android (Toggle_On, Confirm, Clock_Tick, Reject). Pour le code : les transitions partagées de Reanimated sont expérimentales, la card vers fiche se code à la main (repli : la fiche monte du bas). Tokens version 8 et design system Widoo republié. -
Impact tickets : ticket design transversal « Transitions et mouvement » (#130, fermé le 2026-09-24 à la validation de la planche) ; passe de réglage sur appareil (#131) ; #21 (thème) et #125 (thème NativeWind) : tokens version 8, constantes de mouvement tirées de
mappings.motion,ReduceMotiondans les composants de base ; #26 (carte) : caméraeaseTo500 ms, tooltip en fondu ; #28 (bottom sheet et cards) :animationConfigsidentique sur iOS et Android, vibration de cran, card vers fiche ; #29 (filtres) : sheet modale et voile ; #30 (recherche) : sheet au cran plein avec le clavier ; #37 (fiche) : ouverture depuis la card, fermeture au glissé, photo à demi-vitesse ; #62 (liste « Voir tout ») : page poussée ; #38 (connexion, profil, suppression de compte) : pages poussées, sheets, toasts et vibrations ; #65 (profil public) : page poussée, sheet Créateur certifié. → #131 - Répond à : —
- Pages : Architecture-Technique (choix « Style » : résultat de l'essai NativeWind ; section Mobile, Style : ce que la livraison précise), Roadmap (epic Socle technique faite ; #133, #134 et #135 ajoutés)
-
Quoi : l'essai de compatibilité de NativeWind prévu par D-024 est concluant (résultat sur #125) : NativeWind 4.2.7, dernière version stable, et Tailwind CSS 3.4.19, avec Expo SDK 57 et React Native 0.86 ; rendu et rechargement à chaud vérifiés en build de développement, sur simulateur iOS 26.4 et émulateur Android API 34. Écartée : la v5 de NativeWind, qui n'existait qu'en RC. La PR #132, fusionnée le 2026-09-25, livre D-024 (#125 est fermé) et le précise :
packages/tokensgarde la copie detokens.jsonet en génère le preset Tailwind et le module typé@widoo/tokens; le preset de NativeWind garde ses plugins, son thème est écarté, seuls les tokens restent ; l'ombreshadow-tabbarest posée par leboxShadownatif, une classe d'ombre devenant uneelevationAndroid ; les animations passent par Reanimated etmappings.motion, jamais par les classestransition-*ouanimate-*, qui feraient remonter le composant ; unPressablene prend pas destyleen fonction ; avec pnpm,react-native-css-interopest une dépendance directe de l'app ; un seulStyleSheetrestant, le voile animé du bouton. Sur Android,Textgarde l'interligne de la police, parce qu'Android 14 rogne les jambages à 150 % : la règle reste à valider dans Direction-Artistique par #135, elle n'est pas tranchée ici. Aucune nouvelle décision : la page consigne ce qui a été décidé et livré. Architecture-Technique reste 🟡 et la section Style ne passe pas en 🔵 : la page n'a jamais été validée en 🟢, et la section attend #135. Roadmap : les dix tickets de l'epic Socle technique, tous fermés comme l'epic, passent de « prêt » à « fait », le mot du champ Préparation du Project pour un ticket fermé. - Impact tickets : aucun ticket à créer ni à amender. #133, #134 et #135, créés par MANAGER le 2026-09-25, sont reportés dans la Roadmap. Les règles de la section Mobile, Style s'appliquent aux tickets mobile qui animent un écran (#26, #28, #29, #30, #37, #62, #131) ; aucun ne prescrit le contraire.
- Répond à : —
-
Pages : Orchestration (relue par Ilan, 🟢 Validé), Ecrans (budget de la card E-01 et E-04, tuiles de la fiche E-05), Direction-Artistique (format du budget) ; Perimetre-MVP, Personas-et-Parcours-Utilisateurs (PU-04) et API (
/me/planned/:id/maps-url: plus de limite de points, une URL par étape), alignés ensuite sur Google Maps étape par étape -
Quoi : relecture de la page Orchestration par Ilan le 25 septembre. Go : plus de lien Google Maps unique, Google Maps s'ouvre étape par étape depuis le parcours en cours (D-029). Budget : « ≈ 25 € par pers. », somme des coûts arrondie à 5 €, « Gratuit » si elle est nulle ; la fourchette de ±20 % disparaît. Recalcul de nuit : un parcours publié qui viole une règle bloquante est marqué « à corriger » et son auteur notifié ; il n'est dépublié que si un lieu est fermé définitivement. Cache Mapbox Directions : durée de stockage selon les CGU de Mapbox, 30 jours à défaut. Seuils des règles de cohérence conservés, dans
settings, réglables sans déploiement. Décision d'Ilan du 25 septembre : le symbole « ≈ » remplace « env. », jamais employé ; « ≈ 5 € » pour une somme non nulle qui s'arrondirait à zéro ; lecteur d'écran « environ 25 euros par personne » ; « Gratuit » inchangé. Précision ajoutée par MANAGER, à confirmer : le palier de budget se calcule sur la somme exacte. -
Impact tickets : #28, #37 et #62 : affichage du budget ; #36 : arrondi côté API ; #35 : plus de budget minimum et maximum, seuils dans
settings; #34 : durée du cache Directions ; #40 et #42 : Google Maps étape par étape ; #56 : recalcul de nuit ; #34, #35 et #36 passent enstatus:ready. → #28 #34 #35 #36 #37 #40 #42 #56 #62 - Répond à : —
-
Pages : Ecrans (E-07 et E-15 : états de la planche 2 ; E-08 : parcours arrêtés), Direction-Artistique (alerte d'étape, étape passée, pastille hors connexion, toasts sur la sheet ; règle « vos parcours passés » dans Ton et rédaction), Creation-et-Moderation (note dès la moitié des étapes faites, étapes passées), Modele-de-Donnees (
planned_steps.skipped_at, statut « Arrêté »,closed_byauto, notificationgo_closed), Analytics (go_step_skipped), Personas-et-Parcours-Utilisateurs (PU-04, section Écouter retirée du texte),design/design-system/tokens.json(version 9 :mappings.immersive.stepAlert,skippedStep,offlinePill,toastPlacement) - Quoi : planche 2 du ticket #74 validée (lancement sans compte, un autre parcours en cours, signaler, signalé sur place, étape signalée, étape passée, le parcours après une étape passée, retard, dernière étape, arrêter, hors connexion, notification du matin, E-15 close automatiquement, E-15 sortie partielle, composants, états). Choix d'Ilan au cadrage : une étape signalée fermée propose « Passer cette étape » ; hors connexion, tout le parcours est gardé sur le téléphone au lancement et les réponses partent au retour du réseau ; en cas de retard, heures recalculées et alerte si une étape sera fermée ; un parcours arrêté rejoint les parcours passés, marqué « Arrêté », relançable, sans note. Précision d'Ilan : la note s'ouvre dès que la moitié des étapes est faite, même si d'autres ont été passées. Retours d'Ilan en revue : texte de l'alerte « Arrêter le parcours ? » réécrit (« Vous le retrouverez dans vos parcours passés, avec les étapes déjà faites. ») ; jamais « Passés » seul dans un texte, toujours « vos parcours passés » (règle ajoutée à la Direction-Artistique). Décisions prises seule, validées avec la planche : un seul parcours en cours à la fois (alerte « Arrêter et lancer ») ; alerte de retard quand l'étape sera fermée à l'arrivée ou laissera moins de la moitié du temps prévu ; passer une étape sans confirmation, « Annuler » dans le toast ; notification du matin à 10:00, seulement si la note est possible et pas encore donnée ; toasts posés sur la sheet blanche, jamais sur la page sombre ; sheet « Signaler » sans croix ; parcours déjà noté : la note existante s'affiche et se modifie ; si l'abonnement Premium prend fin pendant la sortie, elle continue. Tokens version 9 et design system Widoo republié.
-
Impact tickets : #74 : planche 2 faite, planche 3 (texte à 150 %, accessibilité) reste ; #20 (schéma) :
planned_steps.skipped_at, notificationgo_closed; #33 :go_step_skipped; #38 (connexion) : sheet E-10 « Connectez-vous pour lancer ce parcours » ; #21 et #125 (thème) : tokens version 9 ; #66 (parcours Premium dans l'API) : sortie non interrompue si l'abonnement prend fin, relance d'un parcours Premium sans abonnement vers E-17 ; #73 (design E-06 et E-08) : carte « Arrêté » relançable dans les parcours passés. → #74 - Répond à : —
-
Pages : Ecrans (E-07 et E-15 en 🟢 : texte à 150 %, contrastes sur photo, lecteur d'écran ; E-07 : Google Maps étape par étape, lien du parcours entier retiré de la sheet, D-032), Direction-Artistique (voiles de la page immersive, texte sur photo contrôlé au pire cas, étoiles de la note en contour, composants plafonnés et lecteur d'écran de E-07 et E-15),
design/design-system/tokens.json(version 10 :mappings.immersive.veilrenforcé,textVeil,scrollDarken,photoText;control-borderpour les étoiles non choisies ;mappings.accessibility: composants denses de E-07 et E-15,immersiveText,ratingInput;mappings.copy: budget « ≈ 40 € par pers. », aligné sur D-032) - Quoi : planche 3 du ticket #74 validée : texte à 150 % (en route, sur place, étape signalée, contenu de l'étape, le parcours étiré, mini-lecteur, signaler, E-15 sortie terminée, E-15 note et lieux) et contrôle accessibilité. Choix d'Ilan au cadrage : à 150 %, le texte monte sur la photo, qui ne change pas, et les commandes restent visibles au repos ; quand « Itinéraire » et « J'y suis » ne tiennent plus côte à côte, J'y suis passe au-dessus (à 150 % sur un écran de 390 pt, ils tiennent encore) ; « Vous semblez être sur place » annoncé une fois par étape ; mini-lecteur plafonné à 1,3, nom sur une ligne. Corrections sur les écrans validés, issues du contrôle au pire cas (photo remplacée par du blanc) : voile du haut renforcé (titre de la barre du haut de 1,90:1 à 4,81:1), voile ancré au haut du texte (statut de 2,39:1 à 8,61:1), photo assombrie jusqu'à 65 % pendant le défilement au lieu de 35 % ; E-15 : étoiles non choisies en contour gris contrôle (3,49:1) au lieu d'un plein gris clair (1,49:1). D-032 appliqué aux maquettes : lien Google Maps pour tout le parcours retiré de la sheet « Le parcours » ; budget en « ≈ » sur les cards du mini-lecteur de l'accueil. PNG réexportés sous le même nom : planche 1 (en route, sur place, en faisant glisser, arrivée suggérée, le parcours étiré, mini-lecteur, de la photo au contenu), planche 2 (signaler, signalé sur place, étape signalée, étape passée, le parcours après une étape passée, retard, dernière étape, arrêter, hors connexion), E-15 sortie terminée et close automatiquement, composants de la planche 1. Décisions prises seule, validées avec la planche : valeurs des voiles et de l'assombrissement ; étoiles en contour ; barre du haut et en-tête compact de E-07, tuiles et barre collée de E-15 plafonnés à 1,3 ; compteur « 100 / 280 » jamais coupé ; sheet « Signaler » arrêtée sous la barre d'état ; le prix d'une étape dans Pratique (« 15 € par pers. », saisi par le créateur) reste exact, hors règle du budget. Tokens version 10 et design system Widoo republié.
-
Impact tickets : #74 : planches 1 à 3 faites, E-07 et E-15 🟢, ticket design terminé ; #42 (E-07) : voiles (
veil,textVeil,scrollDarken), texte à 150 % (bloc qui monte sur la photo, commandes enwrap-reverse, plafonds), lecteur d'écran, plus de lien Google Maps pour tout le parcours dans la sheet ; #64 (E-15) : étoiles non choisies en contour, plafonds 1,3, compteur, lecteur d'écran ; #125 (thème) : tokens version 10. Pas de changement de schéma. - Répond à : —
-
Pages : Ecrans (E-06 et E-08 réécrits, 🟡 ; E-05 : barre collée d'un parcours programmé), Direction-Artistique (section « Programmer et vos parcours » ; segment actif ajouté aux surfaces sombres), Perimetre-MVP (segments de l'onglet Parcours, « Votre sortie »), Personas-et-Parcours-Utilisateurs (PU-03),
design/design-system/tokens.json(version 11 :mappings.planning, segment actif dansdarkSurfacesetsurface-strong, icônesplan-date,other-date,cancel-outing,to-prepare,suggested-time,earlier,later) -
Quoi : planche 1 du ticket #73 validée (jour et heure, préparation et programme, lieu fermé à l'arrivée, autre date, sortie programmée, à venir, favoris, passés, créés, votre sortie, votre sortie, suite, composants, icônes réexportée avec 6 icônes de plus). Choix d'Ilan au cadrage : Programmer = sheet sur la fiche ; lieu fermé au jour ou à l'heure choisis = alerte ambre et heure suggérée, on peut programmer quand même ; onglet en quatre segments (À venir, Favoris, Passés, Créés ; « Enregistrés » devient « Favoris ») ; une sortie programmée a sa page « Votre sortie » depuis À venir. Retours d'Ilan en revue : « À préparer » avant le programme partout ; « Noter » en bouton principal ; icône et « Changer » centrés dans la card de date. Décisions prises seule, validées avec la planche : onglet nommé « Parcours » (les barres d'onglets validées portaient « Sorties » dans leur libellé pour le lecteur d'écran, à aligner dans le composant) ; jours proposés : aujourd'hui, demain, le surlendemain et « Autre date » ; heure réglable par 15 min, départ conseillé proposé ; rappels la veille à 18:00 et une heure avant ; sur la fiche d'un parcours programmé, « Programmer » devient la date et ouvre « Votre sortie » ; statuts des créations : Brouillon, En relecture, Publié, À corriger (
changes_requestedetneeds_fix), Privé ; « Relancer » pour un parcours arrêté ; « C'est parti » actif à tout moment dans « Votre sortie » ; « Votre sortie » sans barre d'onglets. Tokens version 11 et design system Widoo republié. -
Impact tickets : #73 : planche 1 faite, planches 2 (états) et 3 (texte à 150 %, accessibilité) restent ; tickets de construction de E-06 et E-08 : maquette de la planche 1 à rattacher ; ticket des rappels (
/internal/reminders) : la veille à 18:00 et une heure avant ; #125 (thème) : tokens version 11. Pas de changement de schéma (planned_routes.checklistetstarts_atexistent). - Répond à : —
-
Pages : Ecrans (E-07 : états, texte à 150 %, lecteur d'écran ; E-15 : même sheet pour Signaler), Personas-et-Parcours-Utilisateurs (PU-06), Creation-et-Moderation (motifs, seuil de
flagged, alertes de terrain), Modele-de-Donnees (place_signals.reasonetcomment), Direction-Artistique (Parcours en cours : sheet « Signaler »),design/design-system/tokens.json(version 12 :mappings.signal, icônes des motifs) -
Quoi : sheet « Signaler » refaite façon Waze à la demande d'Ilan (captures Waze), validée le 25 septembre ; elle remplace la sheet à radios de la planche 2 de #74 et sa version à 150 % (anciennes planches en Sandbox). Écrans : les motifs, fermé, autre chose, signalé en un appui, à 150 % ; composants, états et contrôle accessibilité mis à jour ; icônes (100). Choix d'Ilan au cadrage : deux temps (grille de motifs, précision quand il y en a une) ; texte seulement pour « Autre » (80 caractères, lu par la modération, l'app ne l'interprète pas) ; motifs de terrain ajoutés ; icônes Phosphor en couleur dans de grands disques, pas d'illustration. Décisions prises seule, validées avec la sheet : sept motifs (Fermé, Horaires faux, Mal placé, Travaux ou accès difficile, Complet ou longue attente, Plus comme décrit, Autre) ; précision de Fermé : aujourd'hui, temporairement, définitivement ; un appui envoie les autres motifs, toast avec « Annuler » ; durées d'alerte aux visiteurs : fermé aujourd'hui jusqu'à minuit, longue attente 3 h, travaux 7 jours, sans passer par
flagged; horaires faux, mal placé, plus comme décrit et autre en modération ; même sheet dans E-07, E-15 et depuis la fiche. Tokens version 12 et design system Widoo republié. -
Impact tickets : #42 (E-07) : nouvelle sheet « Signaler » ; #64 (E-15) : Signaler ouvre la même sheet ; ticket « Migration parcours en cours » ou ticket du schéma des signalements : enum
place_signals.reason+closed_today,works,crowded,not_as_described,commentlimité àother; tickets de l'API des signalements et de la modération (A-03) : alertes de terrain à durée limitée, texte de « Autre » ; #125 (thème) : tokens version 12. - Répond à : —
- Pages : Ecrans (lien Claude Design de E-06, E-07, E-08, E-09, E-10, E-15 et E-16, et en-tête), Direction-Artistique (canevas, planche « Icônes », page « Mouvement », tableau d'accessibilité)
-
Quoi : le canevas Claude Design comptait 211 planches et n'affichait plus les dernières (E-16, Icônes, Mouvement, Moodboard) ; découpé en trois le 25 septembre à la demande d'Ilan, sans rien supprimer. Widoo — Découverte (même lien qu'avant) garde E-01 à E-05, leurs composants et contrôles accessibilité, et le moodboard (64 planches) ; Widoo — Sortie et compte prend E-06 à E-17, les composants et contrôles de #72, #73 et #74, les icônes et le mouvement (109 planches) ; Widoo — Sandbox reçoit les 38 pistes écartées. Mêmes pages, mêmes positions (les composants de Sortie et compte remontés en haut de leur page). Aucune spécification ne change, les PNG de
design/non plus ; le README du design system nomme les nouveaux canevas. -
Impact tickets : aucun changement de contenu. Pour un écran de E-06 à E-17,
scripts/validate-design.shprend désormais--link https://claude.ai/artifact/QAL6Do77Dd9Ma3PJD294cD(à commencer par #73) ; les tickets ouverts qui citent l'ancien lien pour ces écrans (notamment #42 et #64) pointent vers Sortie et compte. - Répond à : —
-
Pages : Ecrans (E-06 et E-08 : planche 2, 🟡), Direction-Artistique (couleurs
error-inketerror-soft, états de « Programmer et vos parcours »), Compte-et-Monetisation (bouton « Créer un parcours » annoncé Premium, sorties Premium après la fin de l'abonnement), Creation-et-Moderation (Refusé et Retiré côté auteur), Modele-de-Donnees (planned_routes.status+missed), API (PATCH /me/planned/:id), Analytics (plan_changed,plan_cancelled,plan_restored,plan_missed,route_planned.source,paywall_shown.sourceplanned), Personas-et-Parcours-Utilisateurs (PU-03),design/design-system/tokens.json(version 13) -
Quoi : planche 2 du ticket #73 validée le 25 septembre (sans compte, modifier une sortie, programme indisponible, hors connexion ; E-08 : sans compte, vides, annuler la sortie, favori retiré, parcours pas fait, parcours offert utilisé, refusé et retiré, Premium terminé, hors connexion ; composants, états). Choix d'Ilan : onglet Parcours sans compte en invitation pleine page ; parcours dont la date passe sans lancement dans vos parcours passés, « Pas fait » et « Reprogrammer » ; « Créer un parcours » annoncé Premium quand le parcours offert est utilisé ; Refusé en rouge avec le motif et « Reprendre », Retiré avec la raison. Retours d'Ilan : « Réessayer » à droite, « Pas fait » et « Prévu le… » au masculin (on parle du parcours). Nouvelles couleurs
error-ink#B42318 eterror-soft#FDECEA (5,75:1), réservées au refus. Choix pris seule, validés avec la planche : programmer quand même quand le programme est indisponible ; pas de programmation hors connexion ; sortie Premium gardée après la fin de l'abonnement ; « Rétablir » après une annulation ; alerte système à boutons empilés.personalNoteretiré de l'API (oubli de D-029). -
Impact tickets : #73 : planche 2 faite, planche 3 (texte à 150 %, accessibilité) reste ; tickets de construction de E-06 et E-08 : maquettes de la planche 2 à rattacher ; ticket de l'API des programmations :
missedposé par le job de 4:00,PATCHavecplanned(Rétablir, Reprogrammer), 402 sur un parcours Premium sans abonnement ; migration deplanned_routes.status(+missed) ; #75 (E-17) : ouvert aussi depuis « Créer un parcours » annoncé Premium et depuis « Débloquer avec Premium » d'une sortie programmée ; #125 (thème) : tokens version 13. - Répond à : —
-
Pages : Ecrans (E-06 et E-08 🟢 : texte à 150 %, lecteur d'écran ; action à droite), Direction-Artistique (composants plafonnés à 1,3, lignes en flexWrap, règle « actions côté pouce »),
design/design-system/tokens.json(version 14 :mappings.accessibility.denseComponents,wrapRows,thumbSide,mappings.planning.rowAction) - Quoi : planche 3 du ticket #73 validée le 25 septembre : huit écrans à 150 % (E-06, jour et heure, programme, lieu fermé, autre date, E-08, à venir, passés, créés, votre sortie) et le contrôle accessibilité (aucun couple en échec ; bouton inactif hors connexion hors exigence). Règle d'Ilan : les actions côté pouce, une action qui passe à la ligne s'aligne à droite ; appliquée à tout #73 (lignes Pas fait et Refusé, « Partir à 14:00 » de l'alerte de lieu fermé, planches de composants : PNG réexportés sous le même nom). E-06 et E-08 validés en entier.
-
Impact tickets : #73 : les trois planches sont faites, E-06 et E-08 🟢, à fermer par
scripts/validate-design.sh 73 --date 2026-09-25 --link https://claude.ai/artifact/QAL6Do77Dd9Ma3PJD294cD; tickets de construction de E-06 et E-08 : maquettes 150 % et contrôle à rattacher, plafonds 1,3 (segments, pastilles, petits boutons, barres collées), actions à droite ; #125 (thème) : tokens version 14. - Répond à : —
-
Pages : Ecrans (E-17 réécrit, 🟡), Compte-et-Monetisation (prix mensuel 3,99 €, essai gratuit de 7 jours), Direction-Artistique (section « Premium (E-17) »,
blueen fond de page), Analytics (trialsur les achats),design/design-system/tokens.json(version 15 :mappings.premium),design/design-system/ruban-widoo.svg(nouveau) - Quoi : planche 1 du ticket #75 validée le 25 septembre (depuis un parcours, mensuel choisi, depuis Créer un parcours, depuis un encart). Choix d'Ilan : page plein écran ; annuel présélectionné ; essai gratuit de 7 jours sur les deux abonnements ; après une v1 jugée « trop utilitaire », piste A parmi trois : tout le fond bleu et le ruban du logo en filigrane (v1 et pistes B et C dans le canevas Sandbox). Prix révisés par Ilan : 3,99 € par mois (au lieu de 4,99 €), 29,99 € par an. Choix pris seule : haut de page selon l'ouverture (photo du parcours ou trois photos) ; deux avantages seulement ; « Le plus avantageux » en pastille dorée.
-
Impact tickets : #75 : planche 1 faite, planches 2 (états) et 3 (150 %, accessibilité) restent ; #67 (RevenueCat et écran E-17) : maquette de la planche 1 à rattacher, produits à 3,99 € par mois et 29,99 € par an avec offre d'introduction de 7 jours, page plein écran bleue (
mappings.premium,ruban-widoo.svg),trialdans les événements d'achat ; #66 (limite de création et parcours Premium dans l'API) : ouvertures de E-17 inchangées ; thème : tokens version 15 (mappings.premium). - Répond à : —
-
Pages : Ecrans (E-04 : tooltip, texte à 150 %, maquettes réexportées ; référence visuelle), Direction-Artistique (
tooltip-min-w, Carte, tabletokens.json),design/design-system/tokens.json(version 16 :size.tooltip-min-wà la place detooltip-w,mappings.mapTooltip) - Quoi : ticket #155 validé le 25 septembre (tap parcours, tap étape, tap Premium sans abonnement, texte 150 %, tap, composants). Choix d'Ilan : la tooltip de la carte n'a plus une largeur fixe de 260 px ; elle prend la largeur de son titre sur une ligne, de 260 px à 80 % de l'écran (312 px sur 390), et le titre passe sur deux lignes au-delà. Choix pris seule : centrée sur son ancre quand c'est possible, sinon ramenée dans l'écran à 16 px du bord, la flèche restant sur l'ancre ; largeur maximale à 150 %. « Montmartre sans les touristes » tient sur une ligne à 288 px.
-
Impact tickets : #155 : fait ; #26 (carte) : largeur mesurée sur le titre, bornée par
tooltip-min-wetmappings.mapTooltip.maxWidthRatio, placement ramené dans l'écran, flèche sur l'ancre ; #21 (thème) et #125 (thème NativeWind) : tokens version 16,tooltip-wrenommétooltip-min-w. - Répond à : —
-
Pages : Direction-Artistique (Mouvement : M-13, ressort de la barre d'onglets, Réduire les animations, règles générales, pour le code ; table
tokens.json), Ecrans (Navigation ; E-01 barre d'onglets ; E-08 transitions),design/design-system/tokens.json(version 16 :motion.springTabBar,motion.tabBar, règle des onglets,patternsM-13) -
Quoi : ticket #156 validé le 25 septembre : planche M-13 (barre d'onglets ; en boucle sur le canevas Sortie et compte, page « Mouvement ») ; principes et écran par écran réexportés sans la règle « changement d'onglet sans animation » de D-030. Choix d'Ilan : la pastille glisse avec un ressort à léger rebond ; le libellé se déroule depuis l'icône ; pas de vibration. Choix pris seule : seule la barre bouge, le contenu de l'onglet change toujours sans animation ; ressort stiffness 380, damping 28, mass 1 (environ 4 % de dépassement, posé en 350 ms environ), seule exception au ressort sans dépassement ; ancien libellé effacé en 100 ms, nouveau déroulé 80 ms après le départ en 200 ms ; icône en fondu enchaîné, du trait au plein ; Réduire les animations : pastille en fondu sur place ; appui sur l'onglet actif sans effet ; segments de l'onglet Parcours toujours sans animation. Correction dans Ecrans : onglets inactifs à icônes au trait, comme
mappings.uiIcons(« fill quand actif »). -
Impact tickets : #156 : fait ; #21 (thème) et #125 (thème NativeWind) : tokens version 16,
motion.springTabBaretmotion.tabBar; barre d'onglets de l'app : M-13 en Reanimated (withSpring,withTiming) avecReduceMotion; #131 (réglage sur appareil) : M-13 à ajouter à la passe. - Répond à : —
- Pages : Direction-Artistique (Accessibilité › Taille de texte : règle « pas d'interligne fixe sur Android » ; Typographie : renvoi sous le tableau des styles), Ecrans (E-01, barre d'onglets : onglets inactifs à icônes normales, pleine seulement sur l'onglet actif)
-
Quoi : la documentation rejoint le code livré par la PR #132 (ticket #125) sur deux points signalés par CODE. (1) Interligne : l'interligne des styles de texte de
tokens.jsons'applique sur iOS seulement ; sur Android, le texte garde l'interligne de la police, parce qu'Android 14 agrandit les grands textes de façon non linéaire et qu'un interligne fixe rogne les jambages à 150 %. Écartés : interligne fixe partout, interligne recalculé selonfontScale, interligne supprimé sur iOS. Le tableau de Typographie vaut pour iOS et les maquettes ;tokens.jsonne change pas. (2) Onglets : E-01 décrit les onglets inactifs à icônes normales (au trait), l'icône pleine étant réservée à l'onglet actif, commemappings.uiIcons(« fill quand actif ») et la planche « Icônes » (D-025) ; le texte avait déjà été corrigé avec D-042, il cite maintenant sa source. -
Impact tickets : #135 : fait, à fermer ; aucun code attendu (le composant
Textet la barre d'onglets suivent déjà ces règles) ; point 1 des découvertes de #21 sur l'Inbox #4 soldé. - Répond à : #135
-
Pages : Ecrans (E-17 : achat, essai déjà utilisé, restauration, hors connexion, lecteur d'écran ; reste 🟡), Direction-Artistique (Premium : états de l'achat), Compte-et-Monetisation (issues de l'achat),
design/design-system/tokens.json(version 17 :mappings.premium.states) - Quoi : planche 2 du ticket #75 validée le 25 septembre (achat en cours, achat réussi, achat impossible, essai déjà utilisé, restauration, rien à restaurer, hors connexion). Choix d'Ilan : achat réussi, E-17 redescend et on revient au contexte débloqué avec un toast ; annulation dans le store sans message, vrai échec en toast « Achat impossible » avec « Réessayer » ; essai déjà utilisé, prix seul et « S'abonner » sans mention de l'essai passé ; hors connexion, page lisible, bouton grisé et ligne « Hors connexion : reconnectez-vous pour vous abonner. ». Choix pris seule : depuis « Créer un parcours », l'éditeur s'ouvre après l'achat ; depuis un encart, l'encart disparaît ; achat en attente en toast d'information ; restauration trouvée en toast « Premium restauré », erreur en toast « Restauration impossible » ; prix jamais chargés remplacés par un squelette ; « Restaurer les achats » inactif hors connexion ; focus sur le titre de la page d'origine après l'achat ; toast de succès avec l'icône de succès habituelle.
-
Impact tickets : #75 : planches 1 et 2 faites, reste la planche 3 (texte à 150 %, contrôle accessibilité) ; #67 (RevenueCat et écran E-17) : états de la planche 2 (achat en cours, annulation, échec, achat en attente, éligibilité à l'essai, restauration, hors connexion),
mappings.premium.states; #66 (limite de création et parcours Premium dans l'API) : débloquer dès le webhook, y compris après un achat en attente ; #21 (thème) et #125 (thème NativeWind) : tokens version 17. - Répond à : —
- Pages : Analytics
-
Quoi : décision d'Ilan : suivre aussi les achats échoués, en attente de validation et les restaurations, pour comprendre pourquoi un abonnement n'aboutit pas. Nouveaux événements
purchase_failed(reason),purchase_pendingetpurchase_restored(found), avecplanettrial. L'annulation par l'utilisateur dans le store reste sans événement dédié (paywall_dismissedsuffit). - Impact tickets : #33 ; #67
- Répond à : D-044
-
Pages : Ecrans (E-17 en 🟢 : ruban encre, texte agrandi), Direction-Artistique (Premium : ruban encre et contrastes ; Accessibilité : réglage de référence, titres plafonnés à 1,2, page qui défile sous une barre collée, toast entier plafonné),
design/design-system/tokens.json(version 18 :premium.ribbon.fillenink,premium.textContrast,premium.largeText,accessibility.referenceFontScale,maxFontSizeMultiplierTitle,scrollEdge) -
Quoi : planche 3 du ticket #75 validée le 25 septembre (texte agrandi, abonnements, encart, achat impossible, contrôle accessibilité) ; E-17 validé en entier. Le contrôle a trouvé un échec : le texte blanc sur le ruban blanc à 16 % tombait à 3,40:1 ; choix d'Ilan entre deux pistes (piste B, fond blue-ink, écartée, dans la Sandbox) : ruban en encre à 16 %, 5,65:1 au pire ; les planches 1 et 2 sont réexportées sous les mêmes noms. Blanc sur
blue: 4,51:1 (et non 4,63:1 comme écrit jusqu'ici). Choix d'Ilan à 150 % : barre du bas collée, bouton plafonné à 1,3 ; photo réduite ; prix sous le libellé. Retour d'Ilan sur la v1 à ×1,5 (« vraiment moche les textes aussi gros et le toast immense », « ça se comprend même pas qu'on peut scroller ») : v2 validée et devenue la règle générale : on simule le plus grand réglage standard (×1,353), titres de 22 px et plus plafonnés à 1,2 comme le font iOS et Android 14, toast entier plafonné à 1,3, contenu coupé sous un fondu de 32 px avec le haut du bloc suivant qui dépasse. Choix pris seule : liens légaux de E-17 en fin de page en texte agrandi ; barre qui prend le fondbluequand le contenu passe dessous ; « Le plus avantageux » et la pastille Premium plafonnés à 1,3. -
Impact tickets : #75 : fait, E-17 en 🟢 ; #67 (RevenueCat et écran E-17) : ruban encre, texte agrandi (
mappings.premium.largeText) ; #21 (thème) et #125 (thème NativeWind) : tokens version 18, plafond 1,2 des titres dans le composantText, toast plafonné en entier ; ticket design transversal à créer : reprendre au réglage de référence les planches « texte à 150 % » validées avant D-046 (E-01 à E-16). - Répond à : —
- Pages : Ecrans (E-01 à E-10, E-15, E-16 : puces « Texte agrandi », liens vers les nouvelles maquettes), Direction-Artistique (Accessibilité : reprise faite)
- Quoi : reprise des planches « texte à 150 % » validées avant D-046 à la règle du texte agrandi (plus grand réglage standard, ×1,353 ; titres de 22 px et plus plafonnés à 1,2 ; toast entier plafonné à 1,3), validée par Ilan le 25 septembre en une fois : 35 écrans (accueil, recherche, filtres, tap parcours, fiche, programmer, parcours en cours, onglet Parcours, profil, connexion, fin de parcours, profil public et les autres dans chaque section de Ecrans) et les six planches « Contrôle accessibilité » réécrites et réexportées sous leur nom. Seules les tailles de texte changent ; contenus, reflows et mises en page validés restent. Deux ajustements : E-06, le programme recalé pour que « Le programme » ne soit plus coupé ; E-07, la sheet « Signaler » à la hauteur de son contenu. Chiffres mis à jour : titre « Parcours » de E-08 à 36 px (au lieu de 45), heure de départ de E-06 à 29 px (au lieu de 36), « Étape suivante : Café Lomi » sur une ligne ; le statut de E-07 en texte agrandi (18 px 700) relève du seuil de 4,5:1 et le tient (6,96:1). Les anciens PNG « texte-150 » restent dans le dépôt pour les entrées précédentes du changelog.
-
Impact tickets : ticket design transversal de reprise, s'il a été créé : fait, à fermer ; #21 (thème) et #125 (thème NativeWind) : rien de neuf depuis D-046 (tokens version 18) ; les tickets dev des écrans repris n'ont rien à changer au-delà du plafond des titres et du toast posés dans le composant
Textet le toast. - Répond à : D-046
- Pages : Ecrans (E-11 : transport retiré, assistant ; E-12 : section écrite, 🟡 ; E-13 : recherche, 🟡)
- Quoi : éditeur de parcours, planche 1 de #76 validée par Ilan le 25 septembre : créer un parcours de trois étapes écran par écran (12 écrans), les autres gestes (10) et les cas (7), plus la planche « Ce que l'éditeur alimente » (trois étapes, lieu touché, ajout avec réservation, revu en D-049, changer un trajet, menu d'une étape, recherche, ce que l'éditeur alimente, les autres dans la section E-12). Choix d'Ilan : assistant en trois étapes (Étapes, Infos, Aperçu) avec barre de progression bleue, les lieux d'abord ; carte + sheet comme l'accueil ; toucher un lieu sur la carte ouvre une bulle, puis la fenêtre d'ajout ; le lieu va à la fin, on le glisse ensuite ; un mode de déplacement par trajet, proposé selon la distance (à pied jusqu'à 1,5 km, métro au-delà) et modifiable ; « Réservation conseillée » ouvre un champ « Lien de réservation » qui accepte le lien affilié du créateur, avec la case « C'est un lien affilié » ; toucher une étape dans la liste ouvre son menu (Modifier, Voir sur la carte, Monter, Descendre, Retirer), la poignée ou l'appui long la déplace ; zone de la barre d'état en blanc au-dessus de la carte ; même chemin pour un parcours privé ou publié. Décisions prises seule : temps et coût préremplis selon la catégorie et la gamme de prix, réglés au pas ; « Départ conseillé » réglable en tête de la liste ; la liste reprend la timeline de E-05 ; lieux Widoo en disques blancs, étapes pleines et numérotées ; « Le chemin » écrit dans la fenêtre du trajet ; un résultat de recherche ouvre directement la fenêtre d'ajout ; réservation activée d'office pour un musée ; retrait sans confirmation avec « Annuler » ; brouillon sans titre « Nouveau parcours » dans Créés. Pistes écartées dans la Sandbox (v1 en liste, fiche courte sans voile, menu à l'appui long, bouton « … »).
-
Modèle et règles (reportés le 2026-09-25 dans Modele-de-Donnees, Orchestration et Creation-et-Moderation) :
steps.transition.modechoisi par trajet (proposé selon la distance),routes.transportcalculé depuis les trajets (mode qui couvre le plus de distance, les autres en valeurs secondaires du filtre) ; nouveaux champs proposés :routes.suggested_start(départ conseillé),routes.tips(À prévoir, 3 lignes), « Comment venir »,steps.booking_note(80 caractères),steps.booking_is_affiliate; photo d'étape garantie (photo du lieu demandée à la création, avertissement sinon). Charte de publication, règle 5, à modifier : liens affiliés du créateur autorisés et signalés « Lien affilié » ; tranché par Ilan le 2026-09-25 : le lien du créateur passe avant le lien partenaire de Widoo (Compte-et-Monetisation) ; pas de vérification juridique au MVP. Libellés « à pied » de E-05, E-06, E-07 à décliner par mode (« en métro », « à vélo », « en voiture ») ; « Itinéraire » de E-07 dans le mode du trajet ; mention « Lien affilié » près de « Réserver ». -
Impact tickets : #45 (éditeur E-11, E-12, E-14 : carte + sheet, bulle, fenêtre d'ajout, liste et menu, trajets) ; #46 (recherche E-13 : autour de l'étape, états) ; #34 (transition par mode choisi, règle de proposition) ; #35 (timeline depuis
suggested_start, transport dérivé) ; #36 (champs exposés) ; #37, #41, #42 (libellés par mode, « Lien affilié », Itinéraire par mode, À prévoir et précision de réservation) ; #53 (charte, contrôle des liens affiliés) ; migration à créer pour les nouvelles colonnes (sur le modèle de #129) ; epic #7. - Répond à : #76
- Pages : Ecrans (E-12 : ajout par la page de l'étape, page de l'étape, alertes de cohérence, 🟡 ; E-13 : création d'un lieu, 🟡)
- Quoi : éditeur de parcours, planche 2 de #76 validée par Ilan le 25 septembre : modifier une étape (7 écrans), créer un lieu (8), alertes de cohérence (4) (page de l'étape, Pratique, nouvelle étape, nouveau lieu, lieu proche, alertes dans la liste, départ conseillé, lieu fermé, les autres dans les sections E-12 et E-13). Révise la planche 1 (D-048) : la fenêtre d'ajout sur la carte est retirée (elle faisait doublon avec la page de l'étape, retour d'Ilan) ; « Ajouter au parcours » ouvre la page de l'étape en « Nouvelle étape », préremplie, et l'étape n'est ajoutée qu'avec « Ajouter comme étape N » (choix d'Ilan : on voit ce qui s'affichera avant d'ajouter) ; un résultat de recherche ramène à la carte, bulle ouverte ; la bulle affiche les réglages proposés ; « Temps au minimum » passe dans la page de l'étape. Dans le wiki, les écrans de la planche 1 sont remplacés (ajouter-etape-1, -2 et -3 et temps-au-minimum retirés ; nouvelle-etape-1, nouvelle-etape-2-reservation et lieu-choisi-dans-la-recherche ajoutés). Choix d'Ilan : page de l'étape dans l'ordre de E-07 ; adresse puis épingle ; photo du lieu facultative, rappelée par une alerte ; alertes sur place avec compteur ; « Changer » sur la grande photo ; « Le chemin » écrit seulement dans la fenêtre du trajet, « Décrire le chemin » depuis la page. Décisions prises seule : mot de 600 caractères ; « Précision » de réservation, 80 caractères ; nom du lieu prérempli avec la recherche ; 14 catégories en chips ; « Accessible à toute heure » ; « Le lieu est » Dehors ou À l'intérieur dans le formulaire ; lieu proche à moins de 50 m au nom proche ; « Réordonner » par plus proche voisin, annulable ; un lieu fermé à l'arrivée propose une heure de départ ; le nouveau lieu est dit en gris sans compter dans les alertes. Pistes écartées dans la Sandbox (fenêtre d'ajout, E-12-v4-*).
-
Modèle et règles (reportés le 2026-09-25 dans Modele-de-Donnees et Orchestration ; statut
unverifiedajouté aux lieux,places.always_openretenu) : nouvelle règlemissing_step_photo: étape sans photo (ni de l'étape ni du lieu), bloquante pour publier, pas pour un parcours privé (Orchestration ;missing_photoreste pour le parcours) ;closed_at_arrivalpropose une heure de départ ;back_and_forth: « Réordonner » applique l'ordre par plus proche voisin ;steps.descriptionlimité à 600 caractères ; « Accessible à toute heure » à représenter (proposé :places.always_open, pour ne pas leverhours_unknown) ; statut d'un lieu créé avant modération à préciser (verification_statusn'a pas de valeur « non vérifié »,unverified_placeen dépend) ; doublon à la création : lieu Widoo à moins de 50 m au nom proche (Creation-et-Moderation). -
Impact tickets : #45 (page de l'étape, ajout par la page, bulle avec réglages proposés, alertes et compteur, « Changer », « Décrire le chemin ») ; #46 (création d'un lieu : adresse puis épingle, lieu proche, horaires avec « Accessible à toute heure », Dehors ou À l'intérieur, gamme de prix, photo facultative) ; #47 (photos d'étape : 5 au plus, ordre, « Changer ») ; #48 (étapes : titre, mot de 600 caractères, points, photos ; soumission bloquée par
missing_step_photo) ; #35 (missing_step_photo,closed_at_arrivalavec heure proposée, réordonnancement par plus proche voisin) ; #53 (lieux créés vus en modération) ; #176 (migration :places.always_opensi retenu, statut d'un lieu non vérifié, limite du mot) ; epic #7. - Répond à : #76
-
Pages : Ecrans (E-11 : infos du parcours, 🟡 ; E-14 : aperçu, soumission et envoi, 🟡 ; E-12 : étape éphémère, textes ; E-13 : lieu éphémère, photos libres ; E-03 : chips d'ambiance), Direction-Artistique (teintes des chips d'ambiance),
tokens.jsonv19 -
Quoi : éditeur de parcours, planche 3 de #76 validée par Ilan le 25 septembre : les infos du parcours en une page (9 écrans, E-11) et l'aperçu, la soumission, l'envoi et leurs cas (9 écrans, E-14 et Parcours › Créés) (infos, le haut, à prévoir, calculé pour vous, aperçu, soumettre, ce qui bloque, envoyé à l'équipe, les autres dans les sections E-11 et E-14). Révise la planche 2 (D-049) : « Lieu éphémère » à la création d'un lieu et « Étape éphémère » dans la page de l'étape, avec une date de fin (retour d'Ilan : événements, expos, pop-ups) (lieu éphémère, date de fin, étape éphémère) ; photos du lieu proposées depuis Wikimedia Commons avec leur crédit (photo proposée) ; textes réécrits pour les visiteurs, plus aucune note de conception dans les écrans (retour d'Ilan) ; la case « C'est un lien affilié » annonce la mention aux visiteurs. Les cinq ambiances sans famille (Romantique, Insolite, Instagrammable, Détente, Sportif) prennent une teinte tirée de leur point, dans l'éditeur et dans les filtres E-03 (compteur en calcul et composants de la recherche réexportés) : 10 tokens
mood-*-softetmood-*-ink(encre à 6:1 au moins sur sa teinte),mappings.moodDots[].chip. Inventaire ce que l'éditeur alimente revu. Choix d'Ilan : une page en sections ; photos du parcours préremplies avec celles des étapes ; « Soumettre » toujours actif, la liste de ce qui bloque s'ouvre au besoin ; un écran de confirmation après l'envoi ; PMR coché par le créateur, phrase générique sinon ; départ conseillé calculé, « Changer » gardé ; À prévoir calculé et saisi ; accès en transport calculé ; Premium hors de l'éditeur, décidé par Widoo (piste : plus de trois étapes, à voir avec le chef de projet) ; mention « Lien affilié » obligatoire ; précision de réservation gardée ; Wikimedia Commons plutôt que Google pour les photos ; toutes les ambiances en couleur ; lieu et étape éphémères ; chips au repos blanches sur le fond gris des sections ; cadenas retiré de « Enregistrer en privé ». Décisions prises seule : titre de 60 caractères ; « Calculé pour vous » en fin de page ; aperçu sous l'en-tête de l'assistant, avec un bandeau ; « Nouveau » à la place de la note ; idées de conseils à toucher ; « Et maintenant ? » en trois temps ; « Publier » pour un compte de l'équipe, « Soumettre les modifications » pour un parcours publié ; valeurs sombres des nouvelles teintes à 4,5:1 au moins (proposition, thème sombre après le MVP). -
Modèle et règles (reportés le 2026-09-26 dans Modele-de-Donnees, Orchestration et Creation-et-Moderation ; pas de vérification juridique au MVP, décision d'Ilan du 2026-09-25) :
routes.titlelimité à 60 caractères ;routes.moodsordonné, la première est la principale (point d'ambiance, ligne « ambiance · quartier ») ;routes.suggested_startdevient l'heure choisie par le créateur, vide = calculé (l'heure la plus proche de 10:00, 14:00 pour une demi-journée, où chaque lieu est ouvert à l'arrivée) ;routes.getting_theresupprimé : l'accès se calcule (station la plus proche de la première étape, données ouvertes d'Île-de-France Mobilités) et se range danscomputed;routes.tipsne garde que les lignes du créateur (3 au plus), les suggestions sont calculées danscomputed, celles que le créateur désactive sont à garder (proposé :routes.tips_hidden, clés des suggestions) ;places.ends_onetsteps.ends_on(date, facultative) avec une règle : programmer après la date le signale (E-06), la date passée, un lieu éphémère sort de Widoo et le parcours passeneeds_fix, auteur prévenu (proposé :ended_place,ended_step) ;media: crédit d'une photo libre (proposé :sourceupload ou commons,author,license,source_url), affiché partout où la photo apparaît, et charte, règle 4, à compléter ; photos du parcours :mediaenowner_type = route, préremplies avec la première photo de chaque étape, 6 au plus,position0 = couverture ; PMR :conditionsne contientpmrque si le créateur l'a coché, « Sans réservation » dérivé ; Premium (routes.access) décidé par Widoo, règle à arrêter par Ilan avec le chef de projet ; libellé « Lien affilié » à faire vérifier par un avocat avant le lancement (communication commerciale identifiable : Code de la consommation L.121-1, LCEN, loi 2023-451). - À reporter sur les écrans validés (planche à prévoir) : E-05, E-06 et E-07 : « Lien affilié » près de « Réserver », « Jusqu'au … » d'un lieu ou d'une étape éphémère, crédit des photos libres.
-
Impact tickets : #45 (E-11 en une page, À prévoir, calculé pour vous ; E-14 aperçu, « Avant de soumettre », écran « Envoyé à l'équipe », cas ; étape éphémère, départ calculé avec « Changer ») ; #46 (lieu éphémère et date de fin ; photos proposées depuis Wikimedia Commons, crédit) ; #47 (photos du parcours préremplies, couverture, crédit des photos libres) ; #48 (soumission : points bloquants listés, révision d'un parcours publié, compte de l'équipe qui publie, envoi différé hors connexion ; titre de 60 caractères) ; #35 (départ conseillé calculé, suggestions « À prévoir », accès en transport, règle de l'éphémère) ; #36 (
computed: accès et suggestions) ; #37, #41 et #42 (mention « Lien affilié », « Jusqu'au … », crédit des photos, après la planche de report) ; #43 (Créés : « Envoyé à l'instant », toast « Enregistré en privé ») ; #29 (teinte des cinq ambiances dans les chips) ; #134 et #149 (tokens v19) ; #53 (nouveaux lieux et photos libres en modération) ; #176 (migration :getting_thereretiré,ends_on, crédit des photos,tips_hidden, titre) ; epic #7. - Répond à : #76
-
Pages : Ecrans (E-11, E-12, E-13, E-14 🟢 : texte agrandi, gestes et lecteur d'écran), Direction-Artistique (Accessibilité : composants denses, troisième reflow, deux actions de même poids, gestes, toast avec « Annuler », champs),
tokens.jsonv20 (mappings.accessibility:reflows,denseComponents,mapNoScale,twoActions,dragAlternatives,fieldBorder;mappings.toast.undo) -
Quoi : éditeur de parcours, planche 4 de #76 validée par Ilan le 26 septembre : 13 écrans en texte agrandi, un par moment (choix d'Ilan) (trois étapes, bulle d'un lieu, page de l'étape, nouveau lieu, à prévoir, aperçu, les autres dans les sections E-11 à E-14) et le contrôle accessibilité (19 couples, aucun en échec ; le plus juste, blanc sur bleu, 4,51:1). E-11 à E-14 sont validés en entier. Choix d'Ilan : 13 écrans ; bulle d'un lieu réduite en texte agrandi à la photo, au nom, à la catégorie et à « Ajouter au parcours » (troisième reflow sur fontScale, comme la bulle de E-04) ; dans l'aperçu, « Soumettre » passe au-dessus en pleine largeur quand les deux boutons ne tiennent plus. Décisions prises seule : barre du haut et étapes de l'assistant, étiquettes de trajet, « Couverture », idées à toucher et « Suggéré » plafonnés à 1,3 ; fond de carte à taille fixe ; ordre des photos sans glisser, par un menu au toucher (« En faire la couverture », « Déplacer à gauche », « Déplacer à droite », « Retirer ») ; épingle posée en touchant la carte ; toasts avec « Annuler » à 6 s ; filet des champs signalé (1,19:1), à passer en
control-bordersi un audit le demande. -
Impact tickets : #76 : les quatre planches sont faites, E-11 à E-14 🟢, à fermer par
scripts/validate-design.sh 76 --date 2026-09-26 --link https://claude.ai/artifact/QAL6Do77Dd9Ma3PJD294cD; #45 (maquettes texte agrandi et contrôle à rattacher ; bulle réduite à fontScale ≥ 1,3 ; barre du haut et étapes de l'assistant à 1,3 ; deux boutons de l'aperçu en wrap-reverse ; menu d'une photo ; toasts « Annuler » à 6 s ; libellés du lecteur d'écran) ; #46 (épingle posée au toucher ; catégories à 1,3) ; #47 (menu d'une photo, ordre et couverture sans glisser) ; #125 (fermé : tokens v20, clés d'accessibilité seulement, à reprendre si le thème ou les composants de base les lisent) ; epic #7. - Répond à : #76
-
Pages : Ecrans (E-05, E-06, E-07 : report de l'éditeur ; E-08 « Votre sortie » : lien affilié ; E-12 : inventaire à jour), Direction-Artistique (Pastilles sur photo : crédit ; section « Mentions de l'éditeur côté visiteur » ; exception à « jamais d'opacité sur un texte »),
tokens.jsonv21 (mappings.photoCredit,affiliate,ephemeral,transitModes,access,uiIcons.ends) - Quoi : report sur les écrans validés de ce que l'éditeur introduit (D-048, D-050), ticket #181 validé par Ilan le 26 septembre : 11 écrans et une planche de composants (crédit d'une photo libre, crédit déplié, étape éphémère, lien affilié, métro, accès calculé, une étape terminée, programmer après la date de fin, Pratique, composants du report, les autres dans les sections E-05, E-06 et E-07). Choix d'Ilan : « Lien affilié » en petit texte gris sous « Réserver », gardé à chaque lien après vérification (une mention dans les CGU ne suffit pas : LCEN art. 20, DSA art. 26 ; aussi pour les liens partenaires de Widoo) ; crédit court « © Auteur » toujours visible sur la photo, rendu discret (pastille encre à 40 %, texte blanc à 72 %, seule exception à « jamais d'opacité sur un texte », hors exigence de contraste), l'appui ouvre licence et source ; « Jusqu'au 17 janv. » sur la ligne de l'étape et en entier dans le détail ; trajet dit par son mode, sa durée et sa distance, le détail reste à Google Maps. Décisions prises seule : exemples J. Moreau et A. Martin ; trajet en métro à 20 min comme le trajet à pied validé ; crédit de E-07 sous le bouton carte ; après la date de fin, alerte de E-06 avec la dernière date possible (« Choisir le samedi 16 janvier »), programmer reste possible, et ligne ambre « Une étape s'est terminée le 17 janvier » sur la fiche ; accès « Métro Abbesses, ligne 12 » et « à 50 m du départ » ; l'année seulement si ce n'est pas l'année en cours ; « Itinéraire » ouvre Google Maps dans le mode du trajet. Sur le canevas Sortie et compte (200 notes au plus), les sous-titres « Créer un lieu (E-13) » et « Alertes de cohérence » passent dans le titre du premier écran de leur rangée.
-
Impact tickets : #181 : fait, à fermer par
scripts/validate-design.sh 181 --date 2026-09-26 --link https://claude.ai/artifact/8xdbKyHFehTvkynTLa8JW6(E-05 et composants ; E-06 et E-07 sur https://claude.ai/artifact/QAL6Do77Dd9Ma3PJD294cD) ; #37 (fiche : crédit sur la couverture et la photo d'étape, « Lien affilié », « Jusqu'au », trajet par mode, accès sur deux lignes, ligne « Une étape s'est terminée ») ; #41 (« Lien affilié » dans À préparer, « Jusqu'au » dans le programme, alerte après la date de fin) ; #42 (crédit sur la photo en grand et « En images », Pratique, trajet par mode, « Itinéraire » dans le mode du trajet) ; #43 (« Votre sortie » : « Lien affilié ») ; #47 (affichage du crédit : author, license, source_url) ; #35 et #36 (fin de validité exposée à l'app, accès dans computed) ; #134 et #149 (icônes hourglass-medium, subway, bicycle, car, arrow-square-out ; tokens v21). - Répond à : #181
-
Pages :
tokens.jsonv22 (mappings.filterIcons.budget,filterIconsNote,uiIcons.open-row,expand-step,collapse-step,remove), Direction-Artistique (Iconographie : exception de « Gratuit », chevrons et croix), Ecrans (E-03, icônes des chips) -
Quoi : réponse à #134, questions 1, 2 et 4 : les quatre icônes de la planche « Icônes » que CODE ne trouvait pas dans les
mappingsy ont maintenant une entrée, au format habituel des notes (nom,bold,fill). Choix d'Ilan :tagest l'icône de la valeur « Gratuit » dansfilterIcons.budget(chip rapide de E-01, panneau E-03), seule valeur de Budget et Durée à avoir une icône ; l'exception est écrite dansfilterIconsNote, Direction-Artistique et E-03.caret-right:uiIcons.open-row(ligne qui ouvre une page).caret-up:uiIcons.collapse-step(replier une étape).xfigurait déjà dansuiIcons.close(x (bold), depuis la version 15) : la vérification de CODE ne l'a sans doute pas lu parce que son nom tient en une lettre ; il gagneuiIcons.remove(x (bold)) pour son second usage, retirer. Décision prise seule :uiIcons.expand-step(caret-down), pendant decollapse-step, pour ne pas déplier une étape avec l'icône declose-sheet. Reste ouvert sur #134 : la question 3 (tailles d'icônesicon-s,icon-m,icon-l), pas tranchée ici. La maquette du panneau E-03 montre encore « Gratuit » sans icône : l'app suittokens.json, la maquette sera réexportée à la prochaine planche qui touche E-03. -
Impact tickets : #134 (synchro de
tokens.jsonv22 ; le générateur doit accepter une seule valeur à icône dans Budget, prérequis #133 ; question 3 encore ouverte) ; #29 (chip « Gratuit » avectag, lu dansfilterIcons) ; #149 (carte d'icônes :tag,caret-right,caret-up,xappelables par leur mapping). La CI du dépôt passe au rouge (« Check design tokens ») jusqu'à la synchro. - Répond à : #134
-
Pages :
tokens.jsonv23 (size:icon-s,icon-m,icon-l), Direction-Artistique (Iconographie, tailles de composants) -
Quoi : réponse à #182 (question 3 de #134, sortie du ticket) : tailles d'icônes, choix d'Ilan, reprise de la proposition de CODE.
icon-s16 px : lignes d'état et pastilles ;icon-m20 px : chips ;icon-l24 px : onglets. Le composantIconprend ces tokens, plus l'échelle d'espacement. -
Impact tickets : #182 (synchro de
tokens.jsonv23 ;Icon,Badge,Chipet barre d'onglets passent aux tokens d'icône) ; #134 (sa question 3 est réglée ici). La CI du dépôt passe au rouge (« Check design tokens ») jusqu'à la synchro. - Répond à : #182
- Pages : Ecrans (lien Claude Design de E-09, E-10, E-11 à E-14, E-16 et E-17, et en-tête), Direction-Artistique (canevas, planche « Icônes »)
-
Quoi : le canevas Widoo — Sortie et compte comptait 243 planches ; sa page ne charge que les 199 premiers fichiers dans l'ordre des noms, si bien que E-17, les icônes et le mouvement ne s'affichaient plus (relevé par Ilan). Découpé le 26 septembre, sans rien supprimer ni modifier : Widoo — Sortie (même lien, renommé) garde E-06, E-07, E-08, E-15, leurs composants et contrôles accessibilité, les icônes et le mouvement (92 planches) ; Widoo — Compte prend E-09, E-10, E-16, E-17, les composants et le contrôle de profil et connexion (67 planches) ; Widoo — Éditeur prend E-11 à E-14 avec l'inventaire « Ce que l'éditeur alimente » et son contrôle accessibilité (84 planches). Mêmes pages et mêmes positions, composants de Sortie remontés en haut de leur page. Règle de rangement : pas plus de 150 planches par canevas. Aucune spécification ne change, les PNG de
design/non plus. -
Impact tickets : aucun changement de contenu.
scripts/validate-design.shprend désormais--link https://claude.ai/artifact/TH3W6izxwR34gaLMrKxSh7pour E-09, E-10, E-16, E-17 et--link https://claude.ai/artifact/FJP8pgQDAH3Pmbec1a4M74pour E-11 à E-14 ; les tickets ouverts qui citent l'ancien lien pour ces écrans pointent vers le bon canevas. - Répond à : —
-
Pages : Ecrans (E-05 : ligne 🟡 et puce « Vérification communautaire » ; E-09 et E-16 : « Sur le terrain »), Creation-et-Moderation (signaux, effets de
stale, signaler un parcours, retour au signaleur, lieux vérifiés), Modele-de-Donnees (route_reports,place_signals.context_planned_route_id,notifications.kindreport_resolved), API (POST /routes/:id/reports,/admin/reports,plannedRouteIdobligatoire,verifiedPlaces), Analytics (route_reported), Personas (PU-06), Direction-Artistique (section « Vérification communautaire », Iconographie),tokens.jsonv24 (mappings.communityCheck,uiIconslast-check,report-route,route-reported,field-work) -
Quoi : planche 1 de #77 validée le 26 septembre (étape à vérifier, signaler le parcours, quel lieu, sur le terrain). Choix d'Ilan : on ne confirme ni ne signale un lieu depuis la fiche sans y être allé, la confirmation à distance (« Toujours ouvert ? Oui ») disparaît ; une étape
stalemontre seulement « Dernière vérification il y a N mois » en petit, avec le sceau au trait, à la place du badge « À vérifier » ; « Signaler ce parcours » en lien gris en bas de la fiche, avec en tête le motif « Un lieu a fermé ou a changé » qui fait choisir l'étape, puis cinq motifs de contenu et « Autre » ; rien sur les cards ; en plus, le retour au signaleur (notification) et la section « Sur le terrain » du profil (piste B sur trois, absente à zéro). Canevas : Découverte, page E-05, rangée « Vérification communautaire » ; Compte, page E-09 ; pistes écartées dans la Sandbox. Décisions prises seule : clés des motifs (place_changed,inappropriate,dangerous_place,hidden_ad,copied_content,false_info,other) ; « Lu seulement par l'équipe Widoo. Le créateur ne sait pas qui a signalé. » ; un signalement de parcours par utilisateur et par parcours sur 7 jours ; notification seulement quand le signalement mène à une correction ; « Pas encore vérifié » sans sceau pour un lieu jamais vérifié ; la date n'est pas répétée dans le détail de l'étape ; « Confirmés pendant ses sorties » sur E-16. -
Impact tickets : #50 (plus de bloc « Toujours ouvert ? » ni de badge
stale: la ligne « Dernière vérification » ; « Signaler ce parcours » et ses deux temps ; pas d'alerte sur les cards, question tranchée) ; #49 (confirmation à distance retirée,plannedRouteIdobligatoire) ; #54 (A-03 : signalements de parcours avec l'étape pourplace_changed,resolveet retour au signaleur) ; #36 (GET /routes/:id: date de la dernière vérification par étape) ; #38 et #65 (section « Sur le terrain »,verifiedPlaces) ; #33 (route_reported). À créer : migrationroute_reportsetnotifications.kindreport_resolved. Restent pour #77 : planche 2 (sans compte, déjà signalé, hors connexion) et planche 3 (texte agrandi, contrôle accessibilité). - Répond à : #77 (planche 1)
-
Pages : Ecrans (E-05 : ligne 🟡, états de « Signaler ce parcours »), Creation-et-Moderation (signaler un parcours : compte, 7 jours, hors connexion ; anti-abus des lieux), API (
myReport, 403 sur ses propres parcours, signal de lieu répété), Direction-Artistique (Vérification communautaire),tokens.jsonv25 (communityCheck.routeReport.states,placeRepeat) -
Quoi : planche 2 de #77 validée le 26 septembre (sans compte, reprise, déjà signalé, hors connexion). Choix d'Ilan : sans compte, sheet E-10 puis reprise sur les motifs ; déjà signalé il y a moins de 7 jours, ligne figée avec la date ; hors connexion, signalement gardé et envoyé au retour du réseau ; pendant une sortie, « Tout allait bien ici ? » reposé même pour un lieu confirmé il y a moins de 7 jours, réponse acceptée sans compter. Canevas Découverte, page E-05, rangée « Vérification communautaire, planche 2 ». Décisions prises seule : « Le compte est gratuit. Il nous aide à écarter les faux signalements. » ; « Envoyer » grisé sans motif ; pas de lien sur ses propres parcours (403 côté API) ; toast d'information hors connexion ; la ligne figée tombe aussi quand l'équipe a tranché ;
myReportdansGET /routes/:id. -
Impact tickets : #50 (états du signalement : connexion et reprise, ligne « signalé le », file hors connexion, pas de lien sur ses parcours ; en Go, la question reste posée) ; #49 (signal de lieu répété sous 7 jours : 200 sans effet) ; #36 (
myReportdansGET /routes/:id) ; #54 (la décision de l'équipe libère la ligne figée). Reste pour #77 : planche 3 (texte agrandi, contrôle accessibilité). - Répond à : #77 (planche 2)
-
Pages : Ecrans (E-05 : 🟢, texte agrandi et lecteur d'écran de la vérification communautaire ; E-09 : 🟢 « Sur le terrain »), Direction-Artistique (Vérification communautaire, texte agrandi),
tokens.jsonv26 (communityCheck.largeText) - Quoi : planche 3 de #77 validée le 26 septembre : cinq écrans en texte agrandi (choix d'Ilan) au réglage de référence (×1,353, titres plafonnés à 1,2, D-046) — dernière vérification, motifs, quel lieu, parcours signalé, sur le terrain — et le contrôle accessibilité : aucun couple en échec, le plus juste blanc sur bleu (4,51:1, règle existante). Règles existantes appliquées (sheet plus haute que l'écran, fondu de 32 px, toast et barre collée à 1,3). Décision prise seule : le sceau de « Dernière vérification » s'aligne sur la première ligne quand le texte passe à la ligne. Canevas Découverte (page E-05, rangée « planche 3 » et contrôle) et Compte (page E-09, rangée texte agrandi).
-
Impact tickets : #77 : les trois planches sont faites, E-05 et E-09 🟢 pour la vérification communautaire, à fermer par
scripts/validate-design.sh 77 --date 2026-09-26 --link https://claude.ai/artifact/8xdbKyHFehTvkynTLa8JW6; #50 (texte agrandi et libellés du lecteur d'écran de la ligne, du lien, des sheets et des toasts) ; #38 et #65 (« Sur le terrain » en texte agrandi et au lecteur d'écran). - Répond à : #77 (planche 3)
- Pages : Architecture-Technique (Environnements, nouvelle sous-section « PostHog et Sentry par environnement »)
-
Quoi : règle des projets PostHog et Sentry par environnement. Développement local : aucune clé PostHog, rien n'est envoyé, journal console seulement (
EXPO_PUBLIC_ANALYTICS_DEBUG=1) ; l'app ignore une clé présente en développement, puisque.env.localest relu à l'exécution. Staging (buildpreview) et production : deux projets PostHog distincts, PostHog Cloud UE, réglages de D-019. Sentry : un projet par surface (widoo-mobile,widoo-api), environnements séparés par le champenvironment, toujours renseigné ; pas de DSN en local par défaut. Clés dans l'environnement EAS du profilpreviewouproductionet dans Secret Manager, jamais dans un fichier versionné ni dans l'environnement EASdevelopment. Écarté : projet PostHog de développement partagé, clé de staging en local, projet PostHog unique filtré par propriété, projet Sentry par environnement. Le traitement des événements de recette du 2026-09-25 reste une action d'Ilan ou Paul, sur le ticket. -
Impact tickets : #162 peut passer
status:readypour la partie code : garde-fou dansapps/mobile/src/analytics(pas de client PostHog quandEXPO_PUBLIC_APP_ENVest vide oudevelopment, clé présente ou non),apps/mobile/.env.example(clé PostHog laissée vide en local, clés dans l'environnement EAS du profil) et README ; à faire hors agents : créer les projets PostHog « Widoo — staging » et « Widoo — production » s'ils n'existent pas, vérifier leurs réglages (D-019), poser leurs clés dans les environnements EASpreviewetproduction, retirer la clé de.env.local. - Répond à : #162
-
Pages : Ecrans (nouvelle section E-18 Premier lancement, 🟡 ; E-06 Rappels ; E-08 Votre sortie ; E-09 Réglages), Direction-Artistique (Logo : fichier source ;
blue-on-strong; Iconographie), Securite-et-RGPD (manques connus),tokens.jsonv27 (mappings.firstLaunch;uiIconsreminders-off,analytics,sign-in; usage deblue-on-strong), logo-widoo.svg (logo source, nouveau) -
Quoi : planche 1 de #185 validée le 28 septembre, sur le cadrage d'Ilan (écran de lancement bleu, consentement en sheet sur l'accueil, position puis consentement, rappels par une sheet puis la fenêtre du système) — écran de lancement, position, mesure d'audience, recevoir un rappel, autorisation des notifications, icône de l'app, rappels désactivés, réglages, mesure d'audience. Logo source fourni par Ilan (
brand/logo.svg, copié endesign/design-system/logo-widoo.svg) : l'icône et l'écran de lancement en partent tels quels ; le ruban redessiné d'une première version est écarté (Sandbox), l'écran de lancement fait sortir les deux branches du W de l'écran (retour d'Ilan). Ordre : écran de lancement, position au premier affichage de la carte, sheet « Mesure d'audience » carte centrée ; notifications au premier « Programmer » seulement. Retours d'Ilan : « Accepter » en bleu (au lieu de deux boutons gris) ; la page Premium gardeblue(#4E74C8) : le bleu du logo ferait tomber le texte blanc à 3,91:1. Décisions prises seules et validées avec la planche : accueil du premier lancement sans compte (« Bonjour », bouton connexion, aucun filtre actif) ; texte de la demande de position ; sheet de consentement sans poignée, non fermable sans choix, texte de la bannière du code ; sheet des rappels montrée une fois, « Activer » de Votre sortie = fenêtre du système ou réglages du téléphone ; interrupteur « Mesure d'audience » sous Langue, avec ou sans compte, coupure sans confirmation ; écran Android 12 = l'icône dans un disque surblue, sans second écran ; variantes iOS 18 sombre et teintée, monochrome Android sans ombre ; fenêtres Android non dessinées. -
À reporter :
app.config:icon(1024, sans transparence),ios.iconsombre et teintée,android.adaptiveIcon(foregroundImage,monochromeImage,backgroundColor#5A7FCF),expo-splash-screen(image du W au cadrage de l'écran,resizeModecover, fond#5A7FCF, Android 12 : icône, fond#4E74C8),NSLocationWhenInUseUsageDescription(texte ci-dessus) ; stockage local du choix de consentement et de « rappels déjà proposés » ; événements analytics éventuels (analytics_consent_given,analytics_consent_refusedne peuvent partir qu'après l'accord : à trancher par le chef). -
Impact tickets : #188 : maquette de l'icône, de l'écran de lancement, de la sheet de consentement et des demandes de permission disponible (planche 1) ; #44 : autorisation des notifications au premier « Programmer », « Rappels désactivés » et « Activer » dans Votre sortie ; #186 et #189 : le retrait du consentement est déjà dessiné dans les Réglages (E-09), la page Confidentialité d'E-19 le reprend ; #61 : icône 1024 des stores =
icon.pngde cette planche. - Répond à : #185 (planche 1)
-
Pages : Ecrans (E-18 🟢 : états, texte agrandi et lecteur d'écran ; E-08 ; E-09), Direction-Artistique (Carte : position approximative),
tokens.jsonv28 (firstLaunch.states,largeText,screenReader,splash.maxMs) -
Quoi : planches 2 et 3 de #185 validées ensemble le 28 septembre (la planche 3 sans cadrage, à la demande d'Ilan). États, sur le cadrage d'Ilan (mes recos, et les quatre cas en plus) — lancement lent (écran de lancement 2 s au plus, puis l'accueil en chargement), hors connexion (gabarit des états de E-01, « Pas de connexion », « Réessayer »), sheet « Mesure d'audience » après le premier accueil chargé, position approximative, politique hors connexion, mesure d'audience coupée (toast), notifications coupées (« Désactivées » dans les Réglages ; « Rappels désactivés » dans Votre sortie, validé en D-060). Texte agrandi : mesure d'audience, recevoir un rappel, hors connexion, rappels désactivés, réglages ; contrôle accessibilité : aucun couple en échec après une correction (bord de la zone de position approximative en
blueplein, 3,92:1 au lieu de 1,91:1), le plus juste blanc sur bleu 4,51:1. Décisions prises seules et validées avec les planches : carte hors connexion en fond uni et en-tête « Hors connexion » ; position demandée même hors connexion ; position précise demandée au lancement d'une sortie seulement ; toast au-dessus de la sheet ; textes des toasts ; « Désactivées » sur la ligne Notifications ; sheet d'état hors connexion relevée en texte agrandi ; geste d'échappement sans effet sur la sheet de consentement, « Plus tard » sur celle des rappels ; « Activer » lu « Activer les rappels ». -
À reporter :
SplashScreen.hideAsync()quand la carte est prête ou après 2 s ; consentement stocké sur l'appareil et proposé au premier accueil chargé (état « jamais proposé » gardé tant qu'il n'a pas été montré) ; iOSrequestTemporaryFullAccuracyAuthorizationavec la cléNSLocationTemporaryUsageDescriptionDictionary(texte ci-dessus) au lancement d'une sortie ; lecture de l'état des notifications (getPermissionsAsync) pour les Réglages et Votre sortie ; client PostHog arrêté (optOut) à la coupure. -
Impact tickets : #188 : maquettes complètes (planches 1 à 3),
needs-designpeut être retiré ; #44 : état des notifications dans les Réglages et Votre sortie ; #186 : la page Notifications d'E-19 part de la ligne « Notifications — Désactivées » ; #185 : les trois planches sont faites, à fermer parscripts/validate-design.sh 185 --date 2026-09-28 --link https://claude.ai/artifact/8xdbKyHFehTvkynTLa8JW6. - Répond à : #185 (planches 2 et 3)
-
Pages : Ecrans (nouvelle section E-19 Pages des Réglages, 🟡 ; E-09 Réglages), Direction-Artistique (Iconographie : icônes des Réglages, logos d'Apple et de Google, drapeaux de langue), API (Conventions :
link_expired;PATCH /me:locale,notificationPrefs;POST /me/devices:locale;POST /me/email,POST /me/email/confirm,DELETE /me/email), Modele-de-Donnees (users.notification_prefsdétaillé,users.locale, tableemail_changes), Perimetre-MVP et Architecture-Technique (français et anglais au MVP),tokens.jsonv29 (mappings.settings;uiIconsnotif-reminders,notif-next-day,notif-my-routes,notifications-off,field-error,phone-language; usage deerror-ink) -
Quoi : planche 1 de #186 validée le 28 septembre, sur le cadrage d'Ilan (e-mail modifiable par lien de confirmation, connexion en lecture seule, un interrupteur par type de notification, français et anglais dès le MVP) — e-mail, nouvelle adresse, adresse déjà utilisée, en attente de confirmation, adresse modifiée, connexion avec Apple, connexion par e-mail, notifications, notifications coupées, langue, langue, anglais choisi. Retours d'Ilan : « Anglais » et non « English » dans l'interface française, drapeaux ronds ; actions de l'attente retouchées par lui sur le canevas (centrées, « Annuler ») ; logo Apple de E-10 au lieu de l'icône Phosphor redessinée. Les « notifications du matin » du ticket sont la notification de 10:00 du lendemain d'une sortie (E-07,
go_closed). Décisions prises seules et validées avec la planche : titre « Connexion » (comme la ligne des Réglages) ; nom de la langue dans sa propre langue en petit dessous ; « Langue du téléphone » en disque gris avec un téléphone ; Union Jack pour l'anglais ; textes des erreurs, de l'attente et des toasts ; renvoi du lien après 30 s ; pas de ligne Notifications sans compte. Décisions prises seules après la validation (texte du wiki, non dessinées) : changement d'adresse par l'API (lien envoyé par Widoo, dans la langue du compte, annulable) plutôt queverifyBeforeUpdateEmailde Firebase, dont le lien ne peut pas être annulé par l'app ;users.localenul = langue du téléphone,localedu téléphone envoyé avec le jeton push ; clésreminders,next_day,my_routes; drapeaux en SVG, pas d'emoji ; « Annuler » lu « Annuler le changement d'adresse ». -
À reporter : lien de confirmation d'e-mail en lien universel ouvrant l'app (même domaine que le lien de connexion de E-10), écran E-mail après confirmation ;
Linking.openSettings()pour « Ouvrir les réglages » ; état des notifications du téléphone (getPermissionsAsync, D-061) pour l'encart ; image officielle du logo Apple et du G de Google dans les assets ; anglais : traductions de toute l'interface (libellés courts à vérifier en anglais), textes serveur (push, e-mails, pages légales) par langue, fiches des stores en anglais, géocodage et noms de zones (Mapbox, languefraujourd'hui) selon la langue. -
Impact tickets : #189 : maquettes des pages e-mail, connexion, notifications et langue disponibles (planche 1) ; confidentialité et informations viennent avec la planche 2,
needs-designreste ; #44 : préférencesremindersetnext_dayrespectées à l'envoi,localedes push ; #59 : rien de nouveau avant la planche 2 (Informations) ; tickets à créer par le chef : anglais au MVP (i18n de l'app, textes serveur par langue, stores en anglais), changement d'adresse e-mail (API et app),users.locale. - Répond à : #186 (planche 1)
-
Pages : Ecrans (E-19 : planche 2 ; nouvelle section E-20 Mise à jour, 🟡 ; E-09 Réglages et sans compte ; E-18 : retrait du consentement, lien et politique hors connexion), Direction-Artistique (Iconographie ; textes longs ; E-20), API (
GET /config:minVersion,recommendedVersion, versions des textes ;GET /legal/:doc;POST /support/messages;GET /me/export), Modele-de-Donnees (tablesupport_messages), Securite-et-RGPD (nouveaux traitements, portabilité, textes rédigés), nouvelles pages Conditions-d-utilisation et Politique-de-confidentialite (brouillons), _Sidebar et Home,tokens.jsonv30 (mappings.settings.privacy,legal,support,withoutAccount,language.routes;mappings.update;uiIconsprivacy-settings,export-data;firstLaunch: retrait etprivacyOfflineretiré) -
Quoi : planche 2 de #186 validée le 28 septembre, sur le cadrage d'Ilan (page Confidentialité qui reprend l'interrupteur « Mesure d'audience » ; export en fichier dans l'app, par la feuille de partage ; textes légaux et aide en écrans natifs ; E-20 plein écran bleu, plus une sheet fermable pour une version conseillée) — réglages, ligne Confidentialité, confidentialité, préparation du fichier, partage du fichier, confidentialité hors connexion, conditions d'utilisation, politique de confidentialité, aide et contact, nous écrire, message envoyé, réglages sans compte, confidentialité sans compte, mise à jour obligatoire, mise à jour conseillée. Page Langue (validée en D-062) : la ligne « Les parcours restent dans la langue de leur créateur. » devient « Les parcours sont traduits automatiquement. Leur version d'origine reste disponible. », après la décision d'Ilan de traduire les parcours (commit 351b927) ; langue et langue, anglais choisi réexportés. Conséquence des écrans natifs, validée par Ilan avec la planche : texte servi par l'API et gardé dans l'app, lisible hors connexion ; le toast « Page indisponible hors connexion » de E-18 (D-061) est retiré et son écran part en Sandbox ; même texte publié sur widoo.app, dont l'adresse est demandée par les stores. Textes rédigés à la demande d'Ilan, en brouillon à relire par un juriste : éditeur Inprogress Agency (choix d'Ilan), contact unique contact@widoo.app (choix d'Ilan). Décisions prises seules et validées avec la planche : ligne Confidentialité (
hand-palm) à la place de l'interrupteur ; pas de titre de section au-dessus de l'interrupteur ; contenu du fichier ; feuille de partage iOS avec cases d'apps neutres ; grand titre dans la page pour les textes légaux ; « L'essentiel » en tête de la politique ; formulaire dans l'app pour « Nous écrire » (sujets, 1000 caractères, version et téléphone joints) ; Réglages sans compte avec encart de connexion ; E-20 surblueet nonblue-on-strong(texte blanc à 3,91:1) ; sheet conseillée une fois par version, jamais au-dessus des sheets du premier lancement. Décisions prises seules après la validation (texte du wiki) :GET /legal/:doc,POST /support/messages,GET /me/exportsynchrone et non conservé, tablesupport_messages; contenu et durées proposés dans la politique (messages au support : 3 ans). -
À reporter : copie des textes légaux livrée avec l'app et mise à jour depuis
GET /legal/:doc;Sharede React Native (ouexpo-sharing) pour le fichier ;Linking.openURLvers la fiche du store pour E-20 ; E-20 contrôlé au lancement avant l'accueil, la version conseillée mémorisée sur le téléphone ; icône de E-18 : le lien de la politique gardearrow-square-outsur la maquette, à remplacer parcaret-rightsi Ilan le souhaite. -
Impact tickets : #189 : maquettes de toutes les pages de E-19 et de E-20 disponibles sauf texte agrandi et contrôle accessibilité (planche 3),
needs-designreste jusque-là ; #59 : écrans légaux, export JSON et contact dessinés ; textes des conditions et de la politique rédigés en brouillon, à compléter et à faire relire ; #188 : retrait de la mesure d'audience depuis Réglages › Confidentialité, plus de toast « politique hors connexion » ; #44 : rien de nouveau ; à créer par le chef : textes légaux servis par l'API (et page web), formulaire de contact (POST /support/messages), mise à jour obligatoire et conseillée si #189 ne les couvre pas assez. - Répond à : #186 (planche 2)
-
Pages : Ecrans (E-19 🟢, E-20 🟢 : texte agrandi et lecteur d'écran), Direction-Artistique (Accessibilité : deux liens centrés, marque au-dessus d'un texte qui grandit),
tokens.jsonv31 (accessibility.centeredLinks,accessibility.decorAboveText,settings.largeText,update.largeText) - Quoi : planche 3 de #186 validée le 28 septembre, sur le cadrage d'Ilan (actions de l'attente l'une sous l'autre ; le W de E-20 remonte d'autant que le texte grandit ; huit écrans les plus à risque) — texte agrandi : en attente de confirmation, notifications, langue, confidentialité, conditions d'utilisation, nous écrire, E-20 obligatoire, E-20 conseillée ; contrôle accessibilité : aucun couple en échec, les plus justes blanc sur bleu (4,51:1, règle existante et fond de E-20) et « Renvoyer dans 30 s » gris sur bleu pâle (4,53:1). Mesure faite avant d'appliquer le choix d'Ilan sur E-20 : au plus grand réglage standard, le texte monte de 55 px et reste à 145 px sous le W ; le W ne remonte donc que si l'écart passait sous 24 px, pour ne pas passer sous le wifi et la batterie (dit à Ilan avant la validation). Décisions prises seules et validées avec la planche : icônes, drapeaux, interrupteurs et radios à taille fixe ; boutons à hauteur libre ; chips de Nous écrire sur deux lignes ; libellés du lecteur d'écran.
-
À reporter : rangée des actions de l'attente en
flexWrapcentrée (columnGap120) ; position du W de E-20 calculée depuis la hauteur du bloc de texte (écart minimal 24 px) ;accessibilityLanguage="en"sur « English » ; navigation par titres dans les textes légaux (accessibilityRole="header"sur le titre et les articles). Point relevé, non traité : à la taille normale, la branche du W de E-20 (comme sur l'écran de lancement) passe au ras de la batterie ; un décalage de 12 px vers la gauche suffirait, à trancher par Ilan. -
Impact tickets : #189 : maquettes complètes (planches 1 à 3),
needs-designpeut être retiré ; #59 : écrans légaux, export et contact complets côté design ; #186 : les trois planches sont faites, à fermer parscripts/validate-design.sh 186 --date 2026-09-28 --link https://claude.ai/artifact/TH3W6izxwR34gaLMrKxSh7. - Répond à : #186 (planche 3)
-
Pages : Ecrans (E-20 : position du W, écart au texte agrandi),
tokens.jsonv32 (update.forced.mark,update.forced.statusBarClearance,update.largeText.forced) - Quoi : E-20 obligatoire, accord d'Ilan sur le point laissé ouvert en D-064 : la branche droite du W passait sous la batterie de la barre d'état. Mesure faite sur le tracé : descendre le W de 12 px, comme d'abord proposé, ne suffisait pas (la branche restait 15 px sur la batterie) ; il descend de 50 px (centre à 350 px du haut) et passe à 8 px sous la batterie ; le texte reste à 150 px sous le W (95 px en texte agrandi). L'écran de lancement n'est pas concerné (branche à 55 px de la batterie) ; la mention « comme l'écran de lancement » de D-064 était une erreur. Réexportés : mise à jour obligatoire, texte agrandi, contrôle accessibilité.
- À reporter : position du W de E-20 : centre à 350 px sur un écran de 844 px, écart d'au moins 8 px avec les icônes de la barre d'état.
- Impact tickets : #189 : position du W de E-20.
- Répond à : point ouvert de D-064 (#186)
-
Pages : API (Conventions : listes et clés inconnues de la query ;
GET /routes/search; nouvelle sous-section Card de recherche ;/internal/recommendationet/internal/certificationpassés de la table Admin à la table Interne, avec le jetonINTERNAL_TOKEN), Filtres-et-Recherche (Taxonomie : palier de budget ; Recherche par zone : seuil, clusters et marqueurs de la carte ; Recommandation : composantes et interprétations), Modele-de-Donnees (routes.computed: budget ;routes.recommendationdétaillé ;settings:search.cluster_area_km2,recommendation.weights; note sous la requête centrale) -
Quoi : le wiki décrit la recherche livrée par #25, #161, #63 et #170. (1) Listes de la query en clé répétée, avec ou sans crochets, doublons retirés ; toute clé inconnue ou valeur hors taxonomie répond 400
validation_error, jamais un résultat non filtré. (2) Clusters sur une grille de 8 × 8 de la zone affichée, placés à la moyenne des départs, 200 au plus : validés, parce qu'aucun référentiel de quartiers n'existe et qu'une grille garde la réponse cachable ; l'agrégat par quartier (polygones à importer) est écarté au MVP. (3)search.cluster_area_km2(40 km², relue chaque minute) etrecommendation.weightsajoutées àsettings. (4) Marqueurs : décision prise seule, à relire par Ilan : la carte affiche la première page, 50 parcours au plus, les mieux classés ; plafond voulu au MVP (densité du lancement, coût mémoire des marqueurs photo mesuré à 200) ; si la densité le dépasse souvent, on baisse d'abordsearch.cluster_area_km2; la réponse dédiée à la carte (épingles légères) est écartée tant que ce levier suffit. (5) Card :steps[]=category,location,name,durationMin(nameetdurationMinànullsur un Premium, D-014), un Premium n'exposant que son départ plusstepCount(#161) ;budgetPerPersonEursomme exacte, palier dérivé de la même somme (D-032, #170) ;reasonavecsort=recommended(near_youavecdistanceM,top_rated,verified,fresh,good_timing,official, ounull). Décision prise seule : la card gagnesteps[].photoUrl(vignette du lieu,nullsans photo et sur un Premium), la tooltip retombant surcoverUrl, pour la photo de lieu de la maquette E-04 et la tooltip d'une étape touchée (#153). Interprétations de #63 consignées : fiabilité 0,5 + 0,5 × part de lieux vérifiés, 0 si un lieu estflagged; fraîcheur 1 jusqu'à 30 jours puis linéaire jusqu'à 0 à 180 jours ; moments déduits de la catégorie de la première étape (tranches à l'heure locale) ;reasonpeut êtrenull; l'app n'envoyant pasnear(Securite-et-RGPD), elle mesure la proximité au centre de la zone et ne reçoit jamaisnear_you. -
Impact tickets : #26 : critère « 200 marqueurs sans chute de fluidité » à ramener à 50 (première page), sans code ; ticket de code à créer :
steps[].photoUrldans la card de recherche (API,packages/shared, tooltip de E-04), prérequis de #153 pour la photo de l'étape touchée ; vignettes de lieu (environ 200 px) pour les marqueurs et la tooltip, avec le stockage des médias, si aucun ticket ne les couvre ; aucun code pour les points 1, 2, 3 et pourreason, déjà livrés. #164 peut être fermé. - Répond à : #164
-
Pages : Analytics (Propriétés communes ; Découverte :
filters_applied,weather_section_shown,result_card_viewed,section_opened,list_sorted,route_opened, règles de la découverte) -
Quoi : (1) Zone : la phrase « la zone est réduite à l'arrondissement ou au quartier » est retirée ; aucune position ni zone n'est envoyée,
city(slug) est le seul lieu ; une lecture par secteur se fait côté données parroute_id(arrondissement du départ du parcours). Écartée : une propriété de zone de recherche, qui situerait l'utilisateur.session_idest celui de PostHog ($session_id). (2)result_card_vieweds'émet aussi dans « Voir tout », avecsheet_level=list; il gagnesectionpartout etsortdans la liste. (3) Météo :weather_banner_shownetweather_banner_tappedretirés ;weather_section_shown(condition:rainy,sunny) à l'entrée de la section à l'écran ;weather_section_openedn'est pas créé,section_openedavecsection=weatherle couvre ; valeurweatherretirée defilters_applied.source(la météo n'applique aucun filtre, D-010). (4)section_opened(section,sheet_level,sort,results_count) au « Voir tout » d'une section ;list_sorted(section,sort,previous_sort) au changement de tri. Clés desection:nearby,weather,signature. Pas d'événement au tap sur une étape ni à la sélection d'un parcours sur la carte ;route_openedgagnestep_indexquand la fiche s'ouvre à une étape touchée (#153). Décisions prises seules, à relire par Ilan. -
Impact tickets : ticket de code à créer (catalogue
packages/shared/src/analytics.tset émission dans l'app) : retirerweather_banner_shown,weather_banner_tappedet la valeurweatherdefilters_applied.source; ajoutersectionetsortàresult_card_viewedetlistàsheet_level, l'émettre dans « Voir tout » (#62) ; ajoutersection_openedetlist_sorted; ajouterstep_indexàroute_opened. #31 :weather_section_shownseulement, plus deweather_section_opened(son « Voir tout » émetsection_opened) ; #153 :route_openedavecstep_index. #165 peut être fermé. - Répond à : #165
- Pages : Ecrans (nouvelle section Site web : E-21 — Site widoo.app 🟡, landing responsive et lien d'un parcours)
-
Quoi : planche 1 de #187 validée le 28 septembre, sur le cadrage d'Ilan : une seule landing responsive sur
widoo.app, qui remplace la page de liste d'attente ; pas de version web d'un parcours ; ouverte par un lien de parcours, la même page avec la carte du parcours en tête ; parcours retiré : un encart, puis la landing ; lien différé pour ouvrir le parcours une fois l'app installée ; direction « Le plan de Paris », textes pour le référencement (que faire à Paris, idées de sortie, balade, sorties par envie), vouvoiement vivant. Planches : landing, ordinateur, landing, téléphone et suite, lien d'un parcours, téléphone, parcours privé, parcours retiré, lien d'un parcours, ordinateur. Retours d'Ilan intégrés : hero dans un cadre arrondi sous le header, parcours visible sur le plan le long des rues, logo en chemin, logos dans les boutons des stores et deux boutons de même largeur, quartiers sur une carte, questions en tuiles, W du bandeau final tourné, notes étoilées des parcours d'exemple, « Widoo vous dit exactement quoi prévoir et quoi réserver » dans « Programmez-la », passe d'animation. Avis dans la hero : Ilan demandait des avis inventés présentés comme ceux de l'app, refusé ; gabarit à la place, masqué tant qu'il n'y a pas de vrais avis. Décisions prises seules : wordmark « widoo » en minuscules à côté de l'icône ; logo Apple de E-10 et logo Google Play en attendant les badges officiels ; QR code verswidoo.app/app; « Ouvrir dans l'app » plutôt que le seul badge (navigateurs intégrés des messageries) ; parcours privé sans note ; pastille de note masquée sans avis ; questions « Widoo est-il gratuit ? » et « Puis-je créer mon propre parcours ? » réécrites après la validation pour suivre la révision du modèle économique du même jour (création gratuite et sans limite ; Premium par abonnement avec essai de 7 jours, pass de 7 jours ou à l'unité) ; page du téléphone sur deux planches (limite de 8 000 px du canevas). -
À reporter : site statique ou rendu côté serveur, pour le référencement et l'aperçu Open Graph des pages
/r/; pages/r/ennoindex;hreflangfrançais et anglais ;widoo.app/appredirige vers le store selon le téléphone (page du site sur ordinateur) ; carte d'un lien lue surGET /routes/:id(?token=pour un parcours privé,410avec la date du retrait → encart « Ce parcours n'est plus disponible », lien inconnu → même encart), sans jamais afficher le détail des étapes ; bloc d'avis et pastilles de note alimentés par de vraies données seulement ; mouvement : états de départ dans les keyframes (animation-fill-mode: backwards),prefers-reduced-motion(tracés affichés, fondu de 200 ms), survols derrière(hover: hover) and (pointer: fine). Point relevé, non traité : avec la règle Premium du même jour (4 étapes ou plus), « Montmartre sans les touristes » serait Premium ; la carte d'un lien vers un parcours Premium n'a pas encore de badge Premium dessiné. -
Impact tickets : #61 : plus de liste d'attente, la landing est E-21 (textes, badges officiels, pages de repli) ; #39 : la page de repli des liens est E-21 (carte du parcours, « Ouvrir dans l'app », privé, retiré) ; #59 et #206 : conditions et politique publiées sur
widoo.app(liens du pied de page) ; tickets à créer : le sitewidoo.app(landing et pages/r/) et le lien différé (Android : Play Install Referrer ; iOS : service tiers ou correspondance par l'API, nouveau traitement à cadrer dans Securite-et-RGPD et la politique de confidentialité) ; #187 : planche 1 faite, restent la planche 2 (e-mail de connexion, captures des stores) et la planche 3 (accessibilité). - Répond à : #187 (planche 1)
- Pages : Ecrans (section « Web, e-mails et stores » : E-22 — E-mails 🟡, E-23 — Fiches des stores 🟢 ; E-21 : planche 2 faite)
-
Quoi : planche 2 de #187 validée le 28 septembre, sur le cadrage d'Ilan (e-mails sobres, les trois ; cinq captures « écran et accroche » sur fond bleu avec le chemin ; français d'abord). E-mails envoyés par Brevo sur un même gabarit : connexion, nouvelle adresse, réponse du support, connexion sur ordinateur, objets et aperçus dans la boîte de réception. Fiches des stores, fichiers prêts à téléverser : captures App Store 1320 × 2868 (1 à 5), Google Play 1320 × 2640 (1 à 5), bannière 1024 × 500, textes des fiches (repris en entier dans Ecrans › E-23). Formats vérifiés sur les règles d'Apple (iPhone 6,9 pouces ; pas d'iPad,
supportsTablet: false) et de Google (côté long au plus le double du court, texte sous 20 % de l'image, ni « meilleur » ni appel à télécharger, bannière obligatoire). Décisions prises seules : identifiants E-22 et E-23 ; expéditeur « Widoo », réponses vers contact@widoo.app ; durée des liens écrite « au bout de quelques heures » (Firebase ne documente pas celle du lien de connexion, environ 6 heures relevées) ; accroches, nom « Widoo : sorties à Paris », sous-titre, mots-clés, description, catégories (Voyages et Style de vie ; Voyages et infos locales) ; écrans des captures rendus à 3x depuis les planches validées, prénom neutre « Camille » sur l'accueil, toast retiré de E-12. -
À reporter : gabarits d'e-mail en HTML de tableau (largeur 600, styles en ligne), logo en PNG,
langsur la racine, versionsfreten(#199) ; bouton en lien plein (<a>stylé) et lien de secours en clair ; la durée réelle des liens remplace « quelques heures » dès qu'elle est fixée ; captures à téléverser telles quelles (PNG sans canal alpha). Proposé, non dessiné : un e-mail à l'ancienne adresse quand le changement est fait. -
Impact tickets : #38 : e-mail de connexion (modèle Widoo envoyé par l'API avec le lien de l'Admin SDK, à la place du modèle Firebase) ; #189 : e-mail de confirmation de la nouvelle adresse ; #206 : gabarit de réponse du support ; #199 : les trois modèles en
freten; #61 : captures, bannière et textes des fiches prêts (restent icône 1024, classification d'âge, URL de confidentialité) ; #201 : fiches anglaises à tirer de E-23 ; #242 : chemins des pages légales à aligner avec les liens de la description ; #187 : planches 1 et 2 faites, reste la planche 3 (accessibilité de E-21 et E-22). - Répond à : #187 (planche 2)
- Pages : Ecrans (E-21 🟢 : tablette et clavier ; E-22 🟢 : mode sombre)
- Quoi : planche 3 de #187 validée le 28 septembre, sur le cadrage d'Ilan : pour le texte agrandi, la tablette seulement (« le reste de l'accessibilité n'est pas utile »), puis, à ma question, mode sombre des e-mails et ordre au clavier en plus. Tablette portrait à 768 px, qui est aussi la largeur utile d'un ordinateur de 1440 px zoomé à 200 % : landing et lien d'un parcours ; deux retours d'Ilan intégrés (« comment ça marche » en trois colonnes sur le chemin ; encart « Une autre question ? » en pleine largeur). Ordre au clavier sur la landing d'ordinateur : 26 arrêts, « Aller au contenu » en premier. Mode sombre des e-mails : connexion, nouvelle adresse, réponse du support, contrastes vérifiés. Décisions prises seules : seuils 768 et 1024 px ; pas de QR code sur tablette ; ancres retirées du header en tablette ; questions avant l'encart de contact dans l'ordre du DOM ; palette sombre des e-mails.
-
À reporter : points de rupture du site à 768 et 1024 px ; lien d'évitement « Aller au contenu » en tête de page (caché jusqu'au focus, cible
#contenusur la hero) ; ordre du DOM de la section des questions ; anneau de focus déjà dans le CSS de la maquette ; e-mails :<meta name="color-scheme" content="light dark">,color-schemeet@media (prefers-color-scheme: dark)avec la palette de E-22, logo PNG sur fond opaque. Point à trancher : relier les parcours d'exemple des envies à leur page/r/. -
Impact tickets : #236 (header, hero) : tablette et lien d'évitement ; #237 (« Comment ça marche », envies, quartiers) : tablette ; #238 (questions, bandeau, pied) : tablette, encart de contact en pleine largeur, ordre du DOM ; #240 (page
/r/) : tablette ; #243 (accessibilité) : ordre au clavier, lien d'évitement, anneau de focus, zoom à 200 % par la mise en page tablette ; #38, #189, #206 et #199 : mode sombre des trois e-mails ; #187 : les trois planches sont faites, à fermer parscripts/validate-design.sh 187 --date 2026-09-28 --link https://claude.ai/artifact/UKbmoyshhK5W7p886QrMH6. - Répond à : #187 (planche 3)
-
Pages : Ecrans (E-01 🟢 : recentrage, raison du classement sur la card ; E-04 🟢 : autres parcours masqués pendant la sélection, étapes rapprochées, tri sans position, raison du classement, Retour Android, lecteur d'écran), Direction-Artistique (Formes et tailles, Iconographie, Carte, Accessibilité, Logo),
tokens.jsonv33 (size:marker-border,route-stroke,route-casing,sheet-half-top,sheet-empty-top,card-photo,card-list-photo, usage demarker-active;uiIcons.rating;motion.springGesture: seuils de repos ;firstLaunch.reminderPermissionetsettings.email.pending: icônes ; nouveauxmapLabelsetrankingReason), Filtres-et-Recherche (Recherche par zone, Recommandation), API (Conventions,/routes/search, Card de recherche), Modele-de-Donnees (media.position), Analytics (Découverte), avatar-widoo.svg -
Quoi : lot des onze questions de recette de v0.2 (
needs-design), cadré avec Ilan puis validé le 28 septembre ; planches sur la page E-04 du canevas Découverte (logo : page Composants), décisions écrites archivées dans le Sandbox. (1) #166 :marker-active(68 px, liseréblue) sert au marqueur de la card en tête du carrousel ; le parcours sélectionné n'a pas de marqueur (tooltip, tracé, étapes, E-04 validé). Sans position, Recommandé se décrit « Qualité et contexte du moment » (planche). (2) #167 : valeurs portées dans tokens.json (liste ci-dessus) ; tracé de 5 px sur liseré blanc de 9 px, repris des maquettes validées ; étoile de noterating:starplein enamber; noms de quartiers en Plus Jakarta Sans 800, police à téléverser dans le compte Mapbox (action d'Ilan). (3) #168 : avatar-widoo.svg, le logo source découpé en disque, un seul fichier pouravatar-setavatar-l(planche). (4) #219 :steps[].photoUrlconfirmé par Ilan ; photo principale d'un lieu = médiaplacede plus petiteposition, à égalité le plus ancien. (5) #220 : D-067 confirmé par Ilan tel quel. (6) #221 : confirmés par Ilan, le plafond de 50 marqueurs, les formules de D-066 etneargardé dans le contrat (autres clients) ; règle du code devalidation_error: 400 pour une query, 422 pour un corps. (7) #222 : choix d'Ilan, seules les raisons qui apportent une information s'affichent, à droite du budget, en texte seulblue-ink12 px 600 : « Moment idéal » (good_timing) et « Récent » (fresh), en anglais « Perfect timing » et « Recent » ;top_rated,verifiedetofficialne s'affichent pas ; pas d'icône, l'étincelle restant à Insolite (choix d'Ilan) ; texte agrandi : seule sur la ligne sous le budget ; lecteur d'écran : à la fin du libellé de la card (planche). (8) #228 : ordre du Retour Android sur l'accueil (tooltip d'étape → tooltip du départ, désélection, sheet au repos, arrière-plan). (9) #229 : « Recentrer » relance la recherche tout de suite et quitte une zone choisie. (10) #230 : marqueurs des autres parcours masqués pendant la sélection (choix d'Ilan) ; étapes rapprochées : tap à l'étape la plus proche du doigt, tooltip qui passe sous l'étape plutôt que de couvrir une étape, zoom si les deux côtés sont couverts, cadrage qui ne descend pas sous le zoom 13 (maquette, règles). (11) #231 :reminderPermission.off.icon=bell-slash (muted). Décisions prises seules : libellés « Moment idéal » (« Idéal en ce moment » ne tenait pas dans la card de 270 px) et « Récent » (« Nouveau » est déjà la pastille des parcours sans avis), montrés à Ilan avant validation ; zooms 13 et 17 ; ordre exact du Retour ; zone quittée au recentrage ;card-list-photo190 px ajouté ; deux autres champsiconqui renvoyaient à une clé deuiIconscorrigés de la même façon (reminderPermission.icon,settings.email.pending.icon) ; départage de la photo principale par la date. -
À reporter : synchronisation de tokens.json v33 (PR sync-tokens ; la CI reste rouge jusqu'à sa fusion, voir #149) ; police Plus Jakarta Sans 800 (TTF ou OTF, pas de WOFF2) téléversée dans le style Mapbox par Ilan, sur le calque des noms de quartiers ; libellés
rankingReasonfr et en dans les traductions de l'app ; avec les marqueurs masqués, « tap sur un autre marqueur » disparaît de la sélection (on revient d'abord à la recommandation). -
Impact tickets : code, à passer
status:ready: #167 (lecture des tokens, clérating, constantes retirées), #168 (Avataravec le SVG), #219 (steps[].photoUrl), #220 (catalogue analytics), #222 (raison sur la card, deux libellés, lecteur d'écran, texte agrandi), #228 (Retour Android), #229 (storediscovery), #230 (marqueurs masqués, tap au plus proche, placement de la tooltip, zoom, cadrage) ; documentation, à fermer : #166 (ticket de code à créer : description de Recommandé sans position dansSortSheet, #62), #221 (aucun code : la règle suit ce que le wiki annonçait,neargardé), #231. - Répond à : #166, #167, #168, #219, #220, #221, #222, #228, #229, #230, #231
-
Pages : Ecrans (E-17 🟢 : trois formules, pass 7 jours, parcours seul, ordre selon le profil, achat sans compte ; E-05 🟢 : encart d'un parcours Premium avec déblocage à l'unité, parcours débloqué, pass activé), Compte-et-Monetisation (présentation des formules, achat sans compte, fin de Premium et création), Direction-Artistique (Premium : trois formules, pastille du pass, encart de la fiche),
tokens.jsonv34 (mappings.premium:hero,benefits,cta, nouveauxplans,passTag,routeCard,prices.passetprices.unit, textes destates) - Quoi : planche 1 de #210 validée le 29 septembre (« ok oui je valide »), sur le cadrage d'Ilan : mettre le pass en avant pour les touristes et les gens de passage, pas en petite ligne, et aux endroits qui incitent à Premium ; dans l'encart de la fiche, achat direct du parcours. Planches sur les pages E-17 du canevas Compte et E-05 du canevas Découverte. (1) E-17, variante A retenue par Ilan : trois formules sur le même plan, « Pass 7 jours » (2,99 €, une seule fois, pastille « Idéal pour un séjour »), « Annuel » et « Mensuel » ; depuis un parcours, « Seulement ce parcours » (1,99 €) en plus ; ligne légale et bouton qui suivent la formule (depuis un parcours, seulement ce parcours, depuis un encart). Variante B (deux onglets « De passage » et « J'habite ici ») écartée, rangée dans le Sandbox avec l'ancienne ouverture depuis « Créer un parcours ». (2) E-05 : encart « Débloquez les 3 autres étapes. », bouton « Débloquer ce parcours · 1,99 € » en achat direct, lien « De passage à Paris ? Pass 7 jours, 2,99 € » vers E-17 pass présélectionné ; achat en cours, fiche déployée sur place avec « Parcours débloqué », pass activé (encart, achat en cours, parcours débloqué, pass activé). Décisions prises seules : ordre et présélection selon le profil, calculés sur le téléphone (langue autre que le français ou région hors de France : pass en tête ; sinon l'annuel) ; achat sans compte, le compte restant facultatif (règle 5.1.1(v) de l'App Store) ; « Seulement ce parcours » aussi dans E-17 ; un seul avantage, depuis un encart ; textes des boutons, des lignes légales, des toasts (pass : date et heure de fin), de l'achat en attente et de la restauration (« Aucun achat Widoo sur ce compte App Store. ») ; photo du parcours réduite à 270 × 112 pour tenir les trois formules au premier écran.
-
À reporter : planche 2 (pass en cours dans les Réglages et mon profil, fin du pass et sorties Premium programmées après, compte facultatif après un achat, E-08 › Créés sans couronne ni « Avec Premium » et limite de 3 parcours en relecture, encart Widoo Premium sans la création dans E-09 et les Réglages, « Votre sortie », texte de création de E-12) ; planche 3 (site : badge Premium sur
/r/et page 404, texte agrandi, contrôle accessibilité, états). Tant que la planche 2 n'est pas faite, E-08 › Créés, E-09 et E-12 décrivent encore l'ancienne ouverture de E-17 depuis « Créer un parcours ». Point technique pour le dev : type de produit du déblocage à l'unité (un seul produit à 1,99 € rattaché au parcours côté serveur dansroute_unlocks, consommable ou non) et du pass (abonnement non renouvelable), restauration de l'un et de l'autre sans compte. -
Impact tickets : #67 (RevenueCat et E-17, reste
needs-designjusqu'à la planche 2) : produits pass 7 jours et déblocage d'un parcours, ordre selon le profil, lien du pass qui présélectionne, achat sans compte,mappings.premiumv34, E-17 ne s'ouvre plus depuis « Créer un parcours » ; #66 (parcours Premium, déblocage à l'unité et limite anti-spam dans l'API) : fin du pass à la minute, parcours débloqué complet pour son acheteur, achats rattachés au compte à la connexion ; #37 (fiche E-05) : nouvel encart, achat direct, fiche déployée sur place,mappings.premium.routeCard; #21 (thème) et #125 (thème NativeWind) : tokens version 34 ; #210 : planche 1 faite, reste ouvert pour les planches 2 et 3. - Répond à : #210 (planche 1)
-
Pages : Ecrans (E-01 🟢 : pass terminé ; E-05 🟢 : compte proposé après un déblocage sans compte ; E-06 🟢 : alerte de fin de pass ; E-08 🟢 : création gratuite, « Votre sortie » après la fin de l'abonnement ou du pass ; E-09 🟢 : encart Widoo Premium, section Premium, parcours débloqués ; E-10 🟢 : ouverture après un déblocage ; E-12 : création sans E-17 ; E-14 🟢 : limite de relecture ; E-17 🟢 : pendant un pass, restauration corrigée ; E-19 🟢 : sans compte après un achat), Compte-et-Monetisation, Direction-Artistique (Premium, Programmer),
tokens.jsonv35 (mappings.premium:promoCard,settingsSection,unlockedPage,passExtend,passEnded,passAlert,accountPrompt,routeCard.lapsed,states.restored;planning.premiumLapsed;planning.createLimitretiré ;submitLimit;uiIcons.unlocked-routes) -
Quoi : planche 2 de #210 validée le 29 septembre (« je valide »), sur le cadrage d'Ilan (quatre choix) : fin du pass par un message à la réouverture, sans notification ; programmer un parcours Premium après la fin du pass : alerte et « Débloquer ce parcours » ; sans compte, une ligne dans les Réglages pour créer un compte ; parcours achetés seuls : une section dans les Réglages. Recommandation du chef de projet, transmise et reprise par Ilan : garder l'achat sans compte, mais proposer un compte juste après un déblocage à l'unité, « pour le garder » ; le pass et l'abonnement se restaurent par le store, les parcours achetés seuls suivent le compte Widoo. Écrans : Réglages, pass en cours, parcours débloqués, sans compte, après un achat, débloqué sans compte, pendant un pass, pass terminé, après la fin du pass, votre sortie, pass terminé, trois parcours en relecture ; revus sous le même nom : encart Widoo Premium des Réglages, de mon profil, de Modifier le profil et de sept autres planches (texte agrandi, mesure d'audience, confidentialité, composants), « Votre sortie » après l'abonnement, profil vide et partiel (« La création est gratuite. »), Créés vide (« Aucun parcours créé pour l'instant »). La planche « Parcours offert utilisé » est rangée dans le Sandbox. Canevas : Compte (E-09, E-17, E-19 ; la page « À valider » reçoit désormais chaque planche à valider, écrans numérotés), Découverte (E-01, E-05), Sortie (E-06, E-08), Éditeur (E-14). Corrections de D-072 : le 5 octobre 2026 est un lundi (fiche « pass activé » et E-17) ; la restauration du store ne rend que l'abonnement et le pass. Décisions prises seules : « Prolonger » ajoute 7 jours au bout du pass, pass en tête pendant un pass, abonnement pris pendant le pass immédiat ; toast de fin de 6 s, une seule fois, seule exception au « pas de toast » de l'accueil ; toast « Pass prolongé » ; textes de l'alerte, de la sheet de compte, de la page Parcours débloqués et des vides ; icône
lock-open. -
À reporter : planche 3 de #210 : site (badge Premium sur
/r/, page 404), texte agrandi et contrôle accessibilité des écrans de #210, reprise des planches d'états de E-17 (achat en cours, impossible, essai utilisé, restauration, rien à restaurer, hors connexion, texte agrandi) qui montrent encore deux formules et « Création de parcours sans limite », et des planches composants et contrôle accessibilité de E-06 et E-08 (« Créer un parcours, avec Premium »). Point technique : rattacher au compte Widoo, à la connexion, les achats faits sans compte (identifiant anonyme RevenueCat versusers.id). -
Impact tickets : #67 (RevenueCat et E-17, reste
needs-designjusqu'à la planche 3) : section Premium des Réglages, page Parcours débloqués, « Prolonger » (pass ajouté au bout), toast de fin du pass à la réouverture, sheet de compte après un déblocage sans compte, restauration de l'abonnement et du pass seulement,promoCard; #66 (API Premium) : prolongation du pass, liste des parcours débloqués de l'utilisateur, rattachement des achats faits sans compte, 429rate_limitedà la soumission ; #37 (fiche E-05) : sheet de compte après un déblocage sans compte ; #41 (Programmer E-06) : alerte de fin de pass et achat du parcours seul ; #43 (Mes parcours E-08) : « Créer un parcours » toujours bleu, vide des créés, encart de « Votre sortie » après la fin de l'abonnement ou du pass ; #38 (connexion et profil E-09, E-10) : encart Widoo Premium, profil vide, nouvelle ouverture de E-10 ; #189 (Réglages E-19) : Réglages sans compte après un achat ; #45 (éditeur) : limite de relecture dans « Avant de soumettre », « Créer un parcours » sans E-17 ; #21 (thème) et #125 (thème NativeWind) : tokens version 35 ; #210 : planches 1 et 2 faites, reste ouvert pour la planche 3. - Répond à : #210 (planche 2)
-
Pages : Ecrans (E-17 🟢 : états de l'achat repris avec les trois formules, achat en attente, texte agrandi, contrôle accessibilité ; E-05 🟢, E-06 🟢, E-09 🟢, E-10 🟢 : texte agrandi des écrans de #210 ; E-08 🟢 : composants et contrôle accessibilité sans « Créer un parcours, avec Premium » ; E-21 🟢 : parcours Premium partagé, page introuvable), Direction-Artistique (Premium ; texte agrandi : bouton « libellé · prix »), Site-Web (page introuvable,
/r/d'un parcours Premium),tokens.jsonv36 (mappings.premium:states.pending,noTrial,restored,nothingToRestore,offline;largeText.priceButton; texte agrandi desettingsSection,passAlert,accountPrompt;sharedLink) ; liens des canevas de D-073 réparés. -
Quoi : planche 3 de #210 validée le 29 septembre (« yes je valide »), sur le cadrage d'Ilan (trois choix) : lien d'un parcours Premium sur le site par une pastille et une ligne, sans prix ; page 404 légère ; accessibilité sur les écrans clés. 21 écrans : (1) E-17, états de l'achat avec les trois formules et le parcours seul : achat en cours, impossible, en attente (nouveau), essai déjà utilisé, restauration, rien à restaurer, hors connexion ; (2) texte agrandi (D-046) : E-17 depuis un parcours, bas de page des formules, depuis un encart, achat impossible ; encart de la fiche d'un parcours Premium (E-05) ; Réglages pendant un pass (E-09) ; pass terminé avant la sortie (E-06) ; compte après un déblocage (E-10) ; (3) contrôle accessibilité de la révision du freemium, qui remplace celui de E-17 du 25 septembre (rangé dans le Sandbox) : aucun couple en échec, les plus justes restent blanc sur bleu et « Prolonger » bleu sur blanc (4,51:1) ; composants de E-06 et E-08 revus (« Créer un parcours » bleu, encart « Pass ou abonnement terminé ») ; (4) site : lien d'un parcours Premium et page introuvable, téléphone et ordinateur. Nouveaux : achat en attente · texte agrandi, parcours Premium · texte agrandi, pendant un pass · texte agrandi, pass terminé avant la sortie · texte agrandi, compte après un déblocage · contrôle accessibilité de la révision du freemium · lien d'un parcours Premium, téléphone · ordinateur · page introuvable, téléphone · ordinateur. Revus sous le même nom : achat en cours · achat impossible · essai déjà utilisé · restauration · rien à restaurer · hors connexion · texte agrandi, depuis un parcours · les formules · depuis un encart · achat impossible · composants de E-06 et E-08, états · contrôle accessibilité de E-06 et E-08 (l'ancien contrôle de E-17 reste en PNG). Canevas : Compte (E-09, E-10, E-17 ; page « À valider » vidée), Découverte (E-05), Sortie (E-06, composants), Web et stores (E-21 ; page « À valider » ajoutée, vide). Décisions prises seules : « Rien à restaurer » dit « Aucun pass ni abonnement Widoo sur ce compte App Store. » ; hors connexion, « reconnectez-vous pour acheter » (le pass et le parcours seul ne sont pas des abonnements) ; toast « Achat en attente » propre à chaque formule ; « Pass Premium restauré » pour un pass retrouvé ; en texte agrandi, un bouton « libellé · prix » passe sur deux lignes, prix dessous, sans le point ; E-09, « Prolonger » sous le libellé, à droite ; page introuvable pour toute adresse hors
/r/(un/r/inconnu garde l'encart, statut 404) ; sur le plan du lien Premium, étapes 2 à 4 en catégorie et cadenas, noms non envoyés par l'API. Montré à Ilan avant validation : les toasts de E-17 posés au-dessus de la ligne d'offre passent sur la dernière formule. -
À reporter : rien pour #210, les trois planches sont validées. Point technique de D-073 toujours ouvert : rattacher au compte Widoo, à la connexion, les achats faits sans compte (identifiant anonyme RevenueCat vers
users.id). -
Impact tickets : #67 (RevenueCat et E-17) :
needs-designà retirer, E-17 complet (états pour les quatre formules, textes de la restauration et du hors connexion, achat en attente par formule, texte agrandi, contrôle accessibilité) ; #37 (fiche E-05) : bouton « libellé · prix » en texte agrandi ; #41 (Programmer E-06) : alerte de fin du pass en texte agrandi ; #38 (E-09, E-10) : section Premium et sheet de compte en texte agrandi ; #43 (Mes parcours E-08) : contrôle accessibilité corrigé (« Créer un parcours, bouton ») ; #240 (page/r/) : parcours Premium (pastille, ligne, étapes verrouillées sans nom, JSON-LD avec le départ seul) ; #239 (API du site) : drapeau Premium, et pas de nom pour les étapes verrouillées ; #233 (socle du site) :not-found.tsxselon E-21 (statut 404,noindex, titre « Page introuvable · Widoo ») ; #243 (accessibilité du site) : lecture de la ligne Premium et de la page introuvable ; #210 : les trois planches validées, à fermer. - Répond à : #210 (planche 3)
-
Pages : API (Conventions : authentification facultative et cache ;
/routes/searchdans Découverte ; Card de recherche :isLocked,steps[],steps[].photoUrl), Compte-et-Monetisation (l'abonné reçoit le détail sur la carte comme dans la fiche) -
Quoi : corrige D-066 sur la card de recherche d'un parcours Premium. D-066 écrivait que les étapes 2 et suivantes d'un parcours
access = premiumne quittent jamais l'API « puisque la recherche est publique », pour tout appelant, abonné compris : un choix de #161, pris sans validation d'Ilan, qui contredit la maquette validée de E-04 (D-014, validée par Ilan le 2026-09-23) : « Parcours Premium sans abonnement : au tap, la carte se recadre mais n'affiche ni tracé ni étapes […] Abonné, le tap validé ne change pas. » Décision de Paul, au nom d'Ilan, le 2026-09-29 : (1)GET /routes/searchreste publique ; sans jeton, ou pour un compte qui n'a pas droit au parcours, la card Premium est verrouillée : départ seul (catégorie et coordonnées,nameetdurationMinànull),stepCountexact, aucune autre donnée d'étape ; (2) avec le jeton valide d'un compte qui a droit au parcours, la card porte toutes les étapes, comme un parcours gratuit, et la carte affiche tracé, étapes et tooltips ; (3) nouveau champisLockedsur la card, que l'app lit plutôt que de déduire l'état deaccess: une card Premium déverrouillée s'affiche comme un parcours gratuit, avec sa pastille Premium ; (4) droit au parcours : aujourd'huiusers.plan = premiumetusers.plan_expires_atnon passé ; pass 7 jours et déblocage à l'unité ajoutés par #66 dans la même règle, centralisée en un seul endroit du code ; (5) cache : sans jeton,Cache-Control: public(30 s, ETag) ; avec un en-têteAuthorization,Cache-Control: privateetVary: Authorization; jeton présent mais invalide ou expiré : 401unauthorized, sans repli silencieux sur la réponse anonyme, pour que l'app rafraîchisse son jeton (le wiki n'avait pas de règle sur les jetons expirés : celle-ci est posée dans API › Conventions pour toute route à authentification facultative) ; (6)GET /routes/search/countne change pas, le comptage ne dépend pas de l'appelant ; (7)steps[].photoUrl(D-066, D-071) suit les étapes : absente des étapes non livrées d'une card verrouillée. Raison : une donnée payante se filtre dans l'API sans dégrader l'abonné, qui doit garder sur la carte l'expérience d'un parcours gratuit. Écarté : réduire la card pour tout le monde au nom du cache public ; faire attendre l'abonné jusqu'à l'ouverture de la fiche (#36). Ecrans › E-04 ne change pas : elle était juste. -
À reporter : l'app envoie son jeton Firebase à
/routes/searchquand l'utilisateur est connecté, rafraîchit le jeton et réessaie sur 401 ; le cache côté app des résultats se vide quand le droit change (connexion, déconnexion, achat, fin du pass). -
Impact tickets : #161 et sa PR #208 : voie abonné à livrer dans la même PR (authentification facultative, cache privé, 401 sur jeton invalide,
isLocked, cards complètes pour un comptepremiumnon expiré) ; #66 (API Premium) : pass 7 jours et déblocage à l'unité dans la même règle de droit, partagée par la recherche et la fiche ; #36 (GET /routes/:id) : même règle de droit que la recherche ; #219 (steps[].photoUrl) : la photo suit les étapes, présente pour une card Premium déverrouillée ; #67 (RevenueCat et E-17) : après un achat ou une restauration, relancer la recherche pour recevoir les cards déverrouillées.
-
Pages : Ecrans (E-05 🟢 : parcours traduit, texte d'origine, avis traduits ; E-07 🟢 : étape traduite, bas de l'étape ; E-15 : rien à dessiner), Direction-Artistique (nouvelle section Traduction automatique ; icône
translated), Modele-de-Donnees (review_translations.source_locale, choix gardé sur le téléphone, parcours lancé gardé en deux langues),tokens.jsonv37 (mappings.translation,uiIcons.translated). -
Quoi : planche de #203 validée le 29 septembre (« yes je valide »), sur le cadrage d'Ilan (quatre choix) : ligne de traduction sous la description ; « Voir l'original » bascule tout le parcours ; avis traduits d'office, bascule globale ; parcours en cours : rappel en bas de chaque étape. 9 écrans, un parcours écrit en anglais par Emma et lu en français : (1) fiche traduite et texte d'origine ; (2) avis traduits et avis dans leur langue ; (3) parcours en cours, étape traduite avec l'audio en anglais, bas de l'étape ; (4) texte agrandi de la fiche et de l'étape ; (5) contrôle accessibilité, aucun couple en échec. Nouveaux : parcours traduit · texte d'origine · avis traduits · avis dans leur langue · texte agrandi de la fiche · étape traduite · bas de l'étape · texte agrandi de l'étape · contrôle accessibilité. Canevas : Découverte (E-05 et contrôle accessibilité), Sortie (E-07), Compte (page « À valider » vidée). Décisions prises seules : la ligne nomme la langue d'origine ; action alignée à droite, sans point médian, qui passe dessous en texte agrandi ; liens en
blue-ink,info-on-strongsur E-07 ; « traduit de l'anglais » sous le prénom d'un avis traduit, en plus de la bascule globale ; choix gardés sur le téléphone, celui des avis indépendant de celui du parcours ; audio jamais traduit, sa langue dite sous son titre et dans son libellé ; noms des lieux, étiquettes et chiffres jamais traduits ; textes d'origine balisés dans leur langue ; parcours lancé gardé en deux langues pour le hors connexion ; textes anglais de la ligne (« Automatically translated from French », « See original ») ; E-15 inchangé. -
À reporter : l'API renvoie, pour un parcours traduit,
translated,sourceLocaleet l'original sur demande (#204) ; pour un parcours lancé, la timeline embarque les deux versions ; chaque avis porte sa langue d'origine et sa traduction. -
Impact tickets : #204 (traduction côté API) :
needs-designà retirer ; original dans la timeline d'un parcours lancé,sourceLocalepar avis, paramètre pour les originaux des avis ; #37 (fiche E-05) : ligne de traduction et bascule du parcours, sous la description ; #64 (avis, E-15) : avis traduits, bascule globale, « traduit de l'anglais » ; #42 (parcours en cours E-07) : ligne en bas de chaque étape, audio dans sa langue, hors connexion en deux langues ; #203 : validé, à fermer. - Répond à : #203
-
Pages : Ecrans, nouvelle section « Marketing » : E-25 🟢 (planche 1 : photo de profil, profils, couverture Facebook, couvertures à la une, carrousel d'un parcours, posts ; planche 2 à venir) et E-24 🟡 (à dessiner, #244). Nouveau canevas Widoo — Marketing (pages À valider, E-25, E-24). 17 PNG dans
design/E-25/. -
Quoi : planche 1 de #249 validée le 29 septembre (« ouais franchement c'est cool je valide »), sur le cadrage d'Ilan : Claude Design seul (Sarah demande à Claude de remplir les gabarits) ; kit avec variantes (fond bleu, fond clair) ; vouvoiement ; photos de Sarah complétées par des photos libres créditées ; 3 posts par semaine et des stories ; parcours de Sarah pas encore prêts (exemple du site). 17 écrans : photo de profil, profils Instagram, TikTok et Facebook (nom, bios en français et en anglais, liens à source), couverture Facebook, 4 couvertures à la une, carrousel d'un parcours (couverture, étape, fin) en bleu et en clair, post idée de sortie et citation d'un vrai avis en bleu et en clair. Décisions prises seules : #249 en deux planches (la 2 : stories, vidéo courte, semaine de lancement, mode d'emploi, lisibilité) ; nom « Widoo : sorties à Paris » comme les stores, identifiant
@widooappproposé ; variables en pointillé rose (identifiant, adresse) et annotations en pastille rose, masquées à l'export ; chemin du logo continu d'une diapo à l'autre, pastille de catégorie posée dessus, drapeau à la fin ; aucune note ni avis chiffré, capture « Votre sortie » plutôt que la fiche (note d'exemple) ; gabarit d'avis sans texte d'exemple ; crédit sous une photo libre, rien sous une photo de Sarah ; icônes à la unepath,map-trifold,megaphone-simple,hand-tap(l'étincelle reste à Insolite) ; texte de 34 px au moins sur 1 080 px, crédits à 30 px ; canevas Marketing à part (E-24 et E-25), plutôt que Web et stores ; pas de nouveau token. -
À reporter : comptes réservés et identifiant confirmé (#248) ; domaine
widooapp.comacheté (le wiki parle encore dewidoo.app, qui n'est pas à Inprogress) ;/app?src=instagram,tiktok,facebookmesurés comme les autres sources (#240, #234) ; liens des réseaux dans le pied de page du site (#238) une fois les comptes réservés. -
Impact tickets : #249 : planche 1 validée, reste la planche 2 ; #248 : nom, photo, identifiant et bios prêts, à reprendre à la réservation ; #238 : liens des réseaux au pied de page, après #248 ; #240 et #234 : sources
instagram,tiktok,facebooksur/appet/r/; #213, #214, #215 : rien de neuf, ils attendent le kit imprimé (#244, E-24). - Répond à : #249 (planche 1)
-
Pages : Ecrans › E-25 🟢 en entier (planche 2 : stories, vidéo courte, première semaine du compte, mode d'emploi, lisibilité) ; 13 PNG dans
design/E-25/; canevas Widoo — Marketing (page E-25, « À valider » vidée) ; documentclaude/widoo-mode-d-emploi-kit-reseaux.mddu projet Claude widoo (mode d'emploi pour Sarah). - Quoi : planche 2 de #249 validée le 29 septembre (« good »), sur le cadrage d'Ilan : stories bilingues sur la même story (français en grand, anglais dessous) ; vidéo filmée par Sarah, habillée en calques transparents ; semaine type = première semaine du compte, mi-novembre ; mode d'emploi en planche et en document du projet Claude. 13 écrans : 6 stories (un parcours, idée de sortie, sondage, annonce de la sortie, compte à rebours, en repérage), vidéo courte (couverture, calque du titre, calque d'une étape, fin), première semaine du compte, mode d'emploi, lisibilité. Décisions prises seules : « Le 12 décembre sur iPhone et Android. » avant la sortie à la place de « App gratuite », date en variable ; pas de citation d'avis avant la sortie ; stickers d'Instagram (lien, sondage, compte à rebours) en emplacements, posés dans l'app, liens à source ; zones libres prudentes (stories 250 px en haut et 280 px en bas ; vidéo 360 px en bas et 160 px à droite, titre dans le 4:5 de la grille) ; texte sur photo sur un voile encre à 80 % au moins ; capture « sur place » de E-07 (sans note) pour l'annonce ; légendes en français avec une ligne en anglais et trois mots-clés ; longueurs maximales des textes dans le mode d'emploi.
-
À reporter : comme D-077 : comptes et identifiant (#248), domaine
widooapp.com, liens des réseaux au pied de page du site (#238), sourcesinstagram,tiktok,facebookmesurées (#240, #234) ; date de sortie à confirmer avant les premières stories d'annonce. - Impact tickets : #249 : les deux planches validées, à fermer ; #248 : rien de neuf depuis D-077 ; #213, #214, #215 : attendent le kit imprimé (#244, E-24), prochaine planche.
- Répond à : #249 (planche 2)
-
Pages : Ecrans › E-24 🟢 planche 1 (autocollant, cartes des hôtes et des hôtels, flyer, fichiers d'impression) ; 10 PNG dans
design/E-24/; canevas Widoo — Marketing (page « E-24 Imprimés », « À valider » vidée) ; documentclaude/widoo-mode-d-emploi-kit-imprime.mddu projet Claude widoo (marche à suivre pour Sarah et pour Claude). -
Quoi : planche 1 de #244 validée le 30 septembre (« je valide »), sur le cadrage d'Ilan : cartes A6 recto verso pour les hôtes et les hôtels, autocollant rond de 9 cm au texte bilingue court, fichiers standard (imprimeur pas choisi), flyer A5 recto verso. Refaite sur ses retours : première version jugée faible, autocollant en sceau refusé, flyer déséquilibré (téléphone agrandi). Choix d'Ilan sur l'autocollant : texte « Adresse recommandée » / « Recommended spot », les trois pistes gardées (pastille, ligne, blanc). Décisions prises seule : QR code du recto des cartes vers l'installation de l'app (aucune page « nos parcours » n'existe) et un QR code par parcours au verso ; trajets depuis le logement en pictogrammes ; pas de nom de parcours sur l'autocollant ; tailles des QR codes (26 mm ; 20 mm au verso des cartes ; 22 mm au verso du flyer) ; papiers conseillés ; préfixes de source
lieu-,hote-,hotel-,flyer-; planches sans repères, repères et règles sur la planche des fichiers d'impression ; 16 QR codes décodés sur un rendu à 300 ppp. -
À reporter : domaine
widooapp.com, adresses/r/et/appavec?src=(#240, #234), comptes (#248) : PDF définitifs en CMJN à générer à l'export, un par partenaire ; date de sortie à confirmer. - Impact tickets : #244 : planche 1 validée ; restent la présentation partenaire (planche 2) et les PDF d'impression (à l'export, après le domaine) ; #213, #214, #215 : autocollant, cartes et flyer prêts pour le démarchage, présentation partenaire à venir ; #248, #240, #234 : QR codes définitifs dès que le domaine et les adresses sont en place ; #238 : rien de neuf.
- Répond à : #244 (planche 1)
- Pages : Securite-et-RGPD › Risques acceptés
-
Quoi : risque accepté consigné : exception d'audit des dépendances limitée à deux alertes élevées sans version corrigée en amont,
node-forge1.4.0 (GHSA-86w9-cpqp-85rv) etbraces3.0.3 (GHSA-vfj7-8cjw-p6xm), ignorées parauditConfig.ignoreGhsasdanspnpm-workspace.yaml. Aucune des deux n'atteint l'app livrée ni l'image de l'API ; exposition limitée aux postes de développement, à la CI et au build EAS. La règle des alertes (Propriétés obligatoires) ne change pas : l'audit continue de bloquer toute autre alerte élevée ou critique. Une seule entrée pour les deux alertes : même décision, même mécanisme, même ticket et même date de révision ; la condition de retrait se lit alerte par alerte. Écartés : bloquer toutes les fusions sans date,--ignore-unfixable, baisser le seuil. Accepté par Paul Thiberville, par délégation d'Ilan, le 2026-10-05 ; révision le 2026-11-05, ou plus tôt dès une versionnode-forge> 1.4.0 oubraces> 3.0.3. - Impact tickets : #279 : l'exception est consignée, le champ « PR » de l'entrée est à compléter à la fusion de sa PR ; #280 : porte la révision du 2026-11-05, pnpm ne sachant pas faire expirer l'exception.
- Répond à : —
-
Pages : Filtres-et-Recherche › Recherche textuelle (deux règles ajoutées) ; API › Découverte (ligne
GET /geocode) ; Ecrans › E-02 (état hors connexion, précision) ; Securite-et-RGPD › Propriétés obligatoires (ligne des clés tierces). -
Quoi : décision du 2026-10-08, prise par Paul Thiberville pour Ilan : au MVP, le géocodage se fait sans cache serveur, avec les résultats temporaires de Mapbox, que ses conditions interdisent de conserver ;
/geocoderépondCache-Control: no-store, limité à 30 requêtes par minute et par IP, l'app gardant son debounce de 300 ms. Raison : éviter une dépense prématurée (les résultats permanents exigent une carte bancaire et une facturation à part chez Mapbox). Écarté pour l'instant : le géocodage permanent (MAPBOX_GEOCODING_PERMANENT=true), qui réactiverait le cache de 24 h déjà prêt dans le code ; question ouverte, à réévaluer avec le budget. Historique local : les « Recherches récentes » ne gardent sur le téléphone que le nom et l'emprise de la zone choisie, jamais la réponse brute de Mapbox ; « une zone récente ouvre l'accueil sur les résultats en cache » désigne le cache des parcours de l'API Widoo (/routes/search), pas un résultat de géocodage. La ligneGET /geocodede l'API ne promet plus de cache et décrit le comportement fusionné par la PR #302 (commit2c59f22) : emprise de l'Île-de-France, zone gardée seulement si chaque mot tapé commence un mot de son nom. La règle des homonymes sans parcours n'est pas tranchée ici (#316), et la limite à l'Île-de-France reste à écrire dans Filtres-et-Recherche avec elle. -
Impact tickets : #306 : décision écrite dans le wiki, reste à la consigner en commentaire sur le ticket (MANAGER) ; aucun ticket de code : le code fusionné par #302 est déjà conforme (aucun cache par défaut,
no-store, 30/min par IP, debounce de 300 ms) ; à vérifier par MANAGER que l'historique local de l'app ne garde que le nom et l'emprise ; #30 : son « cache mémoire ou Postgres 24 h » est obsolète ; #316 : rien de neuf. - Répond à : #306
- Pages : Ecrans › E-01 (Carte : règle « Recentrage toujours visible » ; zone choisie ; états « Aucun résultat », « Hors connexion », « Géolocalisation refusée »).
-
Quoi : décision du 2026-10-09, prise par Paul Thiberville pour Ilan, sur son constat de recette du build preview
f782703a(#319) : sans parcours trouvé, le recentrage était masqué (« Zone et recentrage masqués ») et clignotait pendant la navigation vers une zone vide, alors que c'est là qu'on a besoin de revenir sur soi. Règle : le bouton de recentrage est visible dans tous les états où la carte l'est (résultats, aucun résultat, hors connexion, position désactivée, zone choisie) ; seul « Rechercher dans cette zone » se masque, quand la recherche vient d'être faite ou qu'il n'y a pas de connexion. Pendant la sélection d'un parcours, la règle de E-04 reste : recentrage et bouton de zone masqués. Le comportement du recentrage lui-même ne change pas (D-071, #229). Écarté : masquer le recentrage pour alléger l'état vide. -
Impact tickets : nouveau ticket de code à ouvrir (MANAGER) : recentrage visible en état vide et hors connexion, sans clignotement pendant la navigation,
area:mobile, E-01 ; recette sur appareil au build suivant. Le second constat de #319 (position au bord haut après « Recentrer ») n'est pas une règle de design : il relève d'un ticket de bug, à trier par MANAGER. - Répond à : #319 / #229
- Pages : Ecrans › E-04 (Tap sur un parcours ; Retour Android, réécrit) ; E-01 (Comportement : renvoi vers E-04).
- Quoi : décision du 2026-10-09, prise par Paul Thiberville pour Ilan, qui remplace l'ordre en quatre niveaux de D-071 : avec un parcours sélectionné, le Retour d'Android fait exactement ce que fait un tap ailleurs sur la carte (tooltip fermée, tracé retiré, marqueurs revenus, sheet de retour sur la recommandation) ; une tooltip d'étape touchée n'est pas un niveau à part, un seul Retour ferme toute la sélection. Sans sélection, le Retour garde le comportement du système (quitter l'accueil, app en arrière-plan), quel que soit le cran de la sheet. La liste « Voir tout » est un écran de la pile de navigation : le Retour la ferme comme n'importe quel écran. iOS inchangé. Écarté : un Retour par niveau (tooltip, puis sélection, puis cran de la sheet), jugé trop long.
-
Impact tickets : #228 passe
status:readysur cette règle ; son critère « chaque niveau de l'ordre testé » devient : Retour avec une tooltip de départ, Retour avec une tooltip d'étape (un seul appui ferme la sélection), Retour sans sélection aux trois crans (app en arrière-plan), Retour depuis « Voir tout ». - Répond à : #228
- Pages : Ecrans › E-04 (Étapes sur la carte › Étapes rapprochées).
- Quoi : décision du 2026-10-09, prise par Paul Thiberville pour Ilan, sur les étapes rapprochées : le tap va à l'étape la plus proche du doigt ; la tooltip d'une étape se place sans jamais couvrir une étape voisine : au-dessus par défaut, en position « dessous, flèche en haut » (déjà prévue par D-071) quand « dessus » en couvrirait une. Le cadrage à la sélection montre tout le tracé, sans zoom minimal. Écarté : un zoom minimal au cadrage (l'ancien zoom 13 de D-071), qui dézoome ou zoome arbitrairement selon le parcours et aggrave le recadrage trop large à 150 % (#305). La question 1 de #230 (masquer ou atténuer les marqueurs des autres parcours) est déjà réglée par D-071 : masqués pendant la sélection ; elle n'est pas rouverte.
-
Impact tickets : #230 passe
status:readysur cette règle (sans le zoom 13 au cadrage) ; #305 : rien de neuf, la règle ne lui ajoute aucune contrainte de zoom. - Répond à : #230
- Pages : Admin-Web (nouvelle, spécification complète), Ecrans › Admin web (renvoi), Architecture-Technique, API, Modele-de-Donnees, Perimetre-MVP, Vision-Produit, Roadmap.
-
Quoi : cadrage de l'admin web, décisions d'Ilan du 9 octobre : stack Next.js comme le site (au lieu de React + Vite) ; périmètre du lancement A-01 à A-05 plus utilisateurs et rôles, brouillons IA, traductions, affiliation, partenaires B2B, réglages, journal et support ; specs détaillées sans maquette, sauf quelques écrans de référence pour la cohérence avec la DA (coque, A-01, A-02, A-05). Création de parcours ouverte à toutes les villes, ville déduite de la position ; le marketing reste concentré sur Paris. Décisions prises par le chef de projet : matrice des rôles (
editorpour Sarah : brouillons IA, traductions, affiliation, B2B) ; journaladmin_actionsde toute écriture ; « Réserver » compté par/go/:stepId; facturation B2B hors admin au lancement ; édition des textes d'un parcours dans l'éditeur de l'app, pas dans l'admin. - Impact tickets : #52 à #55 réécrits et confiés à Marco ; nouveaux #339 (design), #340 (villes, Paul), #341 à #349.
- Répond à : #5
-
Pages : Ecrans › Admin web 🟢 (coque, thème et modèles, A-01, A-02, A-05) ; Admin-Web (statut, renvoi) ; 21 PNG dans
design/A-01/,design/A-02/,design/A-05/etdesign/admin/; nouveau canevas Widoo — Admin (design system Widoo installé ; pages Coque et A-05, A-01 Connexion, A-02 Modération, Modèles et thème). -
Quoi : écrans de référence de l'admin web validés par Ilan le 9 octobre (« globalement je valide tout », colonne Parcours élargie à sa demande, aussi en chargement). Cadrage d'Ilan : navigation sur gris chaud, fiche A-02 en page dédiée, style « outil compact » (rayons de 10 à 12 px, lignes de 44 px, texte à 14 px), A-05 en chiffres seuls. Décision d'Ilan : un parcours publié qui passe sous 2,5 de moyenne avec au moins 5 avis se traite dans A-03 Signalements, pas dans la file A-02. Décisions prises seule : variables du thème shadcn depuis
tokens.json;error-inkétendu aux retards, erreurs et actions destructives de l'admin ; boutons, filtres et pastilles en pilule comme dans l'app ; compteurs neutres, rouges au-delà de 72 h ; « Publier » actif quand les 6 règles de la charte sont cochées, sans confirmation ; « À corriger » pourchanges_requested, comme dans l'app ; « Parcours 1 sur 14 » pour passer d'un parcours de la file à l'autre ; menu réduit aux icônes de 1 024 à 1 279 px ; libellés proposés pour les 7 motifs de refus ; langue du parcours dans la fiche. -
À reporter : Creation-et-Moderation et Admin-Web › A-03 : la relecture d'un parcours à note basse passe dans A-03 (décision d'Ilan) ; trancher « Éditer directement » (Creation-et-Moderation) contre Admin-Web (édition dans l'app) ; API : fiche de modération (
GET /admin/routes/:id: fiche, avertissements, différence avec la version publiée, historique de l'auteur), motif surplaces/:id/close,routes/:id/unpublish,ratings/:id/hide,signals/:id/reject, compteurs de navigation (/admin/statsou route légère), conflit (409) quand un autre modérateur a déjà décidé ; libellés français et anglais des 7 motifs de refus, communs à l'app (E-08) et à l'admin ; double authentification et durée de session de l'admin. - Impact tickets : #339 : à fermer ; #52 (socle, coque, connexion et rôles), #53 (modération), #55 (tableau de bord) : maquettes de référence et thème disponibles ; #54 : note basse ajoutée à A-03 ; écrans sans maquette (A-03, A-04, A-06 à A-13) : suivre les modèles.
- Répond à : #339
-
Pages : Creation-et-Moderation (libellés des motifs de refus, pas d'édition dans l'admin, conflit entre modérateurs, note basse dans A-03), Admin-Web (sécurité, A-03), API (fiche de modération, compteurs, motifs, 409,
mfa_required), Modele-de-Donnees (route_reports.reasonlow_rating). -
Quoi : reports de D-086 tranchés par le chef de projet : aucune édition de parcours dans l'admin (l'auteur corrige, l'équipe passe par l'éditeur de l'app, les horaires et adresses se corrigent sur le lieu dans A-04) ; libellés français et anglais des 7 motifs de refus, communs à l'app et à l'admin ;
GET /admin/routes/:idetGET /admin/counters; motif obligatoire sur dépublier, fermer un lieu, rejeter un signalement, masquer un avis ; 409already_decided; double authentification TOTP obligatoire (Identity Platform), session de 12 h, nouvelle vérification avant une action sensible. - Impact tickets : #52 (double authentification, compteurs), #53 (fiche, 409), #54 (note basse, motifs), #55 (dépublication avec motif).
- Répond à : #339
-
Pages : Orchestration (Transitions, Recalcul périodique, Ce que voit l'utilisateur final), Modele-de-Donnees (
steps.transition,computed, tabledirection_cache), API (GET /routes/:id,GET /routes/:id/timeline). -
Quoi : décision du 2026-10-14, prise par Ilan sur #378 : les Product Terms de Mapbox (21 juillet 2026, § 2.10.1 et § 1.9) interdisent de conserver les résultats de Directions et de l'interroger par des requêtes automatisées. Retenu (option c) : on n'enregistre que nos estimations (distance à vol d'oiseau × un coefficient, par mode), qui servent à
computed, à la recherche, aux cards, aux règles de cohérence et au recalcul de nuit, lequel n'appelle plus jamais Mapbox ; les distances, durées exactes et tracés dans les rues sont demandés à Mapbox à l'ouverture d'un parcours, pour la réponse seulement.MAPBOX_DIRECTIONS_CACHE_DAYSreste à 0. Amende D-032 : plus de cache de 30 jours à défaut. Écarté : un accord écrit de Mapbox (négociation au coût et au délai inconnus, possible plus tard) ; tout calculer à la volée (ne couvre ni la recherche ni le filtre par durée) ; un autre calculateur sur OpenStreetMap (service à héberger ou nouveau sous-traitant ; à reconsidérer si l'écart entre estimation et durée exacte gêne, ou si le volume de requêtes Mapbox coûte trop cher). Conséquence acceptée : la durée d'une card peut différer de quelques minutes de celle de la fiche. Décisions prises seule, à confirmer par Ilan : coefficients du vélo (× 1,3 à 15 km/h) et de la voiture (comme le métro) ; arrondi des durées des cards à préciser. - Impact tickets : #35 (agrégats sur nos estimations), #36 (trajets exacts et tracé demandés à Mapbox à chaque fiche, rien d'enregistré), #56 (recalcul de nuit sans aucun appel à Mapbox), #154 (tracé livré avec la fiche, jamais mis en cache) : amendés et débloqués ; #34, livré : son cache reste désactivé.
- Répond à : #378
- Pages : Ecrans › E-04 (Tap sur un parcours ; Texte agrandi) ; Direction-Artistique › Accessibilité (reflow du résumé).
- Quoi : décision du 2026-10-14, prise par Ilan sur #305, option proposée par Paul Thiberville : avec un cadrage exact, le résumé du parcours sélectionné (environ 400 pt sur iPhone) et la tooltip du départ ne laissaient au tracé qu'une bande de 55 pt sur iPhone 17 Pro à 100 % et de 32 pt sur Android à 150 % ; pour y faire tenir tout le tracé, la carte dézoomait jusqu'à montrer de Pierrefitte au 16e. Retenu : pendant la sélection, la sheet garde au repos un résumé compact, à toutes les tailles de texte : titre, note et bouton « Voir le parcours » ; la vignette, ambiance · quartier, le créateur, le prix et les tags suivent sous le bouton et se lisent en remontant la sheet. La carte cadre tout le tracé dans la place ainsi libérée entre la tooltip du départ et le résumé, sans limite de zoom (D-084) : un long parcours peut sortir de son quartier. Le reflow du résumé à partir de 130 % se réduit à l'étape que la tooltip ne montre plus, ajoutée sous le pli : le bouton est déjà sous le titre à toutes les tailles. Écartés : une tooltip plus compacte ou placée sous le départ (elle porte l'essentiel et ne libère qu'une ligne de titre) ; garder le résumé entier et accepter le dézoom (le tracé devient un trait). La maquette « tap parcours » n'est pas refaite : elle montre encore le résumé entier, le texte de E-04 prime.
-
Impact tickets : #305 réécrit sur cette règle,
status:ready(le correctif de camérabab02fcs'applique tel quel) ; #329 : question de maquette tranchée (piste 2, résumé plus court), ses critères se vérifient après #305, dont il dépend ; #370 : sa contrainte « hauteur du résumé inchangée » tombe, le reste du résumé se lit en remontant la sheet, après #305. - Répond à : #305
-
Pages : Architecture-Technique (ligne E-mails) ; API (
POST /auth/email-link) ; Securite-et-RGPD (menaces, limitation de débit). -
Quoi : décision du 2026-10-14, prise par Ilan sur #397, proposée par Paul Thiberville : D-069 est confirmé, l'e-mail de connexion passe par l'API et Brevo en v0.4, avec la langue des e-mails (#199). D'ici là, la connexion (#386) garde l'e-mail standard de Firebase, qui ne sert qu'aux tests de l'équipe (pas de bêta avant la v1.0). Raisons : l'e-mail Firebase part d'une adresse générique, en anglais, et il est arrivé dans les indésirables au test du 2026-10-13 ; les modèles français et anglais de E-22 se font une seule fois, dans Brevo ; l'envoi se vérifie six semaines avant la bêta, alors que la connexion ouvre les favoris et « C'est parti ». Ilan a transmis le compte Brevo à Paul le 2026-10-14 ; l'authentification du domaine (SPF, DKIM, DMARC) et l'expéditeur passent de la préparation de la production (#246, v0.6) à la v0.4 (#467), après l'achat de
widooapp.com(#366). Écarté : garder Firebase jusqu'au lancement (les premiers utilisateurs recevraient un e-mail en anglais, sans la marque, souvent classé en indésirables). Décisions prises seule : route publiquePOST /v1/auth/email-link({ email, language }), 202 identique que l'adresse ait un compte ou non ; adresse de retour et réglages du lien fixés par l'API, jamais par l'app ; un envoi par adresse toutes les 30 s (le « Renvoyer dans 30 s » de E-10) et 5 par heure, 30 par heure et par IP, 429rate_limitedau-delà ; ni l'adresse ni le lien dans les journaux ; l'admin web (A-01), réservé à l'équipe, garde le lien envoyé par Firebase. À surveiller avant le lancement : le plafond d'envois par jour de l'offre gratuite de Brevo (300 dans sa grille publique, à vérifier sur le compte), noté dans #246. -
Impact tickets : #397 : décision écrite,
needs-designretiré, bloqué par #467 ; #467 (nouveau, tâche de Paul) : domaine et expéditeur dans Brevo, clé de staging, bloqué par #366 ; #246 : la partie Brevo passe à #467, restent la clé de production, la boîte contact@ et le plafond de l'offre ; #199 : rien de neuf, le modèle de connexion part avec #397. - Répond à : #397
-
Pages : Compte-et-Monetisation (profil public, Créateur certifié) ; Ecrans › E-09 (chiffres, pas encore certifié), E-16 (sheet Créateur certifié, profil de Widoo), E-08 (états) ; Modele-de-Donnees (
planned_routes.status, seuils desettings) ; API (routesCompletedde/users/:id/profile). -
Quoi : décision du 2026-10-14, prise par Ilan sur #392, préférence de Paul Thiberville : le critère « au moins 3 parcours réalisés » du badge Créateur certifié (D-023) compte les sorties faites par d'autres sur ses parcours, pas ses propres sorties. Définition : sorties
completedd'autres utilisateurs sur ses parcours publiés, une par personne et par parcours ; ni ses propres sorties, ni les sortiesstopped,cancelledoumissed. Raisons : le badge dit que ses parcours sont fiables, les trois critères portent ainsi tous sur ses parcours (lieux vérifiés, bien notés, vraiment faits par d'autres) ; ses propres sorties ne disent rien de ses parcours et trois suffiraient ; un seul avis à 5 suffit au critère de note, trois sorties par d'autres y ajoutent un minimum d'usage réel. Confirmés, comme la PR #389 les a codés : « parcours vérifiés » = parcours publiés dont tous les lieux sont vérifiés (la règle du badge Vérifié) ; note moyenne = moyenne de tous les avis de ses parcours publiés, chaque avis comptant une fois. Le chiffre du profil suit la même définition, sous un libellé sans ambiguïté (choix d'Ilan) : « 23 sorties sur ses parcours » sur E-16, « sur vos parcours » sur E-09, dans la sheet des critères et dans l'encart « Devenez créateur certifié ». Écarté : compter les sorties du créateur lui-même. Les clés techniques (routesCompleted,completedRoutes,certification.min_completed_routes) ne changent pas. - Impact tickets : #423 (calcul) : définition écrite, libellés de l'app ajoutés, libéré ; #127 (recalcul de nuit) : critères précisés ; #40, livré : rien à corriger, ses statuts servent au calcul ; les choix de #389 ne sont pas contredits : pas de ticket de correction.
- Répond à : #392
- Pages : Ecrans › E-05 (Infos, Étapes, Créateur et avis, Parcours retiré, Parcours Premium sans abonnement, Parcours traduit).
- Quoi : décision du 2026-10-14, prise par Ilan sur #394 : les six cas limites de la fiche rendus sans planche par la PR #390 sont tranchés par des règles de texte, sans planche. Validés tels quels : « Fermé aujourd'hui » à la place de « Ouvert » pour un lieu fermé ce jour-là ; parcours sans avis : section Avis masquée, pastille « Nouveau » à la place de la note ; Premium sans prix du store tant que l'achat n'est pas branché (#67) : « Débloquer ce parcours » désactivé, sans lien du pass, état provisoire ; parcours non PMR : la phrase fixe « Pas accessible en fauteuil roulant. », déjà décidée par D-050 (la planche « infos » du 23 septembre, antérieure, montrait une précision du créateur ; pas de champ ni de changement du modèle de données). Changés : un lieu vérifié par l'équipe sans visiteur compté dit « Vérifié par l'équipe Widoo le 25 sept. » au lieu de « Vérifié le 25 sept. », comme « Vérifié par 12 visiteurs » dit qui a vérifié ; un parcours introuvable (404 : supprimé avec le compte de son auteur, lien faux ou révoqué) montre l'écran « Ce parcours n'est plus disponible », sans date ni « Voir des parcours proches », au lieu de la ligne d'erreur avec « Réessayer », qui ne pouvait jamais aboutir. Décision prise seule : sans avis, le lien « Signaler ce parcours » reste, sous l'encart créateur. Retiré de « Parcours traduit » : la limite d'accessibilité, qui n'est plus un texte du créateur (D-050).
-
Impact tickets : #394 réduit aux deux changements,
status:ready; #67 remplacera l'état provisoire du Premium sans prix quand l'achat sera branché. - Répond à : #394
Produit
- Vision-Produit
- Perimetre-MVP
- Personas-et-Parcours-Utilisateurs
- Ecrans
- Filtres-et-Recherche
- Orchestration
- Creation-et-Moderation
- Admin-Web
- Compte-et-Monetisation
- Direction-Artistique
Technique
- Modele-de-Donnees
- Architecture-Technique
- Site-Web
- API
- Securite-et-RGPD
- Conditions-d-utilisation
- Politique-de-confidentialite
- Analytics
Pilotage