feat: add text-first voice implementation - #767
PanicIsReal wants to merge 2 commits into
Conversation
d818cd1 to
95a7766
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: af0896a404
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
95a7766 to
bbf95ad
Compare
|
How do I get dave? |
DAVE is required for the encryption. |
Thank you <3! It works now. One feedback though, what do you think about using guilds tree footer (SetFooter) for voice state instead of a new UI component/primitive on top of message input which takes a space and feels out of place. Furthermore, currently, |
Once I get some time I can experiment with some other UI layouts for sure. |
👍 Also, I think you should move encryption and related things to arikawa instead. Arikawa already has a voice package, but it hardcodes the encryption protocol (mode) and does not support libdave yet, moving related stuff to arikawa might be a better choice. |
|
One more thing, I am able to hear others, but they cannot hear me, I guess so audio output is working fine, but not input. Have you considered switching to miniaudio (malgo) instead of portaudio? |
It worked in both directions for me using Ghostty on my M3 Mac, is it possible your default audio input device is not set correctly? I did not test with multiple available audio inputs. - What are you testing on? Also to answer your question about Arikawa, We used disgo + DAVE for voice because DAVE/E2EE will soon be required for Discord voice, and Arikawa’s current voice stack hardcodes the older xsalsa20_poly1305 mode and does not expose libdave/DAVE integration. disgo explicitly supports modern voice encryption mode negotiation and pluggable DAVE sessions, so it could handle the upcoming requirement correctly. We kept Arikawa for the main Discord gateway, but used disgo for voice transport because the deciding factor was the encryption path and future DAVE support, not Opus encoding. Also Portaudio was just available and confirmed to work across Mac, Linux & Windows so I went with that. |
|
could you include a preview/screenshot in the description of the PR? |
Summary
voice_debug.logartifact and ignore future local voice/firebase debug logsNew hotkeys
vshow users for the selected voice channelVhide users for the selected voice channelashow users for all visible voice channelsAhide users for all visible voice channelsmtoggle muteMtoggle deafenqleave voiceTesting
go test ./...andgo build ./...pass locally on Apple Silicon macOS withCGO_ENABLED=1portaudio19.7.0opus1.6.1Source build dependencies
brew install portaudio opuspacman -S --needed mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-pkgconf mingw-w64-ucrt-x86_64-portaudio mingw-w64-ucrt-x86_64-opussudo apt install build-essential pkg-config portaudio19-dev libopus-devsudo dnf install gcc pkgconf-pkg-config portaudio-devel opus-develsudo pacman -S --needed base-devel pkgconf portaudio opusDAVE is required for the encryption.