Regroupe l'état de travail en cours réalisé dans un même worktree sur plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164), mélangeant des tickets QA et inProgress. Ne constitue pas une feature terminée : commit de sauvegarde avant triage/split par ticket en branches feature/* dédiées. Exclut les dossiers d'environnement de build locaux et le heap dump parasite (.gitignore mis à jour). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
58 lines
5.6 KiB
Markdown
58 lines
5.6 KiB
Markdown
---
|
|
issueRef: "#115"
|
|
version: 3
|
|
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
|
updatedAt: 1785134675276
|
|
---
|
|
|
|
## #115 — Refonte UI montre alignée sur la DA Court Blazer (UX, 2026-07-26)
|
|
|
|
Statut : **cadrage UX exploitable, prêt pour DevFrontend (#116)**, pas de blocage.
|
|
|
|
### Principe
|
|
Cadran rond, distance de lecture courte (poignet), interaction au doigt. On applique la DA Court Blazer ([[gametime-visual-identity]]) telle quelle côté couleurs/typo, mais on **simplifie radicalement la densité** par rapport au téléphone : une montre affiche une donnée principale par écran, pas une hiérarchie de blocs empilés.
|
|
|
|
### Palette (reprise directe, thème sombre uniquement)
|
|
La montre n'a pas de thème clair — un cadran Wear OS reste sombre pour l'autonomie et la lisibilité au poignet, cohérent avec l'usage majoritaire des watchfaces sport.
|
|
- Fond : `#080A12`.
|
|
- Primaire (or) `#C9A24A` : valeurs numériques, éléments actionnables actifs.
|
|
- Accent (crimson) `#D72638` : liseré, alertes ponctuelles (ex. connexion perdue), jamais pour du texte long.
|
|
- Texte principal `#F5F1E8`, texte secondaire `#A7ADBA`.
|
|
- Bordure/liseré `#242A3A`.
|
|
- Succès `#2ECC71`, Erreur `#FF4D5E` (repris tels quels, thème sombre).
|
|
|
|
### Typographie
|
|
Anton pour tout chiffre affiché en grand (chrono, série, score), Archivo pour les libellés et le texte courant — cohérent avec le reste de l'app. Sur cadran rond, réduire d'un cran les tailles de référence téléphone (le champ visuel est plus petit) : chiffre principal 36-44px au lieu de 44-52px, labels 11-12px.
|
|
|
|
### Forme
|
|
- Rayon de bordure 6px conservé sur les cartes/badges internes, mais **pas de carte pleine occupant tout le cadran** : préférer un fond uni + un seul bloc de contenu centré, pour respecter la forme circulaire sans créer d'angles morts dans les coins du cercle.
|
|
- Liseré crimson 2px : conservé mais réduit à un arc ou une barre courte en haut du cadran (pas une bordure complète qui serait coupée par la forme ronde), utilisé uniquement sur l'écran "séance active" comme rappel de marque discret.
|
|
|
|
### Écrans et états (spec par variante)
|
|
|
|
**1. No-session (montre ouverte sans séance en cours côté téléphone)**
|
|
- Logo "GT" (cf. [[gametime-visual-identity]] / #112) centré, taille réduite, en primaire or sur fond `#080A12`.
|
|
- Sous le logo, un texte secondaire unique : « Aucune séance en cours ». Pas de bouton d'action (la montre ne démarre pas de séance elle-même, cf. principe satellite [[gametime-watch-companion-implementation]]) — cohérence avec le rôle de miroir, pas de source d'initiative.
|
|
|
|
**2. Séance active (écran principal)**
|
|
- Une seule donnée dominante centrée : selon le contexte, le compteur de série (« SÉRIE » label + « 2/4 » en Anton or, cf. [[gametime-ux-series-counter]]) ou le chrono (`mm:ss` Anton) si un chrono est en cours — même logique de priorité que la notification (#108) : chrono actif prioritaire sur série/reps.
|
|
- Nom de l'exercice en Archivo 600, sous la donnée dominante, tronqué avec ellipse si trop long (pas de scroll de texte sur un cadran, ça fatigue l'œil).
|
|
- Fil de contexte minimal en pied de cadran, très discret (texte secondaire, petite taille) : `3/8` (exercice) — pas le programme complet, pas la place pour ça sur ce format.
|
|
- Bloc score (+/-) si applicable : cf. spec dédiée #118, coexiste avec cet écran sans redondance (le score remplace la donnée dominante quand c'est la mesure pertinente de l'étape, sinon reste en secondaire sous le nom d'exercice).
|
|
|
|
**3. Repos**
|
|
- Fond identique, mais bascule de la donnée dominante sur le décompte repos (`mm:ss`, Anton, or) avec label « REPOS » au-dessus (Archivo 600 uppercase, texte secondaire) — miroir de la variante téléphone.
|
|
- Sous le chrono, « Ensuite : <exercice> » + série si pertinente (cf. [[gametime-ux-series-counter]] écran Repos), tronqué si besoin.
|
|
|
|
**4. Actions (confirmation / contrôle ponctuel)**
|
|
- Réservé aux interactions qui nécessitent un accusé (ex. action destructive ou ambiguë déclenchée par erreur) : plein cadran, fond `#080A12`, question courte en Archivo 600 blanc centrée, deux zones tactiles empilées (pas côte à côte, plus sûr au doigt sur petit cadran) : action principale en haut (or, texte foncé), annuler en bas (contour uniquement, texte secondaire). Réservé aux cas rares — le MVP montre n'a normalement pas d'action destructive propre (pause/next restent pilotés depuis le téléphone dans ce périmètre, cf. #118 pour le score qui est la seule commande montre→téléphone du MVP).
|
|
|
|
**5. Connexion perdue**
|
|
- Le contenu de la dernière donnée connue **reste affiché** (jamais d'écran vide brutal — cohérent [[gametime-online-layer-philosophy]] : dernière valeur connue plutôt qu'un vide trompeur), mais assombri (opacité réduite ~50%) avec une icône discrète de liaison rompue en haut du cadran, accompagnée du texte secondaire « Connexion au téléphone perdue » en petit, sans bloquer la lecture de la donnée figée en dessous.
|
|
- Pas de bouton "Réessayer" manuel — la reconnexion est automatique dès que le lien Data Layer revient (cohérent avec le resync déjà implémenté #91-D), l'écran repasse en pleine opacité dès la projection à jour reçue.
|
|
|
|
### Hors périmètre MVP
|
|
- Personnalisation du cadran (choix utilisateur d'un thème/skin) — un seul habillage, non configurable.
|
|
- Watchface complication (widget montre hors app) — pas dans ce ticket, sujet distinct si demandé un jour.
|
|
- Animation de transition élaborée entre écrans — un simple fondu suffit, pas de chorégraphie custom à spécifier ici.
|