Registro de Alterações

1.2.7 – 2 de julho de 2026

Corrigido

  • Jornada do Livro — Sessões Podem Desaparecer Após Atualização de Detalhes
    As sessões de leitura de um livro podiam desaparecer silenciosamente da aba Jornada na tela de detalhes após você adicionar um ISBN ou os detalhes do livro serem atualizados do catálogo — embora as sessões em si estivessem seguras e ainda aparecessem na tela de Sessões.
    A aba associava sessões ao livro de uma forma que se tornava frágil quando os identificadores do livro mudavam, fazendo com que a contagem e a lista de sessões recentes aparecessem vazias. A Jornada agora mantém um livro e suas sessões vinculados de forma confiável.

1.2.6 – 24 de junho de 2026

Adicionado

  • Diagnóstico de Sincronização — Detalhes Mais Profundos de Falha na Exportação – O Diagnóstico de Sincronização (opt-in) agora captura muito mais sobre uma exportação com falha do CloudKit para que o antigo bug de “exportação sempre falha” possa finalmente ser identificado. A tela de diagnóstico exibe os tipos de registro com falha e um histograma de sub-erros em destaque em cada linha de evento com falha. Ainda estritamente livre de PII: nenhum conteúdo de livro, citação ou nota é lido.
  • Diagnóstico de Sincronização — Captura de Logs do Sistema – Uma nova ação “Capturar Logs do Sistema” na tela de Diagnóstico de Sincronização.
  • Ações Rápidas na Tela Inicial – Pressionar longamente o ícone do aplicativo Kiveo agora exibe três ações rápidas — Iniciar Sessão, Digitalizar Código de Barras e Capturar Citação — que levam diretamente ao local certo. Iniciar Sessão e Capturar Citação abrem o seletor de livros para você escolher um livro, e então o direcionam para uma sessão ativa ou para o fluxo de captura de citação, respectivamente; Digitalizar Código de Barras abre a pesquisa com o scanner de código de barras já em execução.
  • Início — Cartão Tátil “Livros Lidos” – A estatística “Livros Lidos” no resumo da Tela Inicial agora é tátil e leva a uma lista somente leitura de livros concluídos. A lista é limitada ao período selecionado no seletor de ano: mostra “Todos os Livros Lidos” para a Vida Toda, “Livros Este Ano” para o ano atual, ou “Livros em {year}” para um ano passado, e permanece sincronizada com o seletor. Os livros são ordenados com os mais recentemente concluídos primeiro; tocar em um livro abre sua tela de detalhes. Os outros cartões de resumo (Páginas, Horas, Sequência) permanecem não interativos.

Alterado

  • Capas de Livro Personalizadas — Tamanho Limitado na Origem – Salvar uma capa personalizada (ao criar/editar um livro manual ou trocar uma capa) agora redimensiona a imagem para que seu lado mais longo tenha no máximo ~1024px e a comprime para um teto de ~700KB antes de armazená-la no livro. Anteriormente, a foto em resolução total era armazenada literalmente, produzindo blobs de vários megabytes que inchavam o armazenamento no dispositivo, desperdiçavam memória e inflavam a carga útil de sincronização do CloudKit. As capas permanecem visualmente idênticas nos tamanhos em que realmente são renderizadas. (Higiene de dados; não afeta a confiabilidade da sincronização.)
  • Status do Livro — Caminho Único de Atualização – Toda alteração de status de livro agora passa por um único escritor canônico (Book.setStatus), para que o status de um livro e suas datas e metadados relacionados permaneçam consistentes, não importa de onde venha a alteração (a planilha de edição, o editor de datas, a importação do Goodreads ou o registro de progresso).
  • Reflexões — Prompt “No que você está pensando?” – Os campos de entrada de reflexão agora compartilham um único prompt mais amigável: “No que você está pensando?”.
  • Troca de Capa — Marcador de Capa “Original” – A grade “Outras Edições” da tela de troca de capa agora marca a edição original/canônica do próprio livro com um rótulo “Original” (um anel neutro sutil mais um glifo de “retornar para”), para que, quando uma capa personalizada ou a capa de uma edição diferente estiver ativa, você ainda possa identificar — e encontrar o caminho de volta para — a capa original do livro.

Corrigido

  • Capas de Livro Personalizadas — Blobs de Capa Órfãos e Oversized – Um livro criado manualmente cuja edição real apareceu posteriormente no catálogo mantinha seus dados de imagem de capa personalizada agora redundantes para sempre, mesmo após uma atualização de metadados que lhe deu uma boa capa remota. Esse blob órfão (muitas vezes vários megabytes) apenas inchava a loja e o payload de sincronização. A atualização de metadados agora limpa um blob de capa personalizada remanescente, mas apenas quando o livro não tem um substituto de capa intencional e um URL de capa remota utilizável está disponível, para que nada visível mude. Um reparo único e idempotente também é executado em bibliotecas existentes: blobs de capa oversized são recodificados menores no local, e os órfãos são limpos quando uma capa remota pode substituí-los — conservadoramente, nunca deixando um livro sem capa. Capas personalizadas e de edição intencionais são sempre preservadas.
  • Troca de Capa — Capa Personalizada Mostrava uma Edição do Catálogo como “Atual” – Quando um livro usava uma capa personalizada, a grade “Outras Edições” da tela de troca de capa ainda destacava a edição do catálogo correspondente ao ISBN como a capa atual. O cálculo de “atual” correspondia puramente por ISBN e ignorava um substituto personalizado ativo; agora ele não retorna nenhuma edição enquanto uma capa personalizada está em uso, para que a grade mostre corretamente que nenhuma das edições do catálogo é a atual.
  • Backup e Restauração — Sinalizador de Livro Personalizado Preservado – Restaurar de um backup não rebaixa mais livros criados manualmente para livros regulares do catálogo. O sinalizador isCustom agora é gravado e lido de volta dos backups (backups mais antigos sem o campo ainda são importados, tratados como não personalizados).
  • Barra de Abas — Itens Ficaram em Destaque Após Dispensar uma Planilha (iOS 26) – No iOS 26, apresentar e dispensar qualquer planilha fazia com que cada item da barra de abas inferior — incluindo os não selecionados — fosse renderizado na cor de destaque em vez do esquema pretendido selecionado=destaque / não selecionado=rótulo.
  • Busca de Livros — Resultados desatualizados vazam para a pré-busca – Quando uma busca lenta estava em andamento e o usuário limpava a consulta ou saía do modo de busca, resultados que chegavam tarde eram aplicados ao ViewModel, fazendo com que os resultados da busca aparecessem abaixo das seleções de pré-busca.
  • Do Nosso Jardim — Centralização Vertical em Coluna Única – Quando uma coluna na grade “Do Nosso Jardim” tinha apenas um livro, ela era centralizada verticalmente contra colunas mais altas com dois livros. As colunas agora se alinham ao topo.
  • Busca de Livros — Idioma Automático Enviou “Qualquer” – Quando o filtro de idioma de busca estava definido como “Automático”, o aplicativo enviava lang=any para a API, retornando resultados em todos os idiomas em vez de priorizar o idioma do usuário. Agora resolve para o local real do dispositivo (por exemplo, es para usuários de espanhol).
  • Troca de Capa — “Restaurar Original” Não Limpava uma Capa Personalizada – Tocar em “Restaurar Original” removia o botão Restaurar, mas a imagem da capa personalizada continuava aparecendo. Dois bugs deixavam o URL da imagem do livro apontando para o arquivo de capa personalizada após uma restauração: a capa original do catálogo era capturada *depois* que o URL já havia sido sobrescrito com o arquivo personalizado (então a restauração “restaurava” a imagem personalizada), e a restauração apenas reajustava o URL quando um original havia sido capturado – deixando capas personalizadas antigas presas. Agora, a capa real pré-sobrescrita é capturada antes de ser sobrescrita, e a restauração sempre afasta a imagem do arquivo personalizado: restaura uma capa genuína do catálogo remoto quando uma é conhecida, ou caso contrário, limpa a imagem e aciona uma nova busca de metadados do catálogo para que o livro recupere sua capa adequada. Quando não há um original remoto conhecido, a capa do catálogo agora é buscada inline por ISBN e preenche imediatamente, no local, em vez de reaparecer apenas na próxima vez que a tela de detalhes do livro for aberta. O arquivo de capa personalizada no disco também é excluído para liberar espaço.

1.2.5 – 22 de junho de 2026

Adicionado

  • Diagnóstico de Sincronização do iCloud – Adicionada observabilidade de sincronização opt-in para ajudar a diagnosticar problemas de sincronização do CloudKit. O registro de sincronização está desativado por padrão e destinado apenas a usuários que estão ativamente solucionando um problema de sincronização – quando desativado, nada é observado, gravado, persistido ou relatado. Uma nova tela “Diagnóstico de Sincronização” em Configurações → Avançado tem uma opção “Ativar Registro de Sincronização” que inicia/para o registro imediatamente (sem necessidade de reiniciar). Enquanto ativado, CloudKitSyncMonitor registra eventos de configuração, importação e exportação do SwiftData/CloudKit (e quaisquer erros que eles carreguem) em um registro rotativo limitado e persistido, relata falhas de sincronização para telemetria e mostra o registro de eventos recentes com estilo de sucesso/falha que os usuários podem exportar e compartilhar. Desativar o registro novamente mantém qualquer registro já capturado para que ele ainda possa ser compartilhado. O registro nunca inclui o conteúdo de livros, citações ou notas – apenas metadados de sincronização e detalhes de erros. Esta é uma instrumentação de diagnóstico; não altera o comportamento da sincronização.

1.2.3 – 25 de maio de 2026

Removido

  • Atividade ao Vivo — Intenções de Pausar/Retomar AppPauseSessionIntent e ResumeSessionIntent removidos; nenhuma UI de Atividade ao Vivo os invocava após a limpeza dos botões da Fase 3. Pausar/retomar de dentro do app ainda funciona como antes. (Fase 4 da reformulação da Atividade ao Vivo.)

Adicionado

  • Atividade ao Vivo — Fundo com Amostra da Capa – A Atividade ao Vivo na Tela Bloqueada agora tinge seu fundo com a cor dominante da capa do livro atual, escurecida para legibilidade. Reutiliza o pipeline de paleta de cores existente (sem novas amostras); livros cujas paletas ainda não foram cacheadas voltam ao plano de fundo padrão e pegam a cor na próxima sessão. (Fase 2 da reformulação da Atividade ao Vivo.)

Alterado

  • Atividade ao Vivo — Capa se Dissolve no Fundo – A capa na tela de bloqueio agora se dissolve no fundo da atividade através de um gradiente curto em sua borda final, em vez de se alinhar rigidamente ao texto. Capa dimensionada para sua proporção natural de livro de 2:3 (70×105) e altura geral do widget limitada para um espaço menor. Ícone do timer removido quando em execução; glifo de pausa aparece quando pausado.
  • Atividade ao Vivo — Redesenho da Ilha Dinâmica – Todas as três apresentações da Ilha Dinâmica reconstruídas: compacta mostra a marca Kiveo ao lado do timer; expandida usa um layout unificado apenas na parte inferior com capa, título, autor, timer e chips de citação/livro; mínima mostra a marca Kiveo em cor de destaque. Botões de pausar/parar/encerrar removidos em favor de toque para abrir. (Fase 3 da reformulação da Atividade ao Vivo.)
  • Atividade ao Vivo — Tipografia e Layout – Atividade ao Vivo na Tela Bloqueada atualizada com título serifado Bitter, timer em tamanho hero e uma capa que se estende até a borda principal. Capas ausentes agora mostram um fallback tipográfico de letra (primeira palavra significativa do título em Bitter) em vez de um ícone genérico. Contagens de citações/livros movidas para uma linha secundária mais discreta ao lado do timer. (Fase 1 da reformulação da Atividade ao Vivo.)
  • Cartões de Sessão – Redesenhamos os cartões de sessão na tela de Sessões: sessões de um único livro agora mostram um título maior, o autor e uma linha liderada por ícone para páginas e tempo; sessões de vários livros mantêm uma lista compacta de uma linha por livro com uma linha de resumo acima.

Corrigido

  • Lembretes e Incentivos — Incentivo Nunca Disparava Quando o Diário Estava Ativo – Anteriormente, o lembrete diário suprimia incondicionalmente o incentivo de inatividade sempre que ambos estavam habilitados, então os incentivos efetivamente nunca alcançavam usuários com um lembrete diário configurado. O agendador agora escolhe entre eles com base na atividade: enquanto o usuário registrou uma sessão dentro da janela de limite, o lembrete diário é executado; uma vez que ele ficou quieto além do limite, o incentivo assume e o diário é pausado até que ele leia novamente. Usuários sem sessões ainda são tratados como não inativos, então o lembrete diário acompanha novos usuários até que eles estabeleçam uma linha de base.
  • Recuperação de Sessão — Descartar Não Persistiu – Tocar em “Descartar” no banner de recuperação de sessão agora exclui o rascunho. A implementação anterior chamava delete em um modelo buscado em um ModelContext diferente (desalocado), o que o SwiftData ignora silenciosamente, fazendo com que o banner reaparecesse no próximo lançamento. Descartar agora busca novamente os rascunhos ativos no contexto atual e os limpa, também protegendo contra rascunhos duplicados raros.
  • Trocar Capa / Trocar Edição — Selo “Atual” Duplicado – Quando a API de edições retornava mais de uma linha correspondente aos ISBNs armazenados de um livro (por exemplo, uma correspondência no ISBN-10 e outra no ISBN-13 e ISBN-10), ambas as miniaturas eram marcadas como “atual” com o brilho e o selo. A edição “atual” agora é resolvida uma vez no nível do ViewModel, preferindo uma correspondência de ISBN-13 a um fallback de ISBN-10, para que exatamente uma linha seja destacada e a ordem de classificação seja estável.
  • Piscar da Capa da Sessão Recuperada – A sessão ativa recuperada não pisca/reapresenta mais ao salvar uma citação ou reflexão (o fullScreenCover permaneceu no lugar durante os salvamentos do SwiftData, dando ao item apresentado uma identidade estável).
  • Localização do Log de Atividade da Sessão – As entradas do log da sessão ativa (“Sessão iniciada”, “Sessão pausada”, etc.) agora são devidamente localizadas em vez de sempre aparecerem em inglês. Sessões existentes com logs em inglês são tratadas com elegância.
  • Timestamps da Sessão Recuperada – As entradas do log de atividade da sessão agora refletem a duração total da sessão quando uma sessão é recuperada após uma falha ou encerramento forçado, para que o total no título e o carimbo de “Sessão encerrada” não discordem mais.
  • Atividade ao Vivo Após Recuperação – A Tela Bloqueada e a Ilha Dinâmica agora refletem o tempo decorrido, a contagem de citações e a contagem de livros corretas quando uma sessão de leitura é recuperada após uma falha ou encerramento forçado. Qualquer Atividade ao Vivo desatualizada deixada do processo anterior do aplicativo é limpa, e uma nova é iniciada vinculada à sessão recuperada.

