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:
@@ -70,6 +70,11 @@ struct CoachWidgetSnapshot: Codable {
|
||||
/// Optionnel : un snapshot écrit par une version antérieure reste lisible.
|
||||
var doneToday: DoneActivity? = nil
|
||||
|
||||
/// Avancement de la routine quotidienne (nil = non poussée).
|
||||
/// Optionnel, comme les autres ajouts : un snapshot d'une version
|
||||
/// antérieure reste décodable.
|
||||
var routine: RoutineProgress? = nil
|
||||
|
||||
/// Séance planifiée du jour (nil = jour OFF / pas de séance).
|
||||
struct TodaySession: Codable {
|
||||
var sport: String // running, cycling, strength, mobility, hiking, rest…
|
||||
@@ -78,6 +83,22 @@ struct CoachWidgetSnapshot: Codable {
|
||||
var done: Bool // séance déjà réalisée aujourd'hui
|
||||
}
|
||||
|
||||
/// Exercices de la routine cochés aujourd'hui, sur le total du jour.
|
||||
/// Le grain est l'EXERCICE, pas le bloc : c'est celui de la page web et
|
||||
/// de l'app Watch depuis le 2026-08-03, et deux grains concurrents
|
||||
/// donneraient deux comptes différents du même geste.
|
||||
struct RoutineProgress: Codable {
|
||||
var done: Int
|
||||
var total: Int
|
||||
|
||||
/// 0…1, borné. `total` nul ne doit jamais produire de division par zéro
|
||||
/// ni une jauge pleine par accident.
|
||||
var fraction: Double {
|
||||
guard total > 0 else { return 0 }
|
||||
return min(1, max(0, Double(done) / Double(total)))
|
||||
}
|
||||
}
|
||||
|
||||
/// Ce qui a été fait dans la journée : sport, et de quoi le qualifier.
|
||||
struct DoneActivity: Codable {
|
||||
var sport: String // running, cycling, walking, strength…
|
||||
|
||||
Reference in New Issue
Block a user