Repository navigation
v3.0.0 — O celular deixa de ser a versão reduzida
O celular deixa de ser a versão reduzida.
Desde a 2.0.0 o app ganhou português, wikilinks que funcionam, busca com operadores, diagnóstico do vault, backup, cache do índice e blocos query. Esta versão fecha as três últimas peças — e com elas o Android faz praticamente tudo que o desktop faz, tirando o que só existe num computador.
🃏 Import de baralho do Anki, direto no celular
⋮ da gaveta → Importar do Anki. Sem Anki Desktop, sem passo intermediário.
E sem dependência nenhuma: a coleção dentro de um .apkg é SQLite puro, e o Android já tem SQLite. A versão desktop precisou trazer o SQLite compilado para WebAssembly para fazer o mesmo trabalho.
- Notas cloze viram cartões de lacuna; tags
A::Bviram#A/B. - Cloze é detectado pelo texto, não pela tabela de tipo de nota — cujo formato mudou entre versões do Anki. E como nota cloze não tem campo de resposta, exigir uma jogava todas fora em silêncio. Esse bug já aconteceu no desktop; não valia a pena ter duas vezes.
- Baralho grande vira uma pasta, 100 cartões por nota: uma nota com milhares de cartões leva segundos para abrir; com cem, é instantânea.
- Ele pergunta antes de escrever qualquer coisa no vault.
Uma limitação, dita com todas as letras: o Anki 2.1.50+ comprime a coleção com zstd, que o Android não tem. Em vez de engordar o APK com uma biblioteca nativa só por isso, um pacote nesse formato é recusado com a instrução exata: no Anki, exporte de novo marcando "Suportar versões antigas do Anki". Instrução precisa vale mais que falha misteriosa.
Mídia não entra por aqui. Os arquivos ficam no pacote com nomes numéricos, e uma referência quebrada no meio do cartão é pior que nada. Se o baralho tem imagens, importe no desktop — o vault é o mesmo.
📊 Estatísticas de revisão
⋮ da gaveta → Estatísticas. Retenção, facilidade média, e a previsão dos próximos 14 dias desenhada como barras.
Sem biblioteca de gráficos: são catorze números, e a forma da fila é a mensagem inteira — uma parede no primeiro dia se lê igual em qualquer resolução. Tudo que está atrasado cai nesse primeiro dia, porque é ali que está.
Um vault sem nada revisado mostra retenção 0, que é a resposta honesta — não uma divisão por zero vestida de 100%.
📖 Leitor de EPUB
Abra um .epub do vault e ele lê, com sumário e zoom, um capítulo por vez.
Também sem biblioteca de leitor: um .epub é um ZIP com um manifesto XML, e o WebView já renderiza o resto. Trazer um leitor inteiro adicionaria uma dependência e os bugs dela; o que é genuinamente chato é achar a ordem de leitura, e essa parte está coberta por testes.
Um capítulo por vez é de propósito: um livro-texto tem dezenas de MB de XHTML, e um celular que precisa segurar tudo para mostrar a primeira página não mostra nada. As imagens do capítulo entram embutidas, porque o WebView roda sem acesso a arquivo e sem rede — um livro é conteúdo não confiável como qualquer outro download.
🧪 Por baixo
153 testes, rodando no CI antes de cada APK. O projeto não tinha nenhum há duas semanas.
Um deles pegou um erro que eu não teria visto de outro jeito: em JavaScript, dois cifrões numa substituição viram um cifrão literal; em Kotlin o cifrão começa uma referência de grupo. A mesma linha portada literalmente do desktop produzia outra coisa na matemática dos cartões do Anki.
📥 Instalação
Assinado com a mesma chave desde a 1.x, então instala por cima sem desinstalar nada e sem perder configurações. Android 9 ou mais novo.