# Troop Reader — Android para Kavita

Versión revisada **0.1.0-alpha21** para leer EPUB, manga/cómic y páginas de PDF descargadas, usando un único catálogo Kavita. Es una aplicación independiente; no es una aplicación oficial de Kavita ni una copia completa de su interfaz.

## Novedades de alpha21 · Bigme

- Detección del controlador Bigme y **Refresco Bigme experimental**, opcional y desactivado inicialmente. Solo aparece si el firmware expone el contrato de limpieza compatible.
- Usa el modo de limpieza del propio firmware; si la llamada falla, desactiva la opción y recupera el repintado compatible. No cambia preferencias globales del lector.
- Estado de detección en **Compatibilidad y refresco** y en el diagnóstico exportable, sin números de serie ni datos de cuenta.
- Lectores objetivo B751C / S Color / Android 14 / 1.7.0: **pendiente probar el refresco físico**. La investigación de la API corresponde a otro Bigme, no supone certificación para esta variante. [Detalles](BIGME-B751C-S.md).

Instala encima, sin desinstalar. Se conservan los perfiles e-ink de alpha20 y todos los datos de lectura. Ver `docs/REVISION-ALPHA21.md`.

## Novedades de alpha20 · tinta electrónica

- **Ajustes → Tipo de pantalla:** normal, tinta electrónica B/N o color; también disponible dentro del lector y antes de iniciar sesión.
- Interfaz de alto contraste, controles estáticos, menús opacos, sin Hoja ni desplazamiento continuo de imágenes en e-ink. No borra esas preferencias: se recuperan al volver al modo normal.
- EPUB avanza por pantallas de texto antes de cambiar de sección. Se conservan zoom, doble página, dirección manga y teclas opcionales de volumen.
- **Limpiar al navegar** y **Limpiar pantalla ahora**. Solicitud nativa en BOOX con API compatible; repintado negro/blanco de compatibilidad en los demás. No se garantiza refresco físico ni eliminación de ghosting sin probar el dispositivo real.
- Perfil local al dispositivo, sin modificar descargas, progreso, marcadores o sincronización.

Lee [la guía de pantallas e-ink](EINK.md): modos de calidad del fabricante, límites, color y diferencias entre un repintado de Android y un refresco físico. La limpieza añade un destello intencional; está desactivada en Pantalla normal. Ver `docs/REVISION-ALPHA20.md`.

## Novedades de alpha19

- **Leer mientras descarga:** abre páginas y secciones completas antes de terminar el libro. Si la siguiente aún falta, puedes reanudar la descarga o esperar sin avanzar el progreso. También funciona con descargas pausadas y no da una obra incompleta por terminada.
- **Voz en segundo plano:** continúa con la pantalla apagada; pausa, reanudación y parada desde la notificación y controles multimedia. Requiere una voz offline instalada. El lector no sobrescribe la posición alcanzada por el audio; al volver se sitúa allí. Tocar el texto o navegar manualmente pausa la voz.
- **Diccionario EPUB:** selecciona un fragmento y elige Diccionario. Solo se entrega el fragmento al diccionario que elijas; requiere una app compatible con Procesar texto y sus datos offline.
- **Controles físicos:** botones de volumen para avanzar/retroceder (opcional), y orientación automática, vertical u horizontal. Mientras habla el lector, los botones ajustan el volumen. Ajustes generales o por obra.
- **Mi espacio → Kavita:** consulta listas de lectura y colecciones del servidor, conservando offline lo que hayas consultado. No modifica ni reordena las listas del servidor. Un elemento abre los tomos de esa obra.
- **Mi espacio → Diagnóstico:** exporta un JSON técnico con contadores, versión y categorías de errores. No incluye títulos, textos, URL, identificadores de libros, notas ni credenciales. No se envía automáticamente.
- Menos trabajo repetido en la lectura continua mientras llegan nuevas páginas y notificaciones de descarga limitadas a una actualización por segundo.

Instala encima, sin desinstalar. El cambio no modifica Kavita. Ver `docs/REVISION-ALPHA19.md` para pruebas y límites.

## Novedades de alpha18

