Summary
The BlueBubbles Android client (GrapheneOS) displays a persistent badge count of "1" even when there are zero unread messages. The badge does not clear on app reopen, force stop, or manual database verification.
Repro
- Set up BlueBubbles server on macOS Tahoe 26.5.1 (M1) with notification provider set to Background Service (no Firebase).
- Read all messages on the Android client.
- Badge count shows "1" persistently on the app icon.
- Force stop and reopen the app — badge returns immediately.
- Verified via direct database query that zero unread messages exist:
sqlite3 ~/Library/Messages/chat.db "SELECT count(*) FROM message WHERE is_read=0 AND is_from_me=0;"
Returns 0.
- Forced all messages to read state via:
sqlite3 ~/Library/Messages/chat.db "UPDATE message SET is_read=1 WHERE is_read=0 AND is_from_me=0;"
Database confirms 0 unread — badge persists regardless.
Expected
Badge count reflects actual unread message count. When all messages are read, badge should be absent.
Actual
Badge is permanently stuck at "1" regardless of read state. Persists across force stops, app restarts, and manual database fixes.
Workaround
Disable Allow Dot in GrapheneOS notification settings for BlueBubbles.
Environment
- BlueBubbles server: v1.9.9
- macOS host: Tahoe 26.5.1 (Apple Silicon M1)
- Android client: BlueBubbles on GrapheneOS
- Notification provider: Background Service (no Firebase/FCM)
- Proxy: Tailscale (custom URL/Dynamic DNS mode)
Summary
The BlueBubbles Android client (GrapheneOS) displays a persistent badge count of "1" even when there are zero unread messages. The badge does not clear on app reopen, force stop, or manual database verification.
Repro
Returns
0.Database confirms
0unread — badge persists regardless.Expected
Badge count reflects actual unread message count. When all messages are read, badge should be absent.
Actual
Badge is permanently stuck at "1" regardless of read state. Persists across force stops, app restarts, and manual database fixes.
Workaround
Disable Allow Dot in GrapheneOS notification settings for BlueBubbles.
Environment