Ir al contenido

Changelog

@openfactu/plugin-sdk v0.4.0 actual

Sección titulada «@openfactu/plugin-sdk v0.4.0 »

Los cambios de las versiones 0.2.x y 0.3.x se recogen acumulados en esta entrada; no se publicaron notas individuales.

  • Paquete type-only: el SDK solo exporta tipos TypeScript (el runtime lo inyecta el servidor). Peer dependencies: react ^19, react-dom ^19, lucide-react >=0.400.
  • migration.createTable: los plugins pueden crear sus propias tablas, con tipos de columna TEXT, INTEGER, DECIMAL, BOOLEAN, JSONB, UUID y TIMESTAMP, y flags primaryKey, nullable y default.
  • widgets.registerDashboard: registro programático de widgets de dashboard desde init(), alternativa a declararlos en manifest.json (ui.dashboardWidgets).
  • aiTools.register: los plugins pueden aportar tools al chat de IA. La factory recibe un AiChatToolContext (tenant, usuario) por petición.
  • documents.onAfterCreate: atajo simétrico a onBeforeCreate para hooks tras la creación de documentos.
  • Manifest UI ampliado: ui.routes (PluginRoute con tipos table, form, custom, dashboard), ui.dashboardWidgets y ui.themes (PluginThemePreset para el selector de Branding).
  • Nuevos eventos de hook: fase posted en los 6 tipos de documento, journalEntry.posted/reversed, period.closed/opened, payment.created/deleted, payroll.approved, shipment.* (6 eventos), picking.* (3) y route.* (3). Catálogo completo en Catálogo de hooks.

v0.0.7-alpha actualpre-release

Sección titulada «v0.0.7-alpha »