- Corrige descargas EPUB detenidas por rutas de tipografías con prefijos de paquete que Kavita devuelve como HTTP 400. Prueba primero la ruta original y después alternativas normalizadas dentro del mismo libro.
- Soporta estilos CSS importados, imágenes y fuentes relativas dentro del EPUB. Los recursos externos siguen bloqueados y las credenciales no se guardan en el contenido.
- La ficha offline muestra el motivo, el avance y **Reintentar descarga** o **Pausar descarga**, sin tener que buscar el error en la cola.
- Reanudar conserva las secciones completas, el progreso y los marcadores. No borres el libro: actualiza encima y pulsa **Reintentar descarga** o **Reintentar pendientes**.
- Ver `docs/REVISION-ALPHA18.md` para las comprobaciones y límites. Las funciones de alpha17 se mantienen.

## Novedades de alpha17

- **Mi espacio:** favoritos, colecciones personales, novedades de las series que sigues, estadísticas y copias de lectura.
- **Seguir novedades:** consulta Kavita al abrir y periódicamente (aproximadamente cada 12 horas, sujeto a Android), con aviso de nuevos archivos de lectura. La primera consulta establece la referencia inicial.
- **Siguiente tomo sin esperas:** descarga anticipada opcional, restricción Wi-Fi y límite de espacio para archivos automáticos. Nunca borra libros para hacer sitio ni reanuda descargas pausadas.
- **Ajustes por obra:** dirección manga, presentación, gestos, efecto, letra y tema independientes de los ajustes generales.
- **Herramientas EPUB:** búsqueda offline en todas las secciones, subrayados y notas editables/exportables en Markdown y lectura con una voz offline instalada de Android, velocidad y temporizador.
- **Estadísticas locales:** tiempo con el lector visible, páginas/secciones visitadas y lecturas completadas; se pueden desactivar o borrar sin afectar el progreso.
- **Copia/restauración JSON:** progreso, marcadores, notas, preferencias, favoritos y colecciones. No contiene credenciales ni libros. En otro móvil hay que iniciar sesión en la misma cuenta y descargar los libros de nuevo. Los datos actuales prevalecen; el progreso recuperado no sobrescribe a ciegas el servidor.

Búsqueda, notas y voz son para EPUB, no OCR de manga/PDF. Desde alpha19, la voz continúa en segundo plano mediante un servicio de audio. Las funciones personales son locales y se transportan mediante la copia; no se presentan como listas/notas sincronizadas con Kavita. Ver `docs/REVISION-ALPHA17.md`.

## Novedades de alpha16

- Actualizador: evita descargas duplicadas al corregir notas y recupera APK completas ya verificadas tras un cierre.
- Los trabajos de versiones antiguas no cambian los errores, porcentajes ni disponibilidad de una versión nueva.
- Sincronización de progreso y marcadores cancelable, conservando los cambios pendientes.
- Reutilización de conexiones con Kavita sin compartir la identidad de las cuentas.
- Sin cambios de lector, preferencias ni formato de datos. Ver `docs/REVISION-ALPHA16.md`.

Desde alpha15, busca esta versión en **Ajustes → Actualizaciones de la app**. Para instalar manualmente, hacerlo encima sin desinstalar.

## Novedades de alpha15

- **Actualizaciones desde la propia app**: búsqueda al abrir y periódicamente en segundo plano; botón manual en Ajustes → Actualizaciones de la app.
- Descarga automática por Wi-Fi (opcional), novedades y progreso de descarga. Aviso cuando está lista, sin interrumpir la lectura.
- Instalación sobre la versión actual mediante el instalador de Android. Hay que autorizar a Troop Reader como origen la primera vez y confirmar la instalación; no desinstalar.
- Comprobación de tamaño, SHA-256, identificador, versión y firma antes de instalar. Las descargas de lectura y los ajustes no se modifican.
- Se mantienen el zoom entre páginas, Hoja mejorada y la navegación rápida de alpha14.

**Instala alpha15 manualmente una vez** para recibir las siguientes versiones dentro de la app. Ver `docs/APP-UPDATES.md` para el flujo y publicación, y `docs/REVISION-ALPHA15.md` para la validación.

## Novedades de alpha14

