[Bug] DM unread badge invisible on chat FAB (glass mixin overflow:hidden clips matBadge) + no audible cue on incoming message (#767 follow-up) #769

Closed
opened 2026-07-21 15:01:51 +00:00 by spikerj · 1 comment
Owner

Live test (spikerj↔toddcan, 2026-07-21 ~14:44 UTC): incoming messages produce no visible indicator unless you open the messenger.

Diagnosis:

  • The realtime pipeline is HEALTHY — Mongo shows toddcan's client auto-marked a message read 223ms after send (ReceiveDirectMessage delivered live). All ids GUID-consistent; single API replica; handler present in the deployed bundle.
  • The FAB badge state updates, but glass-themedglass-base (libraries/spikersoft-theme/_glassmorphism-mixins.scss) emits overflow: hidden, and Material's .mat-badge-content positions OUTSIDE the host corner (negative offsets) → the badge is clipped invisible. Same latent bug on .book-processing-fab (its upload badge is clipped too).
  • Secondary hazard: a BACKGROUND tab with the thread open auto-marks incoming messages read instantly, silently zeroing the unread for every other tab.

Fix (spikersoft-angular):

  1. overflow: visible after the glass include on .messaging-fab AND .book-processing-fab.
  2. Auto-mark-read only when the tab is actually visible (document.visibilityState); catch-up markRead when the tab becomes visible with the thread open.
  3. New: audible ding on incoming messages not being actively viewed (WebAudio-synthesized two-tone chime — no external asset), throttled, silent-fail under autoplay policy.

UX goal (user): total unread badge on the FAB at a glance + per-person unread inside the drawer (the latter already works).

Live test (spikerj↔toddcan, 2026-07-21 ~14:44 UTC): incoming messages produce no visible indicator unless you open the messenger. **Diagnosis:** - The realtime pipeline is HEALTHY — Mongo shows toddcan's client auto-marked a message read 223ms after send (ReceiveDirectMessage delivered live). All ids GUID-consistent; single API replica; handler present in the deployed bundle. - The FAB badge state updates, but `glass-themed`→`glass-base` (libraries/spikersoft-theme/_glassmorphism-mixins.scss) emits `overflow: hidden`, and Material's `.mat-badge-content` positions OUTSIDE the host corner (negative offsets) → the badge is clipped invisible. Same latent bug on `.book-processing-fab` (its upload badge is clipped too). - Secondary hazard: a BACKGROUND tab with the thread open auto-marks incoming messages read instantly, silently zeroing the unread for every other tab. **Fix (spikersoft-angular):** 1. `overflow: visible` after the glass include on `.messaging-fab` AND `.book-processing-fab`. 2. Auto-mark-read only when the tab is actually visible (`document.visibilityState`); catch-up markRead when the tab becomes visible with the thread open. 3. New: audible ding on incoming messages not being actively viewed (WebAudio-synthesized two-tone chime — no external asset), throttled, silent-fail under autoplay policy. UX goal (user): total unread badge on the FAB at a glance + per-person unread inside the drawer (the latter already works).
Author
Owner

Resolved in spikersoft-angular PR #506 (merged to master, deployed): FAB badges unclipped (overflow:visible on both glass FABs), WebAudio ding on incoming DMs, visibility-aware auto-read + catch-up. Closing.

Resolved in spikersoft-angular PR #506 (merged to master, deployed): FAB badges unclipped (overflow:visible on both glass FABs), WebAudio ding on incoming DMs, visibility-aware auto-read + catch-up. Closing.
Sign in to join this conversation.