Skip to content

feat: manage iOS notifications from Privacy#99202

Closed
sahilsatralkar wants to merge 10 commits into
openclaw:mainfrom
sahilsatralkar:feature/ios-privacy-notifications-cleanup
Closed

feat: manage iOS notifications from Privacy#99202
sahilsatralkar wants to merge 10 commits into
openclaw:mainfrom
sahilsatralkar:feature/ios-privacy-notifications-cleanup

Conversation

@sahilsatralkar

@sahilsatralkar sahilsatralkar commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Closes #99201

What Problem This Solves

Resolves a problem where iOS users configuring notifications had to leave Privacy for a separate Notifications screen with a large action button and repeated explanatory copy. The control felt inconsistent with the rest of Settings > Privacy and made the relationship between system notification permission and OpenClaw notification delivery less clear.

It also fixes the denied-permission follow-up path so users trying to re-enable notifications can be sent to OpenClaw's app settings instead of only landing at the top-level iOS Settings screen.

Why This Change Was Made

Notifications now lives as the top card in Settings > Privacy with a visible toggle for OpenClaw's app-level notification-serving preference. iOS notification permission remains the system authority, denied or unavailable system permission still routes users to iOS settings, and lower-level notification delivery remains gated by both the iOS permission state and the OpenClaw preference.

The supporting copy was simplified into stable Privacy copy, and the hosted push relay note remains visible without adding another action row or repeated status text.

User Impact

Users can now manage notification delivery from the same Privacy screen as camera, location, background listening, and system privacy access controls. The toggle communicates on/off state directly, the copy is shorter and stable, and denied notification permission recovery opens the OpenClaw app settings path on device.

Evidence

Focused verification:

  • xcodebuild test -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,name=iPhone 17 Pro' -only-testing:OpenClawTests/RootTabsSourceGuardTests
  • git diff --check
  • Built, installed, and launched on iPhone 17 Pro simulator.
  • Built, installed, and launched on iPad Pro 13-inch simulator.
  • Installed on physical iPhone 17 and verified denied-notification recovery opens OpenClaw's app settings deep link.

iPhone Notifications

Before After
iphone-notifications-screen-before iphone-privacy-notifications-after

iPad Notifications

Before After
ipad-notifications-screen-before ipad-privacy-notifications-after
Supporting before-state screenshots

These screenshots show that Notifications previously lived as a separate Settings row and was absent from the Privacy screen.

iPhone Settings Row Before

iphone-settings-notifications-row-before

iPhone Privacy Before

iphone-privacy-before

iPad Settings Row Before

ipad-settings-notifications-row-before

iPad Privacy Before

ipad-privacy-before

Notes:

  • Screenshot files are PR evidence only and are not committed.
  • Draft status is intentional while final Codex review is run.

@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios gateway Gateway runtime size: XL labels Jul 2, 2026
@sahilsatralkar sahilsatralkar changed the title improve: make iOS notification controls clearer in Privacy improve: manage iOS notifications from Privacy Jul 2, 2026
@sahilsatralkar sahilsatralkar changed the title improve: manage iOS notifications from Privacy feat: UI updates to iOS notifications from Privacy Jul 2, 2026
@clawsweeper

clawsweeper Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Codex review: stale review; fresh review needed.

Summary
The latest durable ClawSweeper review was for head f643a99de7372d30a33c74a1f5bb1c21476fe113, but the PR head is now 3fd73043034aa1e016d6dceb7437be2d72f883cd. Its old verdict and PR readiness labels are no longer current.

Next step
Run or wait for a fresh ClawSweeper review on the current PR head.

Review history (1 earlier review cycle)
  • reviewed 2026-07-02T19:12:15.098Z sha f643a99 :: needs real behavior proof before merge. :: [P2] Preserve enable intent after relay disclosure

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. labels Jul 2, 2026
@sahilsatralkar sahilsatralkar changed the title feat: UI updates to iOS notifications from Privacy feat: manage iOS notifications from Privacy Jul 2, 2026
@clawsweeper clawsweeper Bot added the proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. label Jul 2, 2026
@sahilsatralkar
sahilsatralkar marked this pull request as ready for review July 2, 2026 19:49
@sahilsatralkar

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. labels Jul 8, 2026
@clawsweeper clawsweeper Bot removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jul 8, 2026
@steipete steipete self-assigned this Jul 9, 2026
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Superseded by #102733, now landed as 6621ead871a9.

The replacement preserves the useful product direction here while keeping the implementation at the iOS owner boundary: Settings > Privacy now owns one default-on notification-serving preference, UIKit owns unregister/re-register, and all iOS-owned delivery/publication paths honor it. It avoids adding a Gateway method or expanding the legacy APNs JSON store.

I could not update this fork branch because Allow edits by maintainers is disabled, so I recreated the reviewed change locally. Contributor credit is preserved with a Co-authored-by trailer. Thank you, @sahilsatralkar, for the proposal and direction. Enabling Allow edits by maintainers on future PRs lets us improve and land the original branch directly.

@steipete steipete closed this Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios gateway Gateway runtime P2 Normal backlog priority with limited blast radius. size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve iOS Privacy notification controls

2 participants