- **Zoom conservado al pasar página:** no reduce la ampliación antes de cambiar de imagen. Se aplica a bordes, arrastre, avance/retroceso y doble página.
- **Sin efecto sigue siendo directo**, con la página anterior visible hasta decodificar la siguiente, sin animación de alejamiento ni captura intermedia para reiniciar el zoom.
- **Efecto Hoja renovado:** pliegue diagonal curvado, reverso con la impresión reflejada, sombras suaves y un movimiento más corto con desaceleración al terminar. Mantiene la vista ampliada.
- Corregido también el encuadre de la captura para que Hoja arranque desde la zona ampliada que estás viendo.
- Si una imagen falla, se conserva también el nivel de zoom al reintentar.
- Se mantienen la precarga de páginas y la respuesta de los bordes al soltar el dedo. No modifica Kavita ni migra los datos.

Ver `docs/REVISION-ALPHA14.md`. Instala encima sin desinstalar. El zoom se mantiene entre páginas dentro del lector; no se añade persistencia del zoom entre sesiones.

## Novedades de alpha13

- **Bordes sin la espera del doble toque:** el cambio se solicita al soltar el dedo. Pinza en toda la imagen y doble toque central para zoom.
- Visor paginado de imágenes reutilizado y páginas adyacentes precargadas localmente, sin recargar el visor completo en cada cambio.
- Conserva la página anterior hasta que la siguiente se decodifica, sin volver a mostrar el fondo negro. Mantiene zoom, dirección manga, doble página y efecto Hoja opcional.
- Si una imagen falla, conserva la página y el progreso y permite reintentar.
- Comparación en emulador: mediana de 524,5 → 101,5 ms hasta la nueva página visible. Pendiente aceptación en móvil físico.

Ver `docs/REVISION-ALPHA13.md`. Instala encima sin desinstalar; no cambia el servidor ni tus ajustes.

## Novedades de alpha12

- **Sin efecto, sin fondo negro entre páginas:** mantiene la imagen saliente hasta que la siguiente está dibujada, también al saltar desde el visor. Efecto Hoja opcional conservado.
- **Vertical continuo** para manga/cómic/PDF: páginas seguidas, selector, bordes y posición dentro de la imagen guardada localmente. Kavita recibe la página, no esa fracción de imagen.
- Imágenes cargadas de forma diferida y resolución acotada para las tiras muy altas. Zoom y Hoja siguen disponibles al volver a Página completa.
- Accesos al **tomo/libro anterior o siguiente** sin marcar lo omitido como leído y sin saltar huecos no descargados.
- Fin de tomo explícito en modo continuo, con continuación automática al vecino disponible.

Ver `docs/REVISION-ALPHA12.md`. Mantiene bordes por defecto, conflictos manuales y los datos de la versión anterior. Instala encima sin desinstalar.

## Novedades de alpha11

- En el visor del lector, **Ir a página** permite introducir un número; en EPUB se llama **Ir a sección** porque la paginación depende de la letra. Valida el rango antes de saltar y conserva la posición.
- Descargas: orden por **lectura reciente, título A–Z o mayor tamaño**; filtros **En lectura, Pendientes y Descargas leídas**, tamaño por obra y búsqueda sin distinguir tildes. «Limpiar filtros» cuando no hay resultados.
- **Liberar leídos** en Descargas o dentro de una obra: muestra el espacio y pide confirmación. Solo elimina archivos completos ya leídos; conserva los originales, progreso, marcadores y escrituras pendientes. No es borrado automático.
- **Pausar toda la cola** o una selección, manteniendo los archivos parciales para reanudarlos. Cambiar Wi-Fi/datos no vuelve a activar lo pausado.
- Primera página incluida en «Continuar leyendo» al abrirla. Registrar esta apertura es historial local: no envía progreso ficticio a Kavita ni cambia el estado de leído.
- Extremos con zoom más tolerantes al redondeo del visor, manteniendo la posibilidad de recorrer la imagen antes de pasar página.
- Menos escrituras: los estados sin cambios no se vuelven a serializar en disco. Agrupación offline calculada sin recorrer todas las descargas en cada comparación de ordenación. Al abrir el lector prevalece una posición local pendiente.

Ver `docs/REVISION-ALPHA11.md`. Mantiene bordes por defecto, selector de capítulos/tomos, gestos con zoom, efecto Hoja opcional y conflictos manuales. No cambia el servidor.

## Novedades de alpha10

