block / block/buzz

Mobile: per-channel notification settings parity + push suppression

Open
#3,234 1 comment 1 reaction 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.