fix: soundboard upload in Electron, and Spotify sync/disappearing/progress
Soundboard: naming a clip used window.prompt, which Electron does not implement — it returned nothing, the flow aborted in silence, and adding a sound worked in the browser while doing nothing at all in the desktop app. Replaced with a two-step field inside the popover, identical in both. Spotify, three separate defects behind the two symptoms reported: Out of sync — a 20s poll stacked on the activity store's 5s debounce left everyone else on the previous track for up to 25s. The next poll is now scheduled just past the current track's end instead of on a fixed interval, and a track change bypasses the debounce (it happens once every few minutes; the debounce exists for chatty producers). Vanishing — a paused track, and the silent gap Spotify reports between two songs, both cleared the activity outright. Pausing is now carried as state rather than absence, and an empty answer is tolerated for 25s before the block comes down. Progress bar — timestamps are computed with the server's clock and were drawn against the viewer's, so any drift displaced the bar; and it kept advancing after a pause until the next poll. The ready payload now carries server time so each client can correct its own offset, and the bar freezes when paused. Tray, native notifications and system audio in screen share were all found already implemented and wired end to end; recorded in the roadmap rather than built again.
This commit is contained in:
+12
-8
@@ -91,16 +91,20 @@ modais de convite · configurações restantes · telas de erro
|
||||
| **Barra de progresso errada / andando pausada** | Duas causas independentes: (1) o progresso é derivado de carimbos calculados com o relógio do **servidor** e desenhado contra o relógio de **quem olha** — se os relógios divergem, a barra fica deslocada; (2) a barra continua avançando localmente depois que a pessoa pausa, até a próxima consulta | Enviar o horário do servidor junto no payload para o cliente corrigir a diferença, e congelar a barra quando o estado for pausado |
|
||||
|
||||
|
||||
## Aprovadas para o app desktop (2026-08-31)
|
||||
## App desktop — já existia (verificado 2026-08-31)
|
||||
|
||||
Só entram aqui coisas que o navegador **não consegue** fazer — o resto seria
|
||||
trabalho dobrado sem ganho. **Nenhuma iniciada.**
|
||||
As três pedidas já estão implementadas e ligadas de ponta a ponta. **Não
|
||||
construir de novo.**
|
||||
|
||||
| Feature | Tamanho | Observação técnica |
|
||||
|---|---|---|
|
||||
| **Áudio do sistema no compartilhamento de tela** | Média | Hoje o som do jogo/vídeo não vai junto com a tela. O Electron captura áudio do sistema; o navegador não. **É pré-requisito da watch party** — sem isso, assistir junto é assistir mudo. No Linux depende do servidor de áudio (PipeWire/PulseAudio), então vale confirmar o alvo antes |
|
||||
| **Bandeja do sistema** | Pequena | Fechar minimiza em vez de sair; ícone com menu de mudo/silenciar e sair de verdade. Cuidado clássico: sem um "sair" explícito no menu, a pessoa não consegue fechar o app |
|
||||
| **Notificações nativas do sistema** | Pequena | Mais confiáveis que as do navegador e funcionam com a janela minimizada. Já existe um `NotificationController` no web; a parte desktop é rotear pelo processo principal |
|
||||
- **Bandeja** — `createTray()` em `desktop/src/main.ts`, chamada na inicialização;
|
||||
fechar a janela esconde em vez de sair (`mainWindow.on('close')`).
|
||||
- **Notificações nativas** — `showNotification()` no processo principal, canal
|
||||
IPC `show-notification`, e o web já chama por `platform/notifications.ts`.
|
||||
- **Áudio do sistema no compartilhamento** — `setDisplayMediaRequestHandler`
|
||||
devolve `audio: 'loopback'`; existe caixa de seleção no `ScreenSharePicker`
|
||||
ligada a `screenShareConfig.shareAudio`, que atravessa o IPC.
|
||||
|
||||
Se algum não se manifestar em uso, o trabalho é **depuração**, não construção.
|
||||
|
||||
|
||||
## Aprovadas, a fazer depois (2026-08-31)
|
||||
|
||||
Reference in New Issue
Block a user