Improved: Plugin Check passes clean with zero errors
1.7.0
Added: load_plugin_textdomain() for proper translation loading
Added: Security index.php files to prevent directory listing
Fixed: Translation template .pot file updated with all translatable strings
Fixed: Readme “free trial” corrected to “14-day money-back guarantee”
Improved: Full WordPress Plugin Check compliance
1.6.0
Fixed: Constants now wrapped in defined() checks to prevent fatal errors
Fixed: Removed unnecessary escaping in wp_enqueue_script() and wp_enqueue_style() parameters
Fixed: Settings section callback now uses a proper named function
Fixed: Added wp_unslash() before sanitizing form input
Fixed: Noscript pixel moved from wp_head to wp_body_open with wp_footer fallback
Fixed: Uninstall cleanup now uses uninstall.php instead of register_uninstall_hook()
Fixed: CSS version synced with plugin version, removed duplicate header comments
Fixed: Removed frontend CSS class from admin-only stylesheet
Improved: Added @package PHPDoc tag to all files
1.5.0
CRITICAL FIX: Removed defer script loading strategy — deferred scripts execute AFTER HTML parsing, causing fast-bouncing ad visitors to leave before tracking activates (ghost clicks). Script now loads in <head> for immediate execution.
Fixed: Tracking script URL reference updated to app.clicksora.com/t.js
Fixed: Pixel URL updated to app.clicksora.com/api/track/pixel
1.3.0
Fixed: Text domain now correctly uses clicksora-click-fraud-protection throughout
Fixed: All output is properly escaped using esc_html(), esc_attr(), and esc_url()
Fixed: Script injection now uses wp_enqueue_script() instead of direct HTML output
Fixed: Inline styles replaced with external CSS file (css/admin.css)
Fixed: Added rel=”noopener noreferrer” to all external links
Fixed: PHPDoc blocks added to all functions
Fixed: register_setting() now uses array configuration format
Improved: Sanitization uses sanitize_text_field() in addition to regex
Improved: Added proper width and height attributes to noscript pixel image
1.2.0
Added: Admin tracking skip — logged-in administrators are excluded from tracking
Added: defer attribute for non-blocking script loading
Added: Settings link on the Plugins page for quick access
Added: How-it-works guide panel on settings page
Added: Privacy policy link and version footer
Added: Uninstall cleanup — removes all options when plugin is deleted
Improved: Better input sanitization for Tracking ID
1.1.0
Added: Noscript pixel fallback for visitors with JavaScript disabled