Repository navigation
feat(light): bandeja com apertar para falar, indicador de fala e volume por participante - #893
Merged
Merged
Conversation
O núcleo passa a emitir `speaking` (sessionId, speaking) para cada participante, inclusive o próprio usuário. Como no cliente completo, nada é publicado no servidor: os remotos usam o nível RFC 6464 que o remetente já põe no cabeçalho RTP, lido a cada 100 ms só durante a chamada; o local é medido por um AudioTransport intercalado no PolicyAudioDevice, sem cópia nem alocação. Limiar de -40 dBov e 400 ms de silêncio antes de encerrar a fala. `set-input-mode` (voice_activity | push_to_talk) é salvo no perfil e `ptt` abre/fecha a transmissão. A captura continua aberta com a tecla solta para a fala começar sem atraso; a faixa envia silêncio. Mute, deafen e restrições do servidor continuam prevalecendo. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…do cliente No runner macOS Intel a Alice já falava, sozinha na chamada SFU, antes de bob.join() retornar; o evento ficava antes do ponto de partida da espera. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nky Light Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`set-volume` ajusta de 0 a 200% o volume de uma sessão de voz, com a mesma escala e chave (sessionId) do controle deslizante do cliente completo. É uma preferência local, salva no perfil, aplicada na chamada atual e nas próximas, em P2P e SFU, e emite `participant-volume`; `stats` traz `userVolumes` das sessões da chamada. O ganho é o do RemoteAudioSource do WebRTC, aplicado ao fluxo decodificado antes da mixagem: sem processamento extra e sem custo em 100%. O perfil guarda até 256 sessões alteradas, e voltar a 100 libera a entrada. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ing-field-initializers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndeja A bandeja passa a usar o núcleo de fala, push-to-talk e volume: - item `Apertar para falar`, que alterna o modo de entrada e mostra a tecla; - submenu `Na chamada` com quem está falando e o volume de cada pessoa em predefinições de 0 a 200%; - ícone verde claro enquanto o próprio usuário fala. A tecla é escolhida com `--ptt-key` (ou `set-ptt-key`) e salva no perfil, sem padrão para não tomar uma tecla de jogo. O atalho global só existe enquanto pode transmitir (em chamada e no modo apertar para falar): hook de baixo nível do teclado, ou do mouse para Mouse4/Mouse5, no Windows; monitor global do AppKit no macOS, que exige a autorização de Acessibilidade. A tecla nunca é consumida e a repetição automática vira um único aperto. O núcleo publica `members` no `state` e o evento `participants`, e inclui o modo de entrada e a tecla no `authenticated`, para a bandeja seguir só por eventos, como na #750. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 7, 2026
Collaborator
Author
|
@lucastaonline quando puder, a revisão do Monky Light está em três PRs empilhados. Revisar nesta ordem ajuda, porque cada um depende do anterior:
Depois de cada merge eu faço o rebase do seguinte para a |
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.
Parte da #658 (Prioridade 2). Junta o #885 (fala e push-to-talk) e o #892 (volume por participante) e liga tudo na bandeja, para o Light ser usado no dia a dia sem mandar comandos JSON. Substitui os dois PRs.
Para quem usa
--ptt-key(F13,Mouse4,RightControl…) e salva no perfil. Não há tecla padrão, para não tomar uma tecla de jogo.Como funciona
Núcleo
PolicyAudioDevice, sem cópia nem alocação.track->set_enabled, com a captura aberta para não atrasar a fala. Mute, deafen e restrições do servidor continuam prevalecendo.RemoteAudioSourceantes da mixagem, sem nó extra e sem custo em 100%.set-input-mode,ptt,set-ptt-key,set-volume; eventosspeaking,input-mode,push-to-talk-key,participant-volumeeparticipants;membersnostate; modo de entrada e tecla noauthenticated. A bandeja continua seguindo só por eventos, como na feat(light): adicionar interface de bandeja ao núcleo nativo #750.Bandeja
WH_KEYBOARD_LL, ouWH_MOUSE_LLsó paraMouse4/Mouse5, já que o hook de mouse é chamado a cada movimento do ponteiro. Fica na thread da interface e nunca consome a tecla.addGlobalMonitorForEventsMatchingMask, com o pedido de Acessibilidade feito uma vez e o aviso no menu. Modificadores da direita viaflagsChangede bitsNX_DEVICER*.O commit
fix(light)corrige o que derrubou o macOS no CI do #892: o clang com-Wmissing-field-initializersacusava a inicialização parcial doProfileSettings.Sem mudança de protocolo: não é
major.Testes (Windows x64, local)
npm run test:light:native: 35 aprovados, 4 ignorados por plataforma. Novos casos de modelo e controlador da bandeja: tecla só observada em chamada e em PTT; mouse vs teclado; repetição; soltura ao remover o hook; quem fala; volumes; tabela de teclas. Também perfil cominputMode,userVolumesepushToTalkKey.npm run test:light:voice: 31 aprovados, 1 ignorado. Fala e PTT,participants,set-ptt-keye volume, todos em P2P e SFU.monky-light.exe --tray --ptt-key F13numa chamada, com F13 injetado porkeybd_event. Um aperto, mesmo com repetição, abre e fecha a transmissão; fora da chamada o hook não existe.Ainda falta
measure:light.Roteiro manual em
apps/light/QA.md§6.22–6.30.🤖 Generated with Claude Code