Skip to content

feat(WhereUI): welcome users to their live region - #309

Merged
kyleve merged 7 commits into
mainfrom
codex/welcome-live-region
Sep 7, 2026
Merged

feat(WhereUI): welcome users to their live region#309
kyleve merged 7 commits into
mainfrom
codex/welcome-live-region

Conversation

@kyleve

@kyleve kyleve commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Posted by an AI agent on kve's behalf.

Summary

  • User-facing: Show a playful, passport-inspired welcome over Locations when the live tracked region differs from the last dismissed region.
  • User-facing: Use first-visit and return-visit copy, a dedicated close control, a dimmed modal backdrop, bouncy motion, and a reduced-motion fallback.
  • User-facing: Present the message on 92%-opaque, stroke-free paper with leading-aligned copy, the region silhouette as a background watermark and repeated perimeter microprint, restrained card depth, and a raised glass close control.
  • User-facing: Offer an “I’ll be here through…” endorsement that opens the existing planned-stay editor for the live region when Estimated Time & Planning is enabled.
  • User-facing: Add a default-On “Region welcome cards” switch under Appearance so the welcome can be disabled independently.
  • Internal: Resolve the region only while recording and welcome presentation are authorized, recheck both after the suspended location request, and persist the last dismissed region.
  • Internal: Announce both custom modal boundaries to VoiceOver and keep large Dynamic Type content scrollable without truncation.

Why

The Locations tab did not acknowledge when Where began counting recorded days toward the user's current region. The new card makes that transition visible and provides a direct path to planning the rest of the stay without creating a second planning workflow. The Appearance switch keeps that acknowledgement optional.

Review focus

  • The live-region resolver checks recording authority before and after location acquisition so revoked consent cannot publish a late welcome.
  • The welcome model likewise checks the Appearance preference before and after location acquisition, so disabling it cannot publish a late card.
  • Dismissal is the only acknowledgement point. Returning to a previously dismissed region after another region produces the return greeting; hiding the feature does not mark a region as welcomed.
  • The overlay posts VoiceOver screen-change notifications when it enters and leaves.
  • The paper layer sits above a clear glass substrate so underlying cards do not bleed through. Solid card and close-control outlines remain omitted; the inset perimeter reuses the location cards' repeated micro-fidelity region silhouettes.
  • The stay endorsement reuses PlannedStayEditor, remains absent when planning is disabled, and waits for the welcome exit animation before presenting the sheet.

Testing

  • ./test WhereCoreTests WhereUITests --no-generate — 1,085 tests passed.
  • ./test --only 'WhereCoreTests/WherePreferencesTests' --only 'WhereUITests/YearReportModelTests' --only 'WhereUITests/LocationWelcomeModelTests' --only 'WhereUITests/SettingsSearchTests' --no-generate — 55 tests passed.
  • ./test --snapshots --only 'WhereUISnapshotTests/AppearanceSettingsViewSnapshotTests' --only 'WhereUISnapshotTests/LocationsViewSnapshotTests' --record never --review --no-build --no-generate --skip-architecture — 2 tests passed; all changed references were visually reviewed across light, dark, increased-contrast, VoiceOver-annotation, and large Dynamic Type variants.
  • ./swiftformat --lint
  • ./sf-symbols --lint
  • ./xcstrings --lint
  • git diff --check

Comment thread Where/WhereUI/Sources/Primary/LocationsView.swift
@kyleve
kyleve merged commit e3c0da1 into main Sep 7, 2026
7 checks passed
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