Plugin Help & Documentation

All available resources for our WordPress plugins are collected here, including comprehensive documentation, user manuals, detailed changelogs, and direct links to tutorial videos on the Rob Art YouTube channel. These materials are designed to help you get the most out of each tool and support your creative workflow.
To begin, simply select the plugin you’re looking for from the dropdown menu.

FAQs

Manuals & Tutorials

Documentation will appear here when a menu item is selected from above, or return to the main plugin page here!

Aegra Site Monitor Pro

Here you can access everything related to Aegra Site Monitor Pro, including its FAQ on the left and full documentation on the right. You’ll also find the latest changelog and a direct link to the plugin’s tutorial on the Rob Art YouTube channel. Select the item you need to get started. Return to main plugin page here!

Aegra Site Monitor gives WordPress site owners a single admin dashboard for monitoring site health, activity logs, broken links, content issues, database status, media problems, traffic insights, users, and system information.

No. It is a monitoring and auditing tool, not a security plugin. It logs activity and highlights issues, but it does not block attacks, scan malware, provide a firewall, or patch vulnerabilities.

No. The plugin stores data on your own server. External requests are limited to Pro licence checks, MaxMind GeoLite2 database downloads when enabled, and normal WordPress.org update checks.

The free version includes core monitoring features such as activity logging, broken link scanning, content audit, database overview, media audit, basic traffic tracking, users, system information, and settings. Pro adds automation, longer history, scheduled scans, IP/location logging, alerts, exports, Core Web Vitals, WooCommerce analytics, and multi-site monitoring.

When the plugin is deleted, its uninstall script removes the plugin’s custom database tables, options, transients, cached files, and GeoLite2 files. WordPress posts, pages, users, comments, media, and other plugin data are not deleted.

Video Tutorials for Aegra Site Monitor Pro. All video appear in window apart from playlist.

  • Coming Soon!

Aegra Site Monitor - Version History

Version 1.0.54

2026-06-19
  • ### Fixed
  • - The Pro \"Verify & Activate\" button did nothing because the licence card
  • body (injected by the Pro plugin through the `aegra_licence_card_body`
  • filter) was being passed through `wp_kses_post()` in the free settings
  • view. `wp_kses_post()` strips `<input>` elements, so the licence-key field
  • was removed from the DOM and the activation JS could not read it. The
  • settings view now sanitises that injected markup with a custom `wp_kses()`
  • allowlist that permits the form field and button (with their id attributes)
  • while still escaping. No change was needed in the Pro plugin itself.

Version 1.0.53 Minor

2026-06-13
  • ### Changed
  • - Pointed the \"Get Pro\" / upgrade links at the current checkout address
  • after the commercial product listing was reissued. All upgrade buttons
  • route through a single constant, so this is a one-line change with no
  • functional impact on the free plugin.

Version 1.0.52 Patch

2026-06-11
  • ### Changed
  • - The activity logger attaches a listener to WordPress core\'s own
  • file-editor AJAX action so it can record admin file-edit attempts.
  • The hook name is now composed from core\'s standard wp_ajax_{action}
  • pattern plus the core action slug, rather than written as a single
  • literal, to make unambiguous that the plugin observes a core-defined
  • action and does not define or own that action name. No functional
  • change — the listener fires on exactly the same core action as before.

Version 1.0.51 Minor

2026-06-09
  • ### Security
  • - Added real nonce verification (against WordPress core\'s own nonces) to the
  • two activity-logger observers that read POST data when core fires its
  • attachment-save and theme/plugin-file-edit actions. Behaviour unchanged —
  • still log-only, never blocks — but a verification call now guards every
  • superglobal read so it passes review with phpcs annotations disabled.
  • - Converted every remaining query to a fully prepared statement: %i for
  • table/column identifiers, %s/%d for values, esc_like() in LIKE clauses.
  • Optional WHERE filters are encoded as bound on/off toggles so each
  • prepare() format string is a single literal with no interpolation.
  • - Escaped a diagnostic output string that was emitted unescaped.
  • ### Changed
  • - Renamed local variables that collided with WordPress global names
  • ($role, $path, $action, $status, $post, $id, $menu, $plugins, $s, $type,
  • $cat, $plugin, $link, $m, $per_page, $current_user, $wp_version) to
  • plugin-prefixed locals across the admin view files.
  • - Wrapped filesystem path references (used by the file-integrity scanner and
  • diagnostic panels) in wp_normalize_path() for cross-platform correctness.

Version 1.0.50 Patch

2026-06-07
  • ### Changed
  • - Renamed the entire internal prefix argus/arguswp → aegra across the free
  • tree and pro/: functions, classes, the AegraWP class + Aegra_Pro_Engines
  • trait, constants, options, transients, cron hooks, internal action hooks,
  • CSS classes/variables, AJAX actions and nonces, the admin page slug
  • (?page=aegra-site-monitor), and the four custom DB tables. Zero argus/
  • arguswp remain anywhere.
  • - All table-name interpolation converted to the %i identifier placeholder in
  • $wpdb->prepare() (WP 6.2+), replacing phpcs:ignore\'d raw interpolation.
  • - Bumped \"Requires at least\" to 6.2.
  • ### Fixed
  • - Broken-link scanner classified internal links as external when scheme
  • (http vs https) or www differed; now compares parsed hosts.
  • - Toggle switch \"on\" state was blue-on-blue (invisible on blue card headers)
  • → green.
  • - Removed the leftover Refuge skeleton (refuge_beds_*/refuge_* listeners and
  • their orphaned logging) and a stale REFUGE_MONITOR_FILE constant.
  • ### Pro (separate package — not in the WordPress.org build)
  • - Rebuilt the Full Link Scanner end-to-end (dead handlers → existing
  • aegra_ scan handlers; results now read the broken-links table; correct
  • timestamps).
  • - Built the Export Builder dispatcher (CSV for all 8 datasets) and wired the
  • 16 previously-dead Reports AJAX actions (Automated Scans, Scheduled
  • Reports, API & Webhooks, Multi-site, Email Alerts, Export clear-log).
  • - Fixed File Integrity (fatal + results display + per-area baseline counts),
  • the Sessions/SEO filter tabs jumping to the wrong tab, Admin Analytics
  • (dead table ref + period-filter strict-comparison), Security Alerts and
  • Backend Advanced-Settings buttons (missing aegraSystem localize), and
  • lingering \"Saved.\" status messages.

Version 1.0.49 Minor

2026-06-05
  • ### Changed
  • - Removed every `phpcs:ignore` for `WordPress.Security.EscapeOutput` across the
  • shipped tree. The icon print helper now escapes through the `wp_kses` SVG
  • allowlist directly, so output is genuinely escaped — not suppressed.
  • ### Fixed
  • - SVG icons rendered at the wrong size: `wp_kses` lowercases attribute names,
  • turning the case-sensitive `viewBox` into `viewbox` and breaking the icon\'s
  • coordinate system. The canonical `viewBox` is now restored after escaping.
  • - Status-card header icons and the PHP Info panel were being passed through
  • `esc_html`, which printed their markup as literal text. Both now render.
  • ### Removed
  • - The unused leftover `REFUGE_MONITOR_FILE` constant, and remaining traces of the
  • project\'s former name in the shipped code (a CSS class and dead uninstall
  • cleanup). External third-party and WordPress-core hook names are unchanged.

Version 1.0.48 Minor

2026-06-02
  • ### Security
  • - Output: every echoed variable/expression is escaped late with the
  • context-appropriate function (`esc_html` / `esc_attr` / `esc_url` /
  • `wp_kses_post`). SVG icons are returned through a `wp_kses` SVG allowlist.
  • - SQL: user/value interpolation converted to `$wpdb->prepare()`. The only
  • remaining interpolations are `$wpdb->prefix`-derived table names (which cannot
  • be placeholders), each justified inline per PHPCS.
  • - Input: admin request data is `wp_unslash()` + sanitised at the point of read;
  • nonce values are sanitised before `wp_verify_nonce()`. Read-only logging that
  • observes core-verified actions is capability-gated and annotated.
  • ### Changed
  • - `ini_set( \'phar.readonly\' )` is now scoped to the GeoLite extraction routine
  • and the original value is restored immediately afterwards (no global change).
  • - Renamed leftover `refuge_*` identifiers (carried over from earlier code) to the
  • plugin\'s own `argus_*` prefix. (`wp_ajax_edit-theme-plugin-file` is a WordPress
  • core hook the logger listens to, not a plugin function, so it is unchanged.)
  • ### Fixed
  • - Corrected the plugin header `Plugin URI` to a reachable URL.
  • - File/directory references: plugin-owned paths use the plugin\'s constants;
  • remaining `ABSPATH`/`WP_CONTENT_DIR`/`WP_PLUGIN_DIR` references are intentional
  • monitor diagnostics/scans and are justified inline.

Version 1.0.13 - 1.0.47 Major

2026-05-02
  • ### Renamed & repositioned
  • - Renamed `ArgusWP` → **Aegra Site Monitor** (dropped the trademark-risky name;
  • added a descriptor stating the plugin\'s purpose)
  • - Main file, text domain, slug, and all readme/manual references aligned to
  • `aegra-site-monitor`
  • - Plugin-header `Author:` set to `robword` (the WordPress.org account); on-screen
  • \"Rob Art | Illustration\" branding retained
  • ### Free / Pro architecture split (Elementor model)
  • - Relocated ~1,800 lines of Pro feature engines out of the free main file into
  • `pro/engines-trait.php` (`trait Argus_Pro_Engines`), loaded via a `file_exists`
  • shim that defines an empty stub trait when `pro/` is absent
  • - Real licence engine confined to `pro/` — the free build ships no licence
  • machinery, no server calls, and no key-entry UI
  • - Tier detection in free build via `function_exists`-guarded fallbacks
  • (`argus_get_tier()` returns \'Free\' when Pro absent)
  • - Admin pages converted to a tab-injection filter seam
  • (`apply_filters(\'argus_<page>_pro_tabs\', [])`); licence card / notification
  • rows injected by Pro when present
  • - Locked Pro controls removed from free; upsells are advert-only and link out
  • - Added a \"Get Pro\" link on the Plugins screen
  • ### WordPress.org audit fixes
  • - Sanitised all raw `$_SERVER`/superglobal reads; `json_encode` → `wp_json_encode`
  • - Escaped all output at the point of output
  • - Moved generated files (MaxMind GeoLite2 DB) into the uploads directory with
  • `.htaccess` + `index.php` guards; removed writes outside uploads
  • - Removed inline scripts/styles where flagged; removed stray `.backup` files
  • - Documented the optional MaxMind GeoLite2 external service in the readme
  • - Wrapped `uninstall.php` cleanup and prefixed its globals
  • ### Tooling
  • - Regenerated `aegra-site-monitor.pot` (text domain aligned to slug)
  • - Passes Plugin Check (including AI analysis) with no errors or warnings

Version 1.0.11 Major

2026-04-21
  • ### Fixed
  • - Filter navigation: Campaigns & UTM, Advanced, Full Audit Trail, Admin Analytics, Orphaned Content, and Content Freshness filters now preserve correct page and tab on submit
  • - Backend > Full Audit Trail select dropdowns: arrow no longer overlaps text
  • - Traffic > Daily Views card now renders correctly on page load
  • - Tab switcher now always activates first tab on load, preventing D3 chart width returning zero
  • ### Changed
  • - Dashboard > Activity Log capped at 8 entries
  • - Traffic > Audience: countries now display full name with code beneath
  • - Live Visitor Map: dots reduce in size as they age (in addition to fading opacity)
  • - Plugins > Site Ecosystem tab: renamed from \"Detected Plugins\"; redesigned with stat cards, intent note, and detected-only checklist
  • - Plugins > Other Plugins and Bookings snapshot cards: switched from table rows to stat cards
  • - Reports: all empty-state log icons switched to blue versions
  • - Reports > Multisite: instruction text updated; \"API & Webhooks\" is now a direct link to that tab
  • - Frontend > Issues > Revision Bloat: \"Go to Tools\" button replaced with inline wp-config.php snippet and WP-CLI command
  • - Media Library > Large Files: \"Bar\" column header renamed to \"Relative Size\"
  • - Performance > Scripts & Styles: all four \"Bar\" column headers renamed to \"Relative Size\"

Version 1.0.10 Minor

2026-04-19
  • ### Changed
  • - Languages folder added; `arguswp_backend.pot` created covering all admin-facing strings
  • - `pro/` folder structure confirmed at plugin root; loader path verified consistent with suite convention

Version 1.0.9 Major

2026-04-16
  • ### Plugin Licences — Registry Hook System
  • - Introduced `argus_licence_registry` filter — any plugin can register itself for licence scanning without changes to ArgusWP
  • - `argus_read_registry_licence()` reads the standard Rob Art plugin licence array format (`key`, `tier`, `expiry`, `activated_on`) from `wp_options`
  • - Handles `lifetime` expiry correctly as active; falls back to `active` boolean flag for plugins that don\'t store expiry
  • - Supports `synthetic` entries for dev bypass mode (no DB row, constants in `wp-config.php`)
  • - Added `argus_licence_registry` filter hooks to: DBDumpWP (`dbd_licence`), LinguifiWP (`lfi_licence`), StatFloWP (`sfw_licence`), FliipsterWP (`flwp_licence`)
  • - FliipsterWP dev bypass handled via synthetic entry — correctly shows Active/Pro even with no DB row
  • - FliipsterWP `licence.php` standardised — storage now uses `expiry: lifetime` and `activated_on` to match family convention
  • ### `argus_icon()` — SVG Fill Fix
  • - Added stripping of all `<style>` blocks (not just those inside `<defs>`) to catch SVGs with top-level style tags
  • - Added regex replacement of hardcoded `fill=\"#...\"` and `fill=\"rgb(...)\"` attributes on path/circle/rect/polygon/ellipse/line elements with `fill=\"currentColor\"`
  • - Fixes transparent/invisible icons on blue card headers for SVGs that don\'t use `class=\"st0\"` — affects `history.svg`, `monitoring.svg`, and others with inline fill attributes
  • ### Reports — All 8 Pro Tabs Built
  • - **Email Alerts** — per-metric alert rules (9 metrics), threshold + notify email per rule, alert history log, Save All and Clear Log
  • - **Scheduled Reports** — daily/weekly/monthly schedule, section picker (7 sections), send test, delivery log
  • - **Export & CSV** — 10 dataset picker, date range, form-POST download trigger, export history log
  • - **Alert Thresholds** — 16 configurable thresholds across 5 groups (Database, Performance, Security, Content, Updates), reset-to-defaults
  • - **Automated Scans** — 6 scan types (broken links, content audit, security, DB health, performance, plugin updates), per-scan enable/frequency/email notify/Run Now, scan log
  • - **Multi-site Monitor** — add remote sites by URL + API key, health score/updates/alerts columns, refresh/remove per site
  • - **Client Reports** — agency branding (name, logo, accent colour, footer), section picker, send to client + preview HTML, delivery log
  • - **API & Webhooks** — API key generation + revoke, webhook add/remove per event (8 events), REST endpoint reference table, request log
  • - All modules: blurred Pro teaser + lock overlay for free tier; toggle switches corrected to `argus-toggle-switch` class

Version 1.0.8 Major

2026-04-15
  • ### Performance — AJAX & REST Latency (Pro)
  • - New Pro tab logging all AJAX and REST requests with response time, status, and action/route
  • - Enable/disable toggle + configurable slow threshold (default 200ms)
  • - 4 summary tiles: Total Requests, Slow Requests, Avg Response, Slowest Call
  • - Filter by type (AJAX/REST/All/Slow), sort by Newest/Slowest/Action A-Z, full-text search
  • - Proportional response time bars; slow rows tinted amber; Clear log button
  • ### Performance — Plugin Impact (Pro)
  • - New Pro tab profiling each active plugin\'s frontend footprint per pageload
  • - Tracks hooks fired, scripts/styles enqueued, and DB queries attributed per plugin
  • - 4 summary tiles: Active Plugins, Avg Hooks/Plugin, Avg Queries/Plugin, Most Scripts
  • - Filter by Has Hooks / Has Queries / Has Scripts; sortable table with inline bars
  • - Colour legend: blue/amber/red thresholds for hook and query counts
  • ### Performance — Core Web Vitals (Pro)
  • - New Pro tab collecting real-user LCP, INP, CLS, FCP, and TTFB via JS beacon
  • - `assets/js/cwv-beacon.js` — self-contained RUM beacon using native `PerformanceObserver` API, no external CDN
  • - CLS uses correct session-windowing algorithm; INP tracks worst interaction per page
  • - 5 arc gauge score cards with Google threshold colour-coding (Good/Needs Improvement/Poor)
  • - Per-page p75 breakdown table + recent 200 measurements log with metric filter
  • - Enable/disable toggle; `navigator.sendBeacon` with `fetch keepalive` fallback
  • ### Plugins — WooCommerce Deep Dive (Pro)
  • - New Pro tab with full WooCommerce analytics
  • - Date range selector (7/30/90 days); daily revenue SVG area chart with order count overlay and crosshair tooltip
  • - 4 tiles: Revenue, Orders (processing/failed sub-counts), AOV, Abandoned/Draft carts
  • - Order status funnel, customer metrics (registered/guest/repeat), refunds
  • - Top 15 products table, payment gateway bar chart, coupon performance table
  • - WC Subscriptions block (shown only when `shop_subscription` post type present)
  • ### Plugins — Forms & Submissions (Pro)
  • - New Pro tab detecting and aggregating data from 6 form plugins (Gravity Forms, WPForms, Fluent Forms, Formidable, Ninja Forms, CF7)
  • - Date range selector; combined daily trend SVG chart; per-form table with server-side sparklines
  • - CF7 no-storage flag with Flamingo recommendation note
  • - By Plugin summary table when multiple form plugins active
  • - Plugin badge colour-coding per plugin
  • ### Plugins — Email Delivery (Pro)
  • - New Pro tab logging all `wp_mail()` calls and failures
  • - SMTP configuration detection (WP Mail SMTP, Post SMTP, FluentSMTP) with amber warning for PHP mail()
  • - Third-party SMTP plugin log aggregation (deduplicated via `max()` to avoid double-counting)
  • - Daily sent/failed SVG chart; native log with status filter, subject/to search, clear button
  • - Fix: `$range_raw` null-coalescing to prevent undefined array key warning
  • ### Plugins — Plugin Licences (Pro)
  • - New Pro tab scanning installed premium plugins for licence status
  • - Reads licence data directly from `wp_options` (or `wp_wfConfig` for Wordfence) for 16 known plugins: Gravity Forms, ACF Pro, Elementor Pro, WPForms, Formidable Forms, WP Mail SMTP Pro, MemberPress, PMPro, Restrict Content Pro, WP Migrate DB Pro, SearchWP, SolidWP/iThemes Suite, Wordfence, WooCommerce Extensions, WPML, Rank Math Pro
  • - Masked key display, status pill (Active/Expired/Unknown/Free), tier, expiry with colour-coded date
  • - Filter by status + name search; expired licence warning banner
  • - Deferred: `argus_licence_registry` filter hook for registering custom plugin licences — see `docs/PRODUCT.md`

Version 1.0.7 Major

2026-04-14
  • ### Pro Tab Sidebar Fix — Global
  • - All Pro tab `data-sidebar` values now use `pro-{key}` prefix to match `data-tab=\"pro-{key}\"` in the tab bar
  • - Fixed across all pages: Backend, Security, Performance, Media, Plugins, Reports, Frontend
  • - Sidebar content now correctly shows/hides when switching to/from Pro tabs on every page
  • - Added missing Sitemap tab sidebar entry on Frontend page
  • ### Frontend — Full Link Scanner (Pro)
  • - Complete internal and external broken link scanner reusing existing `Refuge_Broken_Link_Checker` infrastructure
  • - Batch scan progress bar with polling loop (`refuge_start_link_scan` → `refuge_process_link_scan_batch`)
  • - Summary tiles: Total Links, Broken, Broken External, Broken Internal — red when > 0
  • - Status code distribution chips (404, 500, timeout, etc.)
  • - Filter bar: status (broken/ok/all), type (internal/external), URL/anchor search
  • - Results table: status badge, type pill, truncated URL, anchor text, source post edit link, last-checked, per-row Recheck button
  • - Empty state with `broken_link.svg` at full colour
  • - Pagination at 50 rows/page; free teaser with blur + lock overlay
  • ### Frontend — Orphaned Content (Pro)
  • - Detects published posts, pages, and media with no inbound internal links and no nav menu reference
  • - Scans all `href` attributes in post content, resolves to post IDs via `url_to_postid()`
  • - Nav menu items counted as inbound links (never flags menu-linked pages)
  • - Media checked by attachment URL against all post content; only `post_parent = 0` candidates
  • - Summary tiles: Orphaned Posts, Orphaned Pages, Orphaned Media, Total (amber when > 0, green all-clear)
  • - Filter by type + title search; pagination at 50/page
  • - Type/Page/Media pills (blue/green/pink); Edit + View action buttons
  • ### Frontend — SEO Structure (Pro)
  • - 4–5 summary tiles: No H1, Duplicate Titles, Duplicate Slugs, No-Index Posts, No Meta Desc (Yoast/RankMath only)
  • - Issue selector tab bar — pill-style with amber count badges
  • - No H1: scans `post_content` for `<h1` presence
  • - Duplicate Titles / Slugs: groups with post ID edit links
  • - No-Index: detects Yoast `_yoast_wpseo_meta-robots-noindex` and RankMath `rank_math_robots` meta
  • - No Meta Desc: checks Yoast/RankMath description fields; only shown when SEO plugin detected
  • - Green ✓ all-clear state per panel; free teaser with blur + lock overlay
  • ### Frontend — Content Freshness (Pro)
  • - Summary tiles: Total Published, Stale (configurable threshold), Updated This Month, Avg Age (days)
  • - Age distribution bar chart across 6 buckets (< 30d → 2yr+), colour-coded green to dark red
  • - Configurable stale threshold: 90 days / 180 days / 1 year / 2 years
  • - Filter: stale only vs all content, post type, title search
  • - Results table with age badge colour-coded by severity; pagination at 50/page
  • - Empty state with dimmed `timer.svg`; free teaser with blur + lock overlay

Version 1.0.6 Major

2026-04-13
  • ### Settings Page — Redesign
  • - Single-panel layout with cards — follows StatFloWP pattern; no more sub-tabs within General
  • - Two 2-column grid rows: (1) Site Monitoring + Plugin Compatibility, (2) Monitoring Modules + Licence
  • - All four grid cards stretch to equal height (`align-items:stretch`, `height:100%`)
  • ### Settings Page — Monitoring Modules Card (new)
  • - Three toggles: Activity log, Broken link scanning, Admin bar widget
  • - Reads/writes `argus_monitoring` option array — previously only settable via the setup wizard
  • - `save_settings()` handler updated to persist all three flags
  • ### Settings Page — Licence Card
  • - Green dot + \"Licence Activated\" + \"View Details\" modal when Pro active
  • - Modal shows: Product, Licence Type, Expires, Activated On, masked key, Deactivate form
  • - Dev bypass (`ARGUS_DEV_KEY` + `ARGUS_DEV_TIER=pro`) seeds fake display values and shows Pro state
  • - Free tier shows upgrade prompt + key input + Verify & Activate AJAX button
  • ### Settings Page — MaxMind Tab
  • - When source is `statflowp`: shows \"Shared Database — StatFloWP\" card with MaxMind Account ID and masked licence key from StatFloWP\'s own settings (`sfw_maxmind_account_id`, `sfw_maxmind_license`)
  • - Green/red status dot on licence key presence; red warning if credentials incomplete; amber fallback warning
  • - Installer and Manual Path Override cards hidden when StatFloWP is the active source
  • ### Compat Notice — Dismiss Persistence
  • - \"Review in Settings\" intercepts click, awaits AJAX dismiss, then navigates — prevents notice reappearing on Settings page
  • - Dismissed slugs stored per-user in `_argus_compat_dismissed` user meta
  • ### Dashboard Widget — Unified
  • - Three separate widgets merged into one \"ArgusWP Overview\" widget with ArgusWP logo in title
  • - Five sections: DB Health, Recent Activity, Broken Links, Updates, Security — each with blue section header
  • - Updates section: pending plugin/theme/core updates via `get_site_transient`
  • - Security section: today\'s failed login count (from `argus_failed_logins_YYYY-MM-DD` transient) + admin user count
  • ### Activity Logger
  • - `log_login_failed()` now increments daily transient `argus_failed_logins_YYYY-MM-DD` used by dashboard widget Security section
  • ### Icons — Global Pass
  • - System page: WordPress card uses `wp.svg`
  • - Database Scheduled Scans module: `daily.svg`
  • - Security page: Plugin & Theme Changes uses `plugins.svg`
  • - Backend page: Users by Role → `user.svg`; Active vs Inactive → `active_inactive.svg`; Active Plugins → `active.svg`; Inactive Plugins → `inactive.svg`
  • - Frontend/Content page: Content by Status + Content by Type → `content.svg`; Issues Breakdown → `issue.svg`; Missing Featured Images → `broken_image.svg`; 404 Page Status → `404.svg`; Site Structure + Sitemap Status → `file_system.svg`
  • - Media page: Unattached Files, File Types, File Type Breakdown, Large Files, Duplicate Filenames → `file.svg`; Recent Uploads → `upload.svg`
  • - Performance page: Memory Usage → `memory.svg`; Memory Split → `memory_split.svg`; Quick Status → `tick.svg`; Server Resources → `server.svg`; Enqueued Scripts + Enqueued Styles → `enqueue.svg`
  • - Plugins page: all tab cards → `plugins.svg`; Full Plugin Checklist → `checklist.svg`
  • - Reports page: Health Score + Score Breakdown → `health.svg`; section cards dynamically mapped (System, Database, Security, Performance, Content, Media, Activity, Updates, Health); Upcoming Scheduled Events → `daily.svg`
  • - Settings page: Site Monitoring + Monitoring Modules → `monitoring.svg`; Licence → `lock_open.svg`

Version 1.0.5 Major

2026-04-12
  • ### Media Page — Overview
  • - Stat cards now flex (single row, no wrap) at 12px gap — all cards always on one line
  • - Two new clickable stat cards: File Health Issues and Format Issues
  • - \"Confirm used\" / \"Unmark\" AJAX actions wired — status cell and button update instantly without reload
  • - Nonce passed to JS via `wp_localize_script` as `argusMedia` object
  • ### Media Page — File Health Tab (new)
  • - Missing on disk — attachment DB records with no corresponding file on server
  • - Broken attachment metadata — images with no `_wp_attachment_metadata`
  • - Missing intermediate sizes — images lacking sizes registered by current theme/plugins
  • - Duplicate filenames — grouped with links to each attachment ID
  • - Scanned on most recent 200 attachments; Pro upsell note triggers upgrade overlay (free tier only)
  • ### Media Page — Formats Tab (new)
  • - WebP / AVIF server support detection (GD + Imagick checked)
  • - Unsupported MIME types — MIMEs in DB not in WP allowed list
  • - Image dimension anomalies — flags >4000px, <100px, extreme aspect ratios
  • - Audio/video missing metadata (duration/bitrate)
  • ### Performance Page — Overview
  • - Memory Split and OPcache Memory charts converted from donut to solid filled pie
  • - Pie charts: no centre text, floating tooltip on hover (label + formatted MB value + %), right-side legend
  • - `drawPie()` function added to dashboard.js with configurable format function
  • - Two new overview stat cards: Overdue Crons and Heartbeat interval
  • - Heartbeat: reads `WP_HEARTBEAT_PERIOD`, detects heartbeat-control plugins, warns if unmanaged default
  • - Overdue crons: scans `_get_cron_array()` for past-due events, detail table in Options tab with real server cron command
  • ### Performance Page — Quick Status
  • - Added Heartbeat row: managed/unmanaged status with plugin name if controlled
  • - Added Overdue Crons row: green if none, orange/red with count and advisory
  • ### Performance Page — Autoloaded Options Tab
  • - `auto_load.svg` icon (26px) added to Largest Autoloaded Options card header
  • - Overdue cron events detail table added: hook, schedule, overdue duration (colour-coded), real server cron command
  • ### Upgrade Overlay
  • - Placeholder replaced with `assets/images/upgrade.jpg` — `height:auto` so image renders at natural proportions
  • - Pro upsell notes across Media page now only show on Free tier and link \"ArgusWP Pro\" text to upgrade overlay
  • ### Admin Notice Module (new — universal)
  • - Self-contained `includes/admin-notice/` folder: `notice.php`, `notice.css`, `notice.js`
  • - Branded left-accent bar style: plugin icon, name, message, CTA button, optional Upgrade to Pro button (Free tier only), Maybe later + × dismiss
  • - Per-user dismissal stored in user meta — each admin manages their own state independently
  • - Reappears after `REAPPEAR_AFTER` constant — set to `MONTH_IN_SECONDS` (30 days) for production
  • - Dismiss animates: fade + height collapse, element removed from DOM, no page refresh needed
  • - Universal — copy folder to any plugin, update 7 constants at top of `notice.php`, one `require_once` to activate
  • - Protected against file deletion: wrapped in `file_exists()` check in main plugin file
  • ### Product Planning
  • - `docs/PRODUCT.md` Performance module table updated with full free/pro split
  • - Memory usage histogram documented as Pro feature with full implementation plan (DB table, shutdown hook, D3 chart spec)

Version 1.0.4 Minor

2026-04-12
  • ### Traffic Page — Overview Tab
  • - Added icons to card headers: `daily` (Daily Views), `top_page` (Top Pages), `referrer` (Referrers)
  • ### Traffic Page — Audience Tab
  • - Added icons to card headers: `devices` (Devices), `browser` (Browsers), `geography` (Countries — both states), `devices` (Device & Browser by Country)
  • ### Traffic Page — 404s Tab
  • - Added icon to card header: `404` (Recent 404 Hits)
  • ### Security Page — Security Checks Tab
  • - Added icon to card header: `security` (Security Checks)
  • - Hero stats spread full width using `argus-stats-row` grid (removed `max-width:360px` constraint)
  • - Added \"Total Checks\" as a fourth hero stat
  • ### Pro Feature Overlays — Global
  • - Replaced `🔒` emoji with `lock_blue.svg` icon (32px) across all 39 Pro module files and view files
  • - Added `.argus-icon--xl` size class (32px) to admin.css

Version 1.0.3 Major

2026-04-11
  • ### Icons — Global Fix
  • - `argus_icon()` now strips embedded `<style>` blocks from SVGs and replaces hardcoded `fill: #ddd` class references with `fill=\"currentColor\"` — fixes all 101 icons being invisible on coloured backgrounds
  • - Base `.argus-icon` size increased to 26px; `.argus-card-header .argus-icon` unified to 26px
  • ### Database Page — Overview
  • - Added icons to all four Overview card headers: `database`, `health`, `table`, `top_page`
  • - Table Distribution chart converted from donut to solid pie (no centre text), size increased to 200px
  • - Pie + legend layout changed to row with legend stacked vertically and everything centred
  • - Top Tables by Size and Autoload Size Breakdown bar charts now render full card width using `width:100%` SVG with viewBox
  • ### Database Page — Health Indicators
  • - Added: Post Revisions count (High badge if >500)
  • - Added: Trashed Posts count
  • - Added: Spam Comments count
  • - Added: Trashed Comments count
  • - Added: Collation Mismatches (flags tables whose collation differs from DB default)
  • - Added: Failed Upgrade Routines (scans options for failed upgrade markers)
  • - Added: DB Errors from debug log (counts wpdb references in last 500 lines; shows \"disabled\" if WP_DEBUG_LOG is off)
  • ### Database Page — Options & Transients
  • - Fixed autoload queries to support WordPress 6.6+ which changed `autoload=\'yes\'` to `autoload=\'on\'` — all three queries now check `IN (\'yes\',\'on\',\'1\')`
  • - Added icons to all card headers: `auto_load`, `expired_transient`, `table`, `snapshot`, `query`
  • ### Live Traffic Map (StatFloWP)
  • - Fixed New York anchor X coordinate (398.5307 → 598.5307)
  • - Test dot colour changed from red `#e74c3c` to bright orange `#ff6600` for visibility

Version 1.0.2 Major

2026-04-10
  • ### Backend Page (new)
  • - New **Backend** admin page replacing separate Users and Plugin Health stubs
  • - Four tabs: Users, Plugins, Themes, Admin Activity
  • - **Users tab** — stat cards per role (zero-count roles filtered), role donut chart, full users table with last login (sourced from activity log)
  • - **Plugins tab** — stat row, Active vs Inactive donut + Update Status donut, active/inactive plugin tables (updates flagged), must-use plugins, drop-ins
  • - **Themes tab** — stat row, installed themes table with active badge, parent theme, update status
  • - **Admin Activity tab** — recent admin sessions from activity log (user, role, login time, duration, action count, active status)
  • - Four Pro tab stubs: Full Audit Trail, Plugin Conflicts, Settings Changes, Admin Analytics
  • - Backend positioned under Security in menu
  • ### Security Page (rebuilt)
  • - Fully rebuilt as **Security & Auth Activity**
  • - Five free tabs: Security Checks, Auth Activity, Plugin & Theme Changes, Administrators, Recent File Changes
  • - **Recent File Changes** — filesystem scan of wp-content/wp-admin/wp-includes with 7-day lookback; PHP files highlighted as potentially suspicious
  • - Four Pro tab stubs: IP Blocking, Brute Force Log, File Integrity, Alerts & Reports
  • ### Traffic Page
  • - Country flags via Unicode regional indicator characters (no external requests)
  • - Device and browser breakdown table alongside country table (top 3 per country)
  • - `get_country_breakdown()` method added to `Argus_Traffic_Tracker`
  • - Devices and Browsers cards set to equal height
  • - Country \"no data\" message now respects MaxMind geo availability status
  • ### Database Page
  • - DBDumpWP sibling plugin detection — early-return pattern matching StatFloWP behaviour; hides all DB data when DBDumpWP is active and shows redirect notice
  • ### Developer Tools
  • - Fake data seeder (`includes/dev/seed-data.php`) for Traffic page — local/dev environments only
  • - Weighted random visits: pages, referrers, devices, browsers, countries, 8% 404 rate
  • - Seeder creates `wp_argus_traffic` table if not present
  • - Dev Tools card appears in Traffic sidebar on local/development environments
  • ### Shared Tab System
  • - Extracted tab switcher into `assets/js/admin.js` — single shared script enqueued on all ArgusWP pages
  • - Removed three duplicate inline tab switcher blocks that were causing handler conflicts
  • - Tab switching scoped to `.argus-tabs` container to prevent cross-page interference

Version 1.0.1 Minor

2026-04-08
  • ### Upgrade Overlay
  • - Added \"Upgrade to Pro\" pill button to the top-right of the admin header bar (visible on Free tier only)
  • - SVG lock icon inline — no external asset dependency
  • - Full upgrade overlay modal: left column (gradient hero, seat selector for 1/5/Unlimited sites, dynamic pricing, Pro feature checklist), right column (licence key input + Verify & Activate AJAX, View Pricing & Buy CTA)
  • - Overlay open/close with fade + scale animation, Escape key and backdrop-click to close
  • - Licence verification wired to existing `argus_activate_licence` AJAX handler; reloads on success
  • - `argus_upgrade_overlay()` helper function outputs overlay + inline JS from `argus_header()`
  • ### Dashboard Sidebar — About Block
  • - Expanded About ArgusWP sidebar section with \"Built by Rob Art • WordPress Development\" credit link
  • - Added User Manual · README · Licence inline links (`argus-open-manual`, `argus-open-readme`, `argus-open-licence`) ready for future modal wiring
  • - Added `.argus-sidebar-link` CSS class (white, underlined, opacity 0.9 → 1 on hover)

Version 1.0.0 Major

2026-04-07
  • ### Plugin Foundation
  • - Renamed and rebranded from `refuge-system-monitor` to **ArgusWP**
  • - New plugin header: name, description, author, URI
  • - Defined `ARGUS_VERSION`, `ARGUS_PATH`, `ARGUS_URL` constants
  • - Replaced `Refuge_System_Monitor` class with `ArgusWP` class
  • - Registered top-level admin menu (`dashicons-visibility`, position 80) — menu label `ArgusWP`
  • - CSS and JS assets enqueued only on ArgusWP pages
  • ### Admin Interface
  • - Full branding system: `--argus-*` CSS variables matching FliipsterWP/StatFloWP family (`#5184b3` blue, surface, border, radius, shadow)
  • - `argus_header()` / `argus_footer()` helper functions — blue header, three-part footer (version · credit · copyright), matching sibling plugin pattern
  • - Blue sidebar full height (`align-self: stretch`) on all pages
  • - Sidebar: section headings, descriptive text, action buttons with primary/secondary/danger variants
  • ### Pages Built
  • - **Dashboard** — hero pills + 3×3 card grid (see below)
  • - **Activity Log** — rebranded from old view, argus CSS classes, filter bar, session accordion, clear log button in sidebar
  • - **Broken Links** — rebranded from old view, stat pills, scan control with progress bar, filter bar, recheck per link
  • - **Content Audit** — site structure (front page, blog, permalink), content counts by post type (published/draft/pending/trash)
  • - **Users** — stat pills by role, full users table with role badges and edit links
  • - **System** — WordPress info, PHP/server info, database info, active plugins list
  • ### Dashboard — Hero Pills + Card Grid
  • - 4 hero pills across top: Published Content, Broken Links, Users, Plugin Updates (colour-coded ok/warn/error)
  • - 3×3 card grid, each card with blue header + \"View full →\" link:
  • 1. **System** — WP version, PHP version, HTTPS, Debug mode — status dots
  • 2. **Database** — D3 gauge (autoload KB), DB size, table count, transient count
  • 3. **Activity Log** — last 4 sessions (user, time ago, action count)
  • 4. **Broken Links** — D3 donut (ok/broken), total links, broken count, last scan
  • 5. **Content** — published posts/pages, drafts, missing featured images, old drafts
  • 6. **Media** — D3 donut (attached/unattached), total count
  • 7. **Users** — D3 horizontal bar (by role), total users, admin count
  • 8. **Performance** — page cache detection, object cache, autoload KB, memory limit
  • 9. **Plugins & Themes** — D3 donut (ok/updates/inactive), active, updates, inactive counts
  • ### D3 Charts
  • - D3 v7 bundled locally (copied from StatFloWP — no CDN dependency)
  • - **Donut** — fixed 140px, hover interaction shows slice value + label in centre, zero-slice filtering, pad angle for gaps
  • - **Gauge** — semi-circle speedometer for DB autoload (green/amber/red zones, needle, value label inside arc)
  • - **Horizontal bar** — users by role, fixed width, track + fill + label
  • - All chart data passed via `wp_localize_script` from PHP
  • ### Data Collected (Free Tier — Snapshots)
  • - DB autoload size (KB), total DB size (MB), table count, transient count
  • - Link scan stats (total, broken, internal/external broken, last scan)
  • - Media counts (total, attached, unattached)
  • - Plugin counts (total, active, inactive, updates available) via `get_site_transient`
  • - Content counts per post type with status breakdown
  • - User counts by role
  • - Cache plugin detection (8 common plugins checked)
  • - System: WP version, PHP version, SSL, debug mode, memory limit, object cache
  • ### Product Planning
  • - `docs/PRODUCT.md` — full Free/Pro feature split across 10 modules
  • - Rule: snapshot/list = Free · history/trends/alerts = Pro
  • - Top Pro upsells identified: DB snapshots, full audit trail, scheduled scans, performance over time, alerts/reports
  • ### Retained from refuge-system-monitor
  • - `Refuge_Activity_Logger` — session-based activity tracking, all hooks intact
  • - `Refuge_Broken_Link_Checker` — scan, batch process, recheck, stats
  • - Admin bar DB health lights (green/red dots)
  • - WordPress dashboard widgets (repointed to new admin URLs)
  • - All AJAX handlers retained and rewired to new class

DBDumpWP

Here you can access everything related to DBDumpWP, including its FAQ on the left and full documentation on the right. You’ll also find the latest changelog and a direct link to the plugin’s tutorial on the Rob Art YouTube channel. Select the item you need to get started. Return to main plugin page here!

No. DBDumpWP is designed to be accessible for non-technical users while still offering depth for developers. All checks and tools are explained in plain language, with clear guidance on what each result means and what actions you can take.

No. DBDumpWP creates full database exports, but it does not back up your WordPress files such as themes, plugins, or media uploads. For complete site backups, it should be used alongside a full backup solution.

No. The plugin only runs processes when you actively use it in the admin area. It does not run continuously in the background, so it has no impact on front-end performance unless you trigger an operation like an export or scan.

Yes. These are standard, safe database operations. DBDumpWP only allows actions that WordPress or MySQL would normally perform. However, it is always recommended to take a database export before running maintenance tasks.

If an export fails due to server limits such as memory or execution time, no changes are made to your database. You can try again, adjust your server limits, or use selective export (Pro) to reduce the workload and complete the process successfully.

Video Tutorials for DBDumpWP. All video appear in window apart from playlist.

  • Coming Soon!

DBDumpWP - Version History

Version 1.3.1 Minor

2026-04-13
  • ### Changed
  • - Pro module moved from `includes/pro/` to `pro/` at plugin root — consistent with suite convention
  • - Pro-installer updated: unzips to plugin root, verifies `pro/pro.php`, updated asset enqueue paths
  • - `pro/pro.php` internal requires updated from `includes/pro/` to `pro/`
  • - `DBD_PRO_TEMPLATES` constant updated to `pro/templates/`
  • - Languages folder added; `dbdumpwp_backend.pot` created covering all admin-facing strings
  • - Plugin header updated with `Text Domain: dbdumpwp` and `Domain Path: /languages`

Version 1.3.0 Major

2026-04-08
  • Added Scheduled Exports (Pro) — daily, weekly, or monthly exports to local uploads folder and/or Dropbox with configurable retention
  • Added WP-Cron heartbeat REST endpoint for reliable scheduling on low-traffic sites via external ping services
  • Added Email export destination — send SQL/ZIP/GZ dumps up to 10 MB directly to any email address (free tier)
  • Export destination order updated to Local | Email | Dropbox
  • Added Optimise persistence — recently optimised tables show ✓ OK after tab switches using a 1-hour transient
  • Added ANALYZE TABLE after OPTIMIZE TABLE to flush MySQL stats immediately
  • Added Scheduled export notifications in Settings — \"Export complete\" and \"Export failed\" triggers under a dedicated Scheduled Exports column
  • Fixed security scan issue count on dashboard card — now counts flagged categories not individual flags
  • Fixed Optimise All column shift — corrected cell index mapping in updateOptimiseRow()
  • Added table card colour key in Tables sidebar — blue = WordPress Core, green = Plugin, purple = Other/Custom
  • Removed DejaVu font files from dompdf (7 MB saving)

Version 1.2.6 Major

2026-04-05
  • Added Cloud Destinations tab in Export panel — Dropbox active, Google Drive and Amazon S3 displayed as coming soon
  • Added Export and Tables settings card with default format, history limit, and browse rows-per-page options
  • Added Security Scan settings card with configurable admin login days and modified files hours thresholds
  • Added danger banners on high-risk security fix guides (table prefix change, salts regeneration, file permission changes) prompting users to back up before proceeding
  • Added full transient list in Optimise panel with Expired / Active / No Expiry status badges and per-transient details
  • Improved Dropbox connection status badge and Test Connection button UX

Version 1.1.2 Patch

2026-04-06
  • Added dashboard overview cards for Recent Exports, Health, Security, Optimise, and Tables
  • Overhauled Settings panel with live threshold previews for autoload and overhead values
  • Added table category filter (WordPress Core / Plugins / Other) to Tables panel
  • Added Health check icon set for clearer pass/warning/fail status at a glance

Version 1.0.0 Major

2026-04-02
  • Initial development candidate

FliipsterWP

Here you can access everything related to FliipsterWP, including its FAQ on the left and full documentation on the right. You’ll also find the latest changelog and a direct link to the plugin’s tutorial on the Rob Art YouTube channel. Select the item you need to get started. Return to main plugin page here!

No. FliipsterWP uses PDF.js to render PDFs directly in the browser, so no server-side conversion or image processing is required.

Yes. Simply use a shortcode to place a flipbook in any page or post, with support for multiple instances on the same page.

Yes. The viewer is fully responsive and supports touch interactions like drag-to-flip on mobile and tablet devices.

No. Scripts and assets only load on pages where a flipbook is used, and everything runs client-side without external dependencies.

It tracks views, read depth, time spent, and device type, giving you insight into how users interact with your publications.

Video Tutorials for FliipsterWP. All video appear in window apart from playlist.

  • Coming Soon!

FliipsterWP - Version History

Version 1.3.0 Minor

2026-04-29
  • ### RTL Mode
  • - Full RTL rework — replaced `bookGroup.scale.x = -1` mirror hack with proper page-order reversal, correct hinge direction, and correct flip animations
  • - RTL sheets now hinge on the right; rotation goes 0 → +Ï€ (forward) matching physical right-to-left book behaviour
  • - Textures assigned in reverse order for RTL; spine shadow baked on correct (odd) pages
  • - `deformPage` curl formula uses per-sheet `rtl` flag so curl arcs in the right direction
  • - `raycastSheet` NDC x threshold inverted for RTL — unflipped pages sit on the left side of screen
  • - Drag direction corrected for RTL (`dragDir = +1`) — drag right to advance, drag left to reverse
  • - Corner click detection uses RTL-aware flipped threshold and world corner positions
  • - `onPointerUp` snap target `t` uses correct sign for RTL rotation
  • ### Controls & Layout
  • - Outside-mode controls bar height included in `syncPadding` — wrap expands to fit controls below book
  • - Outside controls centred via flex column on wrap; no longer left-aligns after fullscreen exit
  • - Fullscreen exit handler restores flex layout for outside-mode wraps
  • - All popup panels (shelf, thumbnails, more, settings) open downward when controls are positioned at top
  • ### Info Panel
  • - Tab switch now does a full HTML rebuild — show/hide field flags applied correctly for each book
  • - Logo and credit line preserved correctly after tab switch
  • ### Admin — General Book Info
  • - Logo media picker now filters to images (PNG/SVG) not PDFs
  • - Logo preview updates immediately in the info panel preview on select or clear
  • - Logo hint updated: \\\"PNG or SVG, 800px wide ideal\\\"
  • ### Collections (Bookshelf)
  • - Separate `flwp_collection` CPT registered alongside `flwp_flipbook`
  • - Switching to shelf mode when a book title/PDF is already set prompts for confirmation before discarding
  • - Save button label updates to \\\"Save Collection\\\" in shelf mode
  • - Shortcode and list page accept both post types
  • ### Engine
  • - Spine shadow CSS overlay now tracks the book correctly when panned or zoomed

Version 1.2.2 Minor

2026-04-18
  • ### Changed
  • - Languages folder added; `fliipsterwp_backend.pot` and `fliipsterwp_frontend.pot` created covering all admin and visitor-facing strings
  • - `pro/` folder structure confirmed at plugin root; loader path verified consistent with suite convention

Version 1.2.1 Minor

2026-04-13
  • ### Viewer
  • - Spine shadow restored — CSS gradient overlay, ramps in at 25% turn, peaks at 50%, fades to ~10% on land, hidden on cover page
  • - Spine shadow hidden on cover/first page, fades in smoothly on first flip
  • - Info panel now dismisses immediately on drag start (previously only on click)
  • - Settings/dev panel disabled in admin preview mode — button hidden, blur overlay removed
  • ### Admin Preview
  • - Preview well height fixed — no longer grows when book height setting is changed
  • - Preview always renders at fixed internal height (600px) regardless of height setting
  • - Outside controls mode no longer inflates the preview well
  • - Popup panels (thumbnails, more menu) now position correctly inside the scaled preview
  • - All popup open functions corrected for CSS transform scale factor
  • ### Statistics
  • - Per-book colour palette — each fliipbook assigned a consistent colour across all charts
  • - Views bar chart and avg time bar chart now use per-book colour instead of global accent
  • - Scatter chart dots now use per-book colour for consistency
  • - Styled hover tooltips on scatter dots, views bars, and time bars — show book name + metric
  • ### Edit Page
  • - Sidebar expanded with descriptions for PDF Source, Appearance, Controls, Info Panel, and Auto Flip sections

Version 1.2.0 Major

2026-04-13
  • ### Admin / Dashboard
  • - Statistics page (`admin.php?page=fliipsterwp-stats`) — all-time totals + per-flipbook breakdown with inline bar charts and colour-coded read depth
  • - Dashboard stats overview simplified to 4 headline numbers with \\\"Full Report\\\" link
  • - Dashboard \\\"Your Fliipbooks\\\" table — added Author and Pages columns, sourced from PDF metadata saved at edit time
  • - Quick Actions sidebar — added \\\"Create Fliipbook\\\" and \\\"View Statistics\\\" buttons
  • - About sidebar — expanded with feature highlights and inline User Manual · README · Licence links
  • - Statistics submenu added to admin navigation
  • ### Viewer Settings panel (replaces Dev Settings)
  • - Clean user-facing panel: Flip Speed, Curl Amount, Interaction mode, Pan Direction
  • - Pro section: Auto Flip toggle, Controls Position, Controls Mode
  • - Panel tracks scroll position; backdrop blur overlay closes panel on click
  • - Segmented controls and toggle switch theme-proofed with `!important` overrides
  • ### RTL support
  • - `bookGroup.scale.x = -1` mirrors entire Three.js book geometry for right-to-left page order
  • - Arrow key and drag direction inverted for RTL
  • - Info panel repositions to opposite side in RTL mode
  • - `dir=\\\"auto\\\"` on all text inputs in admin (excluding URL fields)
  • - `data-rtl` attribute wired through shortcode and admin preview
  • ### Auto-flip
  • - `startAutoFlip()` / `stopAutoFlip()` functions in engine; loops back to start at end
  • - Wired to settings panel toggle and `data-autoflip` / `data-autoflip-delay` attributes
  • - Saved as Pro meta fields `auto_flip` and `auto_flip_delay`
  • ### Share overlay
  • - Social icons replaced with custom `_white` SVG image files
  • - WhatsApp replaced with BlueSky (`bsky.app/intent/compose`)
  • - Copy button replaced with clickable clipboard SVG icon
  • ### Bug fixes
  • - `shadowRight` div removed — was rendering a rectangle shadow over pages during flip
  • - Shelf mode → single mode toggle now repopulates the name field from the PDF filename
  • - Settings panel close button duplicate listener removed
  • - `flwp_rtl` added to `rebuildFields` selector so RTL toggle updates admin preview live
  • ### Branding
  • - \\\"Flipbook\\\" → \\\"Fliipbook\\\" throughout all user-facing admin UI strings
  • - Code identifiers, slugs, and post types unchanged
  • ### PDF metadata
  • - `pdf_author` and `pdf_pages` saved as post meta when flipbook is opened and saved in editor
  • - Sourced from PDF.js `getDocument` / `getMetadata` — no server-side processing

Version 1.1.0 Major

2026-04-12
  • WebGL engine integrated as the primary rendering backend, replacing the CSS-based StPageFlip engine.
  • See **WebGL Engine Development** section below for the full engine history.
  • ### Admin / Settings
  • - **Flipbook editor** — full settings page per flipbook with live admin preview
  • - **Appearance card** — flip style, speed, curl amount, cover mode, padding (global +
  • width-only), height, background colour, drop shadow, corner radius, RTL
  • - **Controls card** — arrows toggle, interaction mode (click/drag/both), download button,
  • page numbers, pan direction
  • - **Pro Features card** — auto-flip + delay, zoom, pan, controls position/mode/distance,
  • fullscreen, thumbnails, sound + sound file, hide credit
  • - Admin preview reflects all setting changes live
  • - Outside controls mode expands preview container height accordingly
  • - WP admin sidebar kept expanded on flipbook edit and flipbooks list pages
  • ### New features
  • - **Bookshelf mode** — group multiple PDFs into a single flipbook with a shelf selector
  • - **Info panel per-book overrides** — title, author, subject, keywords, date with
  • optional per-book override toggle; info logo (Pro); custom background, title, and text colours
  • - **Sound effects** — page-turn sounds with selectable sound file (Pro)
  • - **View tracking** — records views, pages seen, and read-depth per flipbook session
  • with cookie-based deduplication (2-hour window)
  • - **Stats helpers** — `flwp_stats_totals()`, `flwp_stats_per_flipbook()`,
  • `flwp_stats_for_flipbook()` for analytics dashboard (dashboard UI planned)
  • - **Dev bypass** — `FLWP_DEV_KEY` / `FLWP_DEV_TIER` constants in `wp-config.php`
  • for local development without a live licence key
  • ### Licensing
  • - Lemon Squeezy licence activation and deactivation via REST API
  • - Pro-only fields gated server-side in `flwp_flipbook_save()`

Version 0.2.0 Major

2026-04-12
  • #### Added
  • - **Config snapshot & reset** — `FlwpWebGL._configDefaults` stores a snapshot of all
  • per-instance config values at load time; `init()` resets before applying data-attribute
  • overrides, preventing singleton pollution across admin preview rebuilds
  • - **Cover mode: centre** — `data-cover-mode=\\\"centre\\\"` shifts the book left so a single
  • cover page is centred on load; `requestAnimationFrame` initial `clampPan()` ensures
  • position applied before first interaction
  • - **Cover centre tween** — `animateCoverShift()` smoothly tweens `coverOffsetX` from
  • centred to spread on first flip, and reverses when flipping back to cover
  • - **Visibility flags** — `SHOW_ARROWS`, `SHOW_PAGENUMS`, `SHOW_DOWNLOAD`, `SHOW_ZOOM`,
  • `SHOW_PAN`, `SHOW_FULLSCREEN`, `SHOW_THUMBNAILS`, `SHOW_SOUND` read from data attributes;
  • buttons hidden and interactions gated accordingly
  • - **Container appearance** — `data-drop-shadow`, `data-corner-radius` applied to wrap
  • element in `init()`
  • - **Controls layout from data attributes** — `buildDevPanel` returns `{ applyLayout }`;
  • `init()` calls it with `data-ctrl-pos`, `data-ctrl-mode`, `data-ctrl-dist` for initial
  • controls position/mode without dev panel interaction
  • - **Credit line** — \\\"Created by FliipsterWP WordPress plugin [year]\\\" in info panel footer;
  • suppressed when `HIDE_CREDIT = true` (`data-hide-credit=\\\"true\\\"`)
  • - **Corner radius dev panel slider** — applies `borderRadius` to wrap element
  • - **`shadowRight` div** — was missing from scene setup, causing `ReferenceError` in render loop
  • #### Changed
  • - `buildDevPanel` returns `{ applyLayout(pos, mode, dist) }` for external initialisation
  • - `init()` resets all per-instance Config fields before reading dataset overrides
  • - `onPointerMove` pan handler early-exits if `C.SHOW_PAN === false`
  • - Wheel zoom gated by `C.SHOW_ZOOM`, wheel pan gated by `C.SHOW_PAN`
  • - `soundEngine.enabled` set to `false` when `C.SHOW_SOUND === false`
  • #### Fixed
  • - Cover mode centre not applying on load — `bookGroup.position` was never set until
  • first user interaction; fixed by calling `clampPan()` on init via `requestAnimationFrame`
  • - Config singleton pollution — switching cover mode in admin preview left `COVER_MODE`
  • set for subsequent rebuilds
  • - `shadowRight is not defined` ReferenceError — element was never created in scene setup

Version 0.1.3 Minor

2026-04-11
  • #### Fixed
  • - Z-order during forward flip — active sheet always renders on top via `activeSheet`
  • index tracked separately from `currentFlip`
  • - UV coordinates flipped on back geometry — left-side pages no longer mirrored
  • - `polygonOffset` added to all materials to reduce z-fighting between stacked sheets
  • - Page number display correct from first load (was showing \\\"2–3/5\\\" on cover)
  • - Page count no longer overshoots total (was showing \\\"6/5\\\" on last page)
  • - Poll loop now checks `pdfjsLib` instead of removed MOD3 library
  • #### Changed
  • - `updateZOrder()` now accepts `activeSheet` parameter instead of inferring from rotation
  • - `updatePageNum()` rewritten — shows spread format \\\"2–3 / 5\\\", handles odd page counts
  • - `updateZOrder()` only called per-frame while a flip is active (performance)

Version 0.1.2 Minor

2026-04-11
  • #### Fixed
  • - Camera now correctly fits the open book spread (2×pW wide, pH tall) using proper
  • vertical/horizontal FOV calculation — tightest axis wins
  • - Book centred in viewport (was offset to right)
  • - `renderer.setPixelRatio(1)` — DPR scaling was making canvas 2× container size
  • - `THREE.PlaneGeometry attributes.position undefined` — fixed by switching to three.r128.min.js
  • - Texture resize to 512×512 eliminated (workaround no longer needed with r128)
  • #### Changed
  • - Replaced old bundled Three.js with `three.r128.min.js` (r128 PlaneGeometry IS a BufferGeometry)
  • - `TEX_SCALE` reverted to 1.5 (was reduced to 0.6 as workaround for 512px limit)
  • - Front and back meshes now use separate cloned geometries
  • - `deformPage()` deforms both `geoFront` and `geoBack`
  • #### Removed
  • - MOD3 library entirely — its Three.js adapter uses the legacy `geometry.vertices` API,
  • incompatible with r128 BufferGeometry

Version 0.1.1 Minor

2026-04-11
  • #### Added
  • - WordPress admin menu page (dashicons-book-alt)
  • - PDF selection via WP Media Library picker (`wp_enqueue_media`)
  • - Poll loop waits for `FlwpWebGL` + `THREE` + `pdfjsLib` before init
  • - Inline POST save in page callback (avoids headers-already-sent on redirect)
  • - First / Last page jump buttons
  • - Keyboard arrow key navigation
  • #### Fixed
  • - Scripts moved to `admin_enqueue_scripts` hook (were inside page callback — too late)
  • - Controls direction corrected (next/prev were reversed)
  • - Cover pages now use higher segment count (COVER_SEG=20) and higher hardness (COVER_HARD=10)

Version 0.1.0 Major

2026-04-10
  • #### Added
  • - Initial plugin scaffold
  • - Three.js WebGL renderer with PDF.js texture pipeline
  • - `PlaneGeometry` cylindrical curl via BufferGeometry vertex deformation
  • - Bend force formula: `1.35 × sin(angle/2) / hardness^1.5`
  • - `easeInOutCubic` flip animation (FLIP_MS=900)
  • - Front/back mesh per sheet with FrontSide/BackSide materials
  • - Drag-to-flip (both directions, raycasted hit detection, 35% threshold commit/snap-back)
  • - Corner click-to-flip (bottom outer corners, NDC world-projection detection)
  • - Grab/pointer cursor feedback
  • - Spine shadow — gradient baked into back-face textures at load time
  • - Thumbnail panel — lazy-rendered grid, click to jump, spring open/close animation
  • - Zoom — scroll wheel, pinch-to-zoom, +/- buttons, 1:1 reset
  • - Pan — Alt/Cmd + drag or scroll, clamped to book extents
  • - Floating controls bar — transparent pill, configurable position (top/bottom, over/outside)
  • - Book-bound sizing — width always derived from height × spread aspect ratio, never full-width
  • - No first-load flash — `visibility:hidden` until JS sets correct width
  • - Info panel — PDF metadata (title, author, subject) positioned in left slot using
  • camera world→pixel projection
  • - Z-order management for stacked sheets (`renderOrder`, `depthTest`)
  • - Resize handler
  • - Modularised into 5 JS files: `flwp-config.js`, `flwp-geometry.js`, `flwp-textures.js`,
  • `flwp-ui.js`, `flwp-book.js`

Version 1.0.0 Major

2026-04-08
  • - Beautiful page-turning PDF viewer via `[fliipsterwp]` shortcode
  • - Custom post type (`flwp_flipbook`) for managing flipbooks
  • - Hard and soft page-turn styles (soft = Pro)
  • - Auto-flip with configurable delay (Pro)
  • - Zoom, fullscreen, and thumbnail strip (Pro)
  • - Download button, RTL support, page numbers, arrow controls
  • - Global default settings with per-flipbook overrides
  • - Lemon Squeezy licence activation / deactivation
  • - Activation splash / setup screen
  • - Background colour and height controls

LinguifiWP

Here you can access everything related to LinguifiWP, including its FAQ on the left and full documentation on the right. You’ll also find the latest changelog and a direct link to the plugin’s tutorial on the Rob Art YouTube channel. Select the item you need to get started. Return to main plugin page here!

LinguifiWP scans your posts, pages, and custom post types, extracting titles, content, and excerpts into a translation queue without duplicating existing entries.

No. LinguifiWP works independently of your theme, handling translations and language switching without requiring any theme modifications.

Yes. PRO users can enable AI auto-translation using providers like DeepL, Google Translate, or OpenAI, with automatic fallback between services if one fails.

Yes. LinguifiWP supports CSV, PO, JSON, and ZIP formats, allowing you to move translations in and out or use tools like Google Sheets for bulk workflows.

No. All translations are stored in the WordPress database, so they remain safe and unaffected by plugin updates.

Video Tutorials for LinguifiWP. All video appear in window apart from playlist.

  • Coming Soon!

LinguifiWP - Version History

Version 0.3.1 Minor

2026-04-19
  • ### Changed
  • - Languages folder added; `linguifiwp_backend.pot` and `linguifiwp_frontend.pot` created covering all admin and visitor-facing strings
  • - `pro/` folder structure confirmed at plugin root; loader path verified consistent with suite convention

Version 0.3.0 Major

2026-04-17
  • - Added Dashboard doc modals — User Manual, README, and Licence open in scrollable in-panel readers
  • - Added free-tier language enforcement — on licence expiry, excess target languages are deactivated (data preserved, re-enabled on PRO restore)
  • - Added free-tier design enforcement — switcher style resets to Dropdown on licence expiry
  • - Added amber notice in Languages panel when languages have been deactivated due to tier change
  • - Added full WP.org-format readme.txt, README.md, GPL v2 licence, and docs/manual.md
  • - Fixed toggle AJAX to block re-enabling a second language on free tier

Version 0.2.0 Major

2026-04-17
  • - Added AI auto-translation with DeepL, Google Translate, and OpenAI provider chain with automatic fallback
  • - Added AI usage tracking with per-provider progress bars (lifetime / monthly / running total)
  • - Added Side Tab switcher type — tab docked to left or right viewport edge (PRO)
  • - Added Flags Expand mode — single flag expands to full list on click
  • - Added Custom CSS editor with CodeMirror and live preview (PRO)
  • - Added Google Sheets GOOGLETRANSLATE workflow tutorial in Converter (PRO)
  • - Added theme-aware nav menu placement — detects footer menu support automatically
  • - Fixed inline switcher separator — now renders as real HTML element (CSS content: var() limitation)
  • - Wired flag size CSS variable to frontend switcher output
  • - Added full theme reset CSS across all switcher types

Version 0.1.3 Major

2026-03-30
  • ### Added
  • - Dashboard fully built — 9 cards with live DB queries: System Overview (DB health/write/size/prefix, string totals, licence), Translation Progress (per-language bars + totals row), String Types, Translation Status, Scanner Status, Languages, Needs Review, Orphaned Strings, Recent Activity
  • - Quick Actions moved from card to sidebar — reversed-out buttons on brand blue background
  • - Brand blue card headers across all dashboard cards — alert cards use amber
  • - Sidebar `align-items: stretch` — full height on all panels
  • - Upgrade button in all admin page headers — tier-aware (Free → PRO, Pro → Premium, Premium → hidden)
  • - `admin/partials/header-upgrade.php` — shared partial for header upgrade button
  • - Review notice (`admin/review-notice.php`) — 30-day trigger, \"Already did\", \"Remind me later\" (14-day snooze), permanent dismiss
  • - System compatibility check in Wizard Step 8 — PHP, WP, MySQL, mbstring, DOM, SimpleXML, OpenSSL, php-parser, DB writeable, theme writeable. Collapsible, auto-expands on failure
  • - Settings sidebar: Author & Licence, Credits & Thanks (nikic/php-parser, Claude/Anthropic, WordPress community), Support placeholder, Debug Information block with copy-to-clipboard button
  • - `.lfi-body` / `.lfi-main` / `.lfi-sidebar` layout system replacing `.lfi-content` — consistent across all 7 panels
  • - `.lfi-btn` button system — primary, secondary, full-width variants
  • - Badge system — warn (amber), alert (red), info (blue)
  • - Dashboard stat group labels — brand blue section dividers within cards
  • ### Decisions Made
  • - Converter must support translation import: JSON, PO/POT, CSV — critical for migration from WPML/Loco/TranslatePress. Imported translations always saved as draft. See planning-log.md Converter section.
  • - Quick Actions belongs in sidebar not as a card — it\'s navigation, not data
  • - Debug info in Settings sidebar — users copy-paste for support requests
  • - Credits include Claude (Anthropic AI) as co-author

Version 0.1.2 Major

2026-03-29
  • ### Added
  • - Plugin scaffold built and activated on Local test site
  • - Full admin menu registered: Dashboard, Scanner, Translations, Languages, Design, Converter, Settings
  • - Splash screen — dual purpose (first-install welcome + post-update what\'s new), no header/footer chrome, centred card layout, JS panel swap (intro → wizard setup), copyright footer
  • - Setup Wizard — 8 steps, fully wired with AJAX, step indicator, PRO gate
  • - Step 2: DB creation with backup warning overlay, live table preview, one-way confirmed state
  • - Step 3: Source language — searchable list, saves to settings + `wp_lfi_languages`
  • - Step 4: Translation languages — Free tier enforces single selection with notice, Pro allows multi-select
  • - Step 5: Wrapper function — live preview, saves to settings
  • - Step 6: Scanner scope — frontend/backend toggle, PRO-locked items greyed out
  • - Step 7: Licence activation — real AJAX to licence server, back button locked during install
  • - Step 8: Ready screen — live DB health check, full config summary, fires `lfi_wizard_complete` hook
  • - `admin/wizard-ajax.php` — all AJAX handlers with nonce validation and capability checks
  • - `admin/design.php` — Design page with Language Switcher and Custom CSS tabs (stub)
  • - `admin/wizard-ajax.php` — `lfi_available_languages()` helper, `lfi_check_db_writeable()` helper
  • - Tier state (`lfiData`) passed to all admin JS via `wp_localize_script`
  • - Composer installed, `nikic/php-parser` v5.7.0 added as dependency
  • - `.gitignore` created — vendor/ excluded
  • - Tab CSS component added to `admin.css`
  • - Overlay CSS component added to `admin.css`
  • - DB tables confirmed created and writeable on test site
  • ### Fixed
  • - Language codes lowercased throughout to survive `sanitize_key()` in AJAX handlers
  • - Menu icon now uses base64 inline SVG to render correctly at 20px in WP admin sidebar
  • - Header/footer constrained to 95% width to prevent overflow
  • ### Decisions Made
  • - Menu order locked: Dashboard → Scanner → Translations → Languages → Design → Converter → Settings (Settings always last)
  • - \"Manage Translations\" shortened to \"Translations\" in menu
  • - Design panel created for Language Switcher and Custom CSS — separate from Settings (config vs presentation)
  • - Wizard icons in brand blue — separate `_blue` SVG exports per icon
  • - Language codes stored lowercase internally (`en_gb` not `en_GB`) to avoid sanitize_key conflicts
  • - Backup warning overlay required before any DB write operation — Rob Art | Illustration not liable for data loss

Version 0.1.1 Major

2026-03-29
  • ### Added
  • - Language switcher spec (`/spec/language-switcher.md`)
  • - AI auto-translate spec (`/spec/ai-auto-translate.md`)
  • - Positioning & marketing notes (`/notes/positioning.md`)
  • ### Decisions Made
  • - Test site content spec written (`/spec/test-site-content.md`)
  • - Splash screen confirmed as separate from wizard — dual purpose: first-install welcome + post-update what\'s new
  • - UI philosophy defined: Apple-influenced simplicity, whitespace, restraint, the screenshot test
  • - Wizard Step 1 (Welcome) simplified — splash now handles first-run orientation
  • - Backend string translation made opt-in — frontend-only is the default, admin stays clean
  • - Scanner architecture researched and specced (`/spec/scanner-architecture.md`)
  • - Tier model revised: Free / Pro / Premium (was Free / Starter / Pro)
  • - AI auto-translate is Premium-only — requires API key setup, not casual feature
  • - Auto browser language detection added — Free tier
  • - SEO meta translation (title, description, slug) added — Pro tier
  • - AI auto-translate always saves as draft — human review before publish, non-negotiable
  • - OpenAI (Priority 1, Rob has account) and Google Translate (Priority 2) as initial providers
  • - Core tagline confirmed: \"Built for people who actually manage translations, not for people who want to install and forget\"
  • - Strategic position: target users burned by complexity of WPML / TranslatePress / Weglot

Version 0.1.0 Major

2026-03-28
  • ### Added
  • - Project folder structure created
  • - Planning log started (`/notes/planning-log.md`)
  • - Setup Wizard spec (`/spec/wizard.md`)
  • - Database schema spec (`/spec/database-schema.md`)
  • - Page builder compatibility spec (`/spec/builder-compatibility.md`)
  • - Licensing and distribution spec (`/spec/licensing-and-distribution.md`)
  • ### Decisions Made
  • - Plugin name confirmed: LinguifiWP
  • - Single database architecture — no legacy options-based system
  • - Modular extension architecture for free/PRO split
  • - Auto-generated scoped string keys (origin-aware dot notation)
  • - Two translation mechanisms: PHP wrapper + content map swap for builders
  • - Tier system: Free, Starter, Pro, Agency, Lifetime with colour-coded SVG badges
  • - Distribution: Lemon Squeezy (phase 1), EDD (phase 2)
  • - Minimum requirements: WordPress 6.0+, PHP 8.0+, MySQL 5.7+
  • - Admin panel chrome: header flush to top edge (rounded bottom corners), footer bar (rounded top corners)
  • - Header/footer colours: `#5184b3` background, `#f5f7f9` text — confirmed from Refuge Translations
  • - Curated UI theme choices in settings (WCAG AA compliant, no free colour picker)
  • - File header comments on all files — templates in BRAND.md
  • - Versioning: strict v{MAJOR}.{MINOR}.{PATCH}, PATCH 0–100
  • - Session start prompt system in place — START-HERE.md at plugin and Commercial Plugins level

StatFloWP

Here you can access everything related to StatFloWP, including its FAQ on the left and full documentation on the right. You’ll also find the latest changelog and a direct link to the plugin’s tutorial on the Rob Art YouTube channel. Select the item you need to get started. Return to main plugin page here!

No. StatFloWP does not use cookies or store any personally identifiable information. IP addresses are used only briefly to determine approximate location and are never saved.

No. Tracking runs server-side on the WordPress shutdown hook, after the page has loaded, so it does not affect page speed or user experience.

It tracks visits, unique users, referrers, devices, geography, behaviour metrics like scroll depth and time on page, downloads, and multi-page sessions—all stored locally in your database.

No. Because no cookies or personal data are collected, StatFloWP does not require a GDPR cookie consent banner for its analytics

Yes. You can generate PDF reports in all versions, and Pro/Premium users can export detailed data as CSV files for further analysis.

Video Tutorials for StatFloWP. All video appear in window apart from playlist.

  • Coming Soon!

StatsFloWP - Version History

Version 1.4.3 Minor

2026-04-17
  • ### Fixed
  • - Devices > Browser & Version chart: legend no longer deforms layout; capped at 4 version rows with overflow slice
  • - Devices > Screen Resolution: classifier rewritten — correctly distinguishes Mobile Portrait, Mobile Landscape, Tablet, Ultrawide, and Widescreen by dimension and aspect ratio
  • - Behaviour > Scroll Depth: percentage now calculated only from visits with recorded scroll data, excluding unrecorded/dropped visits from denominator

Version 1.4.2 Minor

2026-04-14
  • ### Changed
  • - PRO module split: all Pro and Premium files moved from `includes/pro/` and `includes/premium/` into a unified `pro/` folder at plugin root; loader updated to glob `pro/*.php`
  • - Pro-installer updated to unzip into plugin root with `pro/` folder structure
  • - Security report template path updated to `pro/templates/security-report.html`
  • - Languages folder added; `statflowp_backend.pot` created covering all admin-facing strings

Version 1.4.1 Minor

2026-04-12
  • ### Added
  • **Visitor ID column** on Visitors page — anonymised 8-character hash prefix lets you spot repeat visitors without storing any personal data; column is sortable (Pro)
  • **Visitor ID column** on Security Monitor attempts table — cross-reference attackers against known visitors
  • **Whitelist action** on Security Monitor attempts — mark a failed attempt as \"not a threat\" to move it to a whitelist filter and remove it from the concern view (Premium)
  • **Security PDF report** (Premium) — printable PDF covering total/failed/successful attempts, unique IPs, real account probes, top targeted usernames, most aggressive IPs, and recent attempts log
  • **Security CSV export** (Premium) — full login attempts export with all fields; logs to report history
  • **CSV delimiter setting** in Settings → General — choose comma (default) or semicolon (Excel Europe); applies to all CSV exports across the plugin
  • **Live traffic map enhancements** (Pro/Premium) — scroll/pinch zoom, click-to-zoom on countries, click ocean to reset; city dots (Premium) flash on new arrivals and accumulate up to 50 locations
  • **City column** in live traffic feed table (Premium)
  • **Threat origin map enhancements** (Premium) — same zoom/click behaviour as the main geography map; city dots sized by attempt count with tooltip
  • **Smart TV and Games Console device detection** — `sfw_parse_device()` now recognises WebOS, Tizen, Roku, Fire TV, Apple TV, PlayStation, Xbox, and Nintendo platforms
  • **TV and Games Console icons** — `📺` / `🎮` emoji and `tv_blue` / `games_blue` SVG icon variants for device type display
  • **Security quick action** on dashboard (Premium) — Security link added to Quick Actions alongside existing links
  • ### Fixed
  • Session duration always showing `—` — duration now recalculated on every session write using `TIMESTAMPDIFF`; display falls back to `updated_at − started_at` for legacy zero-duration rows
  • 404 bot detection false negatives — zero-engagement visits (scroll=0, time=0, load=0) now classified as bot regardless of URL pattern
  • Security Monitor chart rendering blank — JS index variable was `_` instead of `i` in stacked bar arrow function
  • Manual flush archiving nothing — flush now correctly archives all rows when triggered manually, not just rows older than 30 days
  • Settings General card label overflow — `white-space:normal` on `th`, description text reduced to 10px with tighter line-height
  • ### Changed
  • CDN expanded to \"CDN (Content Delivery Network)\" in Behaviour page slow-load recommendations
  • Security attempts table columns reordered: Time, Username, Visitor, IP, Account, Status, User Agent, Action

Version 1.4.0 Major

2026-04-10
  • ### Added
  • **Security Monitor page** (Premium) — dedicated submenu page with four tabs: Overview (D3 choropleth threat map with amber→red gradient, blue sea, green hover; stat cards; recent attack log), Brute Force, Credential Stuffing, and Live Log tables
  • **Security alert email notifications** (Premium) — rate-limited HTML emails via `wp_mail` for four event types: brute force (>threshold failures from single IP), real account probe (known username targeted), possible compromise (successful login after recent failures), and credential stuffing (single username targeted from multiple IPs); all rate-limited via WordPress transients
  • **Security Monitor settings card** (Premium) — retention period dropdown, brute force threshold input, track-success-logins checkbox
  • **Security Alerts settings card** (Premium) — master enable toggle, recipient email input, individual enable/disable for each alert type
  • **Compare page** (Pro+) — Period Comparison tab with four date pickers, six stat cards with change indicators, and a D3 dual-line chart (blue/amber) with top pages change table; Year on Year tab with period length selector auto-calculating the same period one year prior
  • **New vs Returning visitors tab** (Pro+) — uses ip_hash comparison against pre-period visits to classify each visitor; per-day new/returning breakdown; six stat cards with progress bars; stacked D3 bar chart; source breakdown table
  • **CSV export on Reports page** (Pro+) — exports for visits log, top pages, referrers, countries, and devices; shared period selector; all exports logged in the existing report history with the same badge/status pattern as PDF reports
  • **MaxMind GeoLite2 automatic installer** — Settings → MaxMind tab: enter licence key, click Install, progress bar tracks download and extraction; uses `wp_remote_get` with `stream:true` and PHP `PharData` for tar.gz extraction without shell access; saves to `SFW_ARCHIVE_DIR` (one level above webroot); updates both `sfw_maxmind_license` and `sfw_maxmind_db_path` options; Manual Configuration section still available below
  • **GeoLite2 sidebar notice** — amber sidebar card auto-injected on all plugin pages (via `sfw_subpage_footer()`) when the configured mmdb file is missing; includes a direct link to the MaxMind installer in Settings
  • **Daily Aggregates purge card** in Settings — shows row count, table size (via `information_schema`), date range, and a calculated safe-purge-before date; date picker for purge cutoff; YoY safety warning if purging data within the comparison window; AJAX purge handler returns deleted row count
  • **Dashboard trend percentage pills** (Pro) — replaces plain arrow indicators with coloured percentage pills: green for positive, red for negative, grey for no change; free tier retains arrow indicators
  • ### Fixed
  • Settings cards overflowing the right edge of the container — grid template changed from `1fr 1fr 1fr` to `repeat(3, minmax(0,1fr))`; `min-width:0` added to `.sfw-settings-card` and `.sfw-settings-card-body`; `word-break:break-word` added to card body
  • `form-table th` labels wrapping to vertical single characters in narrow settings cards — added `white-space:nowrap; width:120px; min-width:120px` to card-scoped `form-table th`
  • ### Changed
  • Settings → MaxMind tab fully redesigned: Automatic Installer panel at top with progress bar and inline status, Manual Configuration section below
  • Security Monitor enqueues on hook `statflowp_page_sfw-security` (submenu hook) rather than `toplevel_page_`

Version 1.3.0 Minor

2026-04-09
  • ### Added
  • **Behaviour page** — overview with scroll depth funnel, time-on-page distribution, and load time traffic-light D3 charts; Scroll, Time, Load, and Sessions tabs; per-page behaviour tables (Pro); bounce rate by page chart (Pro)
  • **404 page** — D3 horizontal bar chart with real vs bot colour coding; broken URL log with top referrer column; bot detection via UA and path pattern matching; external referrer outreach table with Find Contact and Copy Email tools (Pro); clear history button
  • **Reports page** — DOMPDF PDF generation for Traffic Summary and 404 Error reports; date range selector; report history log with status badges; clear history button
  • **Screen resolution treemap** (D3) on Devices page — resolutions grouped by category (Widescreen, Mobile Portrait, Mobile Landscape, Tablet, Ultrawide) with colour coding
  • **OS two-column layout** on Devices page — inner donut for OS family, outer rings for version breakdown
  • **Universal table sort** — all `.sfw-table` tables with `sfw-th-sort` headers now sort correctly; numeric-aware comparator handles counts, percentages, milliseconds, and duration strings; visitors.js paired-row sort preserved separately
  • **User Manual modal** — full 18-section manual rendered from `/docs/manual.md` with internal anchor scrolling via table of contents
  • **README modal** — plugin README rendered from `/README.md`; both modals accessible from dashboard sidebar
  • **Icons** — SVG icons added to all page headers, dashboard stat cards, section titles, and device type rows
  • **Behaviour charts** — three D3 charts on overview tab; traffic-light coloured Y axis labels on load chart; dropoff annotations on scroll funnel
  • ### Fixed
  • Behaviour chart labels clipping off right edge — increased right margin on time and load charts
  • Load chart traffic-light dots overlapping Y axis text — replaced dots with coloured axis labels
  • Table sort not functioning on Devices, Geography, Referrers, Pages, and Behaviour pages — sort logic was only in visitors.js; moved universal handler to admin.js
  • Manual modal anchor scroll failing on headings with numeric IDs — replaced `querySelector(\'#id\')` with `querySelector(\'[id=\"id\"]\')` to handle CSS-invalid selectors
  • `DOMContentLoaded` listener firing too late for footer scripts — replaced with direct call after DOM is ready
  • ### Changed
  • `Avg session duration` label shortened to `Avg. Session Dur.` on Behaviour overview to prevent card overflow
  • Behaviour overview right chart margin increased from 30px to 90px

Version 1.2.0 Major

2026-04-09
  • ### New Features
  • **Dashboard**
  • Replaced Chart.js with local D3.js v7 (no CDN dependency) for all charts
  • D3 grouped bar chart: Unique, Total and Downloads series with tooltips and responsive resize
  • Chart time ranges: Today · 7 Days · 30 Days · 90 Days (Pro) · 12 Months (Pro) · vs Last Year (Premium)
  • Today chart polls every 30 seconds, pauses when tab is hidden
  • Saved range preference persists in localStorage, falls back gracefully on tier downgrade
  • Trend arrows (▲▼) on stat cards in brand green / deep orange
  • All stat cards converted to `.sfw-card-header` / `.sfw-card-body` blue header style
  • Upgrade to Pro pill link in dashboard header (free tier only)
  • DBDumpWP-style upgrade overlay: two-column modal, seat selector, Pro + Premium pricing, licence activation
  • Lock SVG icons throughout (no emoji) for locked features
  • Behaviour sidebar info block explaining avg scroll, time/page, load time and bounce rate
  • DST-safe hourly chart using `DATE_ADD` with PHP UTC offset
  • **Visitors Page** *(full rebuild)*
  • D3 Sequences Sunburst (Kerry Rodden style): hover breadcrumb trail, equal-area arcs, centre percentage
  • Path depth: 3 levels free, 6 levels Pro
  • Tabbed layout: Visit Log · Downloads · Sources · Sessions
  • Visit Log: flat view with expandable detail chips (browser/OS/lang/screen)
  • Visit Log: By Session view — groups visits by session, expandable path sub-table showing every page with load/scroll/time
  • Flat/By Session toggle persists per page load
  • Column sorting on Visit Log and Downloads (Time, Source, Device, Country, File)
  • Downloads tab: filtered view of file download events, separate CSV export
  • Sessions tab: Pro-gated with upgrade prompt
  • CSV export gated to Pro; free users see locked button triggering upgrade overlay
  • Upgrade overlay included on Visitors page (and all subpages via shared footer)
  • Sidebar: Journey Chart explanation, Visit Log view definitions, Tab definitions
  • **Pages Page** *(full rebuild)*
  • D3 horizontal bar chart replacing plain table for Top Pages
  • Animated bars (staggered entry), hover tooltips, click bar to open page
  • New tabs: Entry Pages (Pro), Exit Pages (Pro), Bounce Rate (Pro)
  • Entry Pages: pages most commonly landed on first
  • Exit Pages: pages visitors leave from most
  • Bounce Rate: per-page bounce % with colour-coded indicators, minimum 3 entries threshold
  • All Pages tab: fixed — now shows unique URLs with proper visit counts (was showing raw log)
  • All Pages: sortable columns (visits, avg scroll, avg time, avg load)
  • avg load time added to Top Pages query and tooltip
  • Sidebar: chart explanation and tab definitions
  • **Referrers Page** *(full rebuild)*
  • D3 horizontal bar chart for By Source tab — each source type coloured distinctly
  • D3 horizontal bar chart for Referrers tab with animated sort transitions (rank-based, object constancy)
  • Sort toggle: By Visits / By Type — bars glide smoothly to new positions (750ms, 20ms stagger)
  • New Performance tab (Pro): per-source engagement table — visits, avg time, pages/session, bounce rate, avg load
  • Bounce rate colour-coded green/amber/red; ★ marks best-performing source
  • Sidebar: tab definitions and source type explanations
  • **Settings Page**
  • New Dev Tools tab (local/development environments only)
  • Seed Data tool: generates up to 2000 realistic fake visits across sessions for UI testing
  • Configurable visit count (10–2000) and days back (7–365)
  • Clear All Data button with confirmation
  • Live row counts update after seed/clear
  • **Global**
  • Upgrade overlay available on all subpages via shared footer
  • Upgrade to Pro link in all subpage headers (free tier)
  • Lock SVG used consistently for all locked features — no emoji fallbacks
  • `sfw_subpage_footer()` accepts `$sidebar_extra` parameter for page-specific sidebar content
  • Dev seed data (`includes/dev/seed-data.php`) loaded conditionally on local/dev environments only
  • ### Internal
  • `sfw_get_chart_daily($days)` — generic gap-filling daily chart query
  • `sfw_get_chart_12months()` — monthly bucketing, always returns 12 months
  • `sfw_get_visits_grouped()` — sessions with nested pages for By Session view
  • `sfw_get_session_count_in_range()` — distinct session count for grouped view pagination
  • `sfw_get_entry_pages()`, `sfw_get_exit_pages()`, `sfw_get_page_bounce_rates()` — new Pro queries
  • `assets/js/d3.min.js` — D3 v7.9.0 bundled locally
  • `assets/js/visitors.js` — sunburst + session view interactions
  • `assets/js/pages.js` — horizontal bar chart for Pages
  • `assets/js/referrers.js` — animated sort-transition bar chart for Referrers
  • `includes/partials/upgrade-overlay.php` — shared upgrade modal
  • `includes/dev/seed-data.php` — dev-only AJAX seed/clear data tool

Version 1.1.6 Minor

2026-04-08
  • Console interceptor for app-specific error filtering
  • entryPoints validator fixes (panels/entryPoint/entrypoint variations)
  • Fix panels for entryPoints, icon-structure, manifest-order
  • manifest-order validator checks Adobe recommended key order
  • Icon formatting options (compact vs expanded)
  • Auto re-validation after manifest fixes
  • Status indicator: Waiting → Ready on project load
  • Auto-timeout for status messages (3 seconds)

Version 1.1.2 Minor

2026-04-08
  • Universal Toolkit Layout System (`/lib/ui/toolkit-universal.css`)
  • Consistent design language across all 9 toolkit tools
  • Question Storm & Constraint Twist unified layout
  • Constraint Twist accordion (single-open sections)
  • Fixed header overlap with proper flex layout
  • Token highlighting (blue bold) for dynamic values
  • Removed legacy CSS files
  • Free Mode access via licence modal
  • Admin bypass fix — no re-validation after TTL expiration
  • \"Licence\" spelling updated throughout UI

Version 1.1.0 Minor

2026-04-08
  • ### Added
  • Pages page — D3 horizontal bar chart; sortable top pages and downloads tables
  • Referrers page — source types, domains, and campaigns tabs with engagement metrics
  • Behaviour data capture — scroll depth, time on page, and load time recorded per visit
  • Session tracking — entry/exit pages, page count, and duration

Version 1.0.0 Major

2026-04-07
  • ### Added
  • Dashboard — D3 visitor chart, live visitor card, stat cards, ping test, flush & archive
  • Visitors page — full visit log with sortable table; downloads tab
  • Activation splash and setup wizard
  • Database schema — `sfw_visits`, `sfw_daily`, `sfw_sessions`, `sfw_404s`
  • Bot filtering via User-Agent detection
  • IP geolocation via bundled GeoLite2 database
  • Download tracking for known file extensions
copyright © rob art | illustration 2026. all rights reserved.

You cannot copy content of this page