Peer rename + details box on Connectivity tab; Add band dialog fixes
Add band dialog (from testing feedback): * Tab order is now Start, End, Gain, OK, Cancel (OK was after Cancel). * Gain box takes decimals like 1.5 (half-dB steps); parametric list shows one decimal. * The two frequency boxes start empty — nothing prepopulated to mislead; both required on OK. New Connectivity-tab feature (held for next release): * Rename peer (Alt+M) opens a dialog to give a peer a friendly name, with a Clear custom name button. Names are keyed by the peer's MACHINE NAME (stable across restarts, IP changes and networks), stored machine-wide in AppConfig.PeerFriendlyNames, and resolved everywhere a peer shows: both peer lists (via PeerListItem.DisplayNameProvider), the volume/pan/EQ list, the status line and split-recording filenames. Manual-by-IP peers with no announced name fall back to keying by address. * Peer details (Alt+E): a read-only box for the highlighted connected peer showing name, machine name, IP, connected-for, link health + ping, what they're sending, and whether they're receiving our audio. "Sending: 2 devices on ASIO at 48 kHz, Opus" is derived from the live receive streams — each stream is one device and its lane gives WASAPI vs ASIO — so NO protocol change and no new privacy exposure. AudioReceiver.ActiveFormatsFromAddress added for this. Manual updated (readme.html + MANUAL.md). Build clean; --selftest passes; deployed to both test folders. Held for next release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
033edd776f
commit
f35f6c3c28
@@ -864,6 +864,32 @@ public sealed class AudioReceiver : IDisposable
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The format of every currently-active (non-idle) receive session from the given peer IP — one
|
||||
/// entry per stream, i.e. per capture device the peer is sending. Each carries its sample rate,
|
||||
/// codec and lane (WASAPI vs ASIO), so the UI can say "sending N devices on ASIO at 48 kHz, Opus"
|
||||
/// with no protocol change. Empty when nothing is arriving from that peer.
|
||||
/// </summary>
|
||||
public IReadOnlyList<AudioFormatInfo> ActiveFormatsFromAddress(IPAddress address)
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
var fresh = new List<SessionPlayout>();
|
||||
foreach (var sp in playoutEngine.ActiveSessions)
|
||||
{
|
||||
if (!sp.Endpoint.Address.Equals(address)) continue;
|
||||
if (now - sp.LastWriteUtc > SessionIdleTimeout) continue;
|
||||
fresh.Add(sp);
|
||||
}
|
||||
var formats = new List<AudioFormatInfo>();
|
||||
lock (sessionsLock)
|
||||
{
|
||||
foreach (var sp in fresh)
|
||||
if (sessions.TryGetValue((sp.Endpoint, sp.StreamId), out var session) && session.Format is not null)
|
||||
formats.Add(session.Format);
|
||||
}
|
||||
return formats;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The wire codec of the freshest currently-active receive session across all peers, or
|
||||
/// null when nothing is being received. Surfaced in the SNAP log's Codec column so a
|
||||
|
||||
Reference in New Issue
Block a user