7 Commits

Author SHA1 Message Date
Millian Lamiaux
316dab2f9c 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
- 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
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
- 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
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
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
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
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
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
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
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
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
6 changed files with 13 additions and 23 deletions

View File

@@ -106,16 +106,15 @@ jobs:
# 1. Try WiFi first (Xcode 15+ devicectl network discovery)
echo "📱 Trying WiFi install via devicectl..."
xcrun devicectl device install app --device "$UDID" "$APP" 2>&1 | tail -3
if [ ${PIPESTATUS[0]} -eq 0 ]; then
if xcrun devicectl device install app --device "$UDID" "$APP" > /tmp/devicectl.log 2>&1; then
echo "✅ Installed via WiFi"
exit 0
fi
tail -10 /tmp/devicectl.log
# 2. Fallback to USB via ios-deploy
echo "🔌 WiFi failed, trying USB..."
ios-deploy --bundle "$APP" --id "$UDID" --justlaunch
if [ $? -eq 0 ]; then
if ios-deploy --bundle "$APP" --id "$UDID" --justlaunch; then
echo "✅ Installed via USB"
exit 0
fi
@@ -123,6 +122,7 @@ jobs:
echo "❌ Install failed (both WiFi and USB)"
exit 1
- name: Post "Ready to test" comment
env:
GT_TOKEN: ${{ secrets.PR_API_TOKEN }}

View File

@@ -18,15 +18,6 @@
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>tabatago</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>2</string>
<key>NSHealthShareUsageDescription</key>

View File

@@ -8,9 +8,9 @@
<array>
<string>health-records</string>
</array>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.security.application-groups</key>
<array/>
<array>
<string>group.fr.millianlmx.tabatago</string>
</array>
</dict>
</plist>

View File

@@ -4,8 +4,6 @@
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>TabataGoWidget</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -19,7 +17,7 @@
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>2</string>
<string>1</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>

View File

@@ -553,7 +553,7 @@ struct WorkoutLiveActivity: Widget {
.contentMargins(.leading, 8, for: .expanded)
.contentMargins(.trailing, 8, for: .expanded)
.contentMargins(.bottom, 6, for: .expanded)
.widgetURL(URL(string: "tabatago://workout") ?? URL(string: "about:blank")!)
.widgetURL(URL(string: "tabatago://workout"))
}
.supplementalActivityFamilies([.small, .medium])
}

View File

@@ -60,6 +60,10 @@ targets:
SUPABASE_ANON_KEY: $(SUPABASE_ANON_KEY)
REVENUECAT_API_KEY: $(REVENUECAT_API_KEY)
POSTHOG_API_KEY: $(POSTHOG_API_KEY)
NSSupportsLiveActivities: true
NSSupportsLiveActivitiesFrequentUpdates: true
UIBackgroundModes:
- audio
entitlements:
path: TabataGo/Resources/TabataGo.entitlements
properties:
@@ -171,9 +175,6 @@ targets:
info:
path: TabataGoWidget/Info.plist
properties:
CFBundleDisplayName: TabataGoWidget
CFBundleShortVersionString: "1.0"
CFBundleVersion: "2"
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension
NSSupportsLiveActivities: true