docs: mark Spotify delivered, drop resolved items
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
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
This commit is contained in:
+3
-22
@@ -15,6 +15,7 @@ código e os commits seguem em inglês, como o resto do repositório.
|
|||||||
| Explorador de GIF no banner | `20526e1b` | Sem upload: banner já aceita URL absoluta no cliente e no servidor |
|
| Explorador de GIF no banner | `20526e1b` | Sem upload: banner já aceita URL absoluta no cliente e no servidor |
|
||||||
| Teste de microfone com retorno | `bfe62d70` | `AudioManager.startMicTest/stopMicTest`; devolve o microfone ao parar, com duas travas independentes |
|
| Teste de microfone com retorno | `bfe62d70` | `AudioManager.startMicTest/stopMicTest`; devolve o microfone ao parar, com duas travas independentes |
|
||||||
| Bloco de atividade no perfil | `d7da0ff2` | `ProfileActivity`; inclui correção de validação de assets no servidor |
|
| Bloco de atividade no perfil | `d7da0ff2` | `ProfileActivity`; inclui correção de validação de assets no servidor |
|
||||||
|
| Spotify por OAuth (atividade com capa e progresso) | `75316b08` | Token só no servidor; `state` assinado; atividades por fonte para não brigar com o detector do Electron |
|
||||||
| Fundação de i18n (en + pt-BR) | `688a1335` | `src/i18n/`; pt-BR é parcial e cai para inglês. Aba Idioma nas configurações |
|
| Fundação de i18n (en + pt-BR) | `688a1335` | `src/i18n/`; pt-BR é parcial e cai para inglês. Aba Idioma nas configurações |
|
||||||
| Preview de perfil nos participantes da call | (ver git log) | O popout já existia e era aberto de 11 lugares; **nenhum era de voz**. Ligado nas linhas da lista de voz e no nome dos tiles da grade |
|
| Preview de perfil nos participantes da call | (ver git log) | O popout já existia e era aberto de 11 lugares; **nenhum era de voz**. Ligado nas linhas da lista de voz e no nome dos tiles da grade |
|
||||||
|
|
||||||
@@ -41,7 +42,6 @@ Ordem sugerida: as pequenas primeiro, as grandes uma de cada vez.
|
|||||||
| # | Feature | Tamanho | Observação técnica |
|
| # | Feature | Tamanho | Observação técnica |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| 6 | Favoritar GIFs + categorias | Grande | Precisa de tabela, migração drizzle e API para sincronizar entre dispositivos, como no Discord |
|
| 6 | Favoritar GIFs + categorias | Grande | Precisa de tabela, migração drizzle e API para sincronizar entre dispositivos, como no Discord |
|
||||||
| 8 | **Produtor** de atividade do Spotify | Grande | O consumo está pronto (`ProfileActivity` + pipeline completo). Falta algo que *gere* a atividade com faixa e artista — ver abaixo |
|
|
||||||
| 9 | Registro de auditoria | Grande | Schema + ganchos em cada mutação do servidor + interface |
|
| 9 | Registro de auditoria | Grande | Schema + ganchos em cada mutação do servidor + interface |
|
||||||
|
|
||||||
## Pendente — ideias aprovadas
|
## Pendente — ideias aprovadas
|
||||||
@@ -53,26 +53,6 @@ Ordem sugerida: as pequenas primeiro, as grandes uma de cada vez.
|
|||||||
| Watch party | Grande | O screen share do LiveKit já existe; falta sincronizar posição de reprodução entre participantes |
|
| 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 |
|
| 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 |
|
||||||
|
|
||||||
## O que falta para o Spotify (#8)
|
|
||||||
|
|
||||||
O caminho de consumo está inteiro: tipo, store, WebSocket, validação no
|
|
||||||
servidor, relay de presença e agora o bloco no perfil. **Falta um produtor.**
|
|
||||||
|
|
||||||
Três opções, com custos bem diferentes:
|
|
||||||
|
|
||||||
1. **Entrada no dicionário do detector** (`activityDetector.ts` lê um JSON de
|
|
||||||
processos, e `listening` já é um tipo válido). Custo quase zero, mas dá
|
|
||||||
apenas "Listening to Spotify" — sem faixa nem artista — e **só no app
|
|
||||||
Electron**.
|
|
||||||
2. **Ler o título da janela do Spotify** no processo main do Electron. O título
|
|
||||||
é "Artista - Faixa", então preenche `details` e `state`. Ainda só desktop, e
|
|
||||||
sem capa nem duração.
|
|
||||||
3. **Spotify Web API com OAuth.** É a única que cobre quem usa pelo navegador —
|
|
||||||
que é a maioria do grupo — e a única que traz capa e progresso.
|
|
||||||
**Bloqueio:** exige registrar um app no dashboard do Spotify e obter
|
|
||||||
client id/secret. Isso é ação sua; eu não consigo fazer.
|
|
||||||
|
|
||||||
|
|
||||||
## Regra de idioma (a partir de 2026-08-31)
|
## Regra de idioma (a partir de 2026-08-31)
|
||||||
|
|
||||||
Funcionalidade nova sai com interface em **pt-BR**, e a cada update um sistema
|
Funcionalidade nova sai com interface em **pt-BR**, e a cada update um sistema
|
||||||
@@ -88,6 +68,8 @@ fixas por `t('chave')`. O que faltar cai para o inglês sozinho.
|
|||||||
- Configurações → navegação e aba Idioma
|
- Configurações → navegação e aba Idioma
|
||||||
- Configurações → Voz (dispositivo de entrada, volume, teste de microfone)
|
- Configurações → Voz (dispositivo de entrada, volume, teste de microfone)
|
||||||
- Cartão de perfil (sobre mim, membro desde, enviar mensagem, atividade)
|
- Cartão de perfil (sobre mim, membro desde, enviar mensagem, atividade)
|
||||||
|
- Configurações → Privacidade
|
||||||
|
- Configurações → Conexões (nasceu bilíngue)
|
||||||
|
|
||||||
### Fila sugerida de tradução
|
### Fila sugerida de tradução
|
||||||
|
|
||||||
@@ -100,7 +82,6 @@ Ordenadas por relação valor/custo para um servidor de grupo fechado.
|
|||||||
|
|
||||||
| Sistema | Tamanho | Por que faz sentido aqui |
|
| Sistema | Tamanho | Por que faz sentido aqui |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| **Fechar cadastro + convites** | Pequena | A instância está com `REGISTRATION_OPEN=true`: qualquer um cria conta. O `InviteModal` já existe — é trocar cadastro aberto por convite |
|
|
||||||
| **Backup fora da VPS** | Pequena | Hoje app, banco, uploads, backups e as três cópias do repositório morrem no mesmo evento. Um envio periódico para fora resolve |
|
| **Backup fora da VPS** | Pequena | Hoje app, banco, uploads, backups e as três cópias do repositório morrem no mesmo evento. Um envio periódico para fora resolve |
|
||||||
| **Aniversários e lembretes** | Pequena | Alto retorno afetivo, custo baixo: campo de data + verificação diária + mensagem no canal |
|
| **Aniversários e lembretes** | Pequena | Alto retorno afetivo, custo baixo: campo de data + verificação diária + mensagem no canal |
|
||||||
| **Perfis por servidor** | Média | Apelido e avatar diferentes por espaço, como no Discord. O modelo já tem membro por espaço |
|
| **Perfis por servidor** | Média | Apelido e avatar diferentes por espaço, como no Discord. O modelo já tem membro por espaço |
|
||||||
|
|||||||
Reference in New Issue
Block a user