- **Toques en los bordes por defecto**, también al actualizar desde versiones anteriores. Se aplica una sola vez; después se puede elegir y conservar «Arrastrando».
- Selector dentro del lector: toca el nombre del tomo/libro o el icono de lista. Carátulas, búsqueda, unidad actual y estado leído/descargado; saltos sin marcar como leído lo omitido.
- Visor de miniaturas de páginas para manga/cómic/PDF, accesible también desde el contador de página. EPUB: índice de capítulos/subapartados o secciones si no hay índice.
- Tomos con varias partes seleccionables y enlace permanente a **Descargar más**. No abre contenido incompleto y conserva la posición de cada lectura.

Ver `docs/REVISION-ALPHA10.md`. Instala encima, sin desinstalar. Sin cambios en Kavita ni en la política de sincronización.

## Novedades de alpha9

- En **Opciones de lectura → Efecto de paso de página**, elige **Sin efecto** (predeterminado) o **Hoja**.
- Hoja simula un pliegue con sombra al avanzar y retroceder por arrastre, toque en bordes o los botones de navegación. Respeta la dirección manga y el modo doble página.
- Conserva el gesto y la vista ampliada de salida: con zoom se puede seguir recorriendo la imagen antes de cambiar de página. La página entrante se abre con su ajuste habitual, como en alpha8.
- El efecto no cambia el progreso, los marcadores ni el orden de lectura. Los toques se bloquean durante la breve transición para no saltarse páginas.
- Ajuste persistente por cuenta. Sin efecto cuando Android deshabilita las animaciones o está activo el lector de pantalla por exploración táctil. Si no hay memoria para la captura, continúa sin animación.
- EPUB conserva el scroll vertical: el efecto se aplica al cambiar de sección, no convierte el texto en un libro paginado. Los saltos a páginas no contiguas o a párrafos concretos y el cambio de tomo siguen siendo directos.
- Corregido un toque tardío que podía consultar un WebView ya retirado y cerrar el lector.

Ver `docs/REVISION-ALPHA9.md`. Sin cambios en Kavita ni sincronización; instalar encima sin desinstalar.

## Novedades de alpha8

- En Opciones de lectura → Pasar página se puede elegir **Arrastrando** (predeterminado) o **Toque en los bordes**. El ajuste se guarda por cuenta y respeta la dirección manga y la doble página.
- Con zoom, un arrastre recorre la imagen. Desde un extremo, otro arrastre hacia fuera cambia de página sin reducir el zoom antes. Alcanzar el extremo durante un arrastre no pasa de página por sorpresa.
- En modo de bordes, tocar el 22 % izquierdo/derecho de la pantalla retrocede/avanza (invertido en manga RTL), incluso ampliando; el centro muestra u oculta controles. Arrastrar solo mueve la imagen. La pinza y el doble toque no cambian de página.
- **Ver tomos/libros · Descargar más** permanece visible en Biblioteca aunque exista una descarga. También disponible en Descargas, dentro de cada obra y en las opciones del lector.
- El catálogo completo permite descargar los tomos que faltan sin volver a descargar los completos; la portada continúa abriendo la lectura directamente.
- No cambian los datos de cuenta, descargas, progreso, marcadores ni conflictos manuales predeterminados. Instalar encima de la versión anterior sin desinstalar.

Ver `docs/REVISION-ALPHA8.md`. Esta entrega no modifica Kavita.

## Novedades de alpha7

- Abrir/continuar una serie descargada directamente y paso automático al siguiente tomo disponible, con finalización guardada y sincronizada.
- Pantalla completa, controles al tocar y gestos para pasar página, incluyendo sentido manga. Opción para desactivar la continuación automática.
- Biblioteca offline agrupada por obra, tomos leídos/sin leer, búsqueda y categorías reales de Kavita.
- Seleccionar y eliminar varios tomos u obras, toda una obra o todas las descargas, con confirmación y sin borrar progreso ni marcadores.
- Se conserva la política de conflictos manuales predeterminada y la opción de prioridad local.

Ver `docs/REVISION-ALPHA7.md` para detalles y límites. Instala encima de alpha6 **sin desinstalar**. Carátulas y páginas funcionan con el ajuste del servidor ya validado; esta entrega no cambia el servidor.

## Novedades y límite de alpha6 (histórico; imágenes corregidas después)

