Registro de cambios

1.2.7 – 2 de julio de 2026

Corregido

  • Viaje del libro — Las sesiones podrían desaparecer tras una actualización de detalles
    Las sesiones de lectura de un libro podían desaparecer silenciosamente de la pestaña Viaje en su pantalla de detalles después de añadir un ISBN o de que los detalles del libro se actualizaran desde el catálogo, aunque las sesiones en sí estaban seguras y aún se mostraban en la pantalla de Sesiones.
    La pestaña relacionaba las sesiones con el libro de una manera que se volvía frágil una vez que los identificadores del libro cambiaban, por lo que el recuento y la lista de sesiones recientes aparecían vacíos. Viaje ahora mantiene un libro y sus sesiones vinculados de forma fiable.

1.2.6 – 24 de junio de 2026

Añadido

  • Diagnóstico de sincronización — Detalle más profundo de fallos de exportación – El Diagnóstico de sincronización opcional ahora captura mucho más sobre una exportación fallida de CloudKit para que el error persistente de “la exportación siempre falla” pueda ser finalmente identificado. La pantalla de diagnóstico muestra los tipos de registros fallidos y un histograma de sub-errores de forma destacada en cada fila de evento fallido. Todavía estrictamente libre de PII: nunca se leen contenidos de libros, citas o notas.
  • Diagnóstico de sincronización — Captura de registro del sistema – Una nueva acción “Capturar registros del sistema” en la pantalla de Diagnóstico de sincronización.
  • Acciones rápidas en la pantalla de inicio – Mantener pulsado el icono de la aplicación Kiveo ahora muestra tres acciones rápidas — Iniciar sesión, Escanear código de barras y Capturar cita — que enlazan directamente al lugar correcto. Iniciar sesión y Capturar cita abren el selector de libros para que elijas un libro, y luego te llevan a una sesión en vivo o al flujo de captura de citas respectivamente; Escanear código de barras abre la búsqueda con el escáner de código de barras ya en funcionamiento.
  • Inicio — Tarjeta “Libros leídos” interactiva – La estadística “Libros leídos” en el resumen de Inicio ahora es interactiva y desciende a una lista de solo lectura de libros terminados. La lista está limitada al período seleccionado en el selector de año: muestra “Todos los libros leídos” para Toda la vida, “Libros de este año” para el año actual, o “Libros en {year}” para un año pasado, y se mantiene sincronizada con el selector. Los libros se ordenan con los terminados más recientemente primero; al tocar un libro se abre su vista de detalles. Las otras tarjetas de resumen (Páginas, Horas, Racha) permanecen no interactivas.

Cambiado

  • Portadas de libros personalizadas — Tamaño limitado en el origen – Al guardar una portada personalizada (al crear/editar un libro manual, o al cambiar una portada) ahora se reduce la imagen para que su lado más largo sea como máximo de ~1024px y se comprime hacia un límite de ~700KB antes de almacenarla en el libro. Anteriormente, la foto de resolución completa se almacenaba tal cual, produciendo bloques de varios megabytes que inflaban el almacenamiento en el dispositivo, desperdiciaban memoria e inflaban la carga útil de sincronización de CloudKit. Las portadas siguen siendo visualmente idénticas en los tamaños en que se renderizan. (Higiene de datos; no afecta a la fiabilidad de la sincronización.)
  • Estado del libro — Ruta de actualización única – Cada cambio de estado de un libro ahora fluye a través de un escritor canónico (Book.setStatus), por lo que el estado de un libro y sus fechas y metadatos relacionados se mantienen consistentes sin importar de dónde provenga el cambio (la hoja de edición, el editor de fechas, la importación de Goodreads o el registro de progreso).
  • Reflexiones — Indicación “¿Qué tienes en mente?” – Los campos de entrada de reflexión ahora comparten una única indicación más amigable: “¿Qué tienes en mente?”.
  • Intercambio de portadas — Marcador de portada “Original” – La cuadrícula de “Otras ediciones” de la pantalla de intercambio de portadas ahora marca la edición original/canónica del libro con una etiqueta “Original” (un sutil anillo neutro más un glifo de “volver a”), de modo que cuando una portada personalizada o la portada de una edición diferente está activa, aún puedes identificar —y volver a encontrar— la portada original del libro.

