Repository navigation
Conversation
…g in calls Room tiles with the camera off now show the participant's Nostr avatar (profile picture, initials as the fallback) instead of a generic person icon. The overlay retains each visible participant's profile, and the direct-call peer's, through the existing visible-profile hydration, and releases it when they leave or the call closes. A ring marks whoever is speaking: room tiles in gallery and speaker view, with the camera on or off and beside a shared screen, and the peer's avatar or video in direct calls. It reuses the existing activity meters, now running while a call is active and on screen rather than only in speaker view; muted inputs are not metered. A small tracker beside the active-speaker selector needs two loud samples to start and holds through pauses, and the overlay updates only when the speaking set changes.
…in the call window Direct calls with only the local camera on, or a shared screen and no remote camera, hid the header avatar and showed no remote frame, so the speaking ring had nowhere to appear. The stage now keeps the peer's avatar in place of their video, carrying the same ring. Gallery tiles no longer receive the speaker-view promotion class. Speech now starts on two consecutive meter samples with half a sample of timer tolerance, so early timers do not delay the ring and separate noise spikes within the hold no longer count as speech. Documents that WebKit's MediaSource path cannot be metered and that mobile routing with the meter context is unvalidated on devices.
…fecting playback A ring could stay on after a call ended or its audio went away mid-word, because speech only expired when another level sample arrived. A meter that stops now reports that its input is no longer metered, and the tracker forgets it at once, so the ring clears and cannot return when metering resumes. The active-speaker selector still reads a stopped input as silent, so speaker-view focus is unchanged. Metering no longer falls back to Firefox's mozCaptureStream, which can divert the element's playback away from the speakers; that path is not metered. Streams the meter captures itself are stopped when it stops, so restarts no longer leave live captures behind. Streams registered by the call are never stopped. Max fill in direct calls again shows the local camera or shared screen alone on stage; the peer's stage avatar appears only outside Max fill.
…meters in the background Meters now keep running while the recording window is open, even with the overlay minimized or the main window hidden, so its speaking rings and speaker view keep updating. With the recording window closed, meters stop while the call is minimized or the main window is hidden, and restart when it is visible again.
Danidfra
force-pushed
the
feat/call-avatars-speakers
branch
from
October 23, 2026 14:02
fa94966 to
fd67225
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Testing
Unit and browser call tests pass;
quality:alland build pass. No live call between two peers yet.Rebased onto current
main(a4db9c6). The call window now relies on upstream's incremental mirroring, so this PR only exposes whether that window is open.Limitations: no speaking indicator on WebKit or Firefox for the MediaSource audio path. Expect a small merge conflict with #104 in
CallOverlay.svelte.