notifications: group Android notification history by sender - #1973
TheFallen058 wants to merge 8 commits into
Conversation
Related workRelated to #1970. This implementation additionally provides configurable age ranges, sender-based grouping, transcript view, iOS compatibility, storage optimizations, and unit coverage. |
96979e8 to
7969ad8
Compare
Avoid deserializing notification payloads older than the grouping range. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Persist Never, one-day, one-week, and all-history grouping options. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Track notification IDs by sender while preserving chronological ordering and removal behavior. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
ad2c5a7 to
ffd2f5e
Compare
Display collapsed sender rows and open grouped notifications in a newest-first transcript. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Localize grouped titles, align setting labels, and use checked sender allocation. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Keep age-aware iteration moving so malformed records do not hide later notifications. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Only switch to grouped history controls when a collapsed sender group exists, so iOS and single-message histories retain navigation and dismiss-all behavior. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
Use the text before a title's sender separator as a fallback conversation key when the Android companion does not provide sender metadata. Co-authored-by: GPT-5.6 Sol <noreply@openai.com> Signed-off-by: Aliaksandr Karnilovich <thefallen058@gmail.com>
ffd2f5e to
7986806
Compare
Title-prefix fallback over-groups unrelated notifications
The firmware-side options are not great:
So I'd leave the heuristic in as-is for now, and fix the data at the source. Proposed CoreApp fixPopulate
On the watch |
|
@sjp4 please check mobile suggested changes |
|
To @gmarull The title fallback keys on the text before the first That matters because Suggested flow for the sender value:
|
|
I have the same question as in #1970 (comment) Please share some more screenshots of how it would look when entering from a regular notification rather than opening the notification app itself. |
The watch groups notification history by AttributeIdSender, but Android notifications only ever carried the raw EXTRA_TITLE, so the firmware falls back to a title-prefix heuristic that also merges unrelated "Re: ..." / "Error: ..." titles into one group. Derive the sender from the MessagingStyle extras: the conversation title whenever one is set, otherwise the Person of the newest incoming message. The title is not gated on isGroupConversation because on the extraction path the flag is only ever the raw android.isGroupConversation extra, which apps that set a title but never call setGroupConversation(true) leave false; gating on it would fragment those group chats into one row per participant. A group chat without a title sends no sender so the watch keeps its title fallback, and android.people.list is not used because its order is app-defined and unstable across notifications. The watch does not render Sender on notifications, so this only affects history grouping. Related: coredevices/PebbleOS#1973 Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Summary
Conversation: Senderby conversation when sender metadata is unavailable.Testing
obelix@pvt) dual-slot release build passedLimitations
Conversation: SenderuseConversationas the grouping key.Compatibility
Conversation: Sendertitle.AI assistance
GPT-5.6 Sol assisted with implementation. Relevant commits contain
Co-authored-bytrailers. The resulting behavior was manually tested on hardware.Example:




Before:
After: