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”