8 de mayo de 2026

  • Lock de facturas al asentar: las facturas pasan a estado bloqueado (locked) automáticamente al asentarlas, evitando modificaciones accidentales. Solo admins pueden desbloquarlas.
  • Cálculo de retenciones (IRPF): integrado en el flujo de facturas de venta y compra. Configurable por partner y tipo de documento. Se calcula automáticamente sobre la base imponible.
  • Estados de cobros/pagos: cada documento de venta/compra lleva un estado de pago que evoluciona automáticamente: pendingpartialpaid. El estado se recalcula al registrar cada pago o cobro.
  • Conciliación automática: el motor de conciliación empareja pagos registrados con líneas de factura pendientes, marcando automáticamente el estado según el importe conciliado.
  • SMTP configurable por empresa: cada tenant define su propio servidor SMTP (host, puerto, usuario, password, TLS/STARTTLS) desde Ajustes > Email.
  • Cola de envío desatendida: los emails se encolan y se enviegan en segundo plano. Reintentos automáticos en caso de fallo temporal.
  • Preview antes de enviar: modal que muestra exactamente como quedará el email antes de enviarlo.
  • Envío masivo: selección múltiple de documentos para envío por email en bloque.
  • Notificaciones in-app al completar: cuando un email termina de enviarse (o falla), aparece una notificación in-app en tiempo real.
  • Calendario de tareas: vista mensual y semanal de tareas asignadas a empleados. Visibilidad de carga de trabajo por departamento.
  • Shift patterns y templates: patrones de turnos configurables (manana, tarde, noche, personalizado) y plantillas para asignarlos rapidamente.
  • Commissions: registro y seguimiento de comisiones por empleado y periodo. Configurable como porcentaje o cantidad fija.
  • Evaluations: evaluaciones de rendimiento con metricas configurables, ratings y feedback.
  • Payrolls (nóminas): generación de nóminas con conceptos salariales configurables (salario base, plus, deducciones, IRPF).
  • Payroll concepts: tabla de conceptos de nómina reutilizables (devengos, deducciones, retenciones).
  • Timeclock kiosk: modo terminal para que los empleados fichen entrada y salida directamente desde una pantalla dedicada.
  • Incidents e incident types: registro de incidencias laborales con tipología configurable (retraso, ausencia, incidente).
  • Departments: estructura organizativa por departamentos.
  • Employees: gestión completa de empleados con datos personales, contrato y departamento.
  • Tasks: tareas asignables a empleados con fechas, prioridad y estado de realización.
  • Logistics hub: panel centralizado con overview de todas las operaciones logísticas activas.
  • Shipments: gestión completa de envíos. Estados: pending → picked → in_transit → delivered → returned.
  • Routes: planificación y gestión de rutas de entrega con asignación de vehículos y conductores.
  • Driver app: aplicación web para conductores con acceso móvil: lista de entregas, estado de cada envío, incidencias.
  • Platforms: gestión de plataformas de carga/descarga con ubicación y capacidad.
  • Vehicles: catalogo de vehículos con matricula, tipo, capacidad y estado.
  • Staging áreas: áreas de staging para organización física de preparados.
  • Packages: gestión de bultos y paquetes dentro de un envío.
  • Preparation tab: interfaz de preparación de pedidos para operadores de almacén.
  • Picking tasks panel: panel de tareas de picking con asignación y seguimiento.
  • Incidents tab: registro de incidencias en ruta (averias, retrasos, reclamaciones).
  • Diseñador drag & drop: editor visual de plantillas de documento basado en canvas. Arrastra elementos para colocarlos, redimensiona y reposiciona con el raton.
  • Elementos disponibles: texto, imagen, código de barras (Code-128), QR por página, tablas de líneas, líneas divisorias.
  • Inspector editable: panel lateral para tipografía (fuente, tamano, color, peso), colores de fondo, posición y tamano exactos.
  • Preview PDF en tiempo real: genera la vista previa del PDF directamente desde el diseñador al guardar.
  • Importar/exportar layout: exporta el layout del canvas como JSON para backup o versionado. Importa desde otro archivo JSON.
  • Importar desde otra plantilla: copia el diseno de una plantilla existente a una nueva.
  • Campos de plugins en el FieldPicker: los campos personalizados declarados por plugins aparecen disponibles en el selector de campos.
  • Chips de lotes/series: embebidos automáticamente en documentos donde se requiera trazabilidad.
  • QR + Code-128 por página: generación automática de códigos de verificación en cada página.
  • Marca de agua PAGADA: en facturas rectificativas ya pagadas se aplica automáticamente una marca de agua de estado “PAGADA”.
  • Paleta de marca Keirost: el editor viene precargado con los colores de la identidad visual de Keirost.
  • OG image 1200x630: imagen optimizada para compartición en redes sociales y apps de mensajería.
  • Meta tags completos: title, description y keywords para SEO orgánico.
  • Open Graph: etiquetas OG para riqueza de previsualización en Facebook, LinkedIn, WhatsApp, Twitter.
  • JSON-LD structured data: schema.org para mejor indexación por motores de búsqueda.
  • robots.txt y sitemap.xml: configuración de rastreo e índice para bots.
  • Iconos PNG: favicon en múltiples tamanos (16, 32, 192, 512) para todos los contextos (browser, PWA, apple-touch).
  • Scrollbar con color de marca: scrollbar personalizado en color teal, soporte Firefox con estilo nativo.
  • Tablas ordenables: todas las listas incorporan ordenación por columna (asc/desc) sin recargar la página.
  • Animaciones de entrada: row-in (fila entra desde la izquierda), card-in (tarjeta escala desde 0.95), pulse-dot (indicador pulsante en elementos activos).
  • ~180 arreglos de modo oscuro: eliminadas clases dark: duplicadas, corregidos hover mal-paireados, fixed transparencias en modales y dropdowns.
  • Sidebar compacta con iconos lucide: 60px de ancho, iconos de la colección lucide-react, hover scale + color transition.
  • Topbar de sub-tabs: barra superior con tabs de subsección del modulo activo.
  • Tablas compactas con multi-select: checkbox tristate en todas las tablas, bulk actions bar al seleccionar.
  • Dashboard con charts (recharts): gráfica de línea (ventas vs compras 12 meses), donut (facturas por estado), barras (top clientes/proveedores).
  • Bulk actions: barras de acciones masivas que aparecen al seleccionar filas: enviar, exportar, anular.
  • Modal con backdrop blur: depth visual en todos los modales con backdrop-filter blur + opacidad.
  • i18n preparada: estructura de internacionalización ES/EN en su lugar; traducción completa al ingles en proceso para la siguiente release.