- Cambiar «Solo Wi-Fi» vuelve a programar las descargas pendientes con la nueva restricción de red, conservando las páginas descargadas. Las pausadas manualmente no se reanudan por ese cambio.
- Selección múltiple, vaciado de cola con confirmación y reintento/reanudación de seleccionados. El vaciado elimina parciales, no descargas completas, progreso ni marcadores.
- Los trabajos sustituidos o cancelados no pueden restaurar estados antiguos sobre una nueva solicitud. Los elementos añadidos durante un lote usan el ajuste de red vigente.
- Diagnóstico de HTTP 400 por operación y de fallos de carátulas en Ajustes. Los errores HTTP 400 ya no entran en reintento automático indefinido; se pueden reintentar explícitamente.
- **Carátulas y HTTP 400 reales NO se dan por reparados.** La API de imágenes de algunas versiones requiere un parámetro de autenticación adicional. La app mantiene autenticación por cabecera y no publica claves en URLs. Se necesita comprobar la respuesta autenticada del servidor afectado para cerrar la compatibilidad.

Ver `docs/REVISION-ALPHA6.md`. Las pruebas con un servidor simulado no certifican compatibilidad con todas las versiones reales de Kavita.

## Novedades de alpha5

- Carátulas de serie, tomo y libro desde los mismos endpoints de imagen de Kavita. Carga a demanda (hasta cuatro transferencias), caché privada offline, comprobación de imágenes y reintento al recuperar red. Una respuesta errónea no reemplaza una portada válida.
- Manga/cómic agrupado por tomos reales de Kavita; los archivos internos de un tomo se descargan juntos y conservan sus IDs para sincronización. Libros mostrados individualmente. El tipo de biblioteca decide la terminología, también para PDF.
- **Seleccionar todos los tomos / Seleccionar todos los libros**, selección individual, omisión de lo ya descargado y confirmación antes de encolar. Sin truncado silencioso a los primeros 200. Límite de seguridad: 20.000 unidades internas por lote, con preparación secuencial y cancelación.
- Carátulas también en Descargas y Continuar leyendo; se guardan al descargar un archivo aunque no haya aparecido antes en pantalla.
- Recuperación de conexión al volver a primer plano: nueva consulta de red, reintento del catálogo abierto y sincronización. Comprobación de respaldo cada cinco segundos solo en primer plano para eventos perdidos de Android. No requiere cerrar el proceso.
- No se bloquean las llamadas a Kavita solo porque Android no haya validado su propio servicio de comprobación de Internet (por ejemplo VPN o filtro DNS). Una petición fallida sigue mostrando error; disponer de una red no garantiza que el servidor esté accesible.
- El catálogo de tomos/libros queda almacenado para consultas offline. Desde alpha19 también se leen las páginas o secciones completas de descargas parciales.
- Progreso, marcadores y política de conflictos manuales predeterminada de alpha4 no cambian.

Ver `docs/REVISION-ALPHA5.md` para validación y límites.

## Novedades de alpha4

- **Conflictos manuales por defecto**, tanto al instalar desde cero como al actualizar una alpha anterior.
- Nueva opción **Ajustes → Dar prioridad a este móvil**, desactivada inicialmente y guardada por cuenta.
- Al activarla, las modificaciones locales pendientes de **progreso de lectura y marcadores** prevalecen sobre los cambios online, aunque allí se haya avanzado más o su cambio sea posterior.
- No se trata de elegir la fecha más reciente ni el porcentaje mayor. Tampoco se reenvían copias locales sin cambios ni se borra la colección de marcadores: se reciben los cambios web cuando no hay una intención local pendiente.
- Para EPUB, sustituir un marcador exige borrar y crear esa entrada: si falla la segunda operación, la copia local sigue pendiente y se reintenta. Los demás marcadores se conservan.
- Al desactivar la opción se recupera la resolución manual para las siguientes operaciones; una petición ya enviada no puede deshacerse.
- La sincronización de lectura incluye página y posición dentro del texto para EPUB; página para manga/PDF. Sin conexión queda guardada en el móvil.

Ver `docs/REVISION-ALPHA4.md` para pruebas y alcance.

## Funciones incorporadas en alpha3

