diff --git a/desktop/index.html b/desktop/index.html
index 9bf4321..a0d0d20 100644
--- a/desktop/index.html
+++ b/desktop/index.html
@@ -79,13 +79,13 @@
diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs
index 423d714..ed3f670 100644
--- a/desktop/src-tauri/src/lib.rs
+++ b/desktop/src-tauri/src/lib.rs
@@ -1215,8 +1215,11 @@ fn do_register_signal(
let transport = Arc::new(wzp_transport::QuinnTransport::new(conn));
emit_call_debug(&app, "register_signal:quic_connected", serde_json::json!({ "relay": relay }));
+ // Send alias from seed-derived adjective+noun so other
+ // users see a friendly name in the lobby.
+ let alias = derive_alias(&seed);
transport.send_signal(&SignalMessage::RegisterPresence {
- identity_pub, signature: vec![], alias: None,
+ identity_pub, signature: vec![], alias: Some(alias),
}).await.map_err(|e| format!("{e}"))?;
emit_call_debug(&app, "register_signal:register_presence_sent", serde_json::json!({}));
diff --git a/desktop/src/main.ts b/desktop/src/main.ts
index 1c87d53..2009d2b 100644
--- a/desktop/src/main.ts
+++ b/desktop/src/main.ts
@@ -359,16 +359,15 @@ vdSpkBtn.addEventListener("click", async () => {
interface CallStatusI {
active: boolean;
mic_muted: boolean;
- speaker_muted: boolean;
- send_rms: number;
- recv_rms: number;
- codec_tx: string;
- codec_rx: string;
- fec_ratio: number;
- send_packets: number;
- recv_packets: number;
+ spk_muted: boolean;
+ participants: any[];
+ encode_fps: number;
+ recv_fps: number;
+ audio_level: number;
call_duration_secs: number;
fingerprint: string;
+ tx_codec: string;
+ rx_codec: string;
}
async function pollStatus() {
@@ -382,12 +381,12 @@ async function pollStatus() {
// Update drawer controls
vdMicBtn.classList.toggle("muted", st.mic_muted);
- vdMicIcon.textContent = st.mic_muted ? "🔇" : "🎤";
- vdSpkBtn.classList.toggle("muted", st.speaker_muted);
- vdSpkIcon.textContent = st.speaker_muted ? "🔇" : "🔊";
+ vdMicIcon.textContent = st.mic_muted ? "Muted" : "Mic";
+ vdSpkBtn.classList.toggle("muted", st.spk_muted);
+ vdSpkIcon.textContent = st.spk_muted ? "Off" : "Spk";
// Level meter
- const pct = Math.min(100, (st.send_rms / 10000) * 100);
+ const pct = Math.min(100, (st.audio_level / 10000) * 100);
vdLevelBar.style.width = `${pct}%`;
// Duration
@@ -417,7 +416,7 @@ async function pollStatus() {
}
// Stats
- vdStats.textContent = `TX: ${st.codec_tx} ${st.send_packets}pkt | RX: ${st.codec_rx} ${st.recv_packets}pkt | FEC: ${(st.fec_ratio * 100).toFixed(0)}%`;
+ vdStats.textContent = `TX: ${st.tx_codec} ${st.encode_fps}fps | RX: ${st.rx_codec} ${st.recv_fps}fps`;
} catch {}
}
@@ -718,13 +717,13 @@ async function autoConnect() {
lobbyDot.style.background = "var(--green)";
lobbyRelayLabel.textContent = `${relay.name} — connected`;
- // Get identity
- const fp: string = await invoke("get_identity");
- if (fp) {
- myFingerprint = fp;
- lobbyFp.textContent = fp;
+ // Get identity + alias
+ const appInfo: any = await invoke("get_app_info");
+ if (appInfo?.fingerprint) {
+ myFingerprint = appInfo.fingerprint;
+ lobbyFp.textContent = appInfo.alias || appInfo.fingerprint;
lobbyIdenticon.innerHTML = "";
- lobbyIdenticon.appendChild(createIdenticonEl(fp, 20, true));
+ lobbyIdenticon.appendChild(createIdenticonEl(appInfo.fingerprint, 20, true));
}
} catch (e: any) {
lobbyDot.style.background = "var(--red)";