fix: Dynamic Island, Live Activity errors, background audio stop, CFBundleVersion #9

Merged
millianlmx merged 11 commits from fix/live-activity-and-audio into main 2026-07-11 23:28:23 +02:00
Owner

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)

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)
millianlmx added 1 commit 2026-07-04 17:57:56 +02:00
fix: Dynamic Island, Live Activity errors, background audio stop, CFBundleVersion
Some checks failed
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
40ffb04f31
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)
Author
Owner

📱 Prêt à tester !

L'app est déployée sur l'iPhone (USB/WiFi).

  • Teste les changements
  • Reply LGTM pour merger
  • Reply KO pour bloquer
## 📱 Prêt à tester ! L'app est déployée sur l'iPhone (USB/WiFi). - Teste les changements - Reply **LGTM** pour merger - Reply **KO** pour bloquer
millianlmx added 1 commit 2026-07-04 18:08:19 +02:00
fix: add widget target, push entitlement, error handling, force-unwrap
Some checks failed
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
a17367081c
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)
Author
Owner

KO

KO
Author
Owner

KO

KO
millianlmx added 1 commit 2026-07-04 18:11:48 +02:00
fix: add shared model sources to TabataGoWidget target
Some checks failed
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
1bb6a544e4
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.
millianlmx added 1 commit 2026-07-04 18:16:45 +02:00
fix: scope shared model sources to TabataGoWidget only
Some checks failed
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
210c254298
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.
Author
Owner

📱 Prêt à tester !

L'app est déployée sur l'iPhone (USB/WiFi).

  • Teste les changements
  • Reply LGTM pour merger
  • Reply KO pour bloquer
## 📱 Prêt à tester ! L'app est déployée sur l'iPhone (USB/WiFi). - Teste les changements - Reply **LGTM** pour merger - Reply **KO** pour bloquer
Author
Owner

KO

KO
millianlmx added 2 commits 2026-07-04 18:28:52 +02:00
fix: remove info.properties from widget target — use on-disk Info.plist with NSSupportsLiveActivities
Some checks failed
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
807361449b
millianlmx added 1 commit 2026-07-04 18:50:52 +02:00
fix(ci): eliminate pipeline bug preventing ios-deploy fallback
Some checks failed
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
b956e5189b
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.
millianlmx added 1 commit 2026-07-04 18:59:53 +02:00
fix(ci): wrap deploy commands in if blocks for -e protection
Some checks failed
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
b57584f890
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.
millianlmx added 1 commit 2026-07-04 19:14:33 +02:00
fix(widget): add NSExtension to info.properties for xcodegen compat
Some checks failed
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
309d67c88a
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.
Author
Owner

📱 Prêt à tester !

L'app est déployée sur l'iPhone (USB/WiFi).

  • Teste les changements
  • Reply LGTM pour merger
  • Reply KO pour bloquer
## 📱 Prêt à tester ! L'app est déployée sur l'iPhone (USB/WiFi). - Teste les changements - Reply **LGTM** pour merger - Reply **KO** pour bloquer
millianlmx added 1 commit 2026-07-04 19:27:02 +02:00
fix: add NSSupportsLiveActivities to main app target + cleanup info plists
Some checks failed
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
f5a36f0a26
- 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)
Author
Owner

📱 Prêt à tester !

L'app est déployée sur l'iPhone (USB/WiFi).

  • Teste les changements
  • Reply LGTM pour merger
  • Reply KO pour bloquer
## 📱 Prêt à tester ! L'app est déployée sur l'iPhone (USB/WiFi). - Teste les changements - Reply **LGTM** pour merger - Reply **KO** pour bloquer
Author
Owner

KO

KO
millianlmx added 1 commit 2026-07-04 19:40:58 +02:00
fix: restore UIBackgroundModes audio for background playback
All checks were successful
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
316dab2f9c
- 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
Author
Owner

📱 Prêt à tester !

L'app est déployée sur l'iPhone (USB/WiFi).

  • Teste les changements
  • Reply LGTM pour merger
  • Reply KO pour bloquer
## 📱 Prêt à tester ! L'app est déployée sur l'iPhone (USB/WiFi). - Teste les changements - Reply **LGTM** pour merger - Reply **KO** pour bloquer
Author
Owner

LGTM

LGTM
Author
Owner

📱 Prêt à tester !

L'app est déployée sur l'iPhone (USB/WiFi).

  • Teste les changements
  • Reply LGTM pour merger
  • Reply KO pour bloquer
## 📱 Prêt à tester ! L'app est déployée sur l'iPhone (USB/WiFi). - Teste les changements - Reply **LGTM** pour merger - Reply **KO** pour bloquer
millianlmx merged commit baddfd7510 into main 2026-07-11 23:28:23 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: millianlmx/tabatago#9