# Changelog

## 1.1.3
- Fixed duplicate `delete_all` branch in bulk log action handler (dead code removed).
- Hardened feed rendering: all bot names, paths, and locations are now HTML-escaped before output (XSS prevention).
- Added Pause / Resume toggle to the live monitor feed.
- Added last-updated timestamp indicator to the monitor topbar.
- Added graceful error state when the REST poll fails (visual border + message instead of silent failure).
- Added empty-state placeholder for the map and feed when no events are present.
- Added color legend bar below the KPI cards.
- Added hover highlight on feed items.
- Added burst-count badge (×N) on feed items for aggregated events.
- Added action label mapping (human-readable labels instead of raw action keys in the feed).
- Added relative timestamp per feed item ("just now", "3s ago", etc.).
- Improved Plotly map hover text formatting with bold bot name and cleaner layout.
- Removed unused `mapReady` and `selectedIndex` variables from monitor.js.
- Added contextual description text to Rules, Lists, and Settings pages.
- Improved Settings page labels with clearer descriptions for each option.
- Fixed location string formatting in `monitor_data()` to avoid leading/trailing separators.

## 1.1.2
- Updated plugin metadata for the current WordPress 6.9 stable branch.

## 1.1.1
- Rebuilt the request pipeline so enforcement, logging, and enrichment are properly separated.
- Added trusted proxy-aware client IP handling and stronger temporary lock behavior.
- Moved geolocation and trusted bot DNS verification out of the live request path and into scheduled jobs.
- Added privacy-safer defaults, IP hashing, event aggregation, and deactivation cleanup.
- Tightened registry sanitization, admin validation, and log handling.

## 1.0.0
- Initial release.