Corregido

  • Portadas de libros personalizadas — Archivos de portada huérfanos y de gran tamaño – Un libro creado manualmente cuya edición real apareció más tarde en el catálogo conservaba para siempre su imagen de portada personalizada ahora redundante, incluso después de que una actualización de metadatos le diera una buena portada remota. Ese archivo huérfano (a menudo de varios megabytes) solo inflaba la tienda y la carga útil de sincronización. La actualización de metadatos ahora borra un archivo de portada personalizado sobrante, pero solo cuando el libro no tiene una anulación de portada intencional y hay disponible una URL de portada remota utilizable, por lo que nada visible cambia. También se ejecuta una reparación única e idempotente en las bibliotecas existentes: los archivos de portada de gran tamaño se reencodifican más pequeños en su lugar, y los huérfanos se borran cuando una portada remota puede reemplazarla, de forma conservadora, sin dejar nunca un libro sin portada. Las portadas personalizadas y de edición intencionales siempre se conservan.
  • Intercambio de portadas — La portada personalizada mostraba una edición del catálogo como “Actual” – Cuando un libro utilizaba una portada personalizada, la cuadrícula de “Otras ediciones” de la pantalla de intercambio de portadas todavía resaltaba la edición del catálogo que coincidía con el ISBN como la portada actual. El cálculo de “actual” coincidía puramente por ISBN e ignoraba una anulación personalizada activa; ahora no devuelve ninguna edición mientras se utiliza una portada personalizada, por lo que la cuadrícula muestra correctamente que ninguna de las ediciones del catálogo es la actual.
  • Copia de seguridad y restauración — Se conserva el indicador de libro personalizado – La restauración desde una copia de seguridad ya no degrada los libros creados manualmente a libros de catálogo normales. El indicador isCustom ahora se escribe y se lee de las copias de seguridad (las copias de seguridad más antiguas sin el campo todavía se importan, tratadas como no personalizadas).
  • Barra de pestañas — Los elementos se volvieron de acento después de descartar una hoja (iOS 26) – En iOS 26, al presentar y descartar cualquier hoja, cada elemento de la barra de pestañas inferior —incluidos los no seleccionados— se renderizaba en el color de acento en lugar del esquema deseado de seleccionado=acento / no seleccionado=etiqueta.
  • Búsqueda de libros — Resultados obsoletos se filtran en la prebúsqueda – Cuando una búsqueda lenta estaba en curso y el usuario borraba la consulta o salía del modo de búsqueda, los resultados que llegaban tarde se aplicaban al modelo de vista, lo que provocaba que los resultados de la búsqueda aparecieran debajo de las selecciones de prebúsqueda.
  • De Nuestro Jardín — Centrado Vertical de Columna Única – Cuando una columna en la cuadrícula “De Nuestro Jardín” tenía solo un libro, se centraba verticalmente contra columnas más altas de dos libros. Las columnas ahora se alinean en la parte superior.
  • Búsqueda de libros — El idioma automático enviaba “Cualquiera” – Cuando el filtro de idioma de búsqueda estaba configurado en “Automático”, la aplicación enviaba lang=any a la API, devolviendo resultados en todos los idiomas en lugar de priorizar el idioma del usuario. Ahora se resuelve en la configuración regional real del dispositivo (por ejemplo, es para usuarios de español).
  • Intercambio de Portadas — “Restablecer a Original” no Borraba una Portada Personalizada – Al tocar “Restablecer a Original”, se eliminaba el botón Restablecer, pero la imagen de portada personalizada seguía mostrándose. Dos errores dejaban la URL de la imagen del libro apuntando al archivo de portada personalizada después de un restablecimiento: la portada original del catálogo se capturaba *después* de que la URL ya se hubiera sobrescrito con el archivo personalizado (por lo que el restablecimiento “restauraba” la imagen personalizada), y el restablecimiento solo volvía a apuntar la URL cuando se había capturado alguna original, dejando las portadas personalizadas heredadas atascadas. Ahora, la portada real anterior a la sobrescritura se captura antes de que se sobrescriba, y el restablecimiento siempre aleja la imagen del archivo personalizado: restaura una portada de catálogo remota genuina cuando se conoce una, o de lo contrario, borra la imagen y activa una nueva recuperación de metadatos del catálogo para que el libro recupere su portada adecuada. Cuando no se conoce una original remota, la portada del catálogo ahora se recupera en línea por ISBN y se completa de inmediato, en su lugar, en lugar de reaparecer solo la próxima vez que se abra la pantalla de detalles del libro. El archivo de portada personalizada en disco también se elimina para liberar espacio.

1.2.5 – 22 de junio de 2026

Añadido

  • Diagnóstico de Sincronización de iCloud – Se añadió observabilidad de sincronización opcional para ayudar a diagnosticar problemas de sincronización de CloudKit. El registro de sincronización está desactivado por defecto y está destinado solo a usuarios que solucionan activamente un problema de sincronización; cuando está desactivado, nada se observa, registra, persiste ni informa. Una nueva pantalla “Diagnóstico de Sincronización” en Ajustes → Avanzado tiene un interruptor “Habilitar Registro de Sincronización” que inicia/detiene el registro inmediatamente (no se necesita reiniciar). Mientras está habilitado, CloudKitSyncMonitor registra la configuración, importación y exportación de SwiftData/CloudKit (y cualquier error que contengan) en un registro cíclico persistente y limitado, informa fallos de sincronización a la telemetría y muestra el registro de eventos recientes con estilo de éxito/fallo que los usuarios pueden exportar y compartir. Al desactivar el registro, se conserva cualquier registro capturado previamente para que aún pueda compartirse. El registro nunca incluye el contenido de libros, citas o notas, solo metadatos de sincronización y detalles de errores. Esta es instrumentación de diagnóstico; no cambia el comportamiento de sincronización.

1.2.3 – 25 de mayo de 2026

Eliminado

  • Actividad en vivo — Intenciones de pausa/reanudación de la aplicación – Se eliminaron PauseSessionIntent y ResumeSessionIntent; ninguna Actividad en vivo de la interfaz de usuario los invocó después de la limpieza de botones de la Fase 3. La pausa/reanudación desde dentro de la aplicación sigue funcionando como antes. (Fase 4 de la renovación de Actividad en vivo.)

Añadido

  • Actividad en vivo — Fondo con muestra de portada – La Actividad en vivo de la pantalla de bloqueo ahora tiñe su fondo con el color dominante de la portada del libro actual, oscurecido para mejorar la legibilidad. Reutiliza la canalización de paleta de portadas existente (sin muestreo nuevo); los libros cuyas paletas aún no están en caché recurren al fondo predeterminado y recogen el tinte en la próxima sesión. (Fase 2 de la renovación de Actividad en vivo.)

Cambiado

  • Actividad en vivo — Fundido de portada en el fondo – La portada de la pantalla de bloqueo ahora se disuelve en el fondo de la actividad a través de un degradado corto en su borde posterior en lugar de chocar contra el texto con una línea dura. La portada tiene el tamaño de su relación natural de libro de 2:3 (70 × 105) y la altura total del widget se limita para una huella más pequeña. Se eliminó el icono del temporizador cuando está en ejecución; aparece el glifo de pausa cuando está pausado.
  • Actividad en vivo — Rediseño de Dynamic Island – Se reconstruyeron las tres presentaciones de Dynamic Island: la compacta muestra la marca Kiveo junto al temporizador; la expandida utiliza un diseño unificado solo en la parte inferior con portada, título, autor, temporizador y chips de cita/libro; la mínima muestra la marca Kiveo en color de acento. Se eliminaron los botones de pausa/detener/finalizar en favor de tocar para abrir. (Fase 3 de la renovación de Actividad en vivo.)
  • Actividad en vivo — Tipografía y diseño – Se actualizó la Actividad en vivo de la pantalla de bloqueo con un título serif Bitter, un temporizador de gran tamaño y una portada que se extiende hasta el borde principal. Las portadas que faltan ahora muestran un sustituto tipográfico (primera palabra significativa del título en Bitter) en lugar de un icono genérico. Los recuentos de citas/libros se movieron a una fila secundaria más discreta junto al temporizador. (Fase 1 de la renovación de Actividad en vivo.)
  • Tarjetas de sesión – Se rediseñaron las tarjetas de sesión en la pantalla de Sesiones: las sesiones de un solo libro ahora muestran un título más grande, el autor y una fila dirigida por iconos para páginas y tiempo; las sesiones de varios libros conservan una lista compacta de una línea por libro con una fila de resumen encima.

Corregido

  • Recordatorios y avisos — El aviso nunca se activó cuando el recordatorio diario estaba activado – Anteriormente, el recordatorio diario suprimía incondicionalmente el aviso de inactividad cuando ambos estaban habilitados, por lo que los avisos efectivamente nunca llegaban a los usuarios con un recordatorio diario configurado. El programador ahora elige entre ellos según la actividad: mientras el usuario haya registrado una sesión dentro de la ventana de umbral, se ejecuta el recordatorio diario; una vez que ha estado inactivo más allá del umbral, el aviso se activa y el recordatorio diario se pausa hasta que vuelva a leer. Los usuarios sin sesiones aún se tratan como no inactivos, por lo que el recordatorio diario acompaña a los nuevos usuarios hasta que hayan establecido una línea de base.
  • Recuperación de sesión — Descartar no persistió – Al tocar “Descartar” en el banner de recuperación de sesión, ahora se elimina el borrador. La implementación anterior llamaba a delete en un modelo obtenido en un ModelContext diferente (liberado), que SwiftData ignora silenciosamente, por lo que el banner reaparecía en el siguiente inicio. Descartar ahora vuelve a obtener los borradores activos en el contexto actual y los borra todos, protegiendo también contra duplicados raros.
  • Cambiar portada / Cambiar edición — Insignia “Actual” duplicada – Cuando la API de ediciones devolvía más de una fila que coincidía con los ISBN almacenados de un libro (por ejemplo, una coincidencia en ISBN-10 y otra en ISBN-13 y ISBN-10), ambas miniaturas se marcaban como “actuales” con el brillo y la insignia. La edición “actual” ahora se resuelve una vez a nivel de vista-modelo, prefiriendo una coincidencia de ISBN-13 sobre una alternativa de ISBN-10, por lo que se resalta exactamente una fila y el orden de clasificación es estable.
  • Parpadeo de portada de sesión recuperada – La sesión activa recuperada ya no parpadea/se vuelve a presentar al guardar una cita o reflexión (el `fullScreenCover` se mantuvo en su lugar en las guardadas de SwiftData al dar al elemento presentado una identidad estable).
  • Localización del registro de actividad de sesión – Las entradas del registro de sesión activa (“Sesión iniciada”, “Sesión pausada”, etc.) ahora se localizan correctamente en lugar de mostrarse siempre en inglés. Las sesiones existentes con registros en inglés se manejan con gracia.
  • Marcas de tiempo de sesión recuperada – Las entradas del registro de actividad de sesión ahora reflejan la duración total de la sesión cuando se recupera una sesión después de un bloqueo o cierre forzado, por lo que el total del encabezado y la marca de “Sesión finalizada” ya no discrepan.
  • Actividad en vivo después de la recuperación – La pantalla de bloqueo y la Isla Dinámica ahora reflejan el tiempo transcurrido correcto, el recuento de citas y el recuento de libros cuando se recupera una sesión de lectura después de un bloqueo o cierre forzado. Se borra cualquier actividad en vivo obsoleta que quede del proceso anterior de la aplicación y se inicia una nueva vinculada a la sesión recuperada.

1.2.2 – 22 de abril de 2026

