diff --git a/tabatago-swift/TabataGo/Resources/TabataGo.entitlements b/tabatago-swift/TabataGo/Resources/TabataGo.entitlements
index 800b1a1..7169ba0 100644
--- a/tabatago-swift/TabataGo/Resources/TabataGo.entitlements
+++ b/tabatago-swift/TabataGo/Resources/TabataGo.entitlements
@@ -8,6 +8,8 @@
health-records
+ aps-environment
+ development
com.apple.security.application-groups
diff --git a/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift b/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift
index ec53046..88641a7 100644
--- a/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift
+++ b/tabatago-swift/TabataGo/ViewModels/PlayerViewModel.swift
@@ -455,8 +455,12 @@ final class PlayerViewModel: ObservableObject {
)
liveActivityError = nil
observeActivityState()
+ } catch let authError as ActivityAuthorizationError {
+ liveActivityError = "Live Activities: \(authError.localizedDescription)"
} catch {
- liveActivityError = error.localizedDescription
+ let msg = error.localizedDescription
+ let truncated = msg.count > 200 ? String(msg.prefix(200)) + "…" : msg
+ liveActivityError = "Live Activity error: \(truncated)"
print("❌ Failed to start Live Activity: \(error.localizedDescription)")
}
}
diff --git a/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift b/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift
index 59441fe..cdcc2e4 100644
--- a/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift
+++ b/tabatago-swift/TabataGoWidget/WorkoutLiveActivity.swift
@@ -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")!)
+ .widgetURL(URL(string: "tabatago://workout") ?? URL(string: "about:blank")!)
}
.supplementalActivityFamilies([.small, .medium])
}
diff --git a/tabatago-swift/project.yml b/tabatago-swift/project.yml
index 7f7d5db..136052b 100644
--- a/tabatago-swift/project.yml
+++ b/tabatago-swift/project.yml
@@ -76,6 +76,8 @@ targets:
- target: TabataGoWatch
embed: true
+ - target: TabataGoWidget
+ embed: true
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago
@@ -156,6 +158,31 @@ targets:
TARGETED_DEVICE_FAMILY: "4"
WATCHOS_DEPLOYMENT_TARGET: "11.0"
+ TabataGoWidget:
+ type: app-extension
+ platform: iOS
+ deploymentTarget: "26.0"
+ sources:
+ - path: TabataGoWidget
+ excludes:
+ - "**/.DS_Store"
+ info:
+ path: TabataGoWidget/Info.plist
+ properties:
+ CFBundleDisplayName: TabataGoWidget
+ CFBundleShortVersionString: "1.0"
+ CFBundleVersion: "2"
+ NSExtension:
+ NSExtensionPointIdentifier: com.apple.widgetkit-extension
+ NSSupportsLiveActivities: true
+ NSSupportsLiveActivitiesFrequentUpdates: true
+ settings:
+ base:
+ PRODUCT_BUNDLE_IDENTIFIER: fr.millianlmx.tabatago.widget
+ IPHONEOS_DEPLOYMENT_TARGET: "26.0"
+ TARGETED_DEVICE_FAMILY: "1"
+ ENABLE_PREVIEWS: YES
+
TabataGoTests:
type: bundle.unit-test
platform: iOS
@@ -185,6 +212,7 @@ schemes:
build:
targets:
TabataGo: all
+ TabataGoWidget: all
run:
config: Debug
archive: