Saltar al contenido

Historial de versiones

Changelog

Seguimos el estándar Keep a Changelog y Versionado Semántico.

◆ Próximamente
Corregido
  • Guardado accidental en la cuenta equivocada al tener varias cuentas abiertas en pestañas distintas: Si cambiabas de cuenta activa en una pestaña mientras tenías una campaña, contacto o plantilla abierta para editar en otra, un guardado posterior en la pestaña vieja podía aplicarse sobre la cuenta nueva en vez de la original. Ahora el sistema detecta el cambio de cuenta y muestra un aviso para volver a abrir la página desde la cuenta correcta, en lugar de guardar en el lugar equivocado.
Agregado
  • Solicitar reactivación de contactos desuscritos: Nuevo botón "Solicitar reactivación" en la vista de un email en lista negra
  • Envío de campañas con contexto preservado: Nuevo botón en vista de contactos para crear campañas con audiencia pre-seleccionada
  • Sistema de Log de Actividades: Nuevo tracking completo del historial de cada contacto
  • Sistema de Tags limpio: Etiquetas semánticas para segmentación manual
  • Reportes Mensuales: Nueva sección en Dashboard para ver métricas por mes con comparación vs mes anterior
  • Segmentación inteligente en creación de campañas: Mejora del paso "¿A quién enviar?" con filtrado avanzado
  • Interfaz unificada de gestión de contactos: Nueva vista centralizada `/contact/index` con paridad completa
Eliminado
  • Sistema de Áreas: Removido feature legacy del CRM
  • Tablas legacy de logs del CRM: Removidas tablas `log` y `event` no utilizadas
  • Campo `contact.flag` para bypass de restricciones: Eliminada lógica que permitía enviar a contactos ignorando desuscripciones
Cambiado
  • Navegación del menú "Contactos": Ahora apunta directamente a la vista unificada de contactos
  • Reestructuración del sistema de Tags: Separación entre tracking y segmentación
Migración de datos
  • Tags → Activity Log: Todos los tags existentes se migran automáticamente
  • Sistema de campañas avanzadas: Eliminado feature de envío por lotes/jitter/cuotas
  • API Legacy (PHP): Eliminado ApiController.php y rutas REST legacy por seguridad
v2.3.0 2026-06-24
Agregado
  • Tracking de efectividad de formularios: Métricas automáticas de rendimiento para cada formulario
  • Sistema de suscripciones refactorizado: Arquitectura simplificada con un solo plan activo por cuenta
  • Pricing diferenciado para planes manuales: Recargo configurable para cuentas con gestión manual
  • Plan Trial Gratuito: 50 contactos, 200 envíos/mes, 7 días de duración
  • Arquitectura de payment gateways: Sistema flexible para múltiples pasarelas de pago
  • Sistema de transferencias bancarias: Workflow completo con verificación por admin
  • Cache de límites en account: Campos `max_contacts_cached`, `max_sends_cached`, `max_forms_cached`
  • Contadores de uso: `contacts_used`, `forms_used` para optimizar queries
  • Bajas programadas de cuentas: Los superadmins pueden programar la fecha de baja de una cuenta
  • Drag & drop de imágenes en editor Templatical: Arrastra imágenes directamente en bloques vacíos
  • Botón de reenvío de email de bienvenida: Herramienta administrativa para cuentas creadas sin email
Mejorado
  • Página de Listas modernizada: Nuevo diseño coherente con sistema de componentes modernos
  • Optimización de dashboards: Reducción drástica de queries y mejora de tiempos de carga
  • Compatibilidad de invitaciones de calendario: Soporte completo de RFC 5545 para Gmail/Outlook
  • Administración de planes mejorada: Interfaz más clara y funcional
  • Reportes de campañas rediseñados: Layout más limpio con mejor distribución de métricas
  • Reportes de formularios: Selector de fecha movido al flujo normal (era position:absolute)
Cambiado
  • Estandarización de timestamps: Convención `_on` para eventos pasados aplicada a tabla `account`
Eliminado
  • Código legacy de FormData: Modelo, controlador y vistas eliminados (tabla `form_data` no existe desde hace tiempo)
  • Migración de datos: 22 cuentas migradas exitosamente de `account_plan` a `account_subscription`
  • Tabla account_plan renombrada: `account_plan` → `account_plan_legacy` (respaldada)
  • Actualización de queries y relaciones: Todas las referencias a `account_plan` actualizadas para usar `account_subscription`
