{"id":259225,"date":"2026-02-26T14:28:18","date_gmt":"2026-02-26T14:28:18","guid":{"rendered":"https:\/\/es.wordpress.org\/plugins\/lmn-site-monitor\/"},"modified":"2026-05-16T17:50:56","modified_gmt":"2026-05-16T17:50:56","slug":"lmn-site-monitor","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/lmn-site-monitor\/","author":23160066,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.9.4","stable_tag":"trunk","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"LMN Site Monitor","header_author":"Francisco Moreno","header_description":"Monitor websites from the WordPress admin: HTTP\/HTTPS pings, SSL expiry, and email alerts.","assets_banners_color":"39353d","last_updated":"2026-05-16 17:50:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/lumina.fmkr.net\/site-monitor","header_author_uri":"https:\/\/fcomoreno.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":838,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description"],"tags":{"0.6.5":{"tag":"0.6.5","author":"fcomoreno1976","date":"2026-02-27 11:21:03"},"0.7.0":{"tag":"0.7.0","author":"fcomoreno1976","date":"2026-03-03 16:07:35"},"0.8.0":{"tag":"0.8.0","author":"fcomoreno1976","date":"2026-03-14 11:32:08"},"0.8.1":{"tag":"0.8.1","author":"fcomoreno1976","date":"2026-03-14 18:49:46"},"0.9.1":{"tag":"0.9.1","author":"fcomoreno1976","date":"2026-03-22 22:33:06"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3470409,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3470409,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3477393,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3477393,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.6.5","0.7.0","0.8.0","0.8.1","0.9.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3488105,"resolution":"1","location":"assets","locale":"","width":1920,"height":1080},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3488460,"resolution":"10","location":"assets","locale":"","width":1920,"height":1080},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3488105,"resolution":"2","location":"assets","locale":"","width":1920,"height":1080},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3488105,"resolution":"3","location":"assets","locale":"","width":1920,"height":1080},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3488105,"resolution":"4","location":"assets","locale":"","width":1920,"height":1080},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3488105,"resolution":"5","location":"assets","locale":"","width":1920,"height":1080},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3488105,"resolution":"6","location":"assets","locale":"","width":1920,"height":1080},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3488105,"resolution":"7","location":"assets","locale":"","width":1920,"height":1080},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3488105,"resolution":"8","location":"assets","locale":"","width":1920,"height":1080},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3488105,"resolution":"9","location":"assets","locale":"","width":1920,"height":1080}},"screenshots":{"1":"Main desktop and performance graphics.","2":"Dashboard with monitored sites.","3":"Controls for exporting backups of monitored sites.","4":"Main desktop and performance graphics in dark mode.","5":"Email alert settings tab. etting up an external SMTP controls.","6":"About LMN Site Monitor tab.","7":"Changelog tab.","8":"Dashboard with monitored sites in dark mode.","9":"Response time statistics.","10":"Desktop widget."}},"plugin_section":[262246],"plugin_tags":[1110,4567,5603,1536,29148],"plugin_category":[54,59],"plugin_contributors":[256671],"plugin_business_model":[],"class_list":["post-259225","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-alerts","plugin_tags-cron","plugin_tags-monitoring","plugin_tags-ssl","plugin_tags-uptime","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-fcomoreno1976","plugin_committers-fcomoreno1976"],"banners":{"banner":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/banner-772x250.png?rev=3477393","banner_2x":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/banner-1544x500.png?rev=3477393","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/icon-128x128.png?rev=3470409","icon_2x":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/icon-256x256.png?rev=3470409","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-1.jpg?rev=3488105","caption":"Main desktop and performance graphics."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-2.jpg?rev=3488105","caption":"Dashboard with monitored sites."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-3.jpg?rev=3488105","caption":"Controls for exporting backups of monitored sites."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-4.jpg?rev=3488105","caption":"Main desktop and performance graphics in dark mode."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-5.jpg?rev=3488105","caption":"Email alert settings tab. etting up an external SMTP controls."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-6.jpg?rev=3488105","caption":"About LMN Site Monitor tab."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-7.jpg?rev=3488105","caption":"Changelog tab."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-8.jpg?rev=3488105","caption":"Dashboard with monitored sites in dark mode."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-9.jpg?rev=3488105","caption":"Response time statistics."},{"src":"https:\/\/ps.w.org\/lmn-site-monitor\/assets\/screenshot-10.jpg?rev=3488460","caption":"Desktop widget."}],"raw_content":"<!--section=description-->\n<p><strong>LMN Site Monitor<\/strong> is a lightweight WordPress monitoring plugin that keeps track of your websites and alerts you when something goes wrong. Monitor uptime, SSL certificate expiration, and response time directly from your WordPress dashboard \u2014 no external SaaS required.<\/p>\n\n<p><strong>Main Key features<\/strong><\/p>\n\n<ul>\n<li>Uptime monitoring (HTTP\/HTTPS) with configurable intervals.<\/li>\n<li>SSL certificate expiration checks with full SNI support.<\/li>\n<li>Domain expiry notifications.<\/li>\n<li><strong>Malware scanning<\/strong> powered by Google Safe Browsing API and URLhaus (abuse.ch); per-site scheduled scans (never \/ daily \/ weekly); downloadable PDF security report.<\/li>\n<li>Response latency tracking with full history stored in a dedicated database table.<\/li>\n<li>Performance charts (bar, line, donut) powered by self-hosted Chart.js \u2014 no external CDN.<\/li>\n<li>Statistics modal with per-site avg \/ min \/ max response time and uptime %; CSV and PDF export.<\/li>\n<li>Automatic retry after downtime to avoid false positives.<\/li>\n<li>Instant HTML email alerts (with automatic dark mode support).<\/li>\n<li>Dashboard widget with customizable monitor limits.<\/li>\n<li>CSV export\/import of monitored sites.<\/li>\n<li>Fully translatable (16 languages) and optimized for modern PHP environments.<\/li>\n<\/ul>\n\n<p>LMN Site Monitor is designed to be fast, accessible, and WordPress-native \u2014 giving you essential monitoring tools without unnecessary complexity. Learn more at LMN Site Monitor official page: <a href=\"https:\/\/lumina.fmkr.net\/site-monitor\/\">https:\/\/lumina.fmkr.net\/site-monitor\/<\/a><\/p>\n\n<h3>Localization<\/h3>\n\n<p>This plugin is fully translatable and currently includes base translations for:<\/p>\n\n<ul>\n<li>English (en_US)<\/li>\n<li>Spanish (es_ES)<\/li>\n<li>Catalan (ca)<\/li>\n<li>French (fr_FR)<\/li>\n<li>Arabic (ar)<\/li>\n<li>Galician (gl_ES)<\/li>\n<li>German (de_DE)<\/li>\n<li>Basque (eu)<\/li>\n<li>Italian (it_IT)<\/li>\n<li>Japanese (ja)<\/li>\n<li>Korean (ko_KR)<\/li>\n<li>Dutch (nl_NL)<\/li>\n<li>Portuguese (pt_PT)<\/li>\n<li>Turkish (tr_TR)<\/li>\n<li>Ukrainian (uk)<\/li>\n<li>Simplified Chinese (zh_CN)<\/li>\n<\/ul>\n\n<p>If you would like to contribute a new translation, you can do so via WordPress.org\u2019s translation platform.<\/p>\n\n<h3><\/h3>\n\n<p>Version: 2026-05-16 \u2014 v0.9.4<\/p>\n\n<ul>\n<li>NEW: Site thumbnail \u2014 each card now shows a screenshot preview via Automattic mshots (s0.wordpress.com\/mshots\/v1\/). No API key required; images load lazily with CDN caching and dark-mode brightness filter.<\/li>\n<li>NEW: Telegram Bot alerts \u2014 new accordion in Settings \u2192 Alerts: Bot Token + Chat ID. Formatted HTML messages sent for all alert types (site down, recovery, SSL expiry, domain expiry). Works alongside email and Discord.<\/li>\n<li>NEW: Discord Webhook alerts \u2014 new accordion in Settings \u2192 Alerts: Webhook URL. Alerts delivered as color-coded embeds (red = down, orange = warning, green = recovery).<\/li>\n<li>SECURITY: Full secrets encryption \u2014 SMTP password, Telegram token, Discord URL, Google Safe Browsing key, and URLhaus key are encrypted with AES-256-CBC using AUTH_KEY + SECURE_AUTH_SALT before storage. Settings forms never return secret values to the browser.<\/li>\n<li>IMPROVE: i18n complete \u2014 51 previously untranslated PHP strings added to the .pot template and fully translated across all 16 supported languages; all .po and .mo files recompiled. A pre-existing untranslated string (Google Safe Browsing optional key notice) also filled in for 7 languages.<\/li>\n<li>FIX: Closing the security scan modal no longer causes a flash from dark to light mode; page reload removed, scan results update in-place.<\/li>\n<li>FIX: Scan status label (\"No incidents\" \/ \"Incidents detected\") now appears on the card immediately after scanning, without requiring a manual page reload.<\/li>\n<li>FIX: Plural-form translations in .mo files were corrupted (drag-to-reorder label was appearing in SSL\/domain expiry day fields); all 16 .mo files recompiled with correct GNU gettext plural-form encoding.<\/li>\n<li>IMPROVE: Performance charts redesign \u2014 neon color palette for bar chart; trend chart shows filled min\u2013max band with adaptive Y axis; distribution chart replaced with animated Polar Area chart; neon glow effect on all chart canvases in dark mode.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-04-29 \u2014 v0.9.3<\/p>\n\n<ul>\n<li>NEW: Animated toast notification system \u2014 success \/ error \/ warning toasts appear bottom-right, auto-dismiss 3.8 s, click to close, slide-in\/out animation. Replaces silent AJAX operations.<\/li>\n<li>IMPROVE: \"Force\" and \"Check all now\" buttons change to \"Checking\u2026\" and disable during server-side check.<\/li>\n<li>IMPROVE: Pin\/Unpin actions show a success toast; AJAX errors show an error toast with UI rollback.<\/li>\n<li>IMPROVE: Card reorder now shows \"Order saved\" toast on server confirmation.<\/li>\n<li>IMPROVE: Site cards lift 2 px on hover with smooth shadow transition; suppressed during drag.<\/li>\n<li>IMPROVE: 5 new i18n strings added; translations for 16 languages pending.<\/li>\n<li>SECURITY: SSRF protection \u2014 admin-supplied URLs validated against private\/reserved IP ranges before acceptance; only http\/https allowed.<\/li>\n<li>SECURITY: error_msg sanitization \u2014 HTTP error body snippets sanitized with sanitize_text_field() before storage.<\/li>\n<li>NEW: Unified action bar (top + bottom) \u2014 Select all checkbox, bulk actions, Check all now, Scan all, Export CSV, Import CSV consolidated in one strip above and below the cards.<\/li>\n<li>NEW: Scan all \u2014 sequential background scan of all monitored sites with live badge updates and completion toast.<\/li>\n<li>IMPROVE: 3 new i18n strings (selectAll, scanAll, scanAllDone) translated in 16 languages.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-04-02 \u2014 v0.9.2<\/p>\n\n<ul>\n<li>FIX: URLhaus (abuse.ch) integration now requires an API key (Auth-Key header); added URLhaus API Key field in Settings \u2192 Security scanning. Without a key the URLhaus check is skipped gracefully.<\/li>\n<li>FIX: Scan modal failed to open with \"i18n is not defined\" JS error \u2014 resolved by declaring i18n from cfg.i18n inside initScanModal().<\/li>\n<li>FIX: PDF security report printed blank \u2014 modal is now temporarily moved to document.body before window.print() and restored afterwards so @media print selectors work correctly.<\/li>\n<li>FIX: \"Scanning\u2026\" text rendered as garbled bytes (double-encoded UTF-8) \u2014 replaced with an animated indeterminate progress bar.<\/li>\n<li>IMPROVE: Scan badge button removed from card header; scan result (shield icon + date + status label) now appears as an inline row inside the card metadata block, consistent with the rest of the card layout.<\/li>\n<li>FIX: \"Scan\" button font-size reduced to match the rest of the card action buttons (11 px).<\/li>\n<li>IMPROVE: Status labels renamed to \"No incidents\" \/ \"Incidents detected\" (es_ES: \"Sin incidencias\" \/ \"Incidencias detectadas\"), color-coded green and red respectively; all 16 .po\/.mo files updated.<\/li>\n<li>NEW: Help tab with 12 documented sections covering all plugin features: Getting started, Uptime monitoring, SSL &amp; domain expiry, Email alerts, Performance charts &amp; statistics, Malware scanning, WHOIS \/ DNS lookup, Dashboard widget, CSV export \/ import, Card management, and step-by-step guides for both API keys (Google Safe Browsing and URLhaus).<\/li>\n<li>IMPROVE: Top toolbar now shows a compact API keys notice with direct links to Google Cloud Console and abuse.ch, replacing the old generic description block.<\/li>\n<li>IMPROVE: 21 new i18n strings added to all 16 supported languages.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-03-25 \u2014 v0.9.1<\/p>\n\n<ul>\n<li>NEW: Malware scanning powered by Google Safe Browsing API (free key required) and URLhaus (abuse.ch, no key required). Scan button on each site card opens a security report modal.<\/li>\n<li>NEW: Per-site automatic scan schedule (Never \/ Daily \/ Weekly) with WP Cron integration.<\/li>\n<li>NEW: Security report modal with per-source results, threat types, global status, and one-click PDF download (window.print()).<\/li>\n<li>NEW: Google Safe Browsing API Key field in Settings \u2192 Security scanning section.<\/li>\n<li>NEW: 28 new i18n strings added to all 16 supported languages.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-03-16 \u2014 v0.9.1<\/p>\n\n<ul>\n<li>NEW: Performance charts (bar, line, donut) powered by self-hosted Chart.js 4.5.1 (GDPR-safe, no external CDN).<\/li>\n<li>NEW: Response-time history stored in a dedicated database table (<code>lmnsimo_response_log<\/code>); rolling 500-entry window per site; table removed cleanly on uninstall.<\/li>\n<li>NEW: Statistics modal with per-site total checks, avg \/ min \/ max response time and uptime %; accessible from the Monitor tab.<\/li>\n<li>NEW: CSV export and Print\/PDF export of the statistics table.<\/li>\n<li>NEW: Period selector (Last 24 h \u00b7 Last 7 days \u00b7 Last 30 days) for charts and statistics.<\/li>\n<li>NEW: 25 new strings fully translated across all 16 supported languages; <code>.pot<\/code> and all <code>.po<\/code> files updated.<\/li>\n<li>IMPROVE: Charts and statistics modal respect the plugin's light\/dark theme.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-03-14 \u2014 v0.8.1<\/p>\n\n<ul>\n<li>FIX: Fix translation errors.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-03-14 \u2014 v0.8.0<\/p>\n\n<ul>\n<li>NEW: New languages: Arabic, German, Basque, Italian, Japanese, Korean, Dutch, Portuguese, Turkish, Ukrainian, and Simplified Chinese.<\/li>\n<li>NEW: Automatic retry after downtime to avoid false positives.<\/li>\n<li>NEW: Domain expiry notifications.<\/li>\n<li>MAINT: i18n maintained; PHPCS\/WPCS compliant.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2026-03-03 \u2014 v0.7.0<\/p>\n\n<ul>\n<li>NEW: Cards are now wider, displaying more information at a glance.<\/li>\n<li>NEW: Bulk actions now include sorting options: alphabetical (A\u2192Z) and by date added.<\/li>\n<li>NEW: Drag-and-drop card reordering with persistent storage between sessions.<\/li>\n<li>NEW: Pin system \u2014 pin any site to keep it fixed at the top, excluded from sorting.<\/li>\n<li>NEW: WHOIS \/ DNS lookup button on each card: shows IP, DNS provider, NS, MX records, TTL and SSL expiry. Native PHP only, no external APIs or API keys required.<\/li>\n<li>NEW: JetBrains Mono font integrated for monospace elements, self-hosted (GDPR-safe, no external CDN).<\/li>\n<li>IMPROVE: Full PHPCS \/ WPCS compliance \u2014 zero warnings. Proper nonce and capability checks, sanitization and escaping throughout.<\/li>\n<li>IMPROVE: All new strings are fully translatable and i18n-compatible.<\/li>\n<li>IMPROVE: Responsive design preserved and refined across all screen sizes.<\/li>\n<li>FIX: Removed duplicate <code>wp_mail_failed<\/code> hook and unified error handlers.<\/li>\n<li>FIX: Native WP cron schedules (<code>hourly<\/code>, <code>daily<\/code>) are no longer overwritten.<\/li>\n<li>FIX: Added <code>file_exists()<\/code> check before reading <code>changelog.txt<\/code>.<\/li>\n<li>FIX: Added missing <code>wp_unslash()<\/code> in widget preferences handler.<\/li>\n<li>FIX: SSL badge severity now syncs with the user-configured expiry threshold.<\/li>\n<li>FIX: PHPCS <code>MissingTranslatorsComment<\/code> resolved in alert email builders.<\/li>\n<li>IMPROVE: Removed dead <code>load_textdomain()<\/code> method.<\/li>\n<li>IMPROVE: Fixed inconsistent indentation in <code>ajax_save_order<\/code>.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-31 \u2014 v0.6.5<\/p>\n\n<ul>\n<li>NEW: Full internationalization (en_US, es_ES, ca, fr_FR).<\/li>\n<li>NEW: Added Catalan (ca) and French (fr_FR) translations.<\/li>\n<li>IMPROVE: Hybrid textdomain loader \u2013 automatically loads WP.org language packs and falls back to \/languages for ZIP installs.<\/li>\n<li>FIX: Added translators comments for all placeholders to comply with WordPress I18n standards.<\/li>\n<li>FIX: Escaped all dynamic outputs in admin interface and header tips.<\/li>\n<li>MAINT: Removed deprecated load_plugin_textdomain() function per Plugin Check recommendations.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-25 \u2014 v0.6.4<\/p>\n\n<p>\u2013 Full sanitization and 0 warnings<br \/>\n- All PHPCS\/WPCS warnings removed.<br \/>\n- Full sanitization and reordered nonce verification.<br \/>\n- PHP 8.3+ and WordPress 6.8.3+ compatibility.<\/p>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-16 \u2014 v0.6.3<\/p>\n\n<p>UI:<br \/>\n- FIX: Unique IDs in forms (nonces and submit buttons).<br \/>\n- FIX: Console warnings removed for duplicated #_wpnonce and #submit IDs.<br \/>\n- IMPROVE: Accessibility and DOM structure of the admin panel.<\/p>\n\n<p>Maintenance:<br \/>\n- Version bumped to v0.6.3.<\/p>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-15 \u2014 v0.6.2<\/p>\n\n<p>UI:<br \/>\n- IMPROVE: Unified blue header (h2.hndle) with v0.6.2 badge.<br \/>\n- ADD: Lightweight Markdown rendering (titles, lists, <strong>bold<\/strong>, <code>code<\/code>, separators).<br \/>\n- KEEP: Consistent padding and structure (.postbox.lm-card &gt; h2.hndle + .inside).<\/p>\n\n<p>Maintenance:<br \/>\n- Version bumped to v0.6.2.<\/p>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-15 \u2014 v0.6.1<\/p>\n\n<p>UI:<br \/>\n- NEW: \u201cChangelog\u201d tab with direct reading of <code>changelog.txt<\/code>.<br \/>\n- IMPROVE: Body with padding, clean background, and better typographic rhythm.<br \/>\n- IMPROVE: Lightweight Markdown rendering: <strong>bold<\/strong>, <code>code<\/code>, titles (# ## ###), and highlighted list prefixes (NEW, FIX, IMPROVE\u2026).<\/p>\n\n<p>Maintenance:<br \/>\n- Version bumped to v0.6.1.<\/p>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-14<\/p>\n\n<p>Functional:<br \/>\n- SMTP operational: form aligned with real keys (<code>smtp_*<\/code>) and authentication.<br \/>\n- Keeps SMTP password when saved empty (not overwritten).<br \/>\n- Compatibility with Gmail (app passwords) and Office 365.<\/p>\n\n<p>UI:<br \/>\n- Listing replaced by responsive card grid (auto-fit\/minmax).<br \/>\n- \u201cOK\u201d status (green\/white text) and \u201cDown\u201d (red\/white text).<br \/>\n- Down sites with red border + soft pulse (respects reduced motion).<br \/>\n- Inline styles cleaned \u2192 moved to <code>assets\/admin-theme.css<\/code>.<\/p>\n\n<p>Maintenance:<br \/>\n- Nonces and handlers verified; no changes in cron or check logic.<br \/>\n- CSV import\/export and bulk actions unchanged.<\/p>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-07 \u2014 v0.6.0<\/p>\n\n<ul>\n<li>NEW: CSV import using the same format as export (adds URLs without removing existing ones).  <\/li>\n<li>NEW: Bulk actions in list (Delete selected) using standard WordPress handlers.  <\/li>\n<li>IMPROVE: Listing UI: master checkbox, batch action bar, and confirmations.  <\/li>\n<li>IMPROVE: Error handling and post-action messages for imports or batch actions.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-06 \u2014 v0.5.3<\/p>\n\n<ul>\n<li>NEW: CSV export from the \u201cAbout Site Monitor\u201d section.  <\/li>\n<li>NEW: \u201cAbout Site Monitor\u201d section with quick metrics and cron status.  <\/li>\n<li>IMPROVE: Minor cleanup in headers and constants (VERSION).<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-06 \u2014 v0.5.2<\/p>\n\n<ul>\n<li>NEW: \u201cAbout Site Monitor\u201d box in the right column of the admin dashboard.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-06 \u2014 v0.5.1<\/p>\n\n<ul>\n<li>CHANGE: Default light HTML email + automatic dark mode with <code>prefers-color-scheme<\/code>.<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-06 \u2014 v0.5.0<\/p>\n\n<ul>\n<li>NEW: HTML alert email with badges, detail table, and action buttons.  <\/li>\n<li>NEW: Per-user preference in dashboard widget (number of sites displayed).  <\/li>\n<li>IMPROVE: Classic UI improved (light\/dark theme, responsive tables and forms).  <\/li>\n<li>FIX: Text contrast in dark theme (labels, cells, and descriptions).<\/li>\n<\/ul>\n\n<h3><\/h3>\n\n<p>Version: 2025-10-05 \u2014 v0.4.0<\/p>\n\n<ul>\n<li>NEW: Admin page with listing, quick actions, and settings.  <\/li>\n<li>NEW: HTTP and SSL expiry checks with email alerts.  <\/li>\n<li>NEW: Configurable cron (5 min, 15 min, hourly, daily) and \u201cforce check\u201d option.<\/li>\n<\/ul>\n\n<h3><\/h3>","raw_excerpt":"A lightweight WordPress uptime and SSL monitoring plugin with email alerts, latency tracking, and dashboard widget.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/259225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=259225"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/fcomoreno1976"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=259225"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=259225"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=259225"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=259225"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=259225"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=259225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}