From cad3867027446644f60d975a004440d43ad4cbf6 Mon Sep 17 00:00:00 2001 From: devsyncwrld Date: Mon, 31 Aug 2026 11:45:02 -0300 Subject: [PATCH] docs: add fork roadmap --- docs/roadmap-resenha.md | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 docs/roadmap-resenha.md diff --git a/docs/roadmap-resenha.md b/docs/roadmap-resenha.md new file mode 100644 index 00000000..88765a57 --- /dev/null +++ b/docs/roadmap-resenha.md @@ -0,0 +1,54 @@ +# Roadmap — fork Resenha + +Plano de features próprias desta instância. Arquivo exclusivo do fork +(nome com sufixo para não colidir com arquivos do upstream em merges). + +Escrito em português por ser documento de planejamento do dono do fork; o +código e os commits seguem em inglês, como o resto do repositório. + +## Entregue + +| Feature | Commit | Nota | +|---|---|---| +| Ir para a call clicando no nome do canal | `c70b0095` | Exigiu o `voiceStore` passar a guardar o espaço da call — antes ele não sabia onde a call estava assim que o usuário navegava para outro servidor | +| Botão de GIF redesenhado | `20526e1b` | Contorno vazado com letras cheias, no lugar do bloco sólido | +| Explorador de GIF no banner | `20526e1b` | Sem upload: banner já aceita URL absoluta no cliente e no servidor | + +## Já existia no código (verificado, não construir de novo) + +- **Animação de digitação** — `TypingIndicator.tsx`, três pontos `animate-bounce` + escalonados em 0/150/300ms. +- **Sons de call/stream** — `SoundController.tsx`, montado no `AppLayout`: + stream started/ended, alguém entra/sai da tela, entra/sai da call, câmera, + mute, ringing. Os `.ogg` estão em `web/public/sounds/`. + +Se qualquer um dos dois não se manifestar em uso, o trabalho é **depuração**, +não implementação. + +## Pendente — pedido original + +Ordem sugerida: as pequenas primeiro, as grandes uma de cada vez. + +| # | Feature | Tamanho | Observação técnica | +|---|---|---|---| +| 7 | Preview de perfil ao clicar no nome | Média | Os dados já vêm do `UserProfileModal`; é transformar em popover ancorado | +| 10 | Teste de voz com loopback | Média | `AudioManager.playTestTone()` já existe; falta capturar o mic e devolver no monitor, com "Stop Testing" | +| 6 | Favoritar GIFs + categorias | Grande | Precisa de tabela, migração drizzle e API para sincronizar entre dispositivos, como no Discord | +| 8 | Atividade (Spotify etc.) | Grande | `activityStore` e `activityBridge` já existem, mas a detecção é via Electron; Spotify exige OAuth e presença via WebSocket | +| 9 | Registro de auditoria | Grande | Schema + ganchos em cada mutação do servidor + interface | + +## Pendente — ideias aprovadas + +| Feature | Tamanho | Observação técnica | +|---|---|---| +| Soundboard | Média | `AudioManager` já carrega e toca `.ogg` sob demanda; falta upload por espaço, permissão e disparo na sala LiveKit | +| Estatísticas do grupo | Grande | Horas em call, quem mais falou, ranking. **Depende do mesmo registro de eventos da auditoria (#9)** | +| Watch party | Grande | O screen share do LiveKit já existe; falta sincronizar posição de reprodução entre participantes | +| Emojis e stickers do grupo | Média | `UPLOAD_DIR` e o pipeline de upload já existem; falta tabela por espaço e resolução no render de mensagem | + +## Dependência que vale respeitar + +**Auditoria (#9) e Estatísticas compartilham o mesmo mecanismo**: uma tabela de +eventos append-only no servidor. Construir a auditoria primeiro e as +estatísticas como leitura agregada dessa mesma tabela evita escrever dois +sistemas de registro paralelos que divergem com o tempo.