v0.0.6-alpha pre-release

Sección titulada «v0.0.6-alpha »

18 de abril de 2026

  • Sidebar minimal de 60px con iconos lucide para los 7 módulos top-level (Inicio, Inventario, Ventas, Compras, Interlocutores, Contabilidad, Plugins, Ajustes)
  • Topbar con sub-tabs del módulo activo
  • Avatar de usuario y selector de empresa al pie del sidebar como popovers
  • Tablas a ancho completo (sin el padding excesivo anterior)
  • Hover scale 1.1 + cambio de color (200ms) en los iconos del sidebar
  • Densidad compact por defecto en @openfactu/ui Table, con prop density opcional (compact | normal | comfy)
  • Multi-select con checkbox tristate (selectable, selectedKeys, onSelectionChange)
  • Nuevo componente <BulkActionsBar> que aparece encima de la tabla cuando hay filas seleccionadas
  • Fix de dark mode striping (filas no se ven lavadas)
  • thead y SearchableSelect dropdown sin transparencia (no se ven a través de modales)
  • Modal con backdrop opaco al 90% + blur, constraint de altura max-h-90vh y scroll interno
  • Línea: tendencia mensual de Ventas vs Compras (12 meses)
  • Donut: distribución de facturas por estado (Abiertas / Cerradas / Parcial / Anuladas)
  • Barras horizontales: Top 5 clientes y Top 5 proveedores por volumen
  • KPIs y secciones de stock se mantienen
  • Todos los charts respetan el modo dark/light

Plugin SDK extendido (@openfactu/plugin-sdk v0.1.0)

Sección titulada «Plugin SDK extendido (@openfactu/plugin-sdk v0.1.0)»
  • Nuevos tipos PluginModule y PluginSubTab en PluginManifest.ui
  • Plugins pueden registrar módulos top-level propios (icono nuevo en el sidebar)
  • Plugins pueden inyectar sub-tabs en módulos core
  • Nuevo ListFetchContext<T> y eventos <entity>.list.afterFetch para inyectar/mutar filas en listados core (items, partners)
  • Backwards compatible: menuItems legacy se mapean automáticamente al módulo “Plugins”
  • Eliminadas todas las clases dark: duplicadas (dark:text-X dark:text-Y) que dejaban texto lavado en oscuro
  • Reparados patrones hover:bg-X dark:bg-Y mal-paireados (ahora dark:hover:bg-Y)
  • TenantSwitcher adaptado a tema light/dark
  • Card header sólido (sin opacity 30 en dark)
  • PermToggle con ring + dot adaptados a dark mode

v0.0.5-alpha pre-release

Sección titulada «v0.0.5-alpha »

17 de abril de 2026

  • Hot reload: edita un plugin y se recarga automáticamente sin reiniciar el servidor
  • File watcher con chokidar para detección de cambios
  • WebSocket /ws/plugins para notificar al frontend en tiempo real
  • Componentes UI se actualizan en el browser sin refrescar la página
  • HookManager.unregisterPlugin() para evitar duplicación de hooks al recargar
  • Dev API Keys: genera credenciales (clientId/clientSecret) desde la UI del ERP
  • POST /api/plugins/upload — sube un plugin como ZIP
  • POST /api/plugins/:id/push — sync incremental de archivos
  • Autenticación por dev key o JWT de admin
  • Pantalla de gestión de API Keys en Plugins > Desarrollo
  • openfactu plugin search — buscador interactivo con autocomplete
  • openfactu plugin install/update/remove — gestión completa
  • openfactu plugin push — sube plugin a servidor remoto
  • openfactu plugin watch — auto-sync al guardar (desarrollo remoto)
  • openfactu plugin link/unlink — symlinks para desarrollo local
  • openfactu plugin dev — servidor en modo desarrollo con logs filtrados
  • openfactu rebuild — reconstruye y reinicia contenedores
  • openfactu logs — muestra logs de los servicios
  • openfactu stop / openfactu restart — control de servicios
  • Dockerfiles compilar paquetes compartidos (@openfactu/pdf, common, ui) antes del server/web
  • Crear tablas del schema publico automáticamente al arrancar
  • .dockerignore para evitar copiar storage/db_data
  • Tipos completos: PluginContext, HookContext, PluginManifest, CoreTableName
  • Hooks tipados: DocumentType, HookEvent, HookHandler
  • Documentación actualizada con ejemplos

