OpenSSF Scorecard / Scorecard analysis (push) Waiting to run
CI / Build & test (Node 20) (push) Canceled after 0s
CI / Build & test (Node 24) (push) Canceled after 0s
CI / Build & test (push) Canceled after 0s
CodeQL / Analyze (javascript-typescript) (push) Canceled after 0s
Security / Secret scan (gitleaks) (push) Canceled after 0s
Security / Dependency scan (OSV-Scanner) (push) Canceled after 0s
Security / IaC/config scan (Trivy) (push) Canceled after 0s
Security / License compliance scan (Trivy) (push) Canceled after 0s
3.1 KiB
3.1 KiB
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 pontosanimate-bounceescalonados em 0/150/300ms. - Sons de call/stream —
SoundController.tsx, montado noAppLayout: stream started/ended, alguém entra/sai da tela, entra/sai da call, câmera, mute, ringing. Os.oggestão emweb/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.