Changelog

Historial de versiones

Todas las actualizaciones de Gestion App, de la más reciente a la más antigua. Versión actual: v1.4.20

v1.4.20 Actual 28/09/2026
Contratos Contratos: se muestran fecha de creacion y fecha de la boda por separado en el listado y en el dashboard (escritorio).
Pagos Pagos: el metodo de pago por defecto ahora es Efectivo.
Correccion Correccion: arreglado un bloque CSS del listado de contratos que no tenia su @media correctamente delimitado y afectaba al ancho de las columnas.
v1.4.19 07/09/2026
Corrección Corrección — Gestión de usuarios: crear un usuario nuevo o resetear su contraseña desde /admin/users fallaba (Cannot find module bcrypt); corregido para usar bcryptjs, la misma librería que ya usa el resto del sistema
v1.4.18 19/08/2026
Corrección crítica Corrección crítica — Auto-actualización: el sistema de actualización ahora detecta cuando cambian las dependencias npm (package.json) y ejecuta npm install automáticamente antes de reiniciar

Antes, si una actualización añadía una dependencia nueva, la instalación cliente podía quedar caída (Cannot find module) hasta una intervención manual

Aplica a todas las instalaciones que actualicen a partir de esta versión

v1.4.17 13/08/2026
Seguridad Seguridad — Rate limiting: límite de intentos en /admin/login, /admin/login/verify, /admin/login/reset, /contrato/*/request-otp y /formulario (express-rate-limit)
Seguridad Seguridad — Cabeceras HTTP: helmet activo con X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Strict-Transport-Security y más
Seguridad Seguridad — Cookie sameSite: cookie de sesión con sameSite: lax explícito para protección CSRF
Seguridad Seguridad — Error handler: el error 500 ya no expone detalles internos en la respuesta
Rendimiento Rendimiento — Compresión HTTP: middleware compression activo; respuestas HTML hasta 10× más ligeras
Rendimiento Rendimiento — Índices BD: índices añadidos en contracts.status, contracts.created_at, form_fields.active y calendar_events.start_date
SEO/Privacidad SEO/Privacidad — robots.txt: creado con Disallow en /contrato/ y /admin/; evita indexación de contratos en Google
v1.4.16 03/08/2026
Fix formulario público Fix formulario público: el título del navegador en /form/X ahora muestra el nombre real del proyecto en vez de "Mi Empresa".
Fix página 404 Fix página 404: el texto de la página no encontrada usa el nombre del proyecto en vez de "Mi Empresa" hardcodeado.
Fix presupuesto PDF/print Fix presupuesto PDF/print: las rutas de presupuesto ahora leen correctamente el email de empresa desde la clave smtp_from_email.
v1.4.15 26/07/2026
Socios económicos configura… Socios económicos configurables: nueva sección en /admin/settings para seleccionar qué usuarios participan como socios y en qué tipos de servicio (Premium, Tradicional, Fotografía, Vídeo); el neto se divide a partes iguales entre los socios asignados
Socios por contrato Socios por contrato: en el presupuesto de cada contrato se pueden seleccionar los socios que trabajaron en esa boda, sobreescribiendo la asignación global de ajustes
Economía Economía — KPI y proyección dinámicas: tarjetas KPI y proyección fin de año distribuyen el espacio al 100% según el número de socios configurados
Economía Economía — gráficos redimensionados: Ingresos y beneficio mensual ampliado a 280px; Por tipo de servicio con donut 180px y leyenda lateral centrados verticalmente
Fix recibo nombre empresa Fix recibo nombre empresa: /admin/contracts/NNN-AAAA/payments/XX/receipt mostraba Mi Empresa en lugar del nombre real configurado en ajustes
v1.4.14 26/07/2026
Rediseno paginas de autenti… Rediseno paginas de autenticacion: /admin/login, /admin/login/verify y /admin/login/reset completamente rediseñados: banda superior con color de marca, blobs decorativos, logo en blanco, inputs con iconos, botones con paleta dinamica, layout responsive para movil
Economia movil Economia movil — card-list: /admin/economia rediseñado; contratos en tarjetas, sin overflow en movil
Economia Economia — datos economicos: columnas Fecha/Estado eliminadas; sustituidas por Importe, Cobrado, Gastos y Neto. Resumen compacto en movil
Formato compacto importes Formato compacto importes: helper fmtK — importes >=1000 se muestran como 2,5k en movil
Grafico Por tipo de servicio Grafico Por tipo de servicio: donut siempre visible; lista con nombre, contratos, importe y neto apilada debajo en movil
Settings Settings — boton guardar unico: eliminado boton duplicado; un solo boton cubre toda la pagina
Paleta de color en auth Paleta de color en auth: server.js incluye brand_color en cache global; login/verify/reset reciben y aplican el color configurado en ajustes
Correos con color de marca … Correos con color de marca dinamico: las 7 plantillas de email (sendSigningLink, sendSignedContract, sendFormNotification, sendLoginPin, sendPasswordReset, sendOtpEmail, sendAdminNotification) usan getBrandColor() — cabeceras, cajas PIN, botones e iconos en el color de la paleta
v1.4.13 26/07/2026

Corrección arquitectura Docker: installer incluye docker-compose.yml con volúmenes montados para persistencia de actualizaciones

Volúmenes Volúmenes: views, routes, helpers, middleware, email, db, server.js montados como bind mounts

Actualizaciones via panel ahora persisten entre reconstrucciones del contenedor

Instalaciones nuevas arrancan con la arquitectura correcta

v1.4.12 25/07/2026
Panel de Pagos Panel de Pagos: registro de cobros por contrato con fecha, concepto, importe y método (transferencia, Bizum, efectivo, tarjeta); aviso automático si la señal está definida y no hay pagos registrados
Recibos imprimibles Recibos imprimibles: recibo individual por cada pago con número de referencia REC-NNN-AAAA-XXXX, datos del cliente, método de pago destacado y botón imprimir/guardar PDF
Gastos fijos globales Gastos fijos globales: configuración mensual en /admin/settings — suscripciones, autónomo, gestoría, web, etc.; prorrateo automático por número de bodas al mes
Calculadora de presupuesto Calculadora de presupuesto: cálculo automático de beneficio desde el importe total del contrato, sin introducción manual de márgenes
Toggle amortización de equi… Toggle amortización de equipo: activar o desactivar la amortización en ajustes; cuando está desactivada no computa en los gastos fijos
Tipos de servicio con split… Tipos de servicio con split automático: Fotografía = solo Cosmin (100%), Vídeo = solo Juan (100%), Premium/Tradicional = conjunto Cosmin+Juan (ingresos, directos y fijos ÷2)
Auto-detección del tipo Auto-detección del tipo: el tipo de servicio se auto-detecta desde el shortcode serviciocontratado del contrato (Premium, Tradicional, Fotografía, Vídeo)
Panel beneficio rediseñado Panel beneficio rediseñado: beneficio neto total como valor primario (grande) y tu parte individual como secundario; ambos con desglose de IVA
Modo IVA configurable Modo IVA configurable: elegir si el IVA está incluido en el precio del contrato o se añade encima — afecta directamente al cálculo de base imponible y beneficio
Fix modal Imprimir/PDF Fix modal Imprimir/PDF: corregido spinner bloqueado por Bootstrap d-flex !important sobreescribiendo el display:none del overlay
Fix scValues en rutas print… Fix scValues en rutas print/PDF: corregido error 500 al abrir el modal de presupuesto (scValues no se pasaba al render)
Fix guardado de presupuesto Fix guardado de presupuesto: corregido error SQL por parámetro margin undefined en el INSERT de contract_budget
v1.4.11 03/07/2026
Unificación campo email Unificación campo email: eliminado campo 'Email del cliente' duplicado en formularios de nuevo contrato y edición; client_email se deriva automáticamente del shortcode correo del contrato. Incluye todos los cambios de v1.4.10: iconos en resumen, selector año, fechas DD/MM/AAAA, eliminado FreeTSA.
v1.4.10 03/07/2026
Iconos en Resumen del contr… Iconos en Resumen del contrato: porcentaje → `%`, importes → `€`, fechas → icono calendario, nombres → icono persona, direcciones → iconos casa/marcador, ciudad → icono geo, lugar → icono edificio, servicio → maletín, servicios adicionales → lista
Fechas DD/MM/AAAA en todos … Fechas DD/MM/AAAA en todos los lados: plantilla de contrato renderizada, correos de notificación y confirmación, y panel admin — formato consistente en toda la app
Auto-completar nombre del c… Auto-completar nombre del contrato: al crear o editar un contrato, el campo "Nombre contrato" se rellena automáticamente con el primer nombre del novio y la novia ("Juan & María")
Año en selector desplegable Año en selector desplegable: en `/admin/contracts/NNN-AAAA/edit` el campo de año pasa de texto libre a un selector con ±5 años
Nombre desde formulario púb… Nombre desde formulario público: al registrar un contrato desde el formulario público, `client_name` usa los primeros nombres con separador " & " (no nombres completos)
Firma verificada Firma verificada: eliminado texto "FreeTSA.org" de la página de firma pública
v1.4.09 30/06/2026

`/admin/contracts` escritorio: columnas alineadas con anchos fijos, envuelto en card estilo dashboard

`/admin/formulario` móvil: botones responsivos, texto oculto en pantallas pequeñas, sin overflow

`/admin/formulario/:id` móvil: header con `flex-wrap`, filas de campos compactas, sin overflow

Hover global con paleta de … Hover global con paleta de color: variables CSS `--brand-hover-bg` y `--brand-hover-border` calculadas por JS al cargar (mezcla 7%/25% del color de marca con blanco), aplicadas en dashboard, contratos, formularios, calendario y cualquier `list-group-item-action`. Compatible con todos los navegadores sin `color-mix()`.
Settings Settings — paleta en vivo: al seleccionar color de marca, sidebar, botones y hover de toda la UI se actualizan al instante. Swatch activo marcado visualmente.
v1.4.08 29/06/2026
URLs contratos URLs contratos: rutas /admin/contracts/:id migradas a /admin/contracts/NNN-AAAA
Nombrado Nombrado: título página pública con cliente y número; PDF con nombre NNN-AAAA_Nombre.pdf
Borrar firma Borrar firma: botón admin para eliminar firma y permitir re-firma
Lista contratos Lista contratos: rediseño desktop con cards
Settings logos Settings logos: normal, blanco y oscuro; emails sin caja blanca
Emails Emails: HTML Outlook-compatible, versión texto plano en todos
Preview PDF Preview PDF: modal de previsualización antes de descargar

Multi-formulario: /admin/formulario con múltiples forms, campos y ruta /f/:slug

Schema BD Schema BD: tablas faltantes en initSchema, form_id, UNIQUE compuesto, enum unsigned
v1.4.07 29/06/2026

Changelog migrado a base de datos: /changelog y /admin/updates leen de BD (master) o API pública (clientes)

Nuevo endpoint público GET /api/changelog para instalaciones cliente

Tabla changelog con historial completo (35 versiones); seeding automático en instalaciones nuevas

Fix calendario Fix calendario: eliminado span duplicado en cabecera de eventos desktop/móvil
v1.4.06 29/06/2026
Calendario Calendario: eliminado elemento duplicado en cabecera de eventos (escritorio y móvil usan ahora el mismo span)
v1.4.05 29/06/2026
Actualización secuencial Actualización secuencial: el sistema aplica versiones una a una en orden (v1.4.01 → v1.4.02 → ...) en lugar de saltar a la última
Calendario Calendario: nombres de novios en formato "Nombre1 & Nombre2" (primer nombre de cada uno) sin duplicación en escritorio
v1.4.04 29/06/2026
Notificaciones admin Notificaciones admin: email automático al correo de notificaciones al crear, modificar o firmar un contrato
Fix email OTP Fix email OTP: eliminado número de contrato del subject y cuerpo del email de verificación (completando v1.4.03)
v1.4.03 29/06/2026
Mensaje OTP Mensaje OTP: eliminado el número de contrato del SMS y del email de verificación
v1.4.02 29/06/2026
Migración automática BD Migración automática BD: columnas OTP, sign_metadata, pdf_hash y tsa_token se crean automáticamente al arrancar en instalaciones existentes
v1.4.01 29/06/2026
Fix PDF Fix PDF: imágenes de logo y firma de empresa embebidas como base64 (visibles en todos los entornos)
Fix PDF Fix PDF: sello de firma electrónica en formato compacto igual que la página pública
Fix CHANGELOG Fix CHANGELOG: corrección método SMS — proveedor Brevo (no Twilio)
v1.4.00 29/06/2026
OTP doble método OTP doble método: verificación por SMS o Email (Brevo) configurable desde Ajustes
SHA-256 del PDF SHA-256 del PDF: hash del documento firmado almacenado en base de datos
Sello de tiempo TSA Sello de tiempo TSA: certificación RFC 3161 vía FreeTSA.org incluida en cada firma
sign_metadata sign_metadata: registro completo de sesión al firmar (navegador, SO, resolución, zona horaria, idioma)
Panel admin Panel admin — Firma del cliente: bloque unificado con todos los detalles de seguridad (identidad, OTP, red y dispositivo, integridad SHA-256/TSA)
Página pública tras firma Página pública tras firma: sello compacto de firma electrónica verificada con datos esenciales
Ajustes Ajustes: método OTP (SMS/Email) configurable; clave Brevo gestionada desde el panel
Nuevas columnas BD Nuevas columnas BD: pdf_hash, tsa_token, sign_metadata en tabla contracts
v1.3.11 28/06/2026
Renombrado instalador Renombrado instalador: `gestion-app_vX.X.XX.tar.gz` (instalación nueva)

Nuevo paquete de actualización separado: `gestion-app-update_vX.X.XX.tar.gz` (para apply-update)

Limpieza de archivos `contratos-installer-*.tar.gz` del servidor de updates

v1.3.10 28/06/2026
Dashboard Dashboard: badge número de contrato rediseñado igual que en la lista de contratos — cuadrado con bordes redondeados, color de paleta, NNN arriba y AAAA debajo (desktop y móvil)
v1.3.09 28/06/2026
Logo en correos Logo en correos: compatible con todos los clientes de email — el logo se muestra en una pastilla blanca sobre el header (elimina dependencia de CSS filter no soportado por Outlook)
Campo número de contrato Campo número de contrato: dividido en dos inputs separados (NNN y AAAA) con guión fijo e inamovible; solo acepta dígitos
Etiqueta genérica Etiqueta genérica: "Nombre del cliente" renombrado a "Nombre contrato" en crear y editar contrato
Tipo Hora en shortcodes Tipo Hora en shortcodes: nuevo tipo de campo hora con time picker, disponible en formulario de creación, edición y vista de contrato
Vistas móvil Vistas móvil: templates, shortcodes y formulario público con diseño en cards adaptado a pantallas pequeñas
Badge número contrato Badge número contrato: rediseñado de círculo a cuadrado con bordes redondeados, color dinámico según paleta de ajustes, muestra NNN arriba y AAAA debajo
Info Boda scroll Info Boda scroll: corregido el modal para permitir scroll cuando hay muchos datos
v1.3.08 28/06/2026
Rediseño completo plantilla… Rediseño completo plantillas de correo: nuevo layout con cabecera degradado azul marino, tarjeta blanca con sombra, botones pill con degradado y pie de página unificado para los 5 emails (firma, contrato firmado, formulario, PIN 2FA, reset contraseña)
Info Boda scroll Info Boda scroll: corregido fallo que impedía hacer scroll dentro del modal cuando hay muchos datos (fix flex layout del formulario)
Badge número de contrato Badge número de contrato: rediseñado de círculo a cuadrado con bordes redondeados, color dinámico según la paleta de ajustes, muestra NNN arriba y AAAA debajo en texto más pequeño (afecta vista de contrato y lista móvil)
v1.3.07 27/06/2026
Fix crítico Fix crítico: columnas signer_name y signer_signature añadidas automáticamente a la tabla templates al arrancar — resuelve error 500 en la vista pública del contrato (/contrato/NNN-AAAA/) en instalaciones antiguas
v1.3.06 27/06/2026
Contratos Contratos: fechas en vista y edición ahora usan formato DD/MM/AAAA
Vista contrato Vista contrato: fechas de shortcodes tipo date se muestran formateadas; alerta si el formato guardado no es reconocido
Edición contrato Edición contrato: normaliza DD/MM/AAAA y DD-MM-AAAA a formato nativo del input; aviso si el valor no puede cargarse
v1.3.05 27/06/2026
Calendario Calendario: URL de suscripción webcal ahora es dinámica (usa el dominio configurado en Ajustes)
Formulario público Formulario público: los campos por defecto solo se crean en instalación nueva (tabla vacía) — nunca en actualizaciones
v1.3.04 27/06/2026
Calendario móvil Calendario móvil: las celdas muestran el primer nombre de cada contrayente ("José & Ana") en lugar de iniciales

Mejora de legibilidad en la vista de grid en pantallas pequeñas

v1.3.03 27/06/2026
Calendario Calendario: diseño responsive para móvil — celdas compactas, eventos simplificados en grid, modal full-width
Formulario público Formulario público: corregida duplicación de campos al reiniciar (deduplicación automática + constraint UNIQUE en field_key)
v1.3.02 27/06/2026
Calendario Calendario: el parser de fecha de boda ahora acepta DD/MM/YYYY y DD-MM-YYYY además de YYYY-MM-DD

Los contratos con fechas en formato español aparecen correctamente en el calendario sin necesidad de modificar los datos

v1.3.01 27/06/2026
Sistema de roles Sistema de roles: Administrador (acceso total) y Usuario (sin acceso a ajustes del sistema)

Gestión de usuarios en /admin/users: crear, editar, activar/desactivar y eliminar

Sidebar condicional Sidebar condicional: Ajustes y Usuarios solo visibles para administradores

Página de acceso denegado (403) para rutas protegidas

Wizard de instalación Wizard de instalación: columna role incluida en schema, usuario creado como administrador
Corrección Corrección: error al verificar código de login con método PIN (user not defined)
v1.3.00 27/06/2026

Nueva sección Calendario (/admin/calendar): vista mensual completa con grid semanal

Eventos de boda auto-generados desde contratos: fecha, hora, novio, novia, servicio contratado, lugar y ciudad

Diseño premium de eventos en el grid: tarjeta con gradiente azul, hora destacada, nombres de los contrayentes, servicio y ciudad

Sidebar de próximos eventos (los 8 más cercanos con fecha, hora y ubicación)

Modal de contrato enriquecido (modal-lg) con tres secciones:

Badge de estado en el modal Badge de estado en el modal: Borrador / Enviado / Firmado
Eventos manuales Eventos manuales: crear, editar y eliminar con selector de 9 colores

Suscripción WebCal / iCal: feed token-protegido compatible con Apple Calendar y Google Calendar

Tabla `calendar_events` en base de datos para eventos manuales

Enlace "Calendario" añadido al menú de navegación del panel admin

v1.2.041 27/06/2026
Rediseño de /admin/updates Rediseño de /admin/updates: historial estilo changelog (blanco/negro, monospace, grid)

Estructura instalador con subdirectorio app/ para compatibilidad con versiones anteriores

v1.2.040 27/06/2026

Color del panel configurable desde Ajustes (paleta predefinida + color picker, incluye negro)

Reordenación de bloques en /admin/settings (layout de columnas independientes)

Firma de la empresa en columna lateral del editor de plantillas

Notificaciones unificadas en un solo campo notify_email

v1.2.039 27/06/2026

Actualizador con fallback de URL: prueba dominio externo primero, si falla usa URL interna automáticamente

v1.2.038 27/06/2026

Historial de versiones corregido: master mantiene CHANGELOG completo

Apply-update: clientes reciben CHANGELOG completo en raíz y últimas 5 entradas en public/

Recuperado historial completo desde v1.000

v1.2.037 27/06/2026

Corrección apply-update: copia server.js y CHANGELOG.md correctamente en actualizaciones automáticas

v1.2.036 27/06/2026

Logo centrado en el panel lateral del sidebar

Recuperación de contraseña Recuperación de contraseña: flujo completo por email (reset-request, reset-password)
Corrección SMTP Corrección SMTP: puerto 587 usa STARTTLS correctamente (resuelto error SSL wrong version)
v1.2.035 27/06/2026
Logo dinámico Logo dinámico: todas las vistas usan el logo subido en ajustes (fallback al nombre del proyecto)

Corrección botones eliminar en horarios del contrato

Wizard de instalación con opción de subir logo

Helpers de fecha disponibles en vistas públicas

v1.2.034 27/06/2026

Eliminados instaladores obsoletos del servidor de actualizaciones

UPDATE_MANIFEST_URL movido a variable de entorno con fallback configurable

Corregida referencia duplicada a process.env.BASE_URL

v1.2.033 27/06/2026
Fix Fix: descarga de actualizaciones usa http nativo Node.js (eliminada dependencia de curl)

Fix dashboard.ejs: fragmento huérfano de banner causaba error EJS

/admin/updates: muestra últimas 5 versiones y enlace único al changelog del proyecto

v1.2.032 27/06/2026

Corrección comparador de versiones: soporte para formato v1.2.XXX

v1.2.031 27/06/2026

Versión en sidebar enlaza a /admin/updates

Indicador de notificación en sidebar cuando hay actualización disponible

Página /admin/updates rediseñada: estado "todo en orden" o botón de actualización

v1.2.030 27/06/2026

Sistema de actualizaciones automáticas: botón "Actualizar ahora" en el panel admin

Servidor de updates en gestion-app.cosmin.es/updates/

Banner de actualización disponible en el dashboard

Página /admin/updates con detalle de versión y changelog

v1.030 26/06/2026

Sidebar hamburger en móvil

Cards en dashboard y listado de contratos

Menú reorganizado con grupos

Corrección bug mailer Corrección bug mailer: variable `name` no definida en emails de PIN
v1.022 01/06/2026

Login con autenticación en dos pasos: TOTP (Google Authenticator) o PIN por email

Panel Ajustes Generales (/admin/settings)

Panel Ajustes de Cuenta (/admin/settings/account)

Mailer dinámico Mailer dinámico: configuración SMTP desde base de datos

Audit log de contratos

Logo personalizable desde ajustes

Versión visible en sidebar del panel

v1.010 01/05/2026

Formulario público de solicitud de contrato

Panel de administración del formulario

Shortcodes Shortcodes: asignación por plantilla, fórmulas y tipo select

Número de contrato editable en creación

v1.000 01/04/2026
Instalación inicial Instalación inicial: Docker Compose + Node.js + Express + EJS + MariaDB
Panel admin Panel admin: gestión de plantillas, contratos y firma digital

Editor HTML TinyMCE en plantillas

Generación de PDF con Puppeteer

Envío de link de firma por email

Wizard de instalación web (/setup)

¿Te interesa Gestion App para tu negocio?

Contratos y firma digital automatizados, adaptados a tu operativa. Hablamos sin compromiso.