Watch
1
0
Fork
You've already forked BiblioHouse
0
Code Issues Pull requests Releases 12 Wiki Activity
⚠️ AVISO DE CIERRE: A partir del 1 de enero, forjalibre.eu dejará de estar disponible. Se recomienda migrar todos los proyectos y repositorios a otros servicios Git antes de esa fecha.
  • 2.1 ceb30d772d

    2.1 Stable

    ferlagod released this 2026-09-21 15:50:08 +00:00 | 14 commits to main since this release

    Esta 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 OutOfMemoryError con 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 BufferedImage a 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().
    • Persistencia Ligera de Progreso de Lectura:
      • El seguimiento de avance de lectura se almacena ahora de forma atómica en progreso_lectura.json con guardado debounced (400 ms), evitando reescribir la biblioteca completa al pasar páginas.

    🏛️ 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.
    • 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).
    • 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).
    • Unificación de Internacionalización (i18n):
      • Eliminada la duplicidad entre App y LanguageManager. Ahora todas las vistas y controladores comparten de forma coherente el mismo ResourceBundle activo.
    • Contratos equals y hashCode:
      • Implementación consistente basada en identificadores únicos de dominio (id, isbn, dni) en Libro, Prestamo, Socio y ProgresoLectura.

    🔒 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.

    📄 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.ttf y Roboto-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 IllegalArgumentException por glifos ausentes.

    🧪 Suite de Pruebas y Compilación

    • Aislamiento de Llamadas de Red en Tests:
      • Inyección del despachador HttpSender en OpenLibraryCliente, permitiendo pruebas 100% deterministas y sin conexión a internet durante mvn test.
    • Organización Canónica y JUnit 5:
      • Reubicación de clases de test a sus paquetes canónicos (com.ferlagod.bibliohousefx y com.bibliohouse.logic), resolución de advertencias modulares y paso limpio de 58/58 pruebas unitarias e integración.
    • Empaquetado Nativo (jpackage):
      • Configuración del plugin jpackage en pom.xml para compilar instaladores nativos autoejecutables: .dmg para macOS y .exe / .msi para Windows, con JavaFX 21.0.5 LTS unificado.

    Desarrollado con ❤️ por Fernando Lago Dávila (@ferlagod)

    Downloads