feat: iOS widgets + fix sleep showing yesterday's data

Widgets:
- HabitsProgressWidget (small/medium): progress ring, completed/total habits, tasks count
- HealthSummaryWidget (small/medium): readiness score, steps, sleep, heart rate
- Shared Keychain access group for app ↔ widget token sharing
- Widget data refreshes every 30 minutes

Sleep fix:
- Changed sleep window from "24 hours back" to "6 PM yesterday → now"
- Captures overnight sleep correctly without showing previous day's data
- Applied to both fetchSleepData (sync) and fetchSleepSegments (detail view)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-06 14:22:37 +03:00
parent d7d3eec2e5
commit f2580eb69f
9 changed files with 553 additions and 7 deletions

View File

@@ -10,6 +10,8 @@ targets:
sources: PulseHealth
entitlements:
path: PulseHealth/PulseHealth.entitlements
dependencies:
- target: PulseWidgetExtension
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.daniil.pulsehealth
@@ -23,3 +25,23 @@ targets:
BackgroundModes:
modes:
- processing
PulseWidgetExtension:
type: app-extension
platform: iOS
sources: PulseWidget
entitlements:
path: PulseWidget/PulseWidget.entitlements
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.daniil.pulsehealth.widget
SWIFT_VERSION: 5.9
CODE_SIGN_STYLE: Automatic
DEVELOPMENT_TEAM: V9AG8JTFLC
INFOPLIST_FILE: ""
info:
path: PulseWidget/Info.plist
properties:
CFBundleDisplayName: Pulse Widget
NSExtension:
NSExtensionPointIdentifier: com.apple.widgetkit-extension