Skip to content

iOS App - Phase 2#2

Merged
willscottuk merged 11 commits into
mainfrom
phase-2
May 3, 2026
Merged

iOS App - Phase 2#2
willscottuk merged 11 commits into
mainfrom
phase-2

Conversation

@willscottuk
Copy link
Copy Markdown
Contributor

No description provided.

willscottuk and others added 11 commits April 25, 2026 18:44
Signed-off-by: Will <willscottuk@users.noreply.github.com>
Five new primary surfaces, all reachable from MainTabView and the
universal-link router wired in W1·D5. Every screen reuses the safe
Inspector + glass-card language established in Week 1.

- Map: SwiftUI Map with Spark-tinted pins, time-of-day scrubber overlay,
  persistent bottom sheet of in-region points; debounced /map/data refetch
  on pan and date change.
- Place detail: hero + visit-streak chip, embedded mini-map, ledger,
  events here, nearby chip row. Replaces the Week 1 placeholder.
- Integrations: list grouped by domain bucket; detail with status pill,
  Sync now, Reauthorise via ASWebAuthenticationSession (strong-ref
  pattern from commit 9572314); reachable from Settings and DetailRoute.
- Notifications inbox: cursor pagination, mark-as-read on appear,
  swipe-to-delete, "Mark all read" toolbar, optimistic updates,
  unread badge driven by @query against CachedNotification (added to
  SparkSchemaV1 in place — migration plan deferred until pre-TestFlight).
- Search: .searchable + horizontal mode pills (default / > / # / $ / @ / ~),
  300ms debounce, prefix-typed shortcut switches mode, polymorphic
  SearchResult enum, sectioned results.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Real SettingsRootView replaces SettingsPlaceholderView. Adds Profile,
Devices, API Tokens, About and Debug sub-views wired to new SparkKit
endpoints (MeEndpoint, DevicesEndpoint, ApiTokensEndpoint) and models
(UserProfile, RegisteredDevice, ApiToken, CreatedApiToken).
AppModel.bootstrap() now registers the current device on every login.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Real NotificationsPreferencesView with per-category toggles, delivery
mode segmented picker, and conditional digest-time DatePicker. Saves
on every edit with 500ms debounce. NotificationPreferences model and
NotificationsPreferencesEndpoint (GET/PATCH /settings/notifications)
land in SparkKit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Full SparkHealth package: HealthKitPermissionManager (3-wave progressive
auth), HealthKitTypeMap, HealthKitAnchorStore, HealthKitObserver
(HKObserverQuery + HKAnchoredObjectQuery), HealthSampleUploader
(background URLSession). HealthSample + HealthEndpoint in SparkKit.
HealthKitScopesView in Settings. AppDelegate wired for background URL
session events. Background-delivery entitlement added.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Full 7-step onboarding NavigationStack (Hero→SignIn→HealthKit×3→
Notifications→Location→Done) with progress persistence in App Group
UserDefaults. RootView shows flow on first launch and resumes from
last step. CheckInModalView replaces placeholder: mood chips (5 states
with coloured fill), multi-select tag chips, 500-char note, POST to
/check-ins with local UserDefaults persistence. TodaySnapshot reads
persisted entries so CheckInCard flips to logged state after entry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@willscottuk willscottuk merged commit bec3605 into main May 3, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant