Undeafen catch-up: one toast listing who joined/left while you were deafened #128

Closed
opened 2026-09-17 16:10:04 -04:00 by jared · 1 comment
Owner

Scoped so it cannot become bloat: fires only on undeafen, only if the participant set changed while deafened, one toast, auto-dismiss.

Scope

  • On deafen: snapshot the participant set (from io.lotus.call_state / MatrixRTC memberships). On undeafen: diff. If non-empty → toast "While you were deafened: Alice, Bob joined · Cole left" (names truncated to 3 + "and N more").
  • Nothing on PTT holds, nothing if the set is unchanged, nothing if deafened < 10 s.
  • Reuses the existing join/leave tracking that drives the custom join/leave sounds (P5-16), so no new subscriptions.
Scoped so it cannot become bloat: fires **only** on undeafen, **only** if the participant set changed while deafened, one toast, auto-dismiss. ### Scope - On deafen: snapshot the participant set (from `io.lotus.call_state` / MatrixRTC memberships). On undeafen: diff. If non-empty → toast "While you were deafened: **Alice, Bob** joined · **Cole** left" (names truncated to 3 + "and N more"). - Nothing on PTT holds, nothing if the set is unchanged, nothing if deafened < 10 s. - Reuses the existing join/leave tracking that drives the custom join/leave sounds (P5-16), so no new subscriptions.
jared added this to the Features 2026-Q4 milestone 2026-09-17 16:10:04 -04:00
jared added the enhancementpriority: lowuxarea: calls labels 2026-09-17 16:10:04 -04:00
jared self-assigned this 2026-09-17 16:10:04 -04:00
Author
Owner

Done in 33e16e85. On deafen the participant set is snapshotted; on undeafen it is diffed and — only if it changed and you were deafened ≥ 10 s — one auto-dismissing toast: "While you were deafened: Alice, Bob joined · Cole left" (names capped at 3 + "N more"). It rides the membership stream that already drives the join/leave sounds (no new subscriptions), and PTT holds never touch deafen, so they can't trigger it.

Verified headless: 3 s deafen with a join → nothing; 11 s deafen while bob leaves → "While you were deafened: bob left"; 11 s deafen with no change → nothing.

Done in `33e16e85`. On deafen the participant set is snapshotted; on undeafen it is diffed and — only if it changed **and** you were deafened ≥ 10 s — one auto-dismissing toast: "While you were deafened: Alice, Bob joined · Cole left" (names capped at 3 + "N more"). It rides the membership stream that already drives the join/leave sounds (no new subscriptions), and PTT holds never touch deafen, so they can't trigger it. Verified headless: 3 s deafen with a join → nothing; 11 s deafen while bob leaves → "While you were deafened: bob left"; 11 s deafen with no change → nothing.
jared closed this issue 2026-09-19 17:18:33 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#128