Atualização de Desenvolvimento da OFIBO: Shuffle, Melhores Formas de Onda e Playlists Colaborativas
16 de setembro de 2026
O dia 16 de setembro foi mais um dia produtivo de desenvolvimento para a OFIBO. Trabalhámos tanto no frontend como no backend, melhorando o leitor de música, aumentando a qualidade das formas de onda para áudio de longa duração, introduzindo playlists colaborativas, refinando a gestão de playlists e corrigindo um problema importante nas definições do perfil.
A maioria destas melhorias foi construída através da expansão dos sistemas que a OFIBO já tinha, em vez de substituir uma arquitetura de produção que já funcionava. Isto permitiu-nos introduzir novas funcionalidades importantes mantendo intactas a fila existente do leitor, as playlists e a estrutura da aplicação.
O Shuffle chegou ao leitor da OFIBO
Uma das melhorias mais importantes do leitor foi a introdução do Shuffle.
Em vez de reconstruir ou substituir a fila de reprodução existente da OFIBO, o Shuffle foi criado
como uma camada leve sobre a fila já gerida pelo PlayerContext.
Isto significa que a paginação de produção e a fila montada dinamicamente continuam a funcionar
exatamente como antes.
O Shuffle funciona agora tanto no leitor com forma de onda como no leitor compacto. Mantém um registo das canções que já foram reproduzidas para que não sejam repetidas antes de percorrer toda a fila disponível naquele momento.
Também incorpora automaticamente novas canções adicionadas à fila mais tarde. Isto é especialmente importante para a OFIBO porque a aplicação pode continuar a carregar canções enquanto o ouvinte já está a ouvir música.
Também adicionámos histórico de reprodução aleatória. Graças a isso, Anterior segue agora o percurso real de audição em modo aleatório, em vez de retroceder pela ordem original da playlist.
Melhores controlos do leitor em telemóvel, tablet e desktop
Depois de testarmos o leitor compacto com tamanhos de ecrã reais de produção, refinámos a distribuição responsive dos seus controlos.
Em ecrãs de telemóvel, Favorito e Shuffle permanecem no lado esquerdo do leitor. Em layouts de tablet e desktop, esses controlos passam para o lado direito, imediatamente antes do carrinho e do controlo de licenças.
Também corrigimos um erro responsive que podia fazer a identidade da canção aparecer duas vezes no leitor compacto na faixa de largura de ecrã 640–767px. O problema vinha do breakpoint de visibilidade utilizado para o título da canção em linha e já foi corrigido.
Apresentação correta do tempo para faixas com várias horas
A OFIBO não está limitada a canções curtas, por isso o leitor também precisava de representar corretamente áudio de longa duração.
Antes, faixas com mais de uma hora podiam continuar a mostrar minutos acumulados.
Melhorámos o formatador de tempo do leitor para que as faixas longas utilizem agora
o formato muito mais claro H:MM:SS.
Por exemplo, uma gravação longa pode agora mostrar: 4:23:31.
As canções normais continuam a usar o formato familiar M:SS, por isso nada
muda para as faixas habituais.
Uma resolução de forma de onda muito melhor para áudio longo
Também investigámos porque o detalhe da forma de onda piorava progressivamente em ficheiros de áudio com uma ou várias horas.
O problema foi identificado no processo de geração da forma de onda. O caminho de exportação anterior do WaveSurfer produzia, na prática, apenas cerca de 8.000 picos por canal, quase independentemente da duração do áudio.
Essa resolução pode funcionar bem para uma canção curta, mas o mesmo número de pontos de forma de onda distribuído por uma, duas ou quatro horas de áudio torna-se progressivamente mais grosseiro.
Substituímos essa abordagem de resolução fixa por uma geração de forma de onda que escala com a duração da faixa.
O nosso novo objetivo de qualidade é aproximadamente 10.000 picos por cada quatro minutos de áudio, ou cerca de 41,67 picos por segundo.
Isto significa que a OFIBO pode agora gerar aproximadamente:
- 10.000 picos para uma canção de 4 minutos
- 150.000 picos para uma gravação de 1 hora
- 600.000 picos para uma gravação de 4 horas
Também verificámos o backend Laravel durante a investigação. O endpoint de formas de onda existente já conseguia aceitar o array de picos e guardar o payload JSON completo.
Por outras palavras, a suposta limitação de payload do backend não era o problema. A solução correta foi aplicada onde devia: na geração e exportação da forma de onda.
Playlists colaborativas
Outra grande área de trabalho foi a colaboração em playlists.
As playlists da OFIBO podem agora ter colaboradores aprovados que participam na sua gestão juntamente com o proprietário.
O mais importante é que implementámos isto sem criar um segundo sistema de membros desnecessário.
A OFIBO continua a utilizar a tabela pivot existente playlist_user.
O campo playlists.user_id continua a identificar o proprietário canónico da playlist,
enquanto os colaboradores aprovados são representados através de registos existentes em
playlist_user com is_collaborator = true.
Isto mantém o modelo de dados mais limpo e permite que a colaboração se integre naturalmente com o sistema de playlists que a OFIBO já utiliza.
Um novo sistema de convites para playlists
Embora a participação aprovada continue a usar a tabela pivot existente, o estado dos convites precisava do seu próprio ciclo de vida.
Para isso introduzimos a nova tabela playlist_invitations.
Ela gere separadamente os pedidos de colaboração pendentes e rejeitados em relação aos membros já aprovados da playlist.
Os colaboradores podem ser pesquisados e convidados pelo nome de utilizador. O sistema de convites também protege contra várias situações inválidas:
- Os utilizadores não podem convidar-se a si próprios.
- Colaboradores já aprovados não podem ser convidados novamente.
- Convites pendentes duplicados são evitados.
- Utilizadores que rejeitaram anteriormente um convite podem voltar a ser convidados mais tarde.
Quando um convite é aprovado, a OFIBO cria ou atualiza a participação correspondente em
playlist_user e marca o utilizador como colaborador.
Se o convite for rejeitado, não é criada qualquer participação na playlist.
Os colaboradores podem realmente gerir a playlist
A colaboração não é apenas um nome apresentado ao lado de uma playlist.
Alargámos a autorização autenticada das playlists para que os colaboradores aprovados possam abrir e editar playlists partilhadas, sejam elas públicas, não listadas ou privadas.
Os colaboradores aprovados podem:
- Adicionar canções
- Remover canções
- Reordenar canções
- Trabalhar dentro da interface existente de gestão de playlists
Reutilizámos deliberadamente o editor de playlists existente em vez de criar um editor de colaboração separado. Isto mantém a interface da OFIBO consistente e evita manter dois sistemas diferentes para praticamente a mesma tarefa.
A propriedade da playlist continua a ser importante
Embora os colaboradores possam gerir o conteúdo de uma playlist, o proprietário original continua a ser distinto dos colaboradores.
Por isso, eliminar uma playlist é uma ação exclusiva do proprietário.
Adicionámos a ação em falta para Eliminar Playlist para os proprietários e implementámos a remoção
através de soft deletes do Laravel, preservando ao mesmo tempo o indicador lógico existente
deleted da OFIBO.
Os colaboradores não podem eliminar a playlist e essa ação destrutiva não lhes é apresentada na interface.
Convites para playlists dentro de As Minhas Playlists
Os utilizadores convidados recebem agora uma secção de Convites para playlists dentro da experiência existente de As Minhas Playlists.
A partir daí, podem Aprovar ou Rejeitar um convite. Depois de aprovada, a playlist partilhada passa a fazer parte da experiência normal de playlists do utilizador, em vez de aparecer num sistema de colaboração completamente separado.
Uma interface mais limpa para “Convidar colaborador”
Também refinámos a interface de convites para playlists depois de a testar.
Em vez de mostrar permanentemente todo o formulário de pesquisa e convite de colaboradores, a página da playlist apresenta inicialmente um botão simples de Convidar colaborador.
A interface completa de pesquisa por nome de utilizador e convite só abre quando é necessária.
Isto mantém a página da playlist mais limpa sem perder qualquer funcionalidade de colaboração.
Mostrar o proprietário e os colaboradores em conjunto
A identidade da playlist também foi melhorada.
O nome de utilizador do proprietário continua a aparecer primeiro, mas os colaboradores aprovados são agora apresentados ao lado do proprietário.
Assim, uma playlist pode apresentar uma linha de identidade semelhante a:
@proprietario e @colaborador
Isto torna imediatamente claro quando uma playlist está a ser mantida por mais de um utilizador da OFIBO, ao mesmo tempo que continua a identificar quem é o proprietário original.
Corrigido um erro do navegador nas definições do perfil
Por fim, corrigimos um problema ao nível do navegador que podia impedir que fossem guardadas definições do perfil sem qualquer relação entre si.
O problema vinha do pattern HTML utilizado pelo campo de nome de utilizador.
Em navegadores que usam o novo modo de expressões regulares Unicode v, o hífen na
classe de caracteres [a-z0-9._-] podia provocar uma exceção
Invalid character in character class.
Como a validação do navegador acontece antes de o formulário chegar ao backend, isto podia impedir atualizações de definições completamente diferentes, como género ou privacidade.
O hífen está agora corretamente escapado, eliminando a exceção do navegador e restaurando o envio normal do formulário de perfil.
Construir a OFIBO sem estragar o que já funciona
Um tema recorrente no trabalho de 16 de setembro foi expandir a OFIBO sem substituir desnecessariamente sistemas de produção estáveis.
O Shuffle foi construído sobre a fila existente do leitor. As playlists colaborativas reutilizaram a tabela pivot existente de membros das playlists. A edição partilhada reutilizou o editor de playlists existente. A investigação das formas de onda confirmou que o backend já estava a fazer o seu trabalho antes de serem feitas alterações ao processo de geração.
O resultado é uma aplicação de música OFIBO mais capaz, com reprodução mais inteligente, formas de onda muito mais detalhadas para áudio longo, verdadeira colaboração em playlists, gestão de playlists mais limpa e definições de perfil mais fiáveis.
Passo a passo, a OFIBO continua a crescer para se tornar uma plataforma mais rápida e completa para ouvir, partilhar e gerir música.
