#960

Allow internet channels without nearby-device and location permissions

DraftChessing234wants to merge intofrom

Denying nearby-device or location permissions currently blocks the entire app, including internet channels and Nostr DMs. This change permits onboarding and returning-user initialization without local transport permissions, adds a skip action to the permission and location checks, and pauses local transports instead of failing initialization after revocation.

Addresses #580 and #323 together. The explicit skip choice uses the existing BLE/Wi-Fi Aware master controls, so it survives restarts and identity resets; the explanation describes re-enabling mesh later. Notification permission remains optional. Background location is offered only after local foreground permissions are granted. Unsupported local hardware also retains a route to internet conversations.

The Bluetooth observer checks the current onboarding state instead of a stale composition capture. Enable callbacks advance only the corresponding check screen, preserving the selected internet-only route.

Validation: phone compilation and 7 focused Robolectric tests pass (5 new permission-flow cases and 2 existing notification-permission cases). The new tests keep real permission state and onboarding callbacks, stubbing only resource-dependent diagnostic logging because this repository's JVM tests do not load app resources. Wear compilation also passes. Hosted full unit-test/lint and debug APK build jobs pass; release reproducibility checks and the local combined build/lint/contract run are still running. A passing lint job does not imply an empty lint report. No physical devices, live location, production relay traffic, keys, or user data were used.

Related to #461: the Bluetooth observer now reads the current check state when Bluetooth is enabled after startup. The full radio-toggle recovery scenario still requires physical validation.

Required before marking ready: passing app/Wear builds and tests, lint/contracts, before/after UI screenshots using synthetic state, and physical Mesh Lab validation for permission revocation/re-grant, radio toggles, nearby messaging, internet-only messaging, background behavior, and identity reset. The draft does not assert these gates have passed.

Activity

6
Chessing234reviewed25d ago
Chessing23425d ago

reviewed internet-only onboarding, persisted transport disabling and restart/permission-revocation guards. the required visible-ui and physical transport validation remains a merge gate; this pass is source review only.

heyaim20d ago

This fixes the permission-denial startup blocker in my offline Android emulator checks. Skipping local permissions and denying the system prompts both completed startup and returned to chat after force-stop/relaunch. The same denial sequence shows “Setup Not Complete” before this change. The 23 focused Robolectric cases pass too.

chatgpt-codex-connector[bot]16d ago

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code Review✅ Completed 2026-10-14T11:25:06.315016Zb642366Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

This pull request is a draft

Merging is unavailable until it is marked ready for review.