chore(inbox): web-parity interaction (dismiss, auto-hide, relative dates, no-template skip, hovering panel)#751
Conversation
Sample app builds 📱Below you will find the list of the latest versions of the sample apps. It's recommended to always download the latest builds of the sample apps to accurately test the pull request. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## feat/overlay-inbox #751 +/- ##
=====================================================
Coverage ? 66.71%
Complexity ? 995
=====================================================
Files ? 170
Lines ? 5567
Branches ? 793
=====================================================
Hits ? 3714
Misses ? 1569
Partials ? 284 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
|
📏 SDK Binary Size Comparison ReportNo changes detected in SDK binary size ✅ |
|
Build available to test |
12d1f05 to
4eaa93b
Compare
|
|
4eaa93b to
3fa12d1
Compare
|
|
…es, no-template skip, hovering panel)
Brings the Android visual notification inbox overlay closer to the web/iOS
reference model:
- onAction-driven dismiss: a Jist `dismiss` action (name == "dismiss" or data
url == "#dismiss") removes the message via the data layer; other real urls
are a logged no-op (real-url nav deferred).
- Auto-close the panel + hide the bell when the inbox becomes non-visible or
the message list empties (e.g. after the last dismiss).
- Relative dates: a Jist formatDate hook renders web-aligned relative time
("just now", "2h ago", "3d ago", ...); the decoder still feeds raw dates.
- No-template fallback: skip + error-log a message whose type has no decoded
template (was rendering a blank row).
- Dark mode: pass JistMode.Auto for content dark-mode support.
- Scrim parity: dim to 0.32 black (matches iOS).
- Hovering-card panel: margins on all sides (16dp top/horizontal, 88dp bottom
to clear the bell), max width 480dp, 12dp rounded corners.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3fa12d1 to
79a919b
Compare
|
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 79a919b. Configure here.
| LaunchedEffect(state.isVisible, state.messages.isEmpty()) { | ||
| if (!state.isVisible || state.messages.isEmpty()) { | ||
| panelExpanded = false | ||
| } |
There was a problem hiding this comment.
Blank panel after template filter
Medium Severity
This change skips inbox rows whose type has no Jist template, but auto-hide and empty UI still key off state.messages from the data layer. If every message lacks a template, the bell stays visible, the panel can stay open with a blank list (not EmptyState), and nothing is dismissible from the overlay.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 79a919b. Configure here.


Web-parity follow-up for the Android visual notification inbox overlay: tap-to-dismiss (Jist
dismissaction), auto-hide the panel/bell when the list empties, web-aligned relative dates, skip messages with no template,JistMode.Autodark mode, 0.32 scrim, and a hovering-card panel (margins on all sides, rounded corners, max width 480dp).Deferred (not in this PR): real-url / deep-link navigation (#12), host action callback API (#13), full chrome theming from branding.patterns.inbox (#17), custom/SVG bell asset.
🤖 Generated with Claude Code
Note
Medium Risk
Touches user-visible inbox UI and message deletion paths with dedupe guards; deep-link handling remains deferred, limiting scope but changes how dismiss and empty-state behave in production.
Overview
Brings the Android visual notification inbox overlay closer to web/iOS for interaction and chrome.
Dismiss & lifecycle: Jist actions with
behavior: "dismiss"(plus demo fallbacks) call newVisualInboxController.dismissMessage, which deletes viaVisualInbox.markMessageDeletedwith the same dedupe/in-flight guards as mark-opened. When the list empties or visibility drops, aLaunchedEffectauto-collapses the panel and hides the bell.Rendering:
InboxJistDecoder.formatRelativeDatefeeds Jist’sformatDatehook (OS-localized relative time). Rows without a decoded template are skipped and logged.JistViewusesJistMode.Autofor system light/dark.UI: Drops Compose Material (custom bell, badge, spinner, text/dividers). Panel is a hovering card (margins, 12dp corners, 480dp max width, lighter 0.32 scrim), top-aligned slide-in, no in-panel header/close. Theme colors resolve from Android theme attributes with dark-mode fallbacks.
Reviewed by Cursor Bugbot for commit 79a919b. Bugbot is set up for automated code reviews on this repo. Configure here.