Armazenamento em nuvem
O local na nuvem é uma localização no armazenamento que o usuário já possui. Todo provedor é controlado pela mesma interface de armazenamento em coven; o que difere por provedor é o login, a configuração e como outras pessoas e dispositivos chegam até ele.
Provedores
Seção intitulada “Provedores”| Provedor | Login | Seu próprio dispositivo novo | Uma pessoa que você convida |
|---|---|---|---|
| Compatível com S3 | Chave de acesso + segredo | Código de restauração, mais sua chave de acesso, levada ao lado dele no código QR | Uma chave de acesso criada para ela |
| Dropbox | OAuth, mantido por coven | Código de restauração, depois login no seu Dropbox | A pasta compartilhada da biblioteca é compartilhada com a conta dela |
| OneDrive | OAuth, mantido por coven | Código de restauração, depois login no seu OneDrive | A pasta da biblioteca é compartilhada com a conta dela |
| iCloud (CloudKit) | Apple Account, sem login | Código de restauração, também oferecido pelas Chaves do iCloud | A zona CloudKit da biblioteca é compartilhada com a Apple Account dela |
Compatível com S3 cobre AWS, Backblaze B2, Cloudflare R2, Wasabi e qualquer outro que fale a API. O formulário de configuração pede só bucket, região, endpoint e chave de acesso; coven reconhece serviços conhecidos pelo host do endpoint e preenche como falar com eles. Avançado guarda o prefixo de chave opcional e uma escolha de perfil de serviço, automático por padrão. Para um serviço que coven não conhece, Detectar ajustes testa o bucket com a chave e mostra o que encontrou. A configuração confere o provedor antes de salvar qualquer coisa, para que um erro de digitação falhe na configuração, não na primeira sincronização, e bae explica o motivo de coven em palavras simples. Dropbox, OneDrive e iCloud existem só na edição bae completa; builds baeium os compilam fora.
Login e pastas
Seção intitulada “Login e pastas”coven faz ele mesmo o login no Dropbox e no OneDrive, então nenhum token passa por bae. No desktop, o navegador abre a página do provedor e um ouvinte local recebe o único redirecionamento; no mobile, a folha de login da plataforma faz isso. coven guarda os tokens no chaveiro do sistema operacional e renova um deles uma vez quando o provedor o rejeita; uma renovação que falha aparece no status de sincronização como a ação Entrar, em vez de um loop silencioso de novas tentativas.
Depois do login, o usuário escolhe onde a biblioteca vive. No Dropbox é uma pasta compartilhada, já que uma biblioteca da casa é compartilhada com as contas das outras pessoas; bae usa para isso acesso completo ao Dropbox, não uma pasta de app. Se ainda não houver pasta compartilhada, bae diz para compartilhar uma no Dropbox e procurar novamente. No OneDrive é qualquer pasta, navegada a partir do topo, e uma nova pode ser criada ali.
CloudKit não precisa de fluxo: coven o controla nas plataformas Apple como a Apple Account conectada.
O layout do local
Seção intitulada “O layout do local”Dentro do local, todo caminho de objeto começa com o id do store da biblioteca: a sequência numerada de mudanças de coven, seus snapshots, pedidos de entrada e arquivos armazenados. Várias bibliotecas podem compartilhar uma pasta do Dropbox ou do OneDrive sem tocar nos objetos umas das outras.
Todo objeto é criptografado e armazenado com um nome aleatório; não existe modo em texto claro. Os arquivos de bae são arquivos de coven referenciados por linhas de quatro tabelas sincronizadas: release_files, covers, artist_images e o avatar de cada linha de people. O caminho de um arquivo é fixado quando ele é preparado, então renomear um álbum nunca o move. Veja Criptografia.
Comportamento em redes reais
Seção intitulada “Comportamento em redes reais”Leituras para reprodução usam intervalos: o player busca os blocos criptografados de que precisa em vez de arquivos inteiros, e busca adiante enquanto um arquivo toca em ordem. Limites de taxa e erros transitórios do provedor tentam novamente seguindo um único cronograma de espera, respeitando o retry-after do provedor quando fornecido. A fila de upload sobrevive a reinícios: um upload interrompido ao sair do app retoma em vez de reiniciar, e uploads pausados continuam pausados.