Countdown notification "nothing appears" on session start:
- The small icon was the adaptive launcher mipmap (applicationInfo.icon),
which Android 13+/GrapheneOS rejects as an invalid notification small icon
and drops the post silently. Ship a proper white-on-transparent vector
small icon (bbp_stat_parking) inside the module and use it.
- showCountdown now returns a diagnostic string (posted / notifications
disabled / exception) instead of swallowing failures; JS logs the branch,
permission result, and native outcome to the in-app diagnostics log.
- Log the raw active-session payload in refreshSessionStatus (element shape
was previously unconfirmed).
Time remaining showed "7694 min":
- API's TimeRemaining is SECONDS, not minutes. Format it as hours+minutes
in SessionDetail; annotate the type.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Accidentally committed modules/bbp-notify/android/build/ from a local compile
check; remove it and ignore it going forward.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replaces the static status notification with a native Android chronometer that
counts DOWN to the session end — the system ticks it every second with zero app
CPU/battery, visible without opening the app.
- modules/bbp-notify: a ~50-line local Expo module using only NotificationCompat
(setWhen + setUsesChronometer + setChronometerCountDown + ongoing). Zero
third-party dependencies, no Firebase — fits the de-Googled ethos. Verified:
autolinks + Kotlin compiles.
- sessionStatus.ts uses it when present, else falls back to the expo-notifications
static expiry-time notification.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>