Cambiado

  • Caché de selecciones de búsqueda – Duración de la caché de selecciones reducida de 7 días a 6 horas para que el contenido seleccionado se actualice con más frecuencia.
  • Borrar caché – “Borrar caché” en Configuración ahora también elimina las selecciones de búsqueda cacheadas junto con las imágenes de portada de los libros.

1.2.1 – 21 de abril de 2026

Cambiado

  • Selector de icono de la aplicación – Los iconos de colaborador bloqueados ahora se pueden tocar; al tocar cualquier icono (o la indicación de bloqueo) se abre la hoja de Soporte Kiveo, por lo que el flujo de donación es accesible sin salir a Configuración.

Corregido

  • Temporizador de sesión pausada – El temporizador de sesión pausada ya no avanza mientras la aplicación está en segundo plano y se reabre; la entrada del registro de actividad “Sesión reanudada” ahora se marca correctamente en el punto de pausa.
  • Búsqueda en la biblioteca – La búsqueda en la biblioteca ahora coincide con los autores y alias de los libros además de los títulos, tanto en la biblioteca principal como en las estanterías individuales.
  • Tinte de Hoja – Las hojas fijas (más visiblemente Support Kiveo) renderizan intermitentemente elementos interactivos y cargadores en azul del sistema en lugar del color de acento de la aplicación.

1.2.0 – Rosa 🌼 – 04 de abril de 2026

Añadido

  • Importación de Goodreads: Libros Personalizados – Los libros no encontrados a través de la API ahora se pueden importar como libros personalizados usando metadatos CSV (título, autor, editorial, páginas). Los libros no encontrados se omiten por defecto; los usuarios optan por cada libro o en bloque a través de "Añadir todos como personalizados".
  • Importación de Goodreads: Análisis Flexible de CSV – Los índices de columnas ahora se resuelven dinámicamente a partir de la fila de encabezado, corrigiendo las importaciones que fallan cuando las exportaciones de Goodreads omiten columnas (por ejemplo, Calificación Promedio).
  • Support Kiveo (Bote de Propinas) – Sistema voluntario de propina única para apoyar el desarrollo independiente
    • Tres niveles de propina literaria: Marcapáginas (1,99 €), Libro (4,99 €), Estantería (9,99 €) a través de RevenueCat.
    • Cualquier propina desbloquea permanentemente 6 iconos exclusivos de la aplicación.
    • El estado de colaborador se mantiene en UserDefaults, iCloud KVS y RevenueCat.
    • Soporte de Restaurar Compras para el desbloqueo de iconos entre dispositivos.
  • Selector de Iconos de la Aplicación – Elige entre 6 iconos alternativos exclusivos de la aplicación (desbloqueados mediante propina).
  • Recordatorios de Lectura – Notificaciones push opcionales para invitar amablemente a los usuarios a volver a leer
    • Hora de Lectura Diaria — notificación diaria programada a una hora elegida por el usuario.
    • Recordatorio por Inactividad — notificación después de un número de días definido por el usuario sin una sesión (2/3/5/7 días).
    • Pausar Recordatorios — silenciar temporalmente todos los recordatorios hasta una fecha elegida.
    • Las notificaciones conscientes del libro hacen referencia al libro que se está leyendo actualmente por su nombre.
    • El toque en la notificación enlaza directamente al libro que se está leyendo actualmente.
    • Configuración sincronizada con iCloud.
  • Estado Pausado – Nuevo estado de libro entre Leyendo y DNF para libros dejados de lado temporalmente, con nota de motivo opcional, excluido de Continuar Lectura y estadísticas de tiempo hasta finalizar, y Reanudar Lectura con un toque desde Detalles del Libro.
  • Bloqueo de Sesión – Evita cambiar el estado a Pausado o DNF mientras una sesión de lectura activa está en curso.
  • Notas de Motivo DNF – Nota opcional de texto libre (~280 caracteres) al marcar un libro como No Terminado (DNF), editable desde Detalles del Libro.
  • Sección de Estadísticas DNF – Estadísticas dedicadas en la pantalla de Inicio que muestran los libros DNF, las páginas leídas antes del DNF y el punto de parada común.
  • Cola de Lectura de Mesita de Noche – Cola curada de hasta 7 libros de la lista de deseos para leer a continuación, con arrastrar para reordenar, deslizar para eliminar y notas opcionales por libro.
  • Widget de Inicio de Mesita de Noche – Tarjeta compacta en la pantalla de Inicio que muestra las portadas de los libros de la mesita de noche con título contextual.
  • Sesión en Vivo: Tarjetas de Cita y Reflexión – Captura citas y reflexiones directamente desde una sesión de lectura en vivo.
  • Insignias de Registro de Actividad – Insignias de captura visual y registro de actividad pulido para reflexiones.
  • Cambiar Edición y Cambiar Portada – Cambia la edición o la imagen de portada de un libro sin perder los datos de lectura.
  • Recordatorios Automáticos de Reseña – Pide a los usuarios que califiquen Kiveo en hitos de uso naturales.
  • Copia de seguridad: Campos de anulación de portada – Datos de anulación de portada incluidos en la exportación/importación de copias de seguridad de Kiveo
  • Animación de portada de libro al pulsar – Escalado sutil + elevación de sombra al pulsar las portadas de los libros en la biblioteca
  • Celebración de finalización de libro – Animación de brillo de acento al marcar un libro como completado, con retroalimentación háptica
  • Cargadores esqueléticos – Marcadores de posición de pulso respiratorio reemplazan a los indicadores giratorios durante la carga de imágenes de portada
  • Animación de barra de progreso – Animación de resorte suave cuando cambia el progreso de lectura