1.2.2 – 22 de abril de 2026

Alterado

  • Cache de Seleções de Pesquisa – Duração do cache de seleções reduzida de 7 dias para 6 horas para que o conteúdo selecionado seja atualizado com mais frequência.
  • Limpar Cache – “Limpar Cache” em Configurações agora também remove seleções de pesquisa em cache ao lado das imagens de capa de livros.

1.2.1 – 21 de abril de 2026

Alterado

  • Seletor de Ícone do App – Ícones de apoiador bloqueados agora são clicáveis — tocar em qualquer ícone (ou na dica de cadeado) abre a folha de Suporte Kiveo, para que o fluxo de doação seja acessível sem sair para Configurações.

Corrigido

  • Timer de Sessão Pausada – O timer da sessão pausada não avança mais enquanto o aplicativo está em segundo plano e reaberto; a entrada do log de atividade “Sessão retomada” agora é corretamente marcada no ponto de pausa.
  • Pesquisa na Biblioteca – A pesquisa na biblioteca agora corresponde a autores e aliases de livros, além de títulos, tanto na biblioteca principal quanto em prateleiras individuais.
  • Cor da Tela – Telas fixas (mais visivelmente no Kiveo de Suporte) renderizando intermitentemente elementos interativos e carregadores na cor azul do sistema em vez da cor de destaque do aplicativo.

1.2.0 – Primrose 🌼 – 04 de Abril de 2026

Adicionado

  • Importar Goodreads: Livros Personalizados – Livros não encontrados via API agora podem ser importados como livros personalizados usando metadados CSV (título, autor, editora, páginas). Livros não encontrados são pulados por padrão; usuários optam por livro individualmente ou em massa via “Adicionar todos como personalizados”
  • Importar Goodreads: Análise Flexível de CSV – Índices de colunas agora são resolvidos dinamicamente a partir da linha de cabeçalho, corrigindo importações que falham quando as exportações do Goodreads omitem colunas (por exemplo, Avaliação Média)
  • Suporte Kiveo (Caixa de Gorjetas) – Sistema voluntário de gorjeta única para apoiar o desenvolvimento independente
    • Três níveis de gorjeta literária: Marcador ($1,99), Livro ($4,99), Estante ($9,99) via RevenueCat
    • Qualquer gorjeta desbloqueia permanentemente 6 ícones exclusivos do aplicativo
    • Status de apoiador persistido em UserDefaults, iCloud KVS e RevenueCat
    • Suporte para Restauração de Compras para desbloqueio de ícones entre dispositivos
  • Seletor de Ícone do Aplicativo – Escolha entre 6 ícones alternativos exclusivos do aplicativo (desbloqueados via gorjeta)
  • Lembretes de Leitura – Notificações push opcionais para convidar gentilmente os usuários de volta à leitura
    • Tempo Diário de Leitura — notificação diária agendada em um horário escolhido pelo usuário
    • Lembrete de Inatividade — notificação após um número definido pelo usuário de dias sem uma sessão (2/3/5/7 dias)
    • Pausar Lembretes — silenciar temporariamente todos os lembretes até uma data escolhida
    • Notificações conscientes do livro referenciam o livro de leitura atual pelo nome
    • Toque na notificação leva diretamente ao livro de leitura atual
    • Configurações sincronizadas com o iCloud
  • Status Pausado – Novo status de livro entre Lendo e DNF (Não Terminado) para livros deixados de lado temporariamente, com nota de motivo opcional, excluído de Continuar Lendo e estatísticas de tempo para terminar, e Retomar Leitura com um toque a partir do Detalhe do Livro
  • Bloqueio de Sessão – Impede a alteração do status para Pausado ou DNF enquanto uma sessão de leitura ativa estiver em andamento
  • Notas de Motivo DNF – Nota opcional de texto livre (~280 caracteres) ao marcar um livro como Não Terminado (DNF), editável a partir do Detalhe do Livro
  • Seção de Estatísticas DNF – Estatísticas dedicadas na tela inicial mostrando livros DNF, páginas lidas antes do DNF e ponto de parada comum
  • Fila de Leitura da Mesa de Cabeceira – Fila curada de até 7 livros da lista de desejos para ler em seguida, com arrastar para reordenar, deslizar para remover e notas opcionais por livro
  • Widget da Mesa de Cabeceira na Tela Inicial – Cartão compacto na tela inicial mostrando capas de livros da mesa de cabeceira com título contextual
  • Sessão Ativa: Cartões de Citação e Reflexão – Capture citações e reflexões diretamente de dentro de uma sessão de leitura ativa
  • Selos do Registro de Atividades – Selos visuais de captura e registro de atividades polido para reflexões
  • Trocar Edição e Trocar Capa – Altere a edição ou a imagem da capa de um livro sem perder os dados de leitura
  • Solicitações Automáticas de Avaliação – Solicita aos usuários que avaliem o Kiveo em marcos naturais de uso
  • Backup: Cobrir Campos de Substituição – Dados de substituição cobertos incluídos na exportação/importação de backup do Kiveo
  • Animação de Imprensa da Capa do Livro – Escala sutil + elevação de sombra ao pressionar capas de livros na biblioteca
  • Celebração de Conclusão de Livro – Animação de brilho de destaque ao marcar um livro como concluído, com feedback tátil
  • Carregadores Esqueléticos – Marcadores de espaço de respiração substituem spinners durante o carregamento da imagem da capa
  • Animação da Barra de Progresso – Animação suave de mola quando o progresso de leitura muda

