Millian Lamiaux
316dab2f9c
fix: restore UIBackgroundModes audio for background playback
...
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Successful in 33s
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m26s
- Restaure UIBackgroundModes[audio] dans Info.plist (supprimé par erreur
au commit précédent) → empêche iOS de suspendre l'app en arrière-plan
- Ajoute UIBackgroundModes dans project.yml pour robustesse
2026-07-04 19:35:14 +02:00
Millian Lamiaux
f5a36f0a26
fix: add NSSupportsLiveActivities to main app target + cleanup info plists
...
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m24s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 33s
- Ajout de NSSupportsLiveActivities et NSSupportsLiveActivitiesFrequentUpdates
dans info.properties du target TabataGo (project.yml) — corrige l'erreur
'Target does not include NSSupportsLiveActivities plist key' au runtime
- Nettoie Info.plist (retire CFBundleURLTypes, UIBackgroundModes redondants)
- Aligne les entitlements (retire aps-environment, ajoute app groups)
- Corrige le bundle version du widget (2 → 1)
2026-07-04 19:25:50 +02:00
Millian Lamiaux
309d67c88a
fix(widget): add NSExtension to info.properties for xcodegen compat
...
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m39s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 32s
xcodegen parses info.path plist and generates INFOPLIST_KEY_* settings,
but silently drops nested dictionaries like NSExtension. Adding it to
info.properties ensures xcodegen produces:
INFOPLIST_KEY_NSExtension_NSExtensionPointIdentifier = widgetkit-extension
which Xcode preserves at build time.
2026-07-04 19:13:54 +02:00
Millian Lamiaux
b57584f890
fix(ci): wrap deploy commands in if blocks for -e protection
...
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 4m12s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
Bash -e doesn't just kill on pipefail — it exits on ANY non-zero
command. Even without a pipeline, both xcrun devicectl and ios-deploy
return non-zero on failure, killing the script before the exit-code
check.
Fix: wrap both in 'if command; then exit 0; fi' so -e treats them
as condition-tested (no early exit). Fallback now actually runs.
2026-07-04 18:59:21 +02:00
Millian Lamiaux
b956e5189b
fix(ci): eliminate pipeline bug preventing ios-deploy fallback
...
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 5m44s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
CI / Detect Changes (pull_request) Successful in 4s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
When devicectl fails under bash -e -o pipefail, the pipeline
(xcrun devicectl ... | tail -3) exits non-zero and -e kills
the script before the if-check. The ios-deploy USB fallback
was dead code.
Fix: redirect to temp file, capture exit code explicitly.
No pipeline = pipefail has no side-channel effect.
2026-07-04 18:50:12 +02:00
Millian Lamiaux
807361449b
fix: remove info.properties from widget target — use on-disk Info.plist with NSSupportsLiveActivities
CI / Detect Changes (pull_request) Successful in 4s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 2m47s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
2026-07-04 18:26:12 +02:00
Millian Lamiaux
ee01380be8
fix: remove remaining force-unwrap in widgetURL (AGENTS.md §7)
2026-07-04 18:19:37 +02:00
Millian Lamiaux
210c254298
fix: scope shared model sources to TabataGoWidget only
...
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m33s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 33s
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
Previous sed command accidentally injected shared model files into
TabataGo, TabataGoWatch, and TabataGoWatchWidget targets, corrupting
their YAML structure. Restored all targets; shared files now correctly
scoped to TabataGoWidget target only.
2026-07-04 18:15:11 +02:00
Millian Lamiaux
1bb6a544e4
fix: add shared model sources to TabataGoWidget target
...
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 8s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
CI / Deploy (pull_request) Has been skipped
Widget extension references WorkoutPhase, WorkoutActivityAttributes,
TogglePauseIntent (WorkoutLiveActivity) and MusicActivityAttributes
(MusicLiveActivity) but cannot import parent app module. Shared source
files must be compiled in both targets, following existing pattern
of WatchConnectivityTypes.swift shared between iOS/watch.
2026-07-04 18:11:16 +02:00
Millian Lamiaux
a17367081c
fix: add widget target, push entitlement, error handling, force-unwrap
...
CI / Deploy (pull_request) Has been skipped
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Failing after 46s
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Has been skipped
Phase 1 — Widget extension target:
- Add TabataGoWidget target to project.yml (app-extension, iOS 26.0)
- Embed in TabataGo, add to scheme build targets
Phase 2 — Push notification capability:
- Add aps-environment: development to TabataGo.entitlements
- Required by iOS 26 for AppIntents-based Live Activity buttons
Phase 3 — Error handling hardening:
- Catch ActivityAuthorizationError specifically with user message
- Truncate generic errors to 200 chars to avoid UI overflow
- Fix force-unwrap at WorkoutLiveActivity.swift:556 (widgetURL)
2026-07-04 18:07:59 +02:00
Millian Lamiaux
40ffb04f31
fix: Dynamic Island, Live Activity errors, background audio stop, CFBundleVersion
...
CI / Deploy (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Wait for LGTM comment (pull_request) Failing after 8m7s
CI / Detect Changes (pull_request) Successful in 3s
CI / Admin Web CI (pull_request) Has been skipped
CI / YouTube Worker (pull_request) Has been skipped
PR → Build → WiFi/USB Deploy → LGTM / Build & Deploy to iPhone (WiFi/USB) (pull_request) Successful in 2m58s
Phase 1 — Audio background resilience:
- Remove .mixWithOthers, app takes audio focus for coach cues
- Add AVAudioSession.interruptionNotification handler (re-activates after calls/Siri)
- Add AVAudioSession.routeChangeNotification handler (re-activates on headphone changes)
Phase 2 — Live Activity error surfacing:
- PlayerViewModel: @Published liveActivityError captures auth-denied + request errors
- PlayerView: translucent error banner with dismiss button (non-blocking)
Phase 3 — CFBundleVersion 1→2 in all 4 Info.plist files (match project.yml CURRENT_PROJECT_VERSION: 2)
2026-07-04 17:54:09 +02:00