Skip to content

improve(ios): manage notifications from Privacy#102733

Merged
steipete merged 2 commits into
mainfrom
codex/ios-privacy-notifications
Jul 9, 2026
Merged

improve(ios): manage notifications from Privacy#102733
steipete merged 2 commits into
mainfrom
codex/ios-privacy-notifications

Conversation

@steipete

@steipete steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Closes #99201

Supersedes #99202 with contributor credit preserved; that fork branch does not allow maintainer edits.

What Problem This Solves

Resolves a problem where iOS users had to leave Privacy for a separate Notifications screen with a large action button, and could not express an OpenClaw-level notification opt-out separately from iOS system authorization.

Why This Change Was Made

Notifications now appears as the first native section in Settings > Privacy with a visible toggle. A default-on app preference gates APNs registration/publication, node-triggered local notifications, chat pushes, and mirrored Watch alerts; turning it off uses UIKit's documented remote-notification unregister path, while turning it back on re-registers and republishes the current token.

The existing UIApplication.openNotificationSettingsURLString recovery path remains because Apple documents it as the direct link to this app's notification settings. This rewrite intentionally excludes the original PR's new Gateway unregister protocol and APNs JSON-store identity changes: device delivery can be stopped at the iOS owner boundary without expanding core protocol or legacy storage state.

User Impact

Users can manage OpenClaw notification delivery beside other Privacy controls. System permission remains authoritative, hosted-relay disclosure remains required where applicable, and the legacy Notifications route still renders the same section for existing approval-guidance navigation.

Evidence

Thanks @sahilsatralkar for the product direction, simulator/device investigation, and original implementation. The maintainer commit includes Sahil's Co-authored-by trailer.

@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios size: L maintainer Maintainer-authored PR labels Jul 9, 2026
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Land-ready proof for exact head 111b6b48658faafe29d9a7ebad54d3871e212b7b:

  • CI run 29014795619 completed successfully, including native-i18n, macos-swift release build/lint/tests, and ios-build.
  • iOS Periphery run 29014795655 passed after the explicit-return compiler fix.
  • Blacksmith Testbox tbx_01kx35rs5ramy75wvs0jn0v4kt: pnpm native:i18n:check and pnpm apple:i18n:check passed.
  • New regression coverage verifies the default-on and persisted preference, system.notify opt-out, relay/direct APNs publication gates, and the Privacy navigation/source contract.
  • Fresh Codex autoreviews are clean after fixing the localization inventory and Periphery compiler findings.

The final shape keeps ownership inside the iOS app: Privacy owns one default-on serving preference, UIKit owns unregister/re-register, and every iOS-owned notification publication/delivery path honors the same preference. It deliberately avoids a new Gateway method and changes to the legacy APNs JSON store.

Proof gap: no physical-device APNs delivery run was performed.

@steipete
steipete merged commit 6621ead into main Jul 9, 2026
74 checks passed
@steipete
steipete deleted the codex/ios-privacy-notifications branch July 9, 2026 11:35
@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 10, 2026
* improve(ios): manage notifications from privacy

Co-authored-by: Sahil Satralkar <[email protected]>

* fix(ios): make notification status returns explicit

---------

Co-authored-by: Sahil Satralkar <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios maintainer Maintainer-authored PR size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve iOS Privacy notification controls

1 participant