Mobile: per-channel notification settings parity + push suppression
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
Follow-up to #3160 (desktop implementation: #3233).
Bring per-channel notification settings to the Flutter app:
- Read/write the `channel-notify-prefs` kind-30078 blob (spec: `docs/nips/NIP-CN.md` on the #3233 branch). The schema already reserves a `mobile` per-channel field; the desktop client preserves unknown fields round-trip, so mobile can adopt incrementally.
- Mute/level UI in the channel long-press sheet mirroring desktop (All new posts / Just mentions / Mute and hide, timed mute presets).
- **Push suppression**: a muted or mentions-level channel must also stop mobile pushes. Pushes are relay-driven (NIP-PL leases), so the client should project its resolved per-channel decisions into its lease/subscription state (client-authored lease projection) rather than the relay learning to decrypt prefs.
- Keep the legacy `channel-mutes` dual-write interop working (newer-updatedAt wins per dimension is resolved client-side; see NIP-CN §Legacy interop).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor guide
Research direction
Read docs/nips/NIP-CN.md on the #3233 branch and compare the desktop implementation in #3233 first; then trace the Flutter channel long-press sheet and mobile lease/subscription state. Done means channel-notify-prefs round-trips, legacy channel-mutes resolves by newer-updatedAt, the mute UI and timed presets work, and muted or mentions-level channels suppress mobile pushes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- flutter
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100