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):
overflow: visible after the glass include on .messaging-fab AND .book-processing-fab.
Auto-mark-read only when the tab is actually visible (document.visibilityState); catch-up markRead when the tab becomes visible with the thread open.
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).
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Live test (spikerj↔toddcan, 2026-07-21 ~14:44 UTC): incoming messages produce no visible indicator unless you open the messenger.
Diagnosis:
glass-themed→glass-base(libraries/spikersoft-theme/_glassmorphism-mixins.scss) emitsoverflow: hidden, and Material's.mat-badge-contentpositions OUTSIDE the host corner (negative offsets) → the badge is clipped invisible. Same latent bug on.book-processing-fab(its upload badge is clipped too).Fix (spikersoft-angular):
overflow: visibleafter the glass include on.messaging-fabAND.book-processing-fab.document.visibilityState); catch-up markRead when the tab becomes visible with the thread open.UX goal (user): total unread badge on the FAB at a glance + per-person unread inside the drawer (the latter already works).
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.