Trois widgets d'ecran verrouille et une complication Routine

Les familles accessory* n'etaient declarees que cote Watch, alors que ce sont
exactement celles de l'ecran verrouille iOS 16+. Les vues existaient donc
deja : il ne manquait que la declaration cote iPhone.

Ajoutes sur l'ecran verrouille : Forme (circulaire/rectangulaire/inline),
Seance (rectangulaire/inline, avec la bascule doneToday du commit precedent)
et Routine du jour. Sur la Watch : complication Routine, et la seance gagne la
famille circulaire (icone du sport, verte quand elle est faite).

Le snapshot gagne RoutineProgress {done, total} au grain EXERCICE — celui de
la page web et de l'app Watch depuis le 03/08. `fraction` borne le ratio et
protege de la division par zero ; un total nul ne doit pas remplir la jauge.
Meme garde du jour que doneToday : la routine repart a zero au reveil, un
report aveugle afficherait 24/24 des le matin.

Vues dupliquees plutot que partagees entre les deux extensions : elles ne
partagent aucun fichier et l'App Group n'est pas commun entre appareils. Trois
petites vues coutent moins qu'un fichier de plus a cabler dans deux cibles —
et pour la meme raison tout est ajoute a CoachWidgets.swift, deja membre de sa
cible : AUCUN fichier nouveau, donc rien a cabler dans le pbxproj.

⚠️ NON COMPILE — a builder au prochain passage sur le Mac, avec le correctif
« JOUR OFF » (12b56a4).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sylvain Bettinelli
2026-08-11 18:08:13 +00:00
parent 12b56a4d39
commit 3202e03a63
5 changed files with 302 additions and 2 deletions

View File

@@ -14,5 +14,13 @@ struct CoachLiveActivityBundle: WidgetBundle {
CoachFormeScoreWidget()
// Saisie rapide : App Intents (iOS 17+) pour l'eau et le café.
if #available(iOS 17.0, *) { CoachQuickWidget() }
// Écran verrouillé (iOS 16+) : mêmes familles que les complications
// Watch. Trois widgets distincts plutôt qu'un seul multi-familles,
// pour qu'ils soient choisissables séparément dans chaque emplacement.
if #available(iOS 16.0, *) {
CoachLockFormeWidget()
CoachLockSessionWidget()
CoachRoutineWidget()
}
}
}