feat(call): Details card after a call, with who/why/numbers/activity (#253) #442

Merged
jared merged 2 commits from feat/call-summary-details into lotus 2026-10-20 21:37:26 -04:00
Owner

Fixes #253. Pins @lotusguild/element-call-embedded 0.25.0-lotus.29 (element-call #60).

Decisions (owner, 2026-10-20): toast + Details card; include who was there, why it was bad, connection numbers and your own activity; show it after every call (with a setting); technical wording.

What changed

  • The call-ended toast ("Call ended · 41 min · connection was good") gets a Details button and stays 10 s. Toasts gained an optional actionLabel/onAction.
  • Details opens a card (CallSummaryDialog), built from a snapshot taken at hangup:
    • Call: duration, peak people in the call, "With Bob, Carol" (room display names).
    • Connection: verdict and reconnects; how long your connection, each other person's, and everyone's at once was poor/lost (the last points at the server/SFU).
    • Network: RTT median/p95, outbound and inbound packet loss, jitter. A figure the browser doesn't report is left out.
    • You: talking, muted, deafened and screenshare time. Deafened time is tracked by CallEmbed; the rest comes from the fork.
  • Settings → Calls → Summary After Calls (on by default) turns the toast off.
  • The fork's details are parsed defensively (parseCallSummaryDetails), since the frame is another origin. An older fork still gets the basic card.

Verified

  • Unit tests: parsing (keeps well-formed fields, drops the rest), the full technical card text, and the older-fork fallback (7/7 in the file). The full suite passes. eslint is at 29 warnings (the ratchet); tsc is clean.
  • Two-person call (local stack, fork build): after hanging up, the toast showed Details, and the card read Duration 21 s · peak 2 in the call, With Bob Builder, Verdict: good · 0 reconnects, Your connection poor/lost: 0 s, Outbound packet loss 0%, Jitter 1 ms, Talking 0 s · muted 6 s · deafened 3 s. The test mics are silent, and deafening also mutes.

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

Fixes #253. Pins `@lotusguild/element-call-embedded` **0.25.0-lotus.29** (element-call #60). **Decisions** (owner, 2026-10-20): toast + **Details** card; include who was there, why it was bad, connection numbers and your own activity; show it after every call (with a setting); **technical** wording. **What changed** - The call-ended toast ("Call ended · 41 min · connection was good") gets a **Details** button and stays 10 s. Toasts gained an optional `actionLabel`/`onAction`. - **Details** opens a card (`CallSummaryDialog`), built from a snapshot taken at hangup: - **Call:** duration, peak people in the call, "With Bob, Carol" (room display names). - **Connection:** verdict and reconnects; how long **your** connection, **each other person's**, and **everyone's at once** was poor/lost (the last points at the server/SFU). - **Network:** RTT median/p95, outbound and inbound packet loss, jitter. A figure the browser doesn't report is left out. - **You:** talking, muted, deafened and screenshare time. Deafened time is tracked by `CallEmbed`; the rest comes from the fork. - Settings → Calls → **Summary After Calls** (on by default) turns the toast off. - The fork's `details` are parsed defensively (`parseCallSummaryDetails`), since the frame is another origin. An older fork still gets the basic card. **Verified** - Unit tests: parsing (keeps well-formed fields, drops the rest), the full technical card text, and the older-fork fallback (7/7 in the file). The full suite passes. eslint is at 29 warnings (the ratchet); tsc is clean. - **Two-person call** (local stack, fork build): after hanging up, the toast showed Details, and the card read `Duration 21 s · peak 2 in the call`, `With Bob Builder`, `Verdict: good · 0 reconnects`, `Your connection poor/lost: 0 s`, `Outbound packet loss 0%`, `Jitter 1 ms`, `Talking 0 s · muted 6 s · deafened 3 s`. The test mics are silent, and deafening also mutes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 2 commits 2026-10-20 20:34:35 -04:00
The call-ended toast gets a Details button (and stays 10 s) that opens a
card with who was in the call and the peak, connection verdict and
reconnects, how long your / each person's / everyone's connection was
poor (likely the server when everyone), RTT, packet loss and jitter, and
your talk, mute, deafen and screenshare time, in technical wording.
Deafened time is tracked by CallEmbed; the rest comes from the fork's new
io.lotus.call_summary `details` (lotus.29). Settings → Calls gets
"Summary After Calls" (on by default).

Fixes #253

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
chore(deps): pin @lotusguild/element-call-embedded 0.25.0-lotus.29 (#253)
CI / Build & Quality Checks (pull_request) Successful in 3m22s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 10s
CI / Playwright smoke (e2e) (pull_request) Successful in 20m13s
ac1a1c9a48
lotus.29 adds the call summary `details` (element-call#60).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared merged commit 62672787a0 into lotus 2026-10-20 21:37:26 -04:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#442