Removido
  • Columnas obsoletas de `account`: `trial_started_at`, `trial_expires_at`, `status`, `external_id`, `auto` (movidos a subscription)
  • Columna `max_users_crm` de `plan` (módulo CRM eliminado previamente)
  • Referencias a tickets/CRM en código activo: Limpieza completa de código residual del módulo CRM/Tickets eliminado
  • Módulo OneDrive/SkyDrive completo: Sistema de almacenamiento en OneDrive eliminado por no usarse
  • Componentes y modelos CRM adicionales: Funcionalidades implementadas exclusivamente para CRM/Tickets eliminadas
Corregido
  • Imágenes no visibles en Gmail: Sanitización automática de nombres de archivo al subir imágenes
  • Undefined array key 'callback' en API de formularios con código vacío
  • Generación de short_name para campos de formulario (solo nuevos registros)
  • Nombres de columnas en ejemplos de API
  • Uso de `created_at` → `created_on` en comando MigratePlans
  • Path incorrecto en `Account::createDatabase()` impedía ejecutar migraciones al crear cuentas desde admin
  • Pérdida de selección de plan en formulario de cuenta al haber errores de validación
  • Botón de eliminar plan que escapaba HTML (ahora usa `<button>` en lugar de `CHtml::submitButton`)
  • Botón "Guardar evento" en calendario no mostraba icono Font Awesome correctamente
  • Cálculo de `max_sends` en planes usa `getDirtyAttributes()` para evitar recalcular innecesariamente
v2.2.0 2026-05-31
Agregado
  • Sistema de galería de templates: Templates profesionales pre-diseñados disponibles al crear campañas
  • API pública de formularios con encriptación Fernet para integraciones externas
  • Gestión completa de API keys desde panel de administración
  • Generación automática de ejemplos de API con campos dinámicos
  • Botón de "Integración API" en vista de formularios
Cambiado
  • Migración completa del sistema de campos de contacto a JSON
  • Optimización de validación DNS (solo en registros nuevos o con email modificado)
Corregido
  • Propagación de datos de Blacklist a Contact en webhooks
  • Validación de formularios con short_name vacíos o 'other'
v2.1.0 2026-05-18
Agregado
  • Editor Templatical (v0.8.1): Editor visual moderno basado en MJML con compilación en frontend
  • Custom blocks avanzados: Botón personalizable y Redes Sociales (16 plataformas, 3 estilos)
  • Sistema de concurrencia para edición de templates (evita conflictos entre usuarios)
  • Upload de imágenes con optimización automática en Templatical
  • Wake-up detection para renovar locks después de suspensión del PC
  • Conversión automática de merge tags `{{}}` ↔ `[]` para compatibilidad
Cambiado
  • Fuentes email-safe completas (10 fuentes con fallbacks optimizados)
  • Ocultar branding "Powered by Templatical"
Corregido
  • Fondo negro en canvas del editor Templatical
  • Referencias circulares y HTML mal formado en compilación MJML
  • Múltiples problemas de estilo en preview del editor
  • Bloqueo de sesión cuando otro usuario toma control
  • Eliminación accidental del footer de desuscripción
Seguridad
  • Autenticación obligatoria con hash encriptado para acceder al editor Templatical
v2.0.0 2026-04-01
Agregado
  • Detección de bots en aperturas y clicks: Diferencia entre aperturas reales y automáticas (Apple Mail Privacy, Gmail)
  • Métricas separadas de actividad bot vs humana en reportes de campañas
  • Columna `is_bot` en campaign_subscriber con contadores `bot_opens` y `bot_clicks`
  • Diseño avanzado de formularios: Fuentes Google Fonts, colores personalizados, estilos de botón
  • Vista previa dual de formularios (embed iframe + página completa)
  • Mensaje personalizable para validación de campo único
  • Emoji picker en editor Mosaico con soporte mejorado para Gmail
  • Logging de warnings de compatibilidad de templates Mosaico
  • Nueva página de gestión de listas con layout de 2 columnas
  • Botones de compartir link y envío de prueba en vista previa (step 4)
