-
2.1 Stable
released this
2026-09-21 15:50:08 +00:00 | 14 commits to main since this releaseEsta versión introduce una refactorización arquitectónica profunda, mejoras críticas de rendimiento y consumo de memoria, actualización a cifrado de grado militar (AES-256-GCM), soporte nativo de Unicode en PDFs, y preparación del sistema para empaquetado nativo (
jpackage).
🚀 Novedades y Mejoras Principales
⚡ Rendimiento y Optimización de Recursos
- Streaming HTTP en el Lector Digital (
EpubStreamServer):- Se sustituyó la lectura completa en memoria y la conversión a Base64 por un servidor HTTP local en loopback (streaming en bloques de 64 KB).
- Elimina los congelamientos de la interfaz gráfica y el riesgo de
OutOfMemoryErrorcon libros electrónicos pesados o ilustrados (20–50 MB).
- Virtualización y Paginación en «Mis Libros»:
- Nuevo sistema de paginación configurable (24, 48, 96 libros por página o vista completa) con navegación rápida y saltos de página.
- Reduce drásticamente el número de nodos JavaFX en memoria, permitiendo una navegación fluida incluso en colecciones de miles de libros.
- Optimización de Fotogramas en el Escáner (
EscanerController):- Reutilización de búferes de bytes y de la instancia de
BufferedImagea 30 FPS en la captura de vídeo OpenCV, reduciendo la presión sobre el Garbage Collector. - Liberación explícita de memoria nativa de OpenCV mediante
matrix.release().
- Reutilización de búferes de bytes y de la instancia de
- Persistencia Ligera de Progreso de Lectura:
- El seguimiento de avance de lectura se almacena ahora de forma atómica en
progreso_lectura.jsoncon guardado debounced (400 ms), evitando reescribir la biblioteca completa al pasar páginas.
- El seguimiento de avance de lectura se almacena ahora de forma atómica en
🏛️ Arquitectura y Modularidad
- Descomposición del «God Controller» (
PrimaryController):- Modularización en subcontroladores especializados con
<fx:include>:CatalogoGridController: gestión de la cuadrícula de libros, ordenaciones y drag & drop.GestionLibrosController: búsquedas externas en APIs, formulario manual y escáner.SidebarController: navegación por estanterías y widget reactivo del reto anual de lectura.
- Modularización en subcontroladores especializados con
- Bus de Eventos Desacoplado (
AppEventBus):- Comunicación reactiva entre vistas sin acoplamiento directo, garantizando la ejecución de cambios de interfaz en el hilo gráfico de JavaFX (
Platform.runLater).
- Comunicación reactiva entre vistas sin acoplamiento directo, garantizando la ejecución de cambios de interfaz en el hilo gráfico de JavaFX (
- Desacoplamiento del Estado de Lectura (
EstadoLectura):- Nuevo tipo enumerado (
PENDIENTE,LEYENDO,LEIDO,ABANDONADO) con parser multilingüe tolerante (ignora tildes y mayúsculas en español, inglés, gallego, catalán, euskera y portugués).
- Nuevo tipo enumerado (
- Unificación de Internacionalización (i18n):
- Eliminada la duplicidad entre
AppyLanguageManager. Ahora todas las vistas y controladores comparten de forma coherente el mismoResourceBundleactivo.
- Eliminada la duplicidad entre
- Contratos
equalsyhashCode:- Implementación consistente basada en identificadores únicos de dominio (
id,isbn,dni) enLibro,Prestamo,SocioyProgresoLectura.
- Implementación consistente basada en identificadores únicos de dominio (
🔒 Seguridad y Criptografía
- Migración a AES-256-GCM (AEAD):
- Sustitución del modo vulnerable AES-ECB por cifrado autenticado AES-256-GCM, con vector de inicialización aleatorio (IV de 96 bits) por operación y tag de integridad de 128 bits.
- Generación y custodia de clave maestra de 256 bits protegida en el almacén de preferencias (
Preferences) del usuario.
- Compatibilidad Transparente hacia Atrás:
- Detección automática del prefijo
v2:para descifrar credenciales modernas, manteniendo un fallback seguro al formato legado para no perder las contraseñas de NextCloud previamente guardadas.
- Detección automática del prefijo
📄 Exportación a PDF y Fuentes Tipográficas
- Tipografías TrueType y Soporte Unicode (
PdfFontHelper):- Integración de la tipografía TrueType Roboto (
Roboto-Regular.ttfyRoboto-Bold.ttf) con soporte nativo de caracteres especiales, tildes, eñes y caracteres internacionales en Apache PDFBox. - Sanitizador automático de texto para prevenir excepciones
IllegalArgumentExceptionpor glifos ausentes.
- Integración de la tipografía TrueType Roboto (
🧪 Suite de Pruebas y Compilación
- Aislamiento de Llamadas de Red en Tests:
- Inyección del despachador
HttpSenderenOpenLibraryCliente, permitiendo pruebas 100% deterministas y sin conexión a internet durantemvn test.
- Inyección del despachador
- Organización Canónica y JUnit 5:
- Reubicación de clases de test a sus paquetes canónicos (
com.ferlagod.bibliohousefxycom.bibliohouse.logic), resolución de advertencias modulares y paso limpio de 58/58 pruebas unitarias e integración.
- Reubicación de clases de test a sus paquetes canónicos (
- Empaquetado Nativo (
jpackage):- Configuración del plugin
jpackageenpom.xmlpara compilar instaladores nativos autoejecutables:.dmgpara macOS y.exe/.msipara Windows, con JavaFX 21.0.5 LTS unificado.
- Configuración del plugin
Desarrollado con ❤️ por Fernando Lago Dávila (@ferlagod)
Downloads
-
Source code (ZIP)
8 downloads
-
Source code (TAR.GZ)
4 downloads
- Streaming HTTP en el Lector Digital (