Cambiado

  • Renovación de pantalla de configuración – Rediseñada de un formulario genérico a un diseño de ScrollView de marca con fondo de degradado cálido, textura de grano, efectos de cristal (iOS 26+) y secciones basadas en tarjetas
  • Rediseño de pantalla de búsqueda – Pantalla de búsqueda en blanco transformada en una experiencia rica en descubrimientos
    • “De nuestro jardín” — Selecciones de libros curadas de la API de selecciones de Kiveo con soporte de localización
    • “Añadidos recientemente” — Desplazamiento horizontal de los libros añadidos más recientemente por el usuario a la biblioteca
    • Píldoras de búsqueda recientes — Búsquedas recientes basadas en píldoras horizontales que reemplazan la antigua vista de lista
    • Botón de escaneo de código de barras en línea anclado en la parte inferior del estado previo a la búsqueda
    • Ventana emergente de filtro de búsqueda avanzada con insignia de filtro activo
    • Pestaña de búsqueda de iOS 26 — Búsqueda como un elemento dedicado en la barra de pestañas en iOS 26+
  • Renovación de la incorporación – Flujo de incorporación rediseñado de 6 pantallas con texto de marca cálido, tipografía personalizada, paleta de colores adaptativa con soporte para modo oscuro
  • Hoja de novedades – Renovada con animaciones de estilo de incorporación y coincidencia de versiones mejorada
  • Pestañas de detalles del libro – Pestañas renombradas a “El libro”, “Viaje” y “Recuerdos” con indicador activo de píldora/cápsula y efecto de cristal en iOS 26+
  • Estados vacíos de Viaje y Recuerdos – Estados vacíos basados en ilustraciones con temas de jardín/libro mágico y CTAs
  • Alias del libro en sesiones – Los alias ahora se muestran en los registros de sesiones en vivo, Actividad en vivo y guardados de borradores
  • Continuar leyendo – Sección oculta cuando todos los libros están en pausa
  • Creación de libros personalizados (iOS 26+) – El botón de añadir de la barra de herramientas de la biblioteca va directamente a la creación de libros personalizados
  • Estilo de Snackbar – Forma rectangular redondeada con sombra cálida y fondo de material regular
  • Microcopia – Mensajes de estado vacío y texto de confirmación más cálidos y humanos
  • Carga de imágenes – Las imágenes de portada existentes permanecen visibles durante la actualización de metadatos (sin destello)
  • Degradado de color – El degradado del encabezado de detalles del libro se desvanece suavemente al cambiar la paleta
  • Localización – Se convirtieron todas las cadenas de texto en inglés codificadas a claves de localización semánticas; se añadió la configuración regional es-419

Corregido

  • Importación de Goodreads – Se corrigió la importación que fallaba cuando la exportación CSV omitía columnas (por ejemplo, Puntuación media)
  • Estabilidad de la sesión en vivo – Se corrigió el reinicio del temporizador de sesiones, la pérdida de estado y el parpadeo al volver del segundo plano, al bajar las notificaciones o al capturar citas
  • Fondo de mesita de noche – Color de fondo fijo para que coincida con el tema de la aplicación
  • Persistencia de mesita de noche – Libros fijos que permanecen en la mesita de noche después de cambios de estado basados en el progreso
  • Relación de aspecto de la tarjeta para compartir – Relación de aspecto de publicación fija para que coincida con las especificaciones de Instagram (4:5)
  • Vista previa de la tarjeta para compartir – Vista previa fija que no coincide con la salida renderizada; el texto de la cita ahora se escala para citas largas
  • Hoja de detalles del libro – Hoja fija que se descarta y se vuelve a abrir al agregar un libro a la biblioteca
  • Fuga de animación esquelética – Animación de pulso limitada para evitar fugas de transacciones de SwiftUI
  • Portadas de Actividad en Vivo – Portadas de libros fijas que no se muestran en las Actividades en Vivo en compilaciones Beta
  • Enlace profundo de notificación – Notificación fija que abre el libro incorrecto; pestañas ocultas para libros que no están en la biblioteca
  • Píldoras de filtro de búsqueda – Recorte fijo en pantallas estrechas y traducciones largas
  • Diseño de inicio (iOS 26) – Oscilación de diseño fija al limitar la animación de la barra de herramientas
  • Filtrado Pausado/DNF – Alternancia fija para ocultar pausados/DNF y portadas personalizadas del selector de libros
  • Estadísticas de reflexiones – Contador fijo que falta en las estadísticas de “esta semana” en las pantallas de citas/reflexiones
  • Pantalla de reflexiones – Números duplicados fijos en las estadísticas y títulos de sección en mayúsculas
  • Portadas de libros personalizadas – Sincronización CloudKit fija para imágenes de portadas de libros personalizadas; las portadas ahora se muestran correctamente en los widgets de Actividad en Vivo

1.1.0 – 19 de enero de 2026