Alterado

  • Reformulação da Tela de Configurações – Redesenhado de Formulário genérico para layout de ScrollView com a marca, com fundo gradiente quente, textura de grão, efeitos de vidro (iOS 26+) e seções baseadas em cartões
  • Redesign da Tela de Pesquisa – Tela de pesquisa em branco transformada em uma experiência rica em descobertas
    • “Do Nosso Jardim” — Seleções de livros curadas da API de seleções Kiveo com suporte de localização
    • “Adicionados Recentemente” — Rolagem horizontal dos livros adicionados mais recentemente pelo usuário à biblioteca
    • Pílulas de pesquisa recentes — Pesquisas recentes baseadas em pílulas horizontais substituindo a antiga visualização de lista
    • Botão de digitalização de código de barras inline fixado na parte inferior do estado de pré-pesquisa
    • Pop-over de filtro de pesquisa avançada com selo de filtro ativo
    • Aba de pesquisa iOS 26 — Pesquisa como um item dedicado na barra de abas final no iOS 26+
  • Reformulação do Onboarding – Fluxo de onboarding redesenhado de 6 telas com cópia de marca quente, tipografia personalizada, paleta de cores adaptável com suporte a modo escuro
  • Planilha Novidades – Reformulada com animações no estilo onboarding e correspondência de versão aprimorada
  • Abas de Detalhes do Livro – Abas renomeadas para “O Livro”, “Jornada” e “Lembranças” com indicador ativo de pílula/cápsula e efeito de vidro no iOS 26+
  • Estados Vazios de Jornada e Lembranças – Estados vazios baseados em ilustrações com temas de jardim/livro mágico e CTAs
  • Apelido do Livro em Sessões – Apelidos agora mostrados em logs de sessão ao vivo, Atividade ao Vivo e salvamentos de rascunho
  • Continuar Lendo – Seção oculta quando todos os livros estão pausados
  • Criação de Livro Personalizado (iOS 26+) – Botão de adicionar na barra de ferramentas da biblioteca vai diretamente para a criação de livro personalizado
  • Estilização de Snackbar – Formato retangular arredondado com sombra quente e fundo de material regular
  • Microcopy – Mensagens de estado vazio e texto de confirmação mais quentes e humanas
  • Carregamento de Imagem – Imagens de capa existentes permanecem visíveis durante a atualização de metadados (sem flash)
  • Gradiente de Cor – Gradiente do cabeçalho de detalhes do livro se dissolve suavemente em mudanças de paleta
  • Localização – Todas as strings em inglês codificadas foram convertidas em chaves de localização semânticas; adicionado locale es-419

Corrigido

  • Importação Goodreads – Importação corrigida falhando quando a exportação CSV omite colunas (por exemplo, Avaliação Média)
  • Estabilidade da Sessão ao Vivo – Corrigido o reset do timer de sessões, perda de estado e flickering ao retornar do background, puxar notificações para baixo ou capturar citações
  • Fundo da Mesa de Cabeceira – Cor de fundo corrigida para corresponder ao tema do app
  • Persistência da Mesa de Cabeceira – Livros corrigidos que permaneciam na Mesa de Cabeceira após alterações de status baseadas em progresso
  • Proporção da Imagem para Compartilhamento – Proporção corrigida para corresponder às especificações do Instagram (4:5)
  • Prévia da Imagem para Compartilhamento – Prévia corrigida para corresponder à saída renderizada; o texto da citação agora é dimensionado para citações longas
  • Detalhes do Livro – Aba corrigida que era dispensada e reaberta ao adicionar livro à biblioteca
  • Vazamento da Animação Skeleton – Animação de pulso limitada para evitar vazamento de transação SwiftUI
  • Capas de Atividade ao Vivo – Capas de livros corrigidas que não apareciam em Atividades ao Vivo em builds Beta
  • Link Direto de Notificação – Notificação corrigida que abria o livro errado; abas ocultas para livros fora da biblioteca
  • Filtros de Busca – Recorte corrigido em telas estreitas e traduções longas
  • Layout da Página Inicial (iOS 26) – Oscilação de layout corrigida ao limitar a animação da barra de ferramentas
  • Filtragem de Pausados/DNF – Alternância de ocultar pausados/DNF e capas personalizadas do seletor de livros corrigidas
  • Estatísticas de Reflexões – Contador corrigido que faltava nas estatísticas "esta semana" nas telas de citações/reflexões
  • Tela de Reflexões – Números duplicados corrigidos nas estatísticas e títulos de seção capitalizados
  • Capas Personalizadas de Livros – Sincronização CloudKit corrigida para imagens de capas de livros personalizadas; capas agora são exibidas corretamente em widgets de Atividade ao Vivo