- Marcadores en EPUB (párrafo/posición) y manga/PDF (página), con nombre local, navegación y borrado.
- Sincronización bidireccional con Kavita: entradas del índice personal para EPUB y marcadores de página para manga/PDF. Se sincronizan los capítulos preparados o descargados, incluso después de eliminar su contenido local.
- Línea base por marcador, revisiones locales y eliminaciones pendientes: un resultado tardío no pisa una intención más reciente del móvil. En el modo manual predeterminado, si el marcador también cambia en la web se muestra un conflicto. EPUB permite conservar ambos; nunca se reemplaza la lista completa.
- La API de marcadores de Kavita 0.9.x **no expone fechas de modificación ni escritura condicional**. No se elige «el más reciente» por relojes incomparables. En el modo manual, los cambios simultáneos ambiguos requieren revisión. En prioridad móvil prevalece la intención local pendiente por elección explícita del usuario; sigue existiendo una ventana residual entre consulta y escritura remota.
- Descarga de varios tomos/libros seleccionados, hasta 20.000 unidades internas por lote, omitiendo los ya disponibles. Confirmación del uso de red, resultado parcial por título y posibilidad de detener la preparación sin eliminar lo encolado.
- Carrusel con hasta doce lecturas en «Continuar leyendo».
- Un progreso no confirmado no bloquea los demás títulos; se conserva pendiente con el error. Preparar una lectura abierta no sustituye su posición.
- Callbacks del lector ligados a la página y al WebView que los generó. Corregidos saltos EPUB cuyo ancla ya comenzaba por `#`.

Se puede **instalar desde cero**, sin ninguna versión anterior. Si ya existe alpha1/alpha2/alpha3/alpha4, instalar encima **sin desinstalar ni borrar datos**. Sigue siendo una alpha firmada para pruebas.

## Estado y alcance

- Android 8.0 o posterior (API 26); desarrollo y pruebas de dispositivo en Android 15.
- Login de usuario y contraseña contra servidor **HTTPS**. Renovación de sesión cuando la API la permite.
- Biblioteca común con portadas, búsqueda y filtros por biblioteca.
- Descarga por libro/tomo, almacenamiento privado por cuenta, progreso de descarga y reanudación por páginas completas.
- Lectura de páginas o secciones guardadas **mientras continúa la descarga**, sin esperar a terminar la unidad completa. Si falta la siguiente, el lector espera sin avanzar el progreso. No solicita contenido online al pasar página.
- EPUB: HTML, imágenes y estilos preparados por Kavita; índice, temas, tipografía serif/sans, tamaño, márgenes e interlineado.
- Manga/PDF: páginas renderizadas por Kavita, zoom, ajuste de página/ancho y doble página; orden visual derecha–izquierda. No descarga ni conserva el archivo EPUB/CBZ/PDF original.
- Progreso local persistente, envío al recuperar red mediante WorkManager, al abrir/cerrar lectura y manualmente. Android puede retrasar tareas de fondo (periodicidad de respaldo: 15 minutos).
- Conflictos con otra posición del servidor: elección explícita por defecto. La prioridad del móvil es opcional; nunca se toma automáticamente el porcentaje más alto.
- Eliminar descarga NO elimina progreso pendiente, ni cambia archivos o bibliotecas del servidor.
- El 17/09 se validó la compatibilidad de imágenes en Kavita real y se aplicó un ajuste mínimo de metadatos del servidor; no se cambiaron lecturas ni marcadores. Ver `docs/KAVITA-MEDIA-COMPAT-20260917.md`. Aquel arreglo no requirió nueva APK; alpha7 añade ahora las mejoras de lectura y biblioteca offline.

## Instalar y probar

1. Descargar e instalar la APK alpha21. **No necesitas ninguna app ni alpha anterior**. Si Android solicita permiso, autorizar la instalación desde el navegador/gestor de archivos utilizado. Es un paquete de desarrollo firmado con clave de depuración, no una publicación de Play Store.
2. Escribir servidor, usuario y contraseña **únicamente en la pantalla de acceso de la app**. Servidor inicial: `https://libros.gamingtroop.es`.
3. La cuenta necesita permiso **Download** o **Admin**. La app comprueba también el permiso mediante la API de descargas.
4. Descargar un EPUB y un tomo pequeño; esperar a «Disponible sin conexión».
5. Activar modo avión. Leer, avanzar, cerrar y volver a abrir la app.
6. Recuperar conexión y revisar «Progreso». Por defecto, si aparece un conflicto, elegir la posición a conservar. Opcionalmente activar «Dar prioridad a este móvil» en Ajustes para enviar siempre las modificaciones locales pendientes, tanto de lectura como de marcadores.
7. Abrir el lector web de Kavita y verificar capítulo/posición. Es la prueba de aceptación aún pendiente contra vuestra instalación.
8. Probar «Eliminar del móvil»: el libro permanece en Kavita. No desinstalar ni borrar datos de Android si hay progreso pendiente; eso sí elimina los datos locales.

