Changelog

Historial de versiones de LMN Site Monitor. Versión actual: 0.9.3

0.9.3 · 2026-04-29

  • NUEVO: Sistema de notificaciones toast — mensajes toast animados reemplazan las operaciones AJAX silenciosas. Los toasts aparecen en la esquina inferior derecha con tres tipos (éxito / error / advertencia), se descartan automáticamente a los 3,8 s, animación de entrada, salida al descartar y clic para cerrar de inmediato. Respeta el tema claro/oscuro activo.
  • MEJORA: Feedback visual en comprobaciones — los botones "Forzar" (por sitio) y "Comprobar todo ahora" cambian su etiqueta a "Comprobando…" y se desactivan mientras el servidor procesa la solicitud.
  • MEJORA: Toast al fijar/desfijar — fijar o desfijar una tarjeta muestra un toast de éxito inmediato ("Fijado en la parte superior" / "Desfijado"). Los fallos AJAX también generan un toast de error con reversión de UI.
  • MEJORA: Toast al guardar orden — tras arrastrar las tarjetas a una nueva posición, un toast de éxito confirma que el servidor ha persistido el nuevo orden.
  • MEJORA: Elevación de tarjetas al pasar el ratón — las tarjetas se elevan 2 px con transición suave de sombra. La elevación se suprime durante operaciones de arrastre.
  • MEJORA: 5 nuevas cadenas i18n añadidas; traducciones en los 16 idiomas pendientes de compilar.
  • SEGURIDAD: Protección SSRF — las URLs del formulario "Añadir sitio" y de la importación CSV se validan para resolver en una IP pública antes de aceptarse. Se rechazan rangos privados (10.x, 172.16–31.x, 192.168.x), loopback (127.x), link-local (169.254.x) y otros reservados. Solo se aceptan esquemas http:// y https://.
  • SEGURIDAD: Saneamiento de error_msg — el fragmento de cuerpo almacenado en respuestas HTTP 4xx/5xx ahora se sanea con sanitize_text_field() tras eliminar etiquetas HTML, evitando que caracteres de control lleguen a la base de datos o a la interfaz de administración.
  • NUEVO: Barra de acción unificada — barra de herramientas consolidada sobre y bajo la lista de tarjetas que reemplaza la barra de acciones masivas, "Comprobar todo" y los formularios de Importar/Exportar independientes. Incluye: checkbox "Seleccionar todo", selector de acción masiva + Aplicar, separador, Comprobar todo ahora, Escanear todo, Exportar CSV e Importar CSV.
  • NUEVO: Seleccionar todo — checkbox en ambas barras con soporte de estado indeterminado para selección parcial.
  • NUEVO: Escanear todo — escaneo secuencial en segundo plano de todos los sitios monitorizados sin abrir el modal; las insignias de las tarjetas se actualizan en tiempo real al completarse cada escaneo.
  • NUEVO: Disparador de Importar CSV — el botón abre directamente el selector de archivos y envía el formulario automáticamente al seleccionar el fichero.
  • MEJORA: i18n — 3 nuevas cadenas (selectAll, scanAll, scanAllDone) traducidas en los 16 idiomas y compiladas.

0.9.2 · 2026-04-02

  • CORRECCIÓN: Clave API de URLhaus obligatoria — abuse.ch introdujo autenticación obligatoria en 2024. Se añadió el campo "Clave API de URLhaus" en Ajustes → Escaneo de seguridad (registro gratuito en auth.abuse.ch). Sin clave, la comprobación de URLhaus se omite de forma elegante.
  • CORRECCIÓN: Error JS i18n is not defined — el modal de escaneo fallaba al abrirse porque i18n era referenciado antes de declararse dentro de initScanModal(); resuelto asignando var i18n = cfg.i18n || {} al inicio de la función.
  • CORRECCIÓN: El informe PDF se imprimía en blanco — la regla @media print no tenía efecto porque el modal está anidado dentro de la estructura del admin de WP. El modal ahora se mueve temporalmente a document.body antes de window.print() y se restaura después.
  • CORRECCIÓN: Texto "Escaneando…" con caracteres incorrectos — bytes UTF-8 doblemente codificados reemplazaban los puntos suspensivos. El mensaje de escaneo ahora muestra una barra de progreso indeterminada animada.
  • MEJORA: Rediseño de la fila de escaneo en tarjeta — el botón flotante de escudo en la cabecera ha sido eliminado. El estado del escaneo aparece como fila de metadatos en línea dentro del bloque dl de la tarjeta: icono de escudo, fecha del último escaneo y etiqueta con código de color (verde "Sin incidencias" / rojo "Incidencias detectadas").
  • CORRECCIÓN: El botón "Escanear" ahora usa el mismo 11px que el resto de botones de acción de la tarjeta.
  • NUEVO: Pestaña de Ayuda — nueva pestaña en el admin del plugin con 12 secciones documentadas: Primeros pasos, Monitorización de uptime, Expiración SSL y dominio, Alertas por email, Gráficos de rendimiento y estadísticas, Escaneo de malware, Búsqueda WHOIS/DNS, Widget del escritorio, Exportación/importación CSV, Gestión de tarjetas y guías paso a paso para las claves API de Google Safe Browsing y URLhaus.
  • MEJORA: Aviso de claves API — la barra superior muestra un banner informativo compacto con enlaces directos para obtener ambas claves API y un enlace a la página de Ajustes; reemplaza el antiguo bloque de descripción genérico.
  • MEJORA: 21 nuevas cadenas i18n añadidas a todos los 16 archivos .po/.mo.

0.9.1 · 2026-03-25

  • NUEVO: Escaneo de malware — cada tarjeta de sitio tiene un botón "Escanear" y una insignia de escudo que muestra el último estado (no escaneado / limpio / amenaza / error).
  • NUEVO: Modal de informe de seguridad — muestra resultados por fuente para Google Safe Browsing y URLhaus (abuse.ch), tipos de amenazas, estado global y fecha del último escaneo.
  • NUEVO: Integración con la API de Google Safe Browsing (clave gratuita vía Google Cloud Console). Sin clave, solo se usa URLhaus.
  • NUEVO: Integración con URLhaus (abuse.ch) — no requiere clave API.
  • NUEVO: Programación de escaneo automático — selector por sitio (Nunca / Diario / Semanal) persistido vía WP Cron. El Cron se borra y reprograma al cambiar la programación.
  • NUEVO: Descarga de PDF del informe de seguridad vía window.print() con CSS dedicado @media print.
  • NUEVO: Campo de clave API de Google Safe Browsing en Ajustes → Escaneo de seguridad (sección acordeón).
  • NUEVO: 28 nuevas cadenas i18n añadidas a los 16 idiomas compatibles; todos los archivos .po y .mo actualizados.

0.9.1 · 2026-03-16

  • NUEVO: Tabla de base de datos dedicada (lmnsimo_response_log) para el historial completo de tiempos de respuesta: se crea al activar y se elimina completamente al desinstalar.
  • NUEVO: Tiempo de respuesta (ms) medido y almacenado en cada comprobación HTTP; ventana deslizante de 500 entradas por sitio.
  • NUEVO: Gráfico de barras: comparación del tiempo de respuesta promedio en todos los sitios monitorizados.
  • NUEVO: Gráfico de tendencias global: rango global de mínimo/promedio/máximo a lo largo del tiempo (por hora durante 24 h, diariamente durante 7/30 d); sin leyenda superflua.
  • NUEVO: Gráfico de distribución del tiempo de respuesta: gráfico de barras horizontales que agrupa los sitios por nivel de velocidad (< 500 ms · 500 ms–1 s · 1–2 s · 2–5 s · > 5 s), con codificación de color verde → rojo.
  • NUEVO: Selector de periodo compartido por los tres gráficos y la ventana modal de estadísticas (Últimas 24 h · Últimos 7 días · Últimos 30 días).
  • NUEVO: Ventana modal de estadísticas con tabla por sitio: total de comprobaciones, tiempo de respuesta promedio/mínimo/máximo y porcentaje de tiempo de actividad.
  • NUEVO: Exportación a CSV y exportación a impresión/PDF de la tabla de estadísticas.
  • NUEVO: Chart.js 4.5.1 y chartjs-adapter-date-fns 3.0.0 autoalojados (cumplen con el RGPD, sin CDN externa).
  • NUEVO: 25 nuevas cadenas traducidas a los 16 idiomas compatibles; archivos .pot y todos los archivos .po actualizados.
  • MEJORA: Los gráficos y la ventana modal se adaptan automáticamente al tema claro/oscuro del plugin.

0.8.1 · 2026-03-14

  • CORRECCIÓN: Corregir errores de traducciones.

0.8.0 · 2026-03-14

  • NUEVO: Nuevos idiomas: árabe, alemán, gallego, euskera, italiano, japonés, coreano, neerlandés, portugués, turco, ucraniano y chino simplificado.
  • NUEVO: Reintento automático tras un periodo de inactividad para evitar falsos positivos.
  • NUEVO: Notificaciones de vencimiento de dominio.
  • MANTENIMIENTO: i18n mantenido; compatible con PHPCS/WPCS.

0.7.0 · 2026-03-03

  • NUEVO: Las tarjetas ahora son más anchas, mostrando más información de un vistazo.
  • NUEVO: Las acciones en bloque ahora incluyen opciones de ordenación: alfabética (A→Z) y por fecha de adición.
  • NUEVO: Reordenación de tarjetas mediante arrastrar y soltar con almacenamiento persistente entre sesiones.
  • NUEVO: Sistema de fijación: fija cualquier sitio para mantenerlo fijo en la parte superior, excluyéndolo de la ordenación.
  • NUEVO: Botón de búsqueda WHOIS/DNS en cada tarjeta: muestra IP, proveedor DNS, NS, registros MX, TTL y caducidad de SSL. Solo PHP nativo, no requiere API ni claves API externas.
  • NUEVO: Fuente JetBrains Mono integrada para elementos monoespaciados, alojada en el propio servidor (compatible con el RGPD, sin CDN externa).
  • MEJORA: Cumplimiento total con PHPCS/WPCS: cero advertencias. Comprobaciones de nonce y capacidad, saneamiento y escape adecuados en todo momento.
  • MEJORA: Todas las nuevas cadenas son totalmente traducibles y compatibles con i18n.
  • MEJORA: Diseño adaptable conservado y optimizado en todos los tamaños de pantalla.
  • CORRECCIÓN: Se eliminó el gancho wp_mail_failed duplicado y se unificaron los controladores de errores.
  • CORRECCIÓN: Las programaciones cron nativas de WP (por hora y por día) ya no se sobrescriben.
  • CORRECCIÓN: Se añadió la comprobación file_exists() antes de leer changelog.txt.
  • CORRECCIÓN: Se añadió la función wp_unslash() que faltaba en el controlador de preferencias del widget.
  • CORRECCIÓN: La severidad de la insignia SSL ahora se sincroniza con el umbral de expiración configurado por el usuario.
  • CORRECCIÓN: Se resolvió el error PHPCS MissingTranslatorsComment en los generadores de correos electrónicos de alerta.
  • MEJORA: Se eliminó el método load_textdomain() inactivo.
  • MEJORA: Se corrigió la sangría inconsistente en ajax_save_order.

0.6.5 · 2025-10-31

  • NUEVO: Internacionalización completa i18n.
  • NUEVO: Se añadieron traducciones iniciales (en_US, es_ES, ca, fr_FR).
  • MEJORA: Cargador híbrido de dominios de texto: carga automáticamente los paquetes de idiomas de WP.org y recurre a /languages ​​para instalaciones ZIP.
  • CORRECCIÓN: Se añadieron comentarios de los traductores a todos los marcadores de posición para cumplir con los estándares de internacionalización (I18n) de WordPress.
  • CORRECCIÓN: Se escaparon todas las salidas dinámicas en la interfaz de administración y las sugerencias del encabezado.
  • MANTENIMIENTO: Se eliminó la función obsoleta load_plugin_textdomain() según las recomendaciones de Plugin Check.

0.6.4 · 2025-10-25

  • Sanitización completa de inputs ($_GET, $_POST, $_FILES) con wp_unslash() y funciones sanitize_*/esc_*.
  • Verificación de nonces y permisos antes de procesar formularios.
  • 0 warnings con PHPCS/WPCS.
  • Documentación unificada (readme, README, changelog) y cabecera PHP consolidada.
  • Compatibilidad PHP 8.3+ y WordPress 6.8.3+.

0.6.3 · 2025-10-24

  • Corrección de IDs duplicados y avisos de accesibilidad.
  • Limpieza de consola y ajustes de interfaz.
  • IDs únicos en formularios (nonces y botones submit).
  • Eliminados avisos en consola por #_wpnonce y #submit duplicados.
  • Accesibilidad y estructura DOM del panel admin.

0.6.2 · 2025-10-15

  • Cabecera azul unificada (h2.hndle) con badge v0.6.2.
  • Renderizado Markdown ligero (títulos, listas, **negritas**, `code`, separadores).
  • Padding y estructura coherente (.postbox.lm-card > h2.hndle + .inside).

0.6.1 · 2025-10-15

  • Nueva pestaña “Changelog” en el panel del plugin.
  • Cuerpo con padding, fondo limpio y mejor ritmo tipográfico.
  • Renderizado Markdown ligero: **negritas**, `code`, títulos (# ## ###) y listas con prefijos destacados (NEW, FIX, IMPROVE…).

0.6.0 · 2025-10-07

  • Importación CSV (mismo formato que exportación) y acciones masivas.
  • Mejoras visuales y mensajes de estado.
  • SMTP operativo: formulario alineado con claves reales (`smtp_*`) y autenticación.
  • Conserva la contraseña SMTP si se guarda vacía (no se sobrescribe).
  • Compatibilidad con Gmail (contraseñas de aplicación) y Office 365.
  • Importar CSV con el mismo formato que el export (añade URLs sin eliminar las existentes).
  • Acciones masivas en el listado (Eliminar seleccionados) con manejadores estándar de WordPress.
  • UI del listado: checkbox maestro, barra de acciones en lote y confirmaciones.
  • Manejo de errores y mensajes tras importar o aplicar acciones en lote.

0.5.3 · 2025-10-06

  • Exportar CSV desde la sección “Acerca de Site Monitor”.
  • Sección “Acerca de Site Monitor” con métricas rápidas y estado del cron.
  • Limpieza menor en cabeceras y constantes (VERSION).

0.5.2 · 2025-10-06

  • Caja “Acerca de Site Monitor” en la columna derecha del administrador.

0.5.1 · 2025-10-06

  • Email HTML claro por defecto + modo oscuro automático con prefers-color-scheme.

0.5.0 · 2025-10-06

  • Email de alerta HTML con badges, tabla de detalles y botones de acción.
  • Preferencia por usuario en el widget (número de sitios a mostrar).
  • UI clásica mejorada (tema claro/oscuro, responsive en tabla y formularios).
  • Contraste de textos en tema oscuro (labels, celdas y descripciones).

0.4.0 · 2025-10-05

  • Página de administración con listado, acciones rápidas y ajustes.
  • Comprobaciones HTTP + caducidad SSL con alertas por email.
  • Cron programable (5 min, 15 min, hora, día) y “forzar comprobación”