Añadido

  • Tarjetas para compartir – Crea hermosas imágenes compartibles de tu contenido de lectura
    • Comparte citas como tarjetas estilizadas con atribución del libro
    • Comparte tarjetas de progreso de libros (leyendo actualmente o terminado)
    • Comparte listas de libros de estanterías como cuadrículas de portadas
    • Múltiples temas: Predeterminado, Crepúsculo, Océano, Bosque, Cálido, Medianoche
    • Dos relaciones de aspecto: Historia (9:16) y Publicación (3:4)
    • Tarjetas de citas: Activa/desactiva el contenedor de la tarjeta
    • Tarjetas de libros: Activa la vista “Terminado” para libros completados
    • Tarjetas de listas de libros: Edita el título y el texto de la insignia
    • Puntos de entrada: Detalle de cita, Detalle de libro, Detalle de estantería
    • Seguimiento de análisis de TelemetryDeck para el uso de funciones
  • Libros personalizados – Crea libros manualmente cuando no se encuentren mediante la búsqueda
    • Agrega un libro personalizado a través del menú de la barra de herramientas de la biblioteca (mantén presionado el botón “+”)
    • Crea un libro personalizado desde la pantalla de sin resultados de búsqueda
    • Insignia indicadora de libro personalizado en las portadas de los libros (icono de lápiz, superior izquierda)
    • Editar detalles del libro personalizado a través del menú de la barra de herramientas de Detalles del libro
    • Selección de imagen de portada de la biblioteca de fotos para libros personalizados
    • Todas las funciones de la aplicación compatibles: sesiones, citas, reflexiones, estanterías
    • Portadas personalizadas guardadas localmente con compresión JPEG
  • Mejoras en el Resumen de la Vista de Inicio – Mejorada tu sección de Resumen en la pantalla de Inicio
    • Cambiado el nombre de "Estadísticas de lectura" a "Tu resumen"
    • Filtro de año para ver estadísticas por año (Toda la vida, 2025, 2024, etc.)
    • Scroll horizontal de Libros Completados mostrando portadas de libros terminados
    • El filtro persiste en los lanzamientos de la aplicación
    • Componente ChipPicker reutilizable para selecciones estilo menú
  • Rediseño del Registro Manual de Sesiones – UX mejorada para rellenar sesiones de lectura
    • Las portadas de los libros ahora se muestran en las filas de libros de la sesión
    • Selector de fecha mejorado con icono de calendario y visualización formateada de día de la semana/fecha
    • Entrada de progreso basada en delta: "Páginas leídas" en lugar de "Página actual" para facilitar el relleno
    • Soporte de modo porcentaje: Muestra "Progreso: X%" para audiolibros y libros con seguimiento de porcentaje
    • El progreso es ahora opcional: registra sesiones solo de duración sin necesidad de introducir páginas/porcentaje
    • Preselección al abrir desde la barra de herramientas de Detalles del libro (botón Registrar sesión)
    • La hoja dedicada para seleccionar libros reemplaza la búsqueda en línea
  • Importación/Exportación de Copias de Seguridad de Kiveo – Funcionalidad completa de copia de seguridad y restauración de datos
    • Exportar todos los datos de la biblioteca a un archivo de copia de seguridad JSON (libros, estanterías, sesiones, citas, reflexiones)
    • Importar desde copia de seguridad con modo de fusión (conserva lo existente, añade lo nuevo) o modo de reemplazo (importación limpia)
    • Previsualizar el contenido de la copia de seguridad antes de importar con resumen del recuento de datos
    • Detección de duplicados por ISBN durante la importación de fusión
    • Indicador de progreso durante la importación con descripciones de fase
    • Ubicado en Configuración bajo la nueva sección "Importar y exportar"
    • La importación de Goodreads se trasladó a la sección Importar y exportar
  • Compartir Libros con Enlaces Profundos – Comparte libros con otros usuarios de Kiveo a través de enlaces compartibles
    • El botón Compartir en la barra de herramientas de Detalles del libro genera un enlace a share.kiveo.app
    • El soporte de enlaces profundos abre los libros compartidos directamente en la aplicación
  • WebView de Safari en la Aplicación – Los enlaces HTTP/HTTPS ahora se abren dentro de la aplicación
    • Evita el cambio de contexto a la aplicación Safari externa
  • Varias tarjetas de lectura actual – La pantalla de inicio ahora muestra todos los libros que estás leyendo
    • Carrusel desplazable horizontalmente cuando hay varios libros en curso
    • Cada tarjeta muestra la portada del libro, el título y el progreso de lectura
  • Efecto de cristal para continuar leyendo (iOS 26) – Efecto de cristal aplicado a las tarjetas de continuar leyendo en la pantalla de inicio
  • Actualización automática de datos del libro – Obtiene automáticamente metadatos actualizados del libro de la API
    • Actualiza imágenes de portada, descripciones y otros detalles cuando estén disponibles
  • Selector de estado personalizado – Nuevo filtro de estado estilo píldora que reemplaza los controles segmentados
    • Gestos de deslizamiento: arrastra más allá del borde final para saltar a "Todos", arrastra más allá del borde inicial para volver a la selección anterior
    • Animaciones de resorte fluidas con retroalimentación háptica
    • Aplicado en las vistas de Biblioteca, Detalles de estantería, Selector de libros y Añadir libros a estantería
  • Filtro de biblioteca persistente – El filtro de estado seleccionado ahora persiste entre lanzamientos de la aplicación
  • Ocultar libros DNF – Nuevo interruptor en el menú de la barra de herramientas de la Biblioteca para ocultar la opción de estado DNF
    • La configuración se aplica globalmente a todos los selectores de estado en toda la aplicación
    • Cambia automáticamente a "Todos" si se seleccionó DNF cuando se ocultó
  • Alias de libros – Establece nombres de visualización personalizados para libros con títulos largos o no deseados
    • Establece el alias a través del menú de la barra de herramientas en la vista de Detalles del libro
    • Opción para borrar alias (visible solo cuando el alias está establecido)
    • El indicador del icono del lápiz se muestra en toda la aplicación cuando un libro tiene un alias
    • Alias mostrado en: Detalles del libro, elementos de la Biblioteca, widget de Continuar leyendo, Sesiones en vivo, Citas, selectores de libros y gestión de estanterías
  • Retroalimentación háptica – Retroalimentación táctil en toda la aplicación para una mejor experiencia de usuario
    • Impacto ligero para interruptores, selecciones y toques de botones
    • Impacto medio para acciones de pausa/reanudación y reordenación por arrastre
    • Notificaciones de éxito para guardados, finalizaciones e importaciones
    • Notificaciones de error para eliminaciones y fallos
    • Utilidad centralizada HapticManager para un uso consistente
  • Editor de fechas de libros – Edita fechas de libros (Añadido, Iniciado, Terminado) desde Detalles del libro
    • Toca la sección de fechas en las acciones de la biblioteca de libros para abrir la hoja del editor
    • Edita dateAdded, dateStarted y dateCompleted con selectores de fecha compactos
    • Borra fechas opcionales (iniciadas/terminadas) con el botón de borrar
    • El estado se sincroniza automáticamente en función de los cambios de fecha (las fechas de finalización establecen el estado en Hecho, etc.)
    • Muestra la fecha de finalización junto con las fechas de adición/inicio existentes
  • Barra de herramientas de cristal líquido iOS 26 – Navegación rediseñada para adoptar la estética del cristal líquido de iOS 26
    • Títulos mostrados en la posición principal de la barra de herramientas con visibilidad del fondo de cristal
    • La barra de pestañas se minimiza al desplazarse hacia abajo para obtener más espacio de contenido
    • Los títulos de la barra de herramientas y el logo se desvanecen suavemente al desplazarse
    • La barra de herramientas de la pantalla de inicio incluye el icono del logo de Kiveo
    • Estilo de botón prominente de cristal para las acciones de la barra de herramientas
    • Retroceso elegante a la navegación estándar de títulos grandes en iOS 18