16 de abril de 2026

Primera versión funcional completa de Keirost.

  • openfactu install — Descarga e instala desde releases de GitHub, con soporte Docker (Windows/Mac/Linux)
  • openfactu deploy — Wizard para configurar acceso externo (LAN / dominio publico / SSL)
  • openfactu deploy:status — Estado de contenedores Docker
  • openfactu update — Actualiza a la última versión sin perder datos (plugins, storage, .env)
  • openfactu setup — Configuración inicial interactiva (BD, admin, primer tenant)
  • openfactu migrate / migrate:status — Gestión de migraciones de base de datos por tenant
  • openfactu tenant list/create/sync — Gestión de empresas
  • openfactu plugin list — Estado de plugins por empresa
  • Soporte sudo para instalar en cualquier directorio del sistema
  • Funciona desde cualquier ruta con --path o OPENFACTU_HOME
  • Activar/desactivar plugins por tenant desde la UI o API
  • Nueva tabla TenantPlugin con cache en memoria para rendimiento
  • HookManager filtra hooks según la activación del plugin en el tenant
  • Pantalla de gestión de plugins en el frontend con toggles
  • FactuApi.transaction() — Operaciones atomicas (todo o nada)
  • IDs pre-asignados antes de save() para referencias cruzadas entre documentos
  • FactuApi.session() — Login + selección de tenant + conexion a BD en una sola llamada
  • Helpers de consulta: getPartner(), getItem(), getSeries(), getOpenPeriods()
  • FactuApi.connect() — Acceso a la BD del tenant sin transacción
  • Fix del build de la web (TypeScript deprecations, type imports con verbatimModuleSyntax)
  • VITE_API_URL como build arg en el Dockerfile de la web
  • Eliminado atributo version deprecado de docker-compose
  • docker-compose.prod.yml generado por el CLI con binding a 0.0.0.0
  • Multi-empresa con esquemas PostgreSQL aislados
  • Facturación completa: pedidos, albaranes y facturas (venta y compra)
  • Inventario: almacenes, zonas, lotes, series, stock por ubicación
  • Socios de negocio: clientes, proveedores, grupos, direcciones múltiples
  • Impuestos configurables (IVA 0%, 4%, 10%, 21%)
  • Series de numeración por tipo de documento y periodo
  • Plantillas PDF personalizables con HTML/Handlebars
  • Dashboard con metricas de ventas, compras, stock y documentos recientes
  • Búsqueda global en todas las entidades
  • Audit log completo (CREATE/UPDATE/DELETE con valores anterior y nuevo)
  • Sistema de permisos granulares por usuario y tenant
  • Datos geográficos: paises, regiones, provincias, municipios
  • Dark mode completo en la interfaz web

16 de abril de 2026

  • Primera versión del CLI publicada en npm (@openfactu/cli)
  • Comando install con selección de releases de GitHub
  • Comando deploy para configurar acceso externo
  • Correcciones menores

16 de abril de 2026

  • Primera release publica de Keirost
  • ERP funcional con facturación, inventario y multi-empresa
  • Interfaz web con React 19 y Tailwind CSS
  • API REST completa
  • Sistema de plugins
  • Docker Compose para despliegue

Funcionalidades planificadas para futuras versiones:

  • Traducción completa al ingles de la interfaz
  • OCR para escaneo de facturas
  • Contabilidad integrada (libros de diario, mayor, balances)
  • Reportes y gráficos avanzados
  • Marketplace de plugins
  • Soporte multi-idioma en la interfaz
  • SII/AEAT y TicketBAI
  • Exportación a formatos standar (FACTURA-E, EDI)