Sobre o projeto

Viboplr é um reprodutor de música desktop com foco em plugins para macOS e Windows, criado com Tauri 2, React e Rust. Ele reproduz áudio e vídeo de pastas locais e serviços de música remotos, atuando como um orquestrador: um sistema de plugins conecta provedores de streaming, serviços de metadados, bancos de dados de letras e fontes de imagens, enquanto o aplicativo principal cuida da reprodução, do gerenciamento da biblioteca e da interface. Gerenciamento da biblioteca Pastas locais são escaneadas em segundo plano com relatório de progresso e monitoramento de arquivos em tempo real. Coleções Subsonic/Navidrome são sincronizadas na mesma biblioteca, e coleções remotas podem ser conectadas por meio de plugins. Faixas locais podem ser exportadas como uma fonte de música autocontida e hospedável (manifesto mais arquivos), e manifestos publicados podem ser assinados como coleções. Os metadados são lidos pela biblioteca de tags lofty, com fallback de análise de nome de arquivo, e a busca é alimentada pelo SQLite FTS5 em títulos, artistas, álbuns, gêneros e nomes de arquivo, insensível a acentos e maiúsculas/minúsculas. Metadados de gênero são armazenados como tags com relacionamentos muitos-para-muitos entre faixas. Reprodução O motor padrão é o mpv nativo, construído sobre o libmpv empacotado, oferecendo decodificação nativa, reprodução sem lacunas e saída de áudio exclusiva (bit-perfect), com renderização de vídeo nativa em ambas as plataformas. Um motor HTML5 de navegador via webview do sistema serve como fallback automático. Outros recursos de reprodução incluem equalizador de 10 bandas, normalização ReplayGain, crossfade configurável de até 10 segundos, controle de velocidade estilo toca-discos, gerenciamento de fila por arrastar e soltar, regras de continuação automática, estações de rádio infinitas a partir de uma faixa, artista ou tag, curtidas em três estados, um mini player compacto sempre no topo e uma barra de busca com forma de onda e prévias em storyboard para vídeo. Visualizações e skins As visualizações incluem Início (carrossel de rádio mais prateleiras), uma visualização Tela Cheia de Reprodução com letras sincronizadas estilo karaokê e visualizadores de plugins, páginas de detalhes para artistas, álbuns, tags e faixas, uma visualização de Histórico com abas, playlists com exportação/importação M3U8 e .mixtape, e um gerenciador de Coleções. Oito skins integradas estão incluídas (Default, OLED Black, Arctic Light, Forest, Silver, Ocean Blue, Viboplr, Sunset), com skins JSON personalizadas, uma galeria da comunidade, 19 tokens de cor e CSS opcional sanitizado por skin. Plugins e integrações Plugins JavaScript são o principal mecanismo de extensão, oferecendo streaming, metadados, letras, resolução de imagens, downloads, itens de menu de contexto, visualizações de barra lateral, prateleiras iniciais, itens de informação em reprodução, visualizadores, ganchos de eventos, painéis de configurações e tarefas agendadas. Plugins integrados cobrem scrobbling e metadados do Last.fm, letras do LRCLIB e Lyrics.ovh, e capas do TheAudioDB, Deezer, iTunes e MusicBrainz. Plugins da galeria incluem Spotify, TIDAL, YouTube via yt-dlp, Genius, qBittorrent e visualizadores. Plugins renderizam por meio de um modelo de dados estruturado em vez de injeção de HTML bruto, e podem ser ativados, desativados, reordenados e configurados na visualização Extensões. Outros recursos Perfis isolados semelhantes aos do Chrome, um assistente de integração na primeira execução, dependências externas gerenciadas (ffmpeg, yt-dlp) que são detectadas, instaladas e atualizadas automaticamente, capas de entidades baseadas em plugins com imagens compostas de tags, menus de contexto nativos do sistema operacional, um pacote de diagnóstico revisado pelo usuário para relatórios de problemas e atualizações automáticas integradas com canais estável e beta. Tecnologia e formatos A stack é Tauri 2 para o shell do aplicativo, Rust para escaneamento, banco de dados, sincronização, motor de reprodução e clientes de API, TypeScript/React/Vite para o frontend, libmpv com fallback HTML5 para reprodução, SQLite via rusqlite com FTS5, lofty para tags, notify para monitoramento de arquivos e tauri-plugin-store v2 para persistência de estado. Formatos de áudio decodificados nativamente incluem MP3, FLAC, AAC/M4A, ALAC, WAV, OPUS, WMA, OGG, AIFF, APE, WavPack, TTA, DSD e outros; o suporte a vídeo cobre MP4/M4V/MOV (H.264) em ambas as plataformas e WebM no Windows via motor de navegador. Desenvolvimento e licenciamento O desenvolvimento requer Node.js 18+ e Rust 1.70+, além dos pré-requisitos específicos de plataforma do Tauri; o README documenta comandos de desenvolvimento e build de produção, scripts de lint e teste, e um fluxo de implantação em VPS para o site de documentação, incluindo um workflow do GitHub Actions. O projeto é licenciado sob GPL-3.0-or-later, com dependências Rust e JavaScript sob licenças permissivas e libmpv, ffmpeg e yt-dlp usados como componentes externos separados.