Improved: Submit button shows a loading spinner during AJAX submission; original button markup is restored on complete (custom labels/HTML preserved)
Improved: Accessibility — disabled state, aria-busy, and aria-label on the submit button while the request is in progress
2.4.0
Feature: Redirect URL after form submission – configure absolute URLs (same domain) or relative paths; external domains require whitelist filter
Feature: Custom Telegram templates with placeholders for form fields, system data (date, time, page URL), and field labels; supports HTML formatting
Improved: Email notification settings migration for existing forms
Improved: Enhanced error logging and input sanitization
Improved: Localization support for admin confirmation and error messages
Technical: TemplateParser class and TelegramFormatterTrait for template handling
2.3.0
Improved: Localization — error messages (spam, rate limit, invalid data), notification labels (Telegram/email), default email subject, and Google Sheets connection messages are now translatable
Improved: Telegram and email notifications use field labels from form configuration (notification_label → label → name), including nested fields in array_of_objects; Google Sheets continues to receive values only (no label mapping)
Improved: Regex pattern validation on form config save — preserves backslashes, validates syntax; invalid patterns rejected with debug log
Improved: Fields config JSON stored with wp_slash to prevent backslash stripping; pattern note added in Fields Configuration UI
Improved: Attachment metadata (thumbnails, etc.) generated only for image MIME types — faster handling of large non-image uploads
Technical: TelegramHandler and FormsHandler::build_email_body() accept optional fields_config for label mapping; Utilities::sanitize_pattern_for_storage() for pattern sanitization
2.2.0
Feature: Tabbed interface for form settings – improved organization with separate tabs for Form Fields, Email Settings, Telegram, Google Sheets, Admin Storage, Display, and Advanced options
Improved: Google Sheets settings page moved to a submenu under Forms section for better admin structure
Improved: Enhanced localization support for Google Sheets settings page with Russian and English translations
Technical: Updated redirect URIs to point to the correct admin page with improved consistency
Technical: Added tab navigation functionality with JavaScript for seamless settings management
2.1.1
Improved: Enhanced form accessibility with aria-label attributes for required fields without labels
Improved: Better label management – removed unnecessary label display for fields without labels
Improved: Enhanced form examples for consistency in required field handling
Technical: Refactored form field handling to improve accessibility compliance
2.1.0
Improved: Page URL field moved from “Submission Info” meta box to “Submission Data” section
Improved: Page URL is now included in all notifications (email, Telegram, Google Sheets)
Technical: Added get_page_url() method to extract page URL from referer
Improved: Page URL automatically displayed as clickable link in submission data
2.0.0
Feature: Added Russian language support with complete translation files (.po and .mo)
Feature: Form customization – custom submit button text, HTML after button, and custom success messages
Feature: Improved file upload handling via AJAX with FormData support
Security: Added direct access checks in multiple classes for better security
Improved: Enhanced error handling with JSON responses for nonce verification failures
Improved: Updated documentation for shortcode usage and asset registration
1.3.1
Compatibility: Tested with WordPress 6.9
1.3.0
Feature: New array_of_objects field type with full nested field validation