Cambiado

  • Claridad mejorada de las estadísticas de lectura – Se han añadido subtítulos descriptivos a las tarjetas de estadísticas en la pantalla de inicio
    • “Libros leídos” ahora muestra el subtítulo “Completados”
    • “Páginas leídas” ahora muestra el subtítulo “De sesiones”
    • “Racha actual” (renombrado de “Racha diaria”) ahora muestra el subtítulo “Días”
  • Confirmaciones de guardado consistentes – Comportamiento unificado de confirmación de guardado para citas y reflexiones

Corregido

  • Limitación manual de páginas de sesión – Se corrigió que las páginas registradas excedieran el número total de páginas del libro
    • Al registrar una sesión manual, las páginas ahora se limitan correctamente por las páginas restantes del libro
    • Ejemplo: Si un libro de 300 páginas tiene 280 páginas leídas, registrar 50 páginas ahora guarda correctamente solo 20 páginas
  • Conservar fecha de finalización del libro – Se corrigió que la fecha de finalización se sobrescribiera al registrar sesiones adicionales
    • Los libros que ya tienen una fecha de finalización ya no sobrescriben su fecha
    • Conserva la fecha de finalización original incluso al registrar sesiones que exceden el total de páginas
  • Limpieza de Actividad en Vivo – Se corrigió que la Actividad en Vivo se quedara atascada en la pantalla de bloqueo después de que terminara la sesión o de que la aplicación se cerrara inesperadamente
    • Se añadió limpieza al inicio de la aplicación para finalizar Actividades en Vivo huérfanas
    • La Actividad en Vivo ahora muestra el estado de pausa al recuperarse de una sesión interrumpida
    • Finaliza correctamente todas las actividades cuando el usuario descarta la sesión recuperada
  • Marcas de tiempo de recuperación de sesión – Se corrigieron marcas de tiempo de registro incorrectas en sesiones recuperadas
    • Las sesiones recuperadas ahora conservan la hora de inicio original para marcas de tiempo de registro precisas
    • Corrige el problema por el cual los registros de sesión mostraban horas incorrectas después de la recuperación (por ejemplo, sesión de 3 minutos a pesar de una lectura real más larga)
  • Ancho de la tarjeta Continuar leyendo (iPhone) – Se corrigió que la tarjeta de un solo libro no se expandiera a todo el ancho en iPhone
  • Visualización de estadísticas de libros – Se corrigió el recuento inflado de sesiones y el tiempo de lectura en toda la aplicación
    • El widget "Leyendo actualmente" de la página de inicio ahora solo cuenta las sesiones completadas
    • La pestaña Estadísticas de detalle del libro ahora filtra las entradas huérfanas de ReadSessionBook
    • Se corrigió la creación huérfana de ReadSessionBook durante la captura de citas que causó una hinchazón de estadísticas
    • Se almacenó en caché ReadSessionBook para vincular citas y evitar múltiples entradas huérfanas
  • Orden del registro de actividad de la sesión: se corrigió que los registros de sesión aparecieran en orden aleatorio en la vista de detalle de la sesión
    • Los registros ahora se ordenan por marca de tiempo (la más reciente primero) para que coincidan con la visualización de la sesión en vivo
  • Visualización del progreso porcentual: se corrigió la visualización incorrecta del porcentaje en los elementos del libro y los indicadores de progreso
  • Guardar citas/reflexiones: se corrigió un problema por el cual las citas y reflexiones no se guardaban en ciertas condiciones
  • Estabilidad de la sesión en vivo: se corrigieron posibles problemas de bloqueo/congelación durante las sesiones de lectura en vivo
  • Caché de imágenes para continuar leyendo: se corrigió que las imágenes de las portadas de los libros no se almacenaran en caché correctamente en el widget Continuar leyendo
  • Color de tinte de configuración: se corrigió el color de tinte incorrecto en las pantallas de Configuración y Acerca de
  • Persistencia del diseño de la biblioteca: se corrigió que la preferencia de diseño de la biblioteca no persistiera entre lanzamientos de la aplicación

