Skip to content

feat(WhereUI): edit selected regions directly in Settings - #305

Merged
kyleve merged 1 commit into
mainfrom
codex/direct-region-settings-edit
Sep 4, 2026
Merged

feat(WhereUI): edit selected regions directly in Settings#305
kyleve merged 1 commit into
mainfrom
codex/direct-region-settings-edit

Conversation

@kyleve

@kyleve kyleve commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Posted by an AI agent on kve's behalf.

Summary

  • User-facing: Regions settings shows the current regions first. Each row opens only that region's appearance editor.
  • User-facing: A separate Manage Regions route opens the existing picker for membership changes.
  • Internal: One shared draft preserves membership and appearance edits until the user selects Done.
  • Internal: A save error keeps the draft open and shows an alert. New snapshots cover the overview matrix.

Why

Settings previously reused the complete onboarding sequence. A small appearance change required another picker visit and a walkthrough of every selected region.

Review focus

  • The overview and both child routes share one PrimaryRegionSelectionModel draft.
  • Onboarding still uses the existing picker and stepped customization flow.
  • The Done action remains the only persistence boundary for the settings sheet.

Testing

  • ./test WhereUITests (472 tests passed)
  • ./test --snapshots --no-generate --no-build --only 'WhereUISnapshotTests/RegionsSettingsViewSnapshotTests/regionsSettings()' (1 test passed)
  • ./swiftformat --lint
  • ./xcstrings --lint
  • ./sf-symbols --lint

@kyleve
kyleve merged commit 98bc254 into main Sep 4, 2026
7 checks passed
kyleve pushed a commit that referenced this pull request Sep 6, 2026
…ber 6, 2026) (#308)

## Summary

- Re-verified every open item in all 12 `TODOs.md` files against current
source, after the week's 4 PRs (#301 demo next-launch mode, #302
visa-sticker estimates, #303 deterministic async-capture test, #305
Settings region editor).
- **Nothing closed outright; two items narrowed.** PR #305 gave
`RegionsSettingsView` a `SnapshotProviding` conformance and a
10-reference suite, shrinking the Settings image-coverage item from five
screens to **four**. The `scrolledForYear` half of a namesake-test item
is obsolete — the symbol no longer exists — so that item narrows to
`LocationNamer`.
- **Three small P2s filed from the window's new surface:**
`DeveloperDemoLaunchSheet` snapshots a scrolling `Form` at a fixed
`.phoneLightDark` frame against the full-content rule; PR #302 orphaned
`WhereFormat.locationCardEstimatedDays` (helper + catalog key + test, no
production caller); the `OnboardingGate` doc comment still says the gate
is "Rooted at the trunk's head" after PR #301 prepended the demo step.
- **Corrected five of the August 30 audit's numbers that were wrong at
its own date:** WhereUI was 276 sources / 102 tests (published 274/101);
totals were 695/368 (published 694/368, table summing to 693); test
bundles were **25**, not "26, unchanged" (PR #300's StuffCore removal
had already landed); the settle-floor split is **39** addressable
configurations, not 37 (both prior enumerations missed the Ranking
Animation Lab's 2); and the Method line carried a duplicated sentence.
Also fixed a `WhereShortcuts` count stale since PR #230 (four registered
shortcuts, not five) and two doc citations pointing past the end of
rewritten files.
- Rewrote `MODULE_AUDIT.md` from the refreshed backlog (700 source / 369
test / 49 image-snapshot files; 484 references across 49 suites; 25
bundles) and refreshed the two dated reference counts in
`SnapshotKitTesting/AGENTS.md` (472 → 484), with `./sync-agents` run.

## Why

The weekly `todo-triage` pass keeps the backlog honest: it closes what
shipped, corrects citations the week's diffs moved, files what the new
surface shows, and regenerates the derived audit so the report never
carries claims the tree contradicts. This week's lead finding is about
the audit itself — five published counts were wrong at publication, all
undercounts or stale carries in figures whose text claimed freshness —
so the affected items now record their derivation procedure, not just
the number.

## Review focus

- The four-screens rewrite of the Settings `SnapshotProviding` item in
`Where/TODOs.md` (including the `WhereFlyoverView` nuance: it is
image-pinned by a suite that hosts it directly, without a conformance).
- The 37 → 39 correction in `Shared/SnapshotKitTesting/TODOs.md` — the
Ranking Animation Lab's `settledAtLeast(1.0)` × 2 configurations
predates the August 30 audit, so both prior "re-derived and unchanged"
claims were wrong.
- The three new P2s in `Where/TODOs.md`, each verified against source
before filing.
- The self-correction table at the bottom of `MODULE_AUDIT.md` ("as
published / as corrected" column).

## ⚠️ Breaking changes

None. Documentation and backlog files only; no production code changed.

## Compatibility

Not applicable — no code, build, or CI changes.

## Testing

- Executed on the Linux agent: `./swiftformat --lint` (0/1125),
`./shellcheck` (silent), `./attribution --check` (up to date, 12
credits), `./snapshot-shards check` (plan valid: 49 suites, 13/15/18/3 —
the window's two new suites on the intake shard as designed), Python
tool tests (64 tests, 1 known macOS-only failure), Ruby tool tests (75
runs, the known 12+1 platform failures). The retained-tool failures
match the filed root P1 exactly; no new platform assumption appeared.
- Six read-only verification subagents re-checked every open item with
file:line evidence; every changed verdict and new finding was
spot-checked by hand before publishing. **False alarms rejected rather
than filed** (recorded in the audit): the demo-mode `UserDefaults` latch
as "a mark on the device" (it is the Inspector pattern, one-shot,
DEBUG-only); `DemoDataBuilder`'s convenience `init(now:calendar:)` as a
Core parameter-default violation (an explicit overload on demo fixture
code, not a store API); `DeveloperDemoModeRow` /
`LocationCardEstimateSticker` bare `#Preview`s as coverage debt (both
pinned transitively); RegionsSettings' unlabeled `.combine` (its symbol
is `.accessibilityHidden`, children read as a sentence).
- Skipped (unavailable on the Linux VM, per root `AGENTS.md`): `./test`,
the architecture lint, `./xcstrings --lint`, `./sf-symbols --lint`, and
any simulator or pixel verification. Documentation-only change, so no
test tier applies.
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