V1.0
Initial release
V1.0.1
Freemius SDK Update
V1.1
Freemius SDK Update
Fix the problem to not be able to add en email to the list B if this one is already on list A
V1.4
Freemius SDK Update
V2.0
* NEW: Dynamic contact list selection with dropdown
* NEW: Custom properties mapping interface
* NEW: API credentials validation
* NEW: Cache management system
* IMPROVED: Better error handling and logging
* IMPROVED: Enhanced user interface
* IMPROVED: Performance optimization with caching
* FIX: Various bug fixes and improvements
V2.0.1
Freemius SDK Update
V2.1.0
* NEW: Double Opt-In support with confirmation emails
* NEW: Customizable confirmation email template with WYSIWYG editor
* NEW: Configurable link expiration time (1-168 hours)
* NEW: Custom success/error redirect pages
* NEW: Secure token-based confirmation system
* NEW: Automatic cleanup of expired pending subscriptions (daily cron)
* NEW: Available placeholders: {{confirm_url}}, {{email}}, {{site_name}}
* IMPROVED: License management with Freemius integration
* IMPROVED: License status display in settings page
V2.1.1
* NEW: Pending Subscriptions dashboard – view all subscribers waiting for confirmation
* NEW: Resend confirmation email button for each pending subscription
* NEW: Delete individual pending subscriptions
* NEW: Clear all pending subscriptions with one click
* NEW: Status indicators (Pending/Expired) for each subscription
* FIX: WAF compatibility – form submission now uses AJAX with base64 encoding to prevent false-positive blocks on hosting providers with strict firewalls (Plesk, Alfahosting, etc.)
* IMPROVED: Better error handling for Double Opt-In settings
= 2.2.0 =
* NEW: Multi-List support – add subscribers to multiple Mailjet lists at once
* NEW: Enable Multi-List toggle in Elementor form settings
* NEW: SELECT2 multi-select dropdown for choosing multiple contact lists
* NEW: Redesigned settings page with sidebar + content layout
* NEW: Visual API connection status indicator in API settings tab
* NEW: Automatic cleanup of confirmed subscriptions (no longer needed in pending table)
* IMPROVED: Pending table now displays all list names for multi-list subscriptions
* IMPROVED: Cron job now removes confirmed subscriptionmeds imiately
* IMPROVED: Better UX with modern card-based design and navigation tabs
= 2.3.0 =
* REFACTOR: Full PSR-4 rewrite — namespace `Wycan\MIFEF`, autoloader, modular architecture
* SECURITY: Replaced all `curl_*` calls with `wp_remote_*` (WordPress HTTP API)
* SECURITY: All SQL queries now use `$wpdb->prepare()` — no raw SQL
* SECURITY: Added `wp_unslash()` before all `$_POST` sanitization
* SECURITY: `check_admin_referer()` on API settings form handler
* SECURITY: `wp_localize_script()` instead of `wp_add_inline_script` with `const` (fixed AJAX URL issue)
* NEW: WyRetract-style admin UI — dark sidebar, Wycan orange (#FF6B35), Satoshi font, card layout
* NEW: Full fr_FR translation — 162 strings, compiled .mo included
* NEW: Vanilla ES6 assets replacing all inline jQuery — `fetch()` API, URLSearchParams
* NEW: WYSIWYG editor (wp_editor) for Double Opt-In email content
* IMPROVED: `getContent()` / `isHidden()` pattern for reliable TinyMCE content reading
* IMPROVED: Admin assets load only on the plugin settings page (no global leak)
* IMPROVED: Transient caching for API responses (1 hour TTL)
* COMPAT: Widget `get_name()` = `’mailjet’`, all control IDs, option keys and DB table names unchanged
In the Double Opt-In tab, instead of the custom WYSIWYG editor, offer a Mailjet template selector. The confirmation email uses a template designed directly in the Mailjet editor (MJML, responsive, branded).