1.1.0 – 19 de janeiro de 2026

Adicionado

  • Imagens para Compartilhamento – Crie belas imagens compartilháveis do seu conteúdo de leitura
    • Compartilhe citações como cartões estilizados com atribuição do livro
    • Compartilhe cartões de progresso de livros (lendo atualmente ou concluído)
    • Compartilhe listas de livros de estantes como grades de capas
    • Múltiplos temas: Padrão, Crepúsculo, Oceano, Floresta, Quente, Meia-noite
    • Duas proporções: Story (9:16) e Post (3:4)
    • Cartões de citação: Ative/desative o contorno do cartão
    • Cartões de livro: Ative a visualização "Concluído" para livros finalizados
    • Cartões de lista de livros: Edite o título e o texto do selo
    • Pontos de entrada: Detalhe da Citação, Detalhe do Livro, Detalhe da Estante
    • Rastreamento de análise do TelemetryDeck para uso de recursos
  • Livros Personalizados – Crie livros manualmente quando não encontrados na busca
    • Adicione um livro personalizado pelo menu da barra de ferramentas da Biblioteca (pressione e segure o botão ")
    • Crie um livro personalizado a partir da tela de "nenhum resultado encontrado" na busca
    • Indicador de livro personalizado em capas de livros (ícone de lápis, canto superior esquerdo)
    • Edite os detalhes do livro personalizado através do menu da barra de ferramentas Detalhes do Livro
    • Seleção de imagem de capa da biblioteca de fotos para livros personalizados
    • Todos os recursos do aplicativo suportados: sessões, citações, reflexões, estantes
    • Capas personalizadas salvas localmente com compressão JPEG
  • Melhorias no Resumo da Tela Inicial – Seção de Resumo aprimorada na tela inicial
    • Renomeado “Estatísticas de Leitura” para “Seu Resumo”
    • Filtro de ano para visualizar estatísticas por ano (Vida toda, 2025, 2024, etc.)
    • Rolagem horizontal de Livros Concluídos mostrando capas de livros finalizados
    • Filtro persiste entre as aberturas do aplicativo
    • Componente ChipPicker reutilizável para seleções em estilo de menu
  • Redesign do Registro Manual de Sessão – UX aprimorada para preenchimento retroativo de sessões de leitura
    • Capas de livros agora são exibidas nas linhas de livros da sessão
    • Seletor de data aprimorado com ícone de calendário e exibição formatada de dia da semana/data
    • Entrada de progresso baseada em delta: “Páginas lidas” em vez de “Página atual” para preenchimento retroativo mais fácil
    • Suporte ao modo de porcentagem: Exibe “Progresso: X%” para audiolivros e livros com acompanhamento de porcentagem
    • Progresso agora é opcional – registre sessões apenas de duração sem exigir entrada de página/porcentagem
    • Pré-seleção ao abrir a partir da barra de ferramentas Detalhes do Livro (botão Registrar Sessão)
    • Planilha dedicada de seleção de livros substitui a pesquisa inline
  • Importação/Exportação de Backup Kiveo – Funcionalidade completa de backup e restauração de dados
    • Exporte todos os dados da biblioteca para um arquivo de backup JSON (livros, estantes, sessões, citações, reflexões)
    • Importe do backup com modo de mesclagem (mantém o existente, adiciona novo) ou modo de substituição (importação limpa)
    • Visualize o conteúdo do backup antes de importar com resumo da contagem de dados
    • Detecção de duplicatas por ISBN durante a importação de mesclagem
    • Indicador de progresso durante a importação com descrições de fase
    • Localizado em Configurações na nova seção “Importar e Exportar”
    • Importação do Goodreads movida para a seção Importar e Exportar
  • Compartilhamento de Livros com Links Profundos – Compartilhe livros com outros usuários Kiveo através de links compartilháveis
    • O botão Compartilhar na barra de ferramentas Detalhes do Livro gera um link para share.kiveo.app
    • O suporte a link profundo abre livros compartilhados diretamente no aplicativo
  • WebView Safari no Aplicativo – Links HTTP/HTTPS agora abrem dentro do aplicativo
    • Evita a troca de contexto para o app Safari externo
  • Vários Cards de Leitura Atual – A tela inicial agora exibe todos os livros que você está lendo no momento
    • Carrossel rolável horizontalmente quando vários livros estão em andamento
    • Cada card mostra a capa do livro, título e progresso de leitura
  • Efeito de Vidro em Continuar Lendo (iOS 26) – Efeito de vidro aplicado aos cards de Continuar Lendo na tela inicial
  • Atualização Automática de Dados do Livro – Busca automaticamente metadados atualizados do livro da API
    • Atualiza imagens de capa, descrições e outros detalhes quando disponíveis
  • Seletor de Status Personalizado – Novo filtro de status em estilo pílula substituindo controles segmentados
    • Gestos de deslizar: puxe além da borda final para ir para “Todos”, puxe além da borda inicial para retornar à seleção anterior
    • Animações suaves com feedback tátil
    • Aplicado nas visualizações Biblioteca, Detalhes da Estante, Seletor de Livros e Adicionar Livros à Estante
  • Filtro de Biblioteca Persistente – O filtro de status selecionado agora persiste entre as inicializações do app
  • Ocultar Livros DNF – Novo botão no menu da barra de ferramentas da Biblioteca para ocultar a opção de status DNF
    • A configuração se aplica globalmente a todos os seletores de status em todo o app
    • Muda automaticamente para “Todos” se DNF foi selecionado quando oculto
  • Apelidos de Livros – Defina nomes de exibição personalizados para livros com títulos longos ou indesejados
    • Defina o apelido através do menu da barra de ferramentas na visualização Detalhes do Livro
    • Opção de limpar apelido (visível apenas quando o apelido está definido)
    • Indicador de ícone de lápis aparece em todo o app quando um livro tem um apelido
    • Apelido exibido em: Detalhes do Livro, itens da Biblioteca, widget Continuar Lendo, Sessões Ativas, Citações, seletores de Livros e gerenciamento de Estante
  • Feedback Tátil – Feedback tátil em todo o app para uma melhor experiência do usuário
    • Impacto leve para alternâncias, seleções e toques em botões
    • Impacto médio para ações de pausar/retomar e reordenar por arrastar
    • Notificações de sucesso para salvamentos, conclusões e importações
    • Notificações de erro para exclusões e falhas
    • Utilitário centralizado HapticManager para uso consistente
  • Editor de Datas de Livros – Edite datas de livros (Adicionado, Iniciado, Concluído) a partir dos Detalhes do Livro
    • Toque na seção de datas nas ações da biblioteca de livros para abrir a folha do editor
    • Edite dateAdded, dateStarted e dateCompleted com seletores de data compactos
    • Limpe datas opcionais (iniciadas/concluídas) com o botão limpar
    • O status é sincronizado automaticamente com base nas alterações de data (datas de conclusão definem o status como Concluído, etc.)
    • Exibe a data de conclusão ao lado das datas de adição/início existentes
  • Barra de Ferramentas Liquid Glass iOS 26 – Navegação redesenhada para abraçar a estética iOS 26 Liquid Glass
    • Títulos exibidos na posição principal da barra de ferramentas com visibilidade de fundo de vidro
    • A barra de abas minimiza ao rolar para baixo para mais espaço de conteúdo
    • Títulos e logo da barra de ferramentas desaparecem suavemente ao rolar
    • A barra de ferramentas da tela inicial inclui o ícone do logo Kiveo
    • Estilo de botão proeminente de vidro para ações da barra de ferramentas
    • Recurso elegante para navegação padrão de título grande no iOS 18

Alterado

  • Clareza Aprimorada das Estatísticas de Leitura – Subtítulos descritivos adicionados aos cartões de estatísticas na tela inicial
    • “Livros Lidos” agora mostra o subtítulo “Concluídos”
    • “Páginas Lidas” agora mostra o subtítulo “De Sessões”
    • “Sequência Atual” (renomeado de “Sequência de Dias”) agora mostra o subtítulo “Dias”
  • Confirmações de Salvamento Consistentes – Comportamento unificado de confirmação de salvamento para citações e reflexões

Corrigido

  • Limite Manual de Páginas da Sessão – Corrigido o registro de páginas excedendo a contagem total de páginas do livro
    • Ao registrar uma sessão manual, as páginas agora são corretamente limitadas pelas páginas restantes do livro
    • Exemplo: Se um livro de 300 páginas tem 280 páginas lidas, registrar 50 páginas agora salva corretamente apenas 20 páginas
  • Preservar Data de Conclusão do Livro – Corrigido a data de conclusão sendo sobrescrita ao registrar sessões adicionais
    • Livros que já possuem uma data de conclusão não terão mais sua data sobrescrita
    • Preserva a data de conclusão original mesmo ao registrar sessões que excedem o total de páginas
  • Limpeza da Atividade ao Vivo – Corrigido a Atividade ao Vivo ficando presa na tela de bloqueio após o fim da sessão ou travamento do aplicativo
    • Adicionada limpeza na inicialização do aplicativo para encerrar Atividades ao Vivo órfãs
    • A Atividade ao Vivo agora mostra o estado pausado ao se recuperar de uma sessão interrompida
    • Encerra corretamente todas as atividades quando o usuário descarta a sessão recuperada
  • Carimbos de Data/Hora de Recuperação de Sessão – Corrigido carimbos de data/hora incorretos em sessões recuperadas
    • Sessões recuperadas agora preservam o horário de início original para carimbos de data/hora precisos
    • Corrige o problema em que os registros da sessão mostravam horários errados após a recuperação (por exemplo, sessão de 3 minutos apesar de leitura real mais longa)
  • Largura do Cartão Continuar Lendo (iPhone) – Corrigido o cartão de livro único não expandindo para a largura total no iPhone
  • Exibição de Estatísticas do Livro – Corrigido a contagem inflada de sessões e tempo de leitura em todo o aplicativo
    • O widget “Continuar Lendo” na página inicial agora conta apenas sessões concluídas
    • A aba Estatísticas de detalhes do livro agora filtra entradas órfãs de ReadSessionBook
    • Criação órfã de ReadSessionBook corrigida durante a captura de citações, o que causou inchaço nas estatísticas
    • ReadSessionBook em cache para vinculação de citações para evitar múltiplas entradas órfãs
  • Ordem do Registro de Atividade da Sessão – Registros de sessão fixos aparecendo em ordem aleatória na exibição de detalhes da sessão
    • Os registros agora são classificados por carimbo de data/hora (mais recentes primeiro) para corresponder à exibição da sessão ao vivo
  • Exibição de Progresso Percentual – Exibição incorreta de porcentagem corrigida em itens de livro e indicadores de progresso
  • Salvar Citações/Reflexões – Problema corrigido onde citações e reflexões falhavam ao salvar em certas condições
  • Estabilidade da Sessão ao Vivo – Problemas de travamento/congelamento potenciais corrigidos durante sessões de leitura ao vivo
  • Cache de Imagem de Continuar Leitura – Capas de livros não estavam sendo armazenadas em cache corretamente no widget Continuar Leitura
  • Cor de Tonalidade das Configurações – Cor de tonalidade incorreta corrigida nas telas de Configurações e Sobre
  • Persistência do Layout da Biblioteca – Preferência de layout da biblioteca não estava persistindo entre as inicializações do aplicativo

Desempenho

  • Otimização da Tela Inicial – Desempenho de carregamento e renderização aprimorado na Tela Inicial
  • Cache de Paleta de Cores da Capa do Livro – Cores dominantes em cache das capas dos livros para renderização mais rápida da interface do usuário

1.0.2 – 21 de dezembro de 2025

Adicionado

  • Gerenciar Livros da Estante em Massa – Adicione ou remova vários livros de uma estante de uma vez
    • Novo botão “+” na barra de ferramentas da estante abre o seletor de livros (apenas estantes personalizadas)
    • Interface de multisseleção com caixas de seleção para seleção rápida
    • Alternar livros ativados/desativados – adicione novos livros ou remova os existentes
    • Filtrar abas (Todos/Lendo/Lista de Desejos/Concluído) para refinar a lista de livros
    • Opções de classificação (Atividade Recente/Título/Autor/Data de Adição)
    • Pesquisar por título ou autor
  • Ocultar Estantes Vazias – Nova opção na barra de ferramentas da Biblioteca para ocultar estantes sem livros
    • Disponível quando “Agrupar por estantes” está ativado
    • A configuração persiste entre as inicializações do aplicativo
  • Placeholder de Estante Vazia – Cartão placeholder exibido em estantes vazias
    • Mostra o ícone “+” com o rótulo “Adicionar Livros”
    • Tocar abre o seletor de livros em massa para essa estante
  • Ações Rápidas de Gerenciamento de Estante – Toque em qualquer estante em Gerenciar Estantes para adicionar livros
    • Também disponível através da opção de menu de contexto “Gerenciar Livros”

1.0.1 – 17 de dezembro de 2025

Adicionado

  • Avaliar Kiveo – Nova opção em Configurações para avaliar o app na App Store
  • Classificação de Estante – Classifique livros manualmente dentro das estantes
    • Reordenação por arrastar e soltar através da opção Classificar no menu da estante
    • A nova opção “Classificação de Estante” na visualização em grade da Biblioteca exibe a ordem personalizada
    • Ícone indicador mostra quais estantes têm classificação personalizada
    • Novos livros adicionados às estantes aparecem no topo
    • Ordem de classificação independente por estante (livros em várias estantes têm posições separadas)
    • A opção de classificação da Biblioteca agora persiste entre as inicializações do app
    • Protocolo DataUpgrade para migrações padronizadas
  • Recurso Novidades – Tela pós-atualização mostrando novos recursos para os usuários
    • Carrossel horizontal com paginação para múltiplos anúncios de recursos
    • Mostra apenas para usuários existentes após atualizações do app (não para instalações novas)
    • Exibição cumulativa de todos os recursos desde a última versão vista pelo usuário
    • Pode ser dispensado por botão de fechar ou gesto de deslizar
    • Botão “Começar” no slide final
    • Opção em Configurações para ver Novidades a qualquer momento
    • Integração TelemetryDeck para análises
    • Testes de unidade para VersionComparator e WhatsNewRegistry
  • Progresso Percentual – Insira o progresso de leitura por páginas ou porcentagem
    • Seletor segmentado (Páginas / %) em prompts de atualização de progresso
    • Preferência por livro: lembra o último modo usado para cada livro
    • Opção de porcentagem disponível mesmo sem o número total de páginas
    • A troca de modos limpa a entrada e mantém a preferência
    • Aplica-se ao toque de progresso em Detalhes do Livro e prompts de Sessão Ativa

Corrigido

  • Filtragem de Estante – Corrigido problema onde Pilha de Folhas aparecia vazia ao ser aberta da Biblioteca
    • ShelfDetailView agora tem filtragem independente de LibraryView
    • Pilha de Folhas exibe corretamente todos os livros sem estante, independentemente do filtro da Biblioteca

1.0.0 – 12 de dezembro de 2025