2.2.7
- Replaced the final dynamic cursor comparison expression with fixed prepared SQL branches.
- Resolves the remaining Plugin Check PreparedSQL errors.

2.2.6
- Corrected event-log prepared-query placeholder handling.
- Prepared filter values while constructing validated WHERE fragments.
- Replaced dynamic sort interpolation with fixed ASC/DESC query branches.
- Corrected pagination and export prepare() replacement arguments.

2.2.5
- Refactored event-log database calls to pass prepared SQL directly to WordPress database methods.
- Removed intermediate SQL variables flagged by Plugin Check.
- Preserved validated filters and uncached real-time audit-log behaviour.

2.2.4
- Converted the final dynamic security-table identifiers to WordPress `%i` placeholders.
- Documented intentional uncached audit-log reads.
- Completed the final full Plugin Check warning-remediation pass.

2.2.3
- Reworked dynamic table queries to use WordPress identifier placeholders.
- Documented intentional uncached direct database access for security enforcement and audit logging.
- Documented explicit uninstall schema cleanup for plugin-owned tables.
- Further reduced full Plugin Check warnings.

2.2.2
- Hardened WordPress Plugin Check compliance.
- Added translator context for formatted email-alert strings.
- Improved request sanitization and documented intentional read-only GET processing.
- Improved database identifier preparation and documented controlled security-table queries.
- Removed the explicit close of the streamed CSV output handle.
- Prefixed template variables reported by WordPress Coding Standards.

2.2.1
- Renamed the public WordPress.org identity to Vardalion Security.
- Updated public branding and logo assets.
- Moved the standalone block-response CSS to an enqueued stylesheet.
- Removed the obsolete load_plugin_textdomain() call for WordPress.org distribution.
- Preserved all established wpaegis_* internal compatibility identifiers.

2.2.1-dev.2
- Fixed the Vardalion Security WordPress admin submenu after the branding refresh.
- Restored the internal parent menu slug `wp-aegis` for Blocked IPs, IP Intelligence, Blocked Networks, Security Log, Block Page Preview and Settings.
- No security data, licensing, Pro API or database identifiers changed.

Vardalion Security changelog

2.2.0
- Introduced the permanently free Vardalion Security Core architecture.
- Removed licence, trial and third-party executable updater implementation from Core.
- Added the extension service registry for separately distributed companion plugins.
- Preserved existing security database schema and shared Core settings for upgrade compatibility.
- Retained firewall, brute-force protection, threat scoring, automatic IP blocking, repeat-offender escalation, logging, IP intelligence, manual network blocking and Emergency Mode.
- Corrected maintenance diagnostics to check Core-owned schedules only.
- Removed stale licensing/updater-development UI references.
- Reworked readme.txt for WordPress.org submission requirements and external-service disclosure.
- Added a Core-to-Pro comparison screen and dashboard callout that are hidden automatically when Pro is active.
- Added a prominent Upgrade to Pro button to the main dashboard hero when Pro is not installed.
- Ensured standard third-party/WordPress admin notices remain readable on Vardalion Security admin screens.
- Fixed the Vardalion Security Pro comparison page layout so it no longer inherits compact dashboard flex styling.
- Removed the false maintenance warning for the obsolete wpaegis_reputation_sweep cron schedule.
- Added suggested Vardalion Security data-processing text to the WordPress Privacy Policy Guide.