Rendimiento

  • Optimización de la pantalla de inicio: se mejoró el rendimiento de carga y renderizado en la pantalla de inicio
  • Caché de paleta de colores de portadas de libros: se almacenaron en caché los colores dominantes de las portadas de los libros para una representación más rápida de la interfaz de usuario

1.0.2 – 21 de diciembre de 2025

Añadido

  • Gestión masiva de libros de estantería: agregue o elimine varios libros de una estantería a la vez
    • El nuevo botón "+" en la barra de herramientas de la estantería abre el selector de libros (solo estanterías personalizadas)
    • Interfaz de selección múltiple con casillas de verificación para una selección rápida
    • Activar/desactivar libros: agregue libros nuevos o elimine los existentes
    • Filtrar pestañas (Todos/Leyendo/Lista de deseos/Hecho) para reducir la lista de libros
    • Opciones de ordenación (Actividad reciente/Título/Autor/Fecha de adición)
    • Buscar por título o autor
  • Ocultar estanterías vacías: nuevo interruptor en el menú de la barra de herramientas de la biblioteca para ocultar estanterías sin libros
    • Disponible cuando "Agrupar por estanterías" está habilitado
    • La configuración persiste entre lanzamientos de la aplicación
  • Marcador de posición de estantería vacía: tarjeta de marcador de posición que se muestra en estanterías vacías
    • Muestra el icono "+" con la etiqueta "Agregar libros"
    • Al tocar, se abre el selector de libros masivos para esa estantería
  • Acciones rápidas de gestión de estanterías: toque cualquier estantería en Gestionar estanterías para agregar libros
    • También disponible a través de la opción de menú contextual "Administrar libros"

1.0.1 – 17 de diciembre de 2025

Añadido

  • Valora Kiveo – Nueva opción en Ajustes para valorar la app en la App Store
  • Ordenar Estantería – Ordena manualmente los libros dentro de las estanterías
    • Reordenación por arrastrar y soltar mediante la opción Ordenar en el menú de estantería
    • La nueva opción “Ordenar Estantería” en la vista de cuadrícula de la Biblioteca muestra el orden personalizado
    • El icono indicador muestra qué estanterías tienen ordenación personalizada
    • Los libros nuevos añadidos a las estanterías aparecen en la parte superior
    • Orden de clasificación independiente por estantería (los libros en varias estanterías tienen posiciones separadas)
    • La opción de ordenación de la Biblioteca ahora persiste entre lanzamientos de la app
    • Protocolo DataUpgrade para migraciones estandarizadas
  • Función Novedades – Hoja informativa posterior a la actualización que muestra las nuevas funciones a los usuarios
    • Carrusel horizontal con paginación para múltiples anuncios de funciones
    • Solo se muestra a usuarios existentes después de las actualizaciones de la app (no en instalaciones nuevas)
    • Visualización acumulativa de todas las funciones desde la última versión vista por el usuario
    • Se puede descartar mediante el botón de cierre o un gesto de deslizamiento
    • Botón “Empezar” en la diapositiva final
    • Opción en Ajustes para ver Novedades en cualquier momento
    • Integración de TelemetryDeck para análisis
    • Pruebas unitarias para VersionComparator y WhatsNewRegistry
  • Progreso Porcentual – Introduce el progreso de lectura por páginas o porcentaje
    • Selector segmentado (Páginas / %) en los avisos de actualización de progreso
    • Preferencia por libro: recuerda el último modo utilizado para cada libro
    • Opción de porcentaje disponible incluso sin número total de páginas
    • Cambiar de modo borra la entrada y mantiene la preferencia
    • Se aplica al toque de progreso en Detalles del Libro y a los avisos de Sesión en Vivo

Corregido

  • Filtrado de Estanterías – Se corrigió un problema por el cual la Pila de Hojas se mostraba vacía al abrirla desde la Biblioteca
    • ShelfDetailView ahora tiene filtrado independiente de LibraryView
    • Leaf Pile muestra correctamente todos los libros sin estantería independientemente del filtro de la Biblioteca

1.0.0 – 12 de diciembre de 2025