Cambiado
  • Estandarización de timestamps: `created_on`, `updated_on` (pasados), `scheduled_at` (futuros)
  • Aplicación de `color_bg` solo al header en formularios tipo view
  • Forzar HTTPS en links de emails y tracking de Mailgun
  • Traducción de headers de exportación a español
Corregido
  • Detección incorrecta de bots en webhooks de Mailgun (campo `client-info.bot`)
  • Fix de emojis en Gmail (charset y encoding)
  • Corrección de path de caché en replaceSrc de imágenes
  • Filtrado de campañas en FixMosaicoImagesCommand (solo no enviadas)
  • Ampliación de `listing_names` de VARCHAR(1024) a TEXT
v1.9.0 2026-03-27
Agregado
  • Gestión centralizada de dominios de envío: UI de administración para dominios Mailgun
  • Módulo `/admin/` completo con acceso restringido a superadmins
  • Comando `domainsync` para sincronización automática con Mailgun API
  • MailgunDomainService con reintentos automáticos para errores 5xx
  • Validación de dominios asignados por cuenta
  • Soporte para dominios públicos compartidos
  • Verificación de webhooks configurados en Mailgun
Removido
  • Módulo CRM/Tickets completo (no se usaba, bloqueaba migración PHP 8)
  • EExcelView/PHPExcel (190 archivos)
  • Comando SendCommand (envío masivo ahora en Python)
  • Endpoint `/campaign/configuration` obsoleto
  • ~570 líneas de código muerto en Campaign.php
Cambiado
  • Migración de exports de campañas a XLSXWriter
  • Navbar de administración con links horizontales
v1.8.0 2026-03-26
Agregado
  • Soporte completo para PHP 8.1
  • Campos de sistema en ContactField (`is_system`, `column_name`)
  • Campos con selección múltiple (`multiple=1`)
  • Opción "Permitir otros valores" en campos de selección (`allow_other=1`)
  • Relación `contact_field_id` en FormField (reemplaza `short_name`)
  • Métodos mágicos en Contact para acceso unificado a campos
Cambiado
  • Actualización de dependencias para PHP 8:
  • Formato de `fields` en Contact ahora usa placeholders en vez de IDs
Removido
  • dotzero/yii-sentry (incompatible con PHP 8)
  • tebazil/db-seeder (dependía de faker abandonado)
v1.7.0 2026-01-23
Removido
  • Columna redundante `account_id` de todas las tablas tenant
  • 14 modelos actualizados (Contact, Campaign, Listing, Template, etc.)
  • 10 controladores actualizados
  • Código comentado y vistas `_view.php` no utilizadas
Cambiado
  • Uso de `Yii::app()->utility->accountId` en lugar de `$model->account_id`
  • Actualización de URLs públicas para mantener parámetro `?a=` (routing)
Corregido
  • Flujo de formularios embebidos con `setAccountId()` correcto
  • Envío de emails de notificación con validación de cuenta
v1.6.0 2026-01-29
Agregado
  • Sanitización automática de `unsubscribed_on` con valores '0000-00-00 00:00:00'
  • Scope `active()` para contactos activos (`is_blacklisted=0`)
  • Propagación de datos en webhooks sin saves redundantes
  • Transacciones en `Blacklist::afterSave()`
Corregido
  • Errores MySQL con modo `NO_ZERO_DATE` activo
  • Optimización de consultas a Blacklist (solo cuando email cambia)
v1.5.0 2025-12-15
Agregado
  • Editor HTML externo (tipo 4) para templates de Stripo
  • Preservación completa de `<head>`, `<style>` y `@media queries`
  • Validación obligatoria de link de desuscripción
  • Editor Mosaico con templates base en archivos (standard.html, wide.html)
Cambiado
  • Columna `base_template` reemplaza `is_base` en Template
  • Método `getBaseTemplateHtml()` para acceso unificado
Seguridad
  • Headers de seguridad HTTP completos en .htaccess
  • X-Frame-Options con excepción para formularios embebidos
  • Fail2ban configurado con 5 jails activos
  • Filtro apache-wp-scan para detectar scanners
  • `Agregado` - Nuevas funcionalidades
  • `Cambiado` - Cambios en funcionalidades existentes
  • `Deprecado` - Funcionalidades que serán removidas próximamente
  • `Removido` - Funcionalidades eliminadas
  • `Corregido` - Correcciones de bugs
  • `Seguridad` - Mejoras de seguridad