feat: clarify iOS Location Always permission flow#99247
Conversation
|
@clawsweeper re-review Draft PR for #99229/#86217. Please review the iOS Location Always permission contract, background location manager handling, significant-change monitor cleanup, native i18n inventory, and Settings copy. Head a03c848. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Codex review: needs real behavior proof before merge. Reviewed July 3, 2026, 5:11 PM ET / 21:11 UTC. Summary Reproducibility: yes. at source level: current main has the Always setting and Always-gated background runtime paths, but lacks the desired/effective permission summary and omits Review metrics: 2 noteworthy metrics.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this only after maintainers approve the iOS background-location posture and exact-head redacted iOS proof covers the prompt and monitoring-restart paths, or split Do we have a high-confidence way to reproduce the issue? Yes at source level: current main has the Always setting and Always-gated background runtime paths, but lacks the desired/effective permission summary and omits Is this the best way to solve the issue? Acceptable but not merge-ready: the desired/effective summary and authorization gates are the right shape if maintainers choose background location, but the capability declaration still needs maintainer approval and exact-head proof. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 1755a9dc5bce. Label changesLabel justifications:
Evidence reviewedSecurity concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
a03c848 to
cf6328c
Compare
|
@clawsweeper re-review Rebased draft PR for #99229/#86217 onto current main after the native i18n refresh landed. Please review the iOS Location Always permission contract, background location manager handling, significant-change monitor cleanup, native i18n inventory, and Settings copy. Head cf6328c. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
cf6328c to
b89c25a
Compare
|
@clawsweeper re-review Final rebase tonight onto current main after another native i18n refresh landed. Please review the current draft head b89c25a for the iOS Location Always permission contract, background location manager handling, significant-change monitor cleanup, native i18n inventory, and Settings copy. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
b89c25a to
21bb750
Compare
|
@clawsweeper re-review Updated draft after review. This now links issue #99229, background-mode posture issue #86217, and closed overlapping candidate #99235. Latest head: 21bb750 The latest head fixes OS-level authorization downgrade cleanup by reconciling CoreLocation delegate changes, disabling background updates, and always unregistering the significant-change monitor even after process relaunch. Please re-review Location Always permission contract, downgrade cleanup, native i18n, Settings copy, and the narrower scope compared with #99235. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Please don’t spam-ping multiple maintainers at once. Be patient, or join our community Discord for help: https://discord.gg/clawd |
21bb750 to
135c91b
Compare
|
Proof branch/media links removed after merge for privacy. Current-head validation evidence is summarized in the sanitized PR body. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
135c91b to
74565cb
Compare
|
Maintainer repair complete on exact PR head What changed after review:
Exact local proof on the same tree:
The PR body retains the contributor's physical iPhone before/after contact sheet. Remaining disclosed boundary: no fresh exact-head physical-device terminated-app significant-change relaunch trace because no device is attached; exact-head simulator behavior, authorization lifecycle, screenshots, and owner transition tests are complete. |
|
Merged via squash.
|
* feat: clarify iOS Location Always permission flow * fix(ios): avoid stale location permission summary * fix(ios): clarify disabled location permission grants * fix(ios): sync external location grants into settings * chore(ios): refresh native i18n inventory * fix(ios): preserve location off during permission sync * fix(ios): preserve while using during location sync * fix(ios): wait for location permission prompts * fix(ios): reconcile significant location monitoring --------- Co-authored-by: Peter Steinberger <[email protected]>
|
For provenance: #86217 was filed on May 24 and identified the missing UIBackgroundModes=location invariant in both plist sources, including a processed-bundle reproduction and GREEN comparison branch. #99229 and this PR were created on July 2, explicitly reference #86217, and this PR subsequently made those exact two plist additions. I am not claiming authorship of the broader permission-flow and monitoring implementation. I am asking that the record accurately acknowledge #86217 as the originating report and proof for the lower-level bundle mismatch. Describing it afterward as merely “already implemented” or a duplicate obscures the actual chronology. Your welcome. |
Related: #99229
Related: #86217
Related closed candidate: #99235
What Problem This Solves
Resolves a problem where iOS users could select Location Always in OpenClaw without the app clearly explaining whether iOS had actually granted background-capable location access.
Why This Change Was Made
This adds an explicit iOS permission summary that separates the user's selected OpenClaw mode from the effective iOS authorization state. It also wires the background-location contract into the native configuration and location owner path.
User Impact
Users get accurate feedback when Location Always is selected but iOS has not granted background-capable permission. Desired Always is preserved through the mismatch instead of silently reverting. Off remains an app-level gate. Monitoring follows both explicit app intent and effective iOS authorization across in-app requests and later iOS Settings changes.
Evidence
31ddea5efa60d6658c002c16d23bf9a81c36b693.LocationPermissionSummaryTestsplusSwiftUIRenderSmokeTests, 28 passed on iPhone 17 / iOS 26.5.OpenClawSnapshotUITests.testLocationAlwaysWaitsForSlowSystemPermissionResponsepassed on iPhone 17 / iOS 26.5.entries=2460 changed=falseafter sync.git diff --checkclean.UIBackgroundModes = [audio, location, remote-notification].Known proof boundary: contributor physical-device evidence predated the final prompt-wait/monitor-restart repairs; repaired exact head had deterministic simulator coverage.
AI-assisted: yes, Codex.