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>
27 lines
984 B
Swift
27 lines
984 B
Swift
// CoachLiveActivityBundle.swift
|
|
// Entry point @main de l'extension WidgetKit. Contient les Widgets exposés par
|
|
// cette extension : la Live Activity du live workout + les widgets d'écran
|
|
// d'accueil (séance du jour, score de forme).
|
|
|
|
import WidgetKit
|
|
import SwiftUI
|
|
|
|
@main
|
|
struct CoachLiveActivityBundle: WidgetBundle {
|
|
var body: some Widget {
|
|
CoachLiveActivityWidget()
|
|
CoachTodaySessionWidget()
|
|
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()
|
|
}
|
|
}
|
|
}
|