No compartas contraseñas, tokens ni capturas que los contengan. Borrar una descarga conserva también los marcadores y las eliminaciones de marcadores aún pendientes. Cerrar sesión conserva datos privados de esa cuenta para el próximo login; no permite consultar la cuenta anterior desde otra identidad.

## Compatibilidad y limitaciones

Los contratos se contrastaron con el código de Kavita 0.9.0.2 y v0.9.1.4 (referencias en `research/`). La compatibilidad de páginas y carátulas con la versión instalada 0.9.0.2 quedó verificada el 17/09 tras el ajuste del servidor documentado; el resto de funcionalidades sigue requiriendo aceptación en el móvil real. OIDC/SSO, 2FA adicional, certificados autofirmados y HTTP no están soportados.

La interfaz toma como referencia la organización y los controles de Kavita, pero esta alpha NO tiene paridad completa: las colecciones y notas son locales, no equivalentes a todas las entidades de Kavita, y no admite descargas masivas superiores a 20.000 unidades internas por lote. Los marcadores ya están disponibles; los nombres personalizados de los marcadores de manga solo se conservan localmente porque Kavita no admite ese campo. El EPUB se lee con scroll vertical, no con todas las modalidades paginadas de Kavita. El modo doble página está pensado sobre todo para pantallas anchas.

EPUB con recursos externos o rutas que no puedan resolverse dentro del libro puede rechazarse con aviso: no se permite que el contenido offline ejecute scripts ni haga peticiones externas. Si cambia una edición con progreso aún pendiente, se bloquea su reemplazo para conservar el avance: la migración de ese progreso a otra edición aún requiere un flujo específico. Una cancelación puede esperar a que termine o caduque la petición en curso. Cada recurso se limita a 100 MiB, hasta 20.000 páginas/secciones y 5.000 recursos por lote. PDFs grandes pueden ocupar bastante al guardar imágenes renderizadas; no hay búsqueda de texto PDF.

La API no ofrece un compare-and-swap de progreso: se consulta antes y después de escribir, pero una escritura simultánea de otro cliente entre ambas consultas sigue siendo un riesgo residual. Primera prueba con una cuenta y lecturas de ensayo recomendada.

## Datos y privacidad

- Sesión cifrada con Android Keystore; no se almacena la contraseña.
- Tokens solo en cabecera de autenticación (no URL ni registros). Redirecciones desactivadas.
- Descargas privadas por servidor + ID de cuenta; sin copia automática Android ni transferencia a otro móvil.
- Estado escrito de forma atómica. Progreso y contenido descargado tienen ciclos de vida separados.
- WebView sin acceso a archivos generales, sin puente JavaScript nativo y sin tráfico remoto desde el lector.
- HTTPS obligatorio. Solo el build **debug** permite HTTP a `localhost`/`127.0.0.1` para el servidor de pruebas del emulador; esa excepción no existe en release.

## Compilar

Requisitos: JDK 17, Android SDK 35/build tools, plataforma Android con API 26+.

```sh
# En local.properties: sdk.dir=/ruta/al/android-sdk
./gradlew testDebugUnitTest lintDebug assembleDebug
# Emulador o dispositivo DE PRUEBA conectado (no contiene cuentas reales)
./gradlew connectedDebugAndroidTest
```

APK: `app/build/outputs/apk/debug/app-debug.apk`. El Gradle wrapper fija Gradle 8.11.1. Las pruebas instrumentadas usan libros e imágenes originales de demostración y un MockWebServer local, nunca el servidor de la asociación. No ejecutarlas en el móvil con una cuenta real.

En la pantalla de login de la alpha está el botón **Ver demostración sin cuenta**. Alternativamente, demo opcional SOLO en debug y si aún no hay cuenta iniciada:

```sh
adb shell am start -n es.gamingtroop.reader/.MainActivity --ez demo true
```

Los datos de demo no sincronizan con Kavita. Para salir, cerrar sesión. El acceso normal está disponible sin lanzar este argumento.

## Licencia

GPL-3.0; ver `LICENSE` y `NOTICE.md`. El código y las fuentes de esta alpha se entregan junto con el APK.
