From e6dfe4392654ba14fa95683fe0a177f2dd2f4432 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Thu, 9 Jul 2026 12:47:42 -0400 Subject: [PATCH] fix(voice): broadcast VOICE_JOIN/LEAVE via ws, show participants in sidebar for all users --- data/shared/mnemosyne.db | Bin 4096 -> 389120 bytes data/shared/mnemosyne.db-shm | Bin 32768 -> 0 bytes data/shared/mnemosyne.db-wal | Bin 1120672 -> 0 bytes internal/gateway/client.go | 12 ++++++++ web/src-tauri/Cargo.lock | 2 +- web/src/components/VoiceChannel.tsx | 27 +++++++++++------- web/src/stores/voicePresence.ts | 42 ++++++++++++++++++++++++++++ web/src/stores/ws.ts | 19 +++++++++++++ web/tsconfig.app.tsbuildinfo | 2 +- 9 files changed, 92 insertions(+), 12 deletions(-) delete mode 100644 data/shared/mnemosyne.db-shm delete mode 100644 data/shared/mnemosyne.db-wal create mode 100644 web/src/stores/voicePresence.ts diff --git a/data/shared/mnemosyne.db b/data/shared/mnemosyne.db index 4410bda55bad27954e72ab65919e742875d57998..a5d96e6e714c7727c6cfa94b691e122279b4bfbb 100644 GIT binary patch literal 389120 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 delta 27 hcmZp8Al{%bL7J73fq{W>vY>)JkfqlpvPobLKLA?~1`GfI diff --git a/data/shared/mnemosyne.db-shm b/data/shared/mnemosyne.db-shm deleted file mode 100644 index be9caca0e00ed5934c6702ac45587fc057906fb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeI52XItX6o$X01QJ4sAQ~}25K#d;Dk2s@0cjyo5G+Blp@O}lV!@7ry<+dZcg2dm z_l6C7FW8OXIm63vhhZ`=BiXxW_WUz{?%Dfp?)l&Uc6Kt8+5eW!Sslf;!VHv_%8wnS zuIx5--i&GGRnsTUo;-8>L~18=t*)u4omJCa;T~BZzC)fE+uR$Y$se=*j~7da9LrQa5-TI z;qtl+f(;lH`sT*pk6s;?-PU{VWx=&JTpSrah zEoN@xWKPFTgqsGh`v!HtpzbgAX2Q*d1A=*dW_9~D^!^rIulo!P_8yefb@!szw+OBe z4(cI6Jv69?1@-Wtt_Nc_p1AEpUi1p6VzjaT0gHG?tnYs4!8sEfIHw0xC8EhJKzqu1MYx3;10M0?tnYs z4!8sEfIHw0xC8EhJKzqu1MYx3;10M0?tnYs4!8sEfIHw0xC8EhJKzqu1MYx3;10M0 z?tnYs4!8sEfIHw0xC8EhJCIEW^qbx`@LOb=nm=Fz*F=_?k(`MF$&)CeM3NxdO8P^4 zNq#7k#D@-&$WTsS`pY-|2g+{*3T$=%$`{XED_9^o-&@iZ^+GOzI_@9;h! z@(Ew?JwGv*-}#GL`Y@lSnUXre@CA zzzvaQYSNGmXcmeM%!@2j)0S-D#>g@?SIY)8p~(g^k^eH&oG}}?DY8sWk+T8KCbNMi zk>CB@=_d(o0~o|$hBBNHR7--`SaxJ5c40SmXHO<_7)NjB=vIGMA#fIGO0d$^AW zc!-C2Gz(@wk%b=hwJ5CbVoqJt6geAc5&7NUgQ=Xug*?L?zRYRMo{FqalR|Ak^AT;J zDDt~sQ&nx?`N%ShBll0=UXwpN$Hh@J(cyog(*7-~PPxOY?lCo-Ant-$s_%IdcE> z?JwdIuHb5};}&k?ah~KkUgQ;C=Pll4HXrdBU(-DDf11+YPvfoZ)p%Pk;hn$Z2Y%*P z{@`!^mBVcdGKHDqOq;AdLp_n#1}?QBGY3@aX}~t{V`Q0KBKJ?<{<8E-^L%A*MlnWC vN#2|NIFLg)fm4{y8Jx=up5;@%qFL5HUF&}oztn%Z(XZ+$>^5*^WSRc~$`Z*L diff --git a/data/shared/mnemosyne.db-wal b/data/shared/mnemosyne.db-wal deleted file mode 100644 index 4c6ceb34b267e474e9b0046d65da4aeafbc69253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120672 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

FhKc3PvJdfe&ca(&cKrwVzkoYNExOUHXU-#;c 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 diff --git a/internal/gateway/client.go b/internal/gateway/client.go index 23c20a9..6b39c8c 100644 --- a/internal/gateway/client.go +++ b/internal/gateway/client.go @@ -155,6 +155,18 @@ func (c *Client) readPump() { c.Hub.BroadcastEvent(Event{Type: event.Type, Data: data}) case EventPresenceUpdate: c.Hub.BroadcastEvent(event) + case EventVoiceJoin, EventVoiceLeave, EventVoiceMute, EventVoiceDeafen: + // Broadcast voice state changes to all clients with sender info + var vData map[string]interface{} + if raw, ok := event.Data.(json.RawMessage); ok { + json.Unmarshal(raw, &vData) + } + if vData == nil { + vData = make(map[string]interface{}) + } + vData["user_id"] = c.UserID + vData["username"] = c.Username + c.Hub.BroadcastEvent(Event{Type: event.Type, Data: vData}) case EventVoiceWhisper: // Forward voice whispers only to the target user, not broadcast var whisperData struct { diff --git a/web/src-tauri/Cargo.lock b/web/src-tauri/Cargo.lock index 5a689ec..b49e814 100644 --- a/web/src-tauri/Cargo.lock +++ b/web/src-tauri/Cargo.lock @@ -77,7 +77,7 @@ checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "app" -version = "0.1.0" +version = "0.2.0" dependencies = [ "log", "serde", diff --git a/web/src/components/VoiceChannel.tsx b/web/src/components/VoiceChannel.tsx index e02800d..dd80251 100644 --- a/web/src/components/VoiceChannel.tsx +++ b/web/src/components/VoiceChannel.tsx @@ -2,6 +2,7 @@ import { useVoiceStore } from '../stores/voice.ts'; import { useAuthStore } from '../stores/auth.ts'; import { usePermissions } from '../lib/usePermissions.ts'; import { useChannelStore } from '../stores/channel.ts'; +import { useVoicePresenceStore } from '../stores/voicePresence.ts'; import { api } from '../lib/api.ts'; interface VoiceChannelProps { @@ -13,7 +14,8 @@ export function VoiceChannel({ channelId, channelName }: VoiceChannelProps) { const currentRoom = useVoiceStore((state) => state.currentRoom); const isConnected = useVoiceStore((state) => state.isConnected); const joinVoice = useVoiceStore((state) => state.joinVoice); - const participants = useVoiceStore((state) => state.participants); + const liveParticipants = useVoiceStore((state) => state.participants); + const presenceParticipants = useVoicePresenceStore((s) => s.getParticipants(channelId)); const currentUserId = useAuthStore((state) => state.user?.id); const activeChannelId = useChannelStore((s) => s.activeChannelId); @@ -40,6 +42,11 @@ export function VoiceChannel({ channelId, channelName }: VoiceChannelProps) { const isActive = currentRoom === channelId; + // Use live participants when in the room, otherwise fall back to presence + const displayParticipants = isActive && isConnected + ? liveParticipants.map(p => ({ userId: p.identity, username: p.username, isMuted: p.isMuted, isSpeaking: p.isSpeaking, hasVideo: p.hasVideo, isScreenSharing: p.isScreenSharing })) + : presenceParticipants.map(p => ({ userId: p.userId, username: p.username, isMuted: true, isSpeaking: false, hasVideo: false, isScreenSharing: false })); + const handleClick = () => { if (!isActive) { console.log("[VoiceChannel] joining voice:", channelId, channelName); @@ -69,19 +76,19 @@ export function VoiceChannel({ channelId, channelName }: VoiceChannelProps) { 🔊 {channelName} - {isActive && participants.length > 0 && ( + {displayParticipants.length > 0 && ( - [{participants.length}] + [{displayParticipants.length}] )} - {isActive && ( + {displayParticipants.length > 0 && (

- {participants.map((p) => { - const isMe = p.identity === currentUserId; + {displayParticipants.map((p) => { + const isMe = p.userId === currentUserId; return (
@@ -93,12 +100,12 @@ export function VoiceChannel({ channelId, channelName }: VoiceChannelProps) { {p.isScreenSharing && 🖥} {p.hasVideo && 🎥} - {!isMe && ( + {!isMe && isActive && (
{canMute && !p.isMuted && (