# Release Notes - Version 1.3.0

**Release Date:** May 25, 2026  
**WordPress Compatibility:** 5.8 - 7.0 ✅  
**PHP Compatibility:** 8.3+

---

## 🎉 What's New

### WordPress 7.0 Compatibility
- **Fully tested and verified** on WordPress 7.0
- All core WordPress functions validated for compatibility
- No deprecated function usage detected
- Proper use of WordPress escaping functions (`esc_html`, `esc_attr`, `esc_js`, `esc_url`)
- Plugin update checker library compatible with WordPress 7.0

### Enhanced Exit-Intent Pop-Under System
- **Improved mouse exit detection** - Now uses `document.documentElement.addEventListener` with `clientY <= 0` check for more reliable triggering
- **User interaction tracking** - Pop-under only triggers after user has interacted with the page (prevents premature display)
- **Better mobile support** - Enhanced scroll-to-top detection for mobile devices
- **Applied across all forms:**
  - `shortcode-v3.php`
  - `shortcode-v4.php`
  - `page-getquotes-v3.php`
  - `page-getquotes.php`
  - `page-getquotes-v2.php`

### Fixed Auto-Submission Issue
- **Conditional tracking** - `iqf_get_click_id()` now only makes external API calls to `track.wjm.net` when a `track` parameter is explicitly provided
- **Prevents unwanted submissions** - No more automatic lead submissions when plugin is activated or pages load without tracking intent
- **Improved privacy** - External calls only happen when intentionally tracked

---

## 🔍 Compatibility Review

### WordPress Core Functions Used
All WordPress functions used in this plugin are stable and fully compatible with WordPress 7.0:

- ✅ `wp_enqueue_style()` - Asset management
- ✅ `add_action()` / `add_filter()` - Hook system
- ✅ `add_shortcode()` - Shortcode registration
- ✅ `wp_insert_post()` - Page creation
- ✅ `get_page_by_path()` - Page retrieval
- ✅ `get_permalink()` - URL generation
- ✅ `esc_html()`, `esc_attr()`, `esc_js()`, `esc_url()` - Output escaping
- ✅ `sanitize_text_field()` - Input sanitization
- ✅ `wp_parse_url()` - URL parsing
- ✅ `current_user_can()` - Capability checks

### Security & Best Practices
- ✅ Proper nonce validation on form submissions
- ✅ Input sanitization using WordPress functions
- ✅ Output escaping for all user-generated content
- ✅ Direct file access prevention with `ABSPATH` checks
- ✅ Capability checks for admin functions

### Third-Party Libraries
- ✅ **Plugin Update Checker (v5.6)** - Compatible with WordPress 7.0
- ✅ **MediaAlpha Integration** - JavaScript-based, version-agnostic
- ✅ **Font Awesome 6.5.1** - CDN-based, no WordPress dependencies

---

## 📋 Testing Checklist

The following areas have been tested on WordPress 7.0:

- [x] Plugin activation/deactivation
- [x] Shortcode rendering (`[insurance_quote_form]`, `[insurance_quote_form_v3]`, `[insurance_quote_form_v4]`)
- [x] Form submissions to `/get-quotes/` and `/get-quotes-v2/`
- [x] MediaAlpha ad integration
- [x] Exit-intent pop-under functionality
- [x] Click ID tracking (conditional on `track` parameter)
- [x] Auto-update from GitHub repository
- [x] Admin notices and update UI
- [x] Multi-step form navigation (V2, V4)
- [x] Dynamic insurance type selection based on URL
- [x] Mobile responsiveness
- [x] Browser compatibility (Chrome, Firefox, Safari, Edge)

---

## 🚀 Upgrade Instructions

### For Existing Installations

1. **Backup your site** (recommended before any update)
2. The plugin will auto-update via GitHub if you have the updater configured
3. Alternatively, manually upload the new version files
4. No database changes or configuration updates required
5. All existing forms and settings will continue to work

### For New Installations

1. Upload the plugin to `/wp-content/plugins/insurance-quotes/`
2. Activate the plugin through the WordPress admin
3. Plugin will auto-create `/get-quotes/` and `/get-quotes-v2/` pages
4. Use shortcodes in your pages/posts to display forms

---

## 🔧 Configuration

No configuration changes are required for this update. All existing settings remain compatible.

### Optional: GitHub Auto-Updates

If using a private repository, add to `wp-config.php`:

```php
define('IQF_UPDATE_GITHUB_TOKEN', 'ghp_your_token_here');
```

---

## 📝 Changelog Summary

### Version 1.3.0 (May 25, 2026)
- WordPress 7.0 compatibility verified and tested
- Updated plugin metadata to reflect WordPress 7.0 support
- Improved exit-intent pop-under detection across all form templates
- Fixed automatic lead submission issue - now only submits when track parameter is present
- Enhanced pop-under functionality with better mouse exit tracking and user interaction detection

### Version 1.2.9
- Add plugin update icons for the WordPress admin update UI
- Expose icon metadata through the GitHub updater so branding shows in update flows

### Version 1.2.8
- Fix insurance click_id not passing to MediaAlpha sub_1

---

## 🐛 Known Issues

None at this time. All functionality tested and working on WordPress 7.0.

---

## 📞 Support

For issues or questions:
- GitHub: https://github.com/trixxmanaty/insurance-quotes
- Author: Kuda Zafevere
- Email: Via Upwork profile

---

## 📄 License

GPL v2 or later - https://www.gnu.org/licenses/gpl-2.0.html
