For LotusGuild/cinny#253: a more detailed post-call summary. The owner chose: toast + Details card, all four kinds of content, every call, technical wording.
io.lotus.call_summary gains an optional details (older hosts ignore it):
participants: other Matrix users seen (@user:server, devices of one person counted once) and peak people in the call, you included.
quality: your connection poor/lost time, each other person's, and everyone poor at the same time (which points at the server/SFU).
network: RTT median/p95, outbound packet loss (your mic, as the SFU reports it), inbound packet loss and jitter (audio you received). Sampled every 5 s from LiveKit's public getSenderStats() / getReceiverStats(). A figure the browser doesn't report is left out, not zeroed.
activity: your talking, muted and screenshare time.
CallDetailsTracker is pure (injectable clock) and fed by LiveKit events. People already in the room when you connect are recorded on Connected, since LiveKit sends no ParticipantConnected for them. A two-person test caught that.
Tests: 7 new (12/12 in the file); full suite under Node 24 763 passed. oxlint, tsc, knip and the format check are clean.
Browser (two users, local stack, with the cinny side): the Details card showed Duration 21 s · peak 2 in the call, With Bob Builder, Verdict: good · 0 reconnects, Outbound packet loss 0%, Jitter 1 ms, muted 6 s · deafened 3 s.
For LotusGuild/cinny#253: a more detailed post-call summary. The owner chose: toast + Details card, all four kinds of content, every call, technical wording.
`io.lotus.call_summary` gains an optional **`details`** (older hosts ignore it):
- **participants:** other Matrix users seen (`@user:server`, devices of one person counted once) and **peak** people in the call, you included.
- **quality:** your connection poor/lost time, **each other person's**, and **everyone poor at the same time** (which points at the server/SFU).
- **network:** RTT median/p95, outbound packet loss (your mic, as the SFU reports it), inbound packet loss and jitter (audio you received). Sampled every 5 s from LiveKit's public `getSenderStats()` / `getReceiverStats()`. A figure the browser doesn't report is left out, not zeroed.
- **activity:** your talking, muted and screenshare time.
`CallDetailsTracker` is pure (injectable clock) and fed by LiveKit events. People already in the room when you connect are recorded on `Connected`, since LiveKit sends no `ParticipantConnected` for them. A two-person test caught that.
**Tests:** 7 new (12/12 in the file); full suite under Node 24 763 passed. oxlint, tsc, knip and the format check are clean.
**Browser** (two users, local stack, with the cinny side): the Details card showed `Duration 21 s · peak 2 in the call`, `With Bob Builder`, `Verdict: good · 0 reconnects`, `Outbound packet loss 0%`, `Jitter 1 ms`, `muted 6 s · deafened 3 s`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
io.lotus.call_summary gains an optional `details`: the other Matrix users
seen and the peak in the call; how long your connection, each other
person's, and everyone at once (likely the server) was poor/lost; RTT
median/p95, outbound and inbound packet loss and jitter (sampled every 5 s
from LiveKit sender/receiver stats); and your talk, mute and screenshare
time. People already present when you connect are recorded on Connected
(LiveKit sends no ParticipantConnected for them), and joins are idempotent
per device. Older hosts ignore the field.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared
merged commit 72d307df18 into lotus2026-10-20 19:48:35 -04:00
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.
For LotusGuild/cinny#253: a more detailed post-call summary. The owner chose: toast + Details card, all four kinds of content, every call, technical wording.
io.lotus.call_summarygains an optionaldetails(older hosts ignore it):@user:server, devices of one person counted once) and peak people in the call, you included.getSenderStats()/getReceiverStats(). A figure the browser doesn't report is left out, not zeroed.CallDetailsTrackeris pure (injectable clock) and fed by LiveKit events. People already in the room when you connect are recorded onConnected, since LiveKit sends noParticipantConnectedfor them. A two-person test caught that.Tests: 7 new (12/12 in the file); full suite under Node 24 763 passed. oxlint, tsc, knip and the format check are clean.
Browser (two users, local stack, with the cinny side): the Details card showed
Duration 21 s · peak 2 in the call,With Bob Builder,Verdict: good · 0 reconnects,Outbound packet loss 0%,Jitter 1 ms,muted 6 s · deafened 3 s.🤖 Generated with Claude Code
https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5