Skip to content

feat(Where): improve estimated time and planning - #252

Merged
kyleve merged 8 commits into
mainfrom
codex/improve-estimated-time-planning
Aug 13, 2026
Merged

feat(Where): improve estimated time and planning#252
kyleve merged 8 commits into
mainfrom
codex/improve-estimated-time-planning

Conversation

@kyleve

@kyleve kyleve commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Posted by an AI agent on kve's behalf.

Summary

  • User-facing: reserve planned future days for the selected region, pause every other region's projected pace during that interval, and preserve historical travel-day overlap
  • User-facing: add planning controls to the Locations forecast card, animate its disclosure as one coordinated layout transition, and show each eligible estimate as a labeled, adaptive bar behind recorded progress
  • User-facing: broaden the Appearance preference into "Estimated time & planning," clear the synced active plan transactionally when disabling it, and hide related visuals across Locations, Calendar, and Timeline
  • User-facing: add an Estimated Time & Planning Explore Features destination with live, unavailable, and disabled presentations plus a worked timeline and arithmetic example
  • User-facing: open Calendar at the current month with the beginning of the estimate card peeking below it
  • Internal: preserve the existing defaults key, add focused operation/search/routing/math coverage, and refresh the affected visual matrices

Why

Planned stays previously affected only the selected region's total, so reserving time in California did not reduce New York's projection. Planning was also available only from Calendar, the forecast math lacked an in-depth educational surface, and the existing visibility preference did not consistently hide every planning visualization. Calendar's generic bottom anchor also opened below the useful current-month context.

Review focus

  • Forecast reservation begins tomorrow and includes the plan's end date; expired plans reserve nothing and cross-year plans are capped to the forecast year.
  • Locations cards render the estimate only when the feature is enabled and the selected year is eligible; compact and non-Locations cards retain the recorded-only bar.
  • Disabling the feature clears the synced planned stay before persisting Off. A failed clear leaves the preference and all presentation state On.
  • The renamed preference deliberately retains where.showsLocationForecastsOnLocationsTab so existing choices survive the broader semantics.
  • Historical overlaps remain additive, so region estimates intentionally are not normalized to 365 days.
  • Calendar uses a typed ScrollPosition targeting the current month rather than a global bottom anchor; the fixed-viewport snapshot pins the resulting estimate-card peek.

Compatibility

No persisted schema or backup format changes. The device-local preference keeps its existing raw defaults key, and planned-stay clearing continues through the existing synced tombstone path.

Testing

  • ./swiftformat --lint
  • ./xcstrings --lint
  • ./sf-symbols --lint
  • ./test --all — 1,863 tests passed
  • ./test --snapshots — 43 snapshot suites passed
  • focused LocationsViewSnapshotTests matrix passed
  • visually reviewed the Explore calculation, Calendar initial position, and Locations estimate-bar differences

Stack

@kyleve
kyleve force-pushed the codex/improve-estimated-time-planning branch from dd40b29 to b8e2be4 Compare August 13, 2026 00:50
@kyleve
kyleve force-pushed the codex/improve-estimated-time-planning branch from 2efa04c to 1a4c015 Compare August 13, 2026 18:24
…ed-time-planning

# Conflicts:
#	Where/WhereUI/SnapshotTests/__Snapshots__/CalendarContentViewSnapshotTests/calendarContent.WithData_iPad_accessibility.png
#	Where/WhereUI/SnapshotTests/__Snapshots__/CalendarContentViewSnapshotTests/calendarContent.WithData_iPhone_accessibility.png
#	Where/WhereUI/SnapshotTests/__Snapshots__/YearViewSnapshotTests/year.Loaded_iPad_accessibility.png
#	Where/WhereUI/SnapshotTests/__Snapshots__/YearViewSnapshotTests/year.Loaded_iPhone_accessibility.png
#	Where/WhereUI/Sources/Shared/WhereFormat.swift
@kyleve
kyleve merged commit 8a5233c into main Aug 13, 2026
6 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