Releases: andrewbakercloudscale/wordpress-free-analytics
Releases · andrewbakercloudscale/wordpress-free-analytics
v2.9.186
v2.9.175 — Referrer drill-down modal
What's new
Referrer drill-down
Click Details next to any referrer in the Referrers panel to open a modal showing the top pages that referrer sent traffic to.
- Orange-themed modal with bar-chart rows and links to published posts
- Closes via ×, clicking the backdrop, or pressing Escape
- Correctly uses rolling 24h window when in Last 24h mode (not calendar midnight-to-midnight)
Bug fix
- Fixed a silent JS
TypeErrorintroduced in v2.9.168 (removedstat-lifetime-postselement but left two stale JS references). This caused all panels to stay stuck on "Loading…" — never reached the fetch call.
Infrastructure
deploy-wordpress.shnow useskill -SIGHUP 1to force PHP-FPM opcache reload on every deploy
v2.9.162
What's changed
- Fix PHP Warning: Undefined array key
widget_idinsearch.php(lines 88 & 92) — use null-coalescing fallback for contexts where\$args['widget_id']is absent - Add Playwright E2E tests for 404 Olympics game page (tab rendering, tab switching, input handling, d-pad controls)
v2.9.161
What's changed
404 tracking fix
- Hooked
cspv_track_404at priority 0 so it fires beforecloudscale-plugin-crash-recovery(which exits at priority 1) - Removed
manage_optionsguard — admin-triggered 404s are now logged
Pages per Session card
- Removed Median row; card now shows Average and Max only
Playwright test suite
- Added
run-ui-tests.sh+tests/with a 404 log regression test
v2.9.115 — Hot Pages card & mobile layout fixes
What's new
🔥 Hot Pages card
New 4th summary card showing pages that received ≥ 2 views in the selected period — genuinely engaged pages, not one-off hits. Shows % change vs the previous equivalent period with current vs prior counts.
📱 Mobile layout fixes
- Stats cards now display as a clean 2×2 grid on mobile
- Tab bar wraps onto multiple rows (all tabs accessible, no overflow)
- Most Viewed and Referrers panels now correctly fill full width
- Viewport meta tag injected on the plugin admin page for correct media query behaviour
🎨 View counter colour
Auto-display view counter on posts now defaults to red (was blue).
🛡 Safe deploys
All 7 plugin deploy scripts updated with:
- Atomic swap (no empty-directory crash window)
- Post-deploy site health check
- Automatic rollback if site returns non-200
v2.9.95 — Panel Shadows, Map Scroll Fix, 404 Clear Button
What's New
UI
- Panel drop shadows — all stats page panels now have a clear defined shadow; 404 Error Log and Site Health sections wrapped in panels to match
- Leaflet map scroll fix — two-finger trackpad scrolling no longer hijacked by the map; scroll-to-zoom activates on click and releases on mouse-leave
Bug Fixes
- 404 Clear Log button — was silently doing nothing; fixed by enqueueing the inline script at priority 20 so the script handle exists before attachment
- View counter on search results — counter badge now appears after each post excerpt on search result pages, with a section break between results
Maintenance
- Version bump to 2.9.95 forces CSS cache bust so panel shadows appear immediately without manual browser refresh
- Removed Ignore Jetpack mode —
cspv_get_view_count()always reads fromwp_postmeta(fast O(1) summary lookup) - IP validation applied consistently to both geo and visitor tracking paths in the REST API
v2.9.94 — Wildcard Search, 404 Tracking, Security Hardening
What's New
Wildcard Search (replaces Relevanssi)
- New Lightweight Analytics: Search widget — add it via Appearance > Widgets
- Uses SQL
LIKE '%term%'so short terms like "AI" match correctly - Tiered ranking: exact-case word match in title → exact-case anywhere in title → case-insensitive title → body-only matches
- Relevanssi is automatically disabled on frontend queries
- Results capped at 50, ordered newest-first
- Thumbnails forced to
thumbnailsize on search result pages
404 Error Log
- New 🚫 404 Error Log section in the stats dashboard (above Site Health)
- Tracks destination URL and referrer source for every 404 hit
- Shows hit count, last seen, and first seen in WordPress local time
- Clear Log button to purge the table
- Table created automatically on admin load — no deactivation/reactivation needed
Security Hardening
- Fixed XSS in dashboard widget and Top Posts widget
innerHTMLbuilds - Removed
db_errorfrom public REST API response (leaked schema details) - Added
filter_var(FILTER_VALIDATE_IP)validation for geo lookup fallback IP - Fixed nonce-before-capability ordering in three stats page AJAX handlers
- Added
wp_unslash()to all$_POST/$_SERVERsuperglobal accesses - Added
esc_attr()/esc_html()to all CSS colour value outputs - Added
wp_kses_post()to debug panel button HTML
Other Fixes
database.php: addedIF NOT EXISTSto geo and visitors tableCREATEstatements (prevented errors on repeated activation)readme.txt: added Third Party Services section disclosing DB-IP geolocation database download- Plugin entry point renamed from
cloudscale-page-views.phptolightweight-wordpress-free-analytics.php Contributors:field added to plugin header- Build script: fixed review model ID, switched to focused security-only blocking prompt with
BUILD_STATUSverdict line
v2.9.0
Initial open source release of CloudScale Page Views.