Repository navigation
Show time left as a status-bar Live Update chip (issue #19) - #20
Conversation
1.19.0 raises its own AAR metadata floor to compileSdk 37 / AGP 9.1.0, which conflicts with this project's compileSdk=36 / AGP=8.9.1. Verified via AAR metadata + bytecode inspection that 1.18.0 has the same setRequestPromotedOngoing/setChronometerCountDown APIs and requires exactly compileSdk=36 / AGP=8.9.1 — no other constraint changes needed.
…chip Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Update the design spec status and replace the "open verification risk" section with the actual on-device results from the Samsung S25 Ultra (One UI 8.5 / Android 16) test of both the promoted-ongoing chip and the MediaStyle/Now Bar fallback. Update RunningTimerNotifier's class KDoc and the CHANNEL_RUNNING channel comment in Notifier to describe both paths instead of only the legacy MediaStyle mechanism. No logic changes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
| if (nm.getNotificationChannel(CHANNEL_RUNNING) == null) { | ||
| // LOW so it doesn't make sound on every state update. The MediaSession | ||
| // is what triggers the system to render the Now Bar / status-bar pill. | ||
| // LOW so it doesn't make sound on every state update. On Android 16+ |
There was a problem hiding this comment.
🔥 The Roast: You're documenting the new feature in a channel comment like it's a code archaeology note. This comment is essentially self-documenting code masquerading as a changelog entry.
🩹 The Fix: Keep it — it's actually useful context. But consider whether this belongs in code vs. the design spec.
📏 Severity: nitpick
| * notification accordingly. Uses a MediaSession-backed MediaStyle | ||
| * notification so the system surfaces it in Samsung's Now Bar pill and | ||
| * the lockscreen / status-bar media chip. | ||
| * notification accordingly. Chooses between two mechanisms at runtime based on |
There was a problem hiding this comment.
🔥 The Roast: The KDoc went from a concise one-liner to a mini-essay. 'Chooses between two mechanisms at runtime based on device capability' — yes, we get it, it's adaptive, like a Pokémon.
🩹 The Fix: The detail is actually helpful for maintainers, but trim the marketing fluff. Just say it branches on canPromote() and links to the spec.
📏 Severity: nitpick
Code Review Roast 🔥Verdict: No Issues Found | Recommendation: Merge Oh wait, this PR is actually clean. I need to sit down. I had my flamethrower warmed up and everything. 📊 Overall: Like finding a unicorn in production — I didn't think clean PRs existed anymore, but here we are. Files Reviewed (2 files)
Reply with Previous Review Summary (commit 28f2d36)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 28f2d36)Verdict: No Issues Found | Recommendation: Merge Oh wait, this PR is actually clean. I need to sit down. I had my flamethrower warmed up and everything. 📊 Overall: Like finding a unicorn in production — I didn't think clean PRs existed anymore, but here we are. Files Reviewed (6 files)
Reviewed by ling-2.6-1t · Input: 98K · Output: 6.3K · Cached: 1.3M |
Summary
Notifier.buildRunningPromotedNotification) used only whenNotifier.canPromote(context)is true (API 36+ and the OS grants promotion). The existingMediaStyle/TimerMediaSessionNow Bar path is unchanged for all other devices (notably One UI 7 / Android 15, which predates this API —MediaStyleis explicitly incompatible with the promoted-ongoing style requirements).androidx.core:core-ktxto1.18.0for the newNotificationCompatAPIs (not1.19.0— that version raises its own AAR-metadata floor to compileSdk 37/AGP 9.1.0, which conflicts with this project), and added thePOST_PROMOTED_NOTIFICATIONSmanifest permission.See
docs/superpowers/specs/2026-07-31-status-bar-live-update-chip-design.mdfor the full design and reasoning, anddocs/superpowers/plans/2026-07-31-status-bar-live-update-chip.mdfor the implementation plan.Test plan
./gradlew testDebugUnitTest)dumpsys notificationconfirms thePROMOTED_ONGOINGflag; the shade's "Live notifications" section shows the chip's chronometer ticking live (e.g. "03:49" counting down) with noProgressStyleneeded; Cancel correctly clears it (confirmed vialogcat'sonNotificationRemoved)canPromote()tofalse, rebuilt, confirmed the Now Bar pill renders correctly with progress bar and title/text, and Cancel clears it)🤖 Generated with Claude Code