=== Plattio Forms ===
Contributors: plattio
Tags: forms, form builder, contact form, email builder, gdpr
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 2.2.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A lightweight, privacy-first visual form builder for WordPress.

== Description ==

Plattio Forms has a lightweight module library. The optional Digital Signatures module supports responsive touch, mouse, and stylus signing. The optional Multi-Page Forms module splits long forms into clear steps with progress indicators and page navigation. The optional PDF Documents module converts entries into branded contracts, invoices, quotes, certificates, applications, reports, tickets, receipts, and other PDF files. The premium Email Builder module creates responsive, branded HTML notifications with reusable visual designs, email-safe table layouts, and plain-text fallback. The premium AI Form Agent creates complete forms, settings, notifications, confirmations, and optional email designs through a guided conversation using the website owner's own OpenAI or Anthropic API key. PDF Documents, Email Builder, and AI Form Agent can only be activated with a valid Plattio Forms license. Module PHP loads only when activated, and module assets load only on their relevant screens.

Plattio Forms lets you create responsive forms with a visual drag-and-drop builder and embed them with a shortcode.

Core features:

* Visual builder using native WordPress Dashicons only.
* Text, textarea, name, email, phone, number, dropdown, radio, checkbox, URL, date, time, upload, searchable WooCommerce product, calculated, repeater, hidden, HTML, divider, and GDPR agreement fields. Multiple-choice and checkbox fields can use visual cards with a built-in WordPress icon or a custom image for each choice.
* Ready-made contact, quote, feedback, newsletter, and job application templates.
* Multiple administrator and submitter email notifications with smart tags and conditional routing.
* Premium Email Builder module with a visual drag-and-drop block builder, directly selectable preview elements, reusable designs, desktop/mobile preview, per-notification assignment, logos, images, headings, rich text, buttons, form fields, columns, footers, custom HTML, smart tags, test emails, import/export, and automatic plain-text fallback.
* Premium AI Form Agent with OpenAI and Anthropic adapters, encrypted API-key storage, clarifying questions, locale-aware responses, site-color detection, supported-field validation, visual progress, draft creation, undo support, and optional professional Email Builder designs.
* Global authenticated SMTP delivery for WordPress core, WooCommerce, Plattio Forms, and other wp_mail() messages, with forced sender identity, encrypted credentials, test email, DNS authentication checks, Site Health integration, and conflict detection.
* Multiple conditional confirmations using a message, a published WordPress page, or a redirect URL.
* Smart conditional logic for fields with show/hide actions, AND rules, OR groups, and case-insensitive comparisons.
* Safe server-verified calculations with field references, arithmetic operators, parentheses, and supported aggregate functions without eval().
* Repeater fields for collecting multiple rows of structured information with configurable columns and row limits.
* Secure save-and-continue links with expiring tokens stored only as SHA-256 hashes.
* Asynchronous conditional webhooks using the WordPress HTTP API, encrypted header values and queue payloads, safe URL validation, background retries, and non-blocking form submission.
* Builder undo/redo, browser-local crash recovery, and WordPress revision history.
* Optional Multi-Page Forms module with unlimited page breaks, progress bar, circles, connector, page titles, Previous/Next controls, clickable steps, and scroll control.
* Premium PDF Documents module with a visual block builder, live preview, 18 document templates, form-aware field mapping, uploaded-image rendering, exact-position fields on imported PDF backgrounds, more than 40 themes, Smart Tags, conditional generation, email attachments, protected downloads, entry regeneration, multiple paper sizes, portrait/landscape layouts, headers, footers, and page numbers.
* Dynamic default-value smart tags for page, site, administrator, and logged-in user context.
* Entry storage, filtering, signature previews, individual and bulk deletion, detail view, CSV export, and retention cleanup.
* Built-in honeypot, signed submission timing, rate limiting, blocked keywords, nonce verification, and strict field validation.
* Privacy-first defaults: IP address and browser storage are disabled.
* WordPress personal data export and erasure integration.
* Suggested privacy policy text.
* Form import and export.
* Responsive and accessible frontend markup.
* Native elements for Flatsome UX Builder and Plattio Builder, plus a native Gutenberg block, with live selectors for all published Plattio Forms shortcodes.
* Assets load only where forms are detected, with an optional global fallback.
* RTL-compatible interface with 31 bundled locale packs and automatic WordPress-locale selection.

Use `[plattio_form id="123"]` to display a form. Omit the `title` attribute to inherit the form builder setting, or use `title="true"` / `title="false"` to override it. The optional `description="true"` / `description="false"` attribute controls the form description.

All 31 bundled locale catalogs include the Module Library, Digital Signatures, Multi-Page Forms, PDF Documents, Email Builder, and AI Form Agent strings. Norwegian Bokmål is complete for version 2.2.2. Other catalogs are partially translated and use English fallback for strings that still await native-language review. See `docs/LANGUAGES.md` for the bundled locale list and review status.

== Installation ==

1. Upload the `plattio-forms` folder to `/wp-content/plugins/` or install the ZIP in WordPress.
2. Activate Plattio Forms.
3. Open Plattio Forms > Settings > General and activate the license to unlock premium modules and automatic updates.
4. Open Plattio Forms > Modules and activate Digital Signatures, Multi-Page Forms, PDF Documents, Email Builder, and/or AI Form Agent when needed.
5. Open Plattio Forms > Add New.
6. Build and save a form, or start with the Multi-Page Contact Form template after activating Multi-Page Forms. PDF documents can then be created from Plattio Forms > PDF Documents, and reusable notification designs from Plattio Forms > Email Builder.
7. Copy the shortcode into a page or post. Flatsome users can insert the native Plattio Forms element from UX Builder, Plattio Theme users can insert it from Plattio Builder, and Gutenberg users can insert the Plattio Forms block and select any published form with a live editor preview.

== Frequently Asked Questions ==

= Is Plattio Forms GDPR compliant? =

The plugin provides privacy-focused defaults and tools that help a website owner work toward compliance. Legal compliance depends on how forms are configured, what data is requested, why it is collected, who receives it, and how the website privacy policy is written.

= Are entries stored automatically? =

Entry storage is enabled for new forms. It can be disabled per form. IP addresses and browser information are disabled by default.

= Does it use external services? =

No external service, telemetry endpoint, or remote asset is required for the normal builder, spam protection, entry storage, or local PDF generation. License validation uses the configured Plattio licensing API. When global SMTP delivery is enabled, WordPress connects only to the SMTP server entered by the website administrator. The optional AI Form Agent sends the administrator's prompts and a deliberately reduced, non-secret form context directly to the selected OpenAI or Anthropic API. It is inactive by default, requires the site owner's own API key, and does not send entries, uploads, saved submissions, API keys, webhook secrets, or payment-card data.


= Does the email delivery setting affect WooCommerce and WordPress emails? =

Yes. The mailer is attached to WordPress wp_mail() and PHPMailer rather than only to form notifications. WordPress account emails, WooCommerce order emails, Plattio Forms notifications, and compatible third-party plugin emails therefore use the same SMTP connection. Only one SMTP plugin should be active at a time.

= Does SMTP guarantee that email never enters spam? =

No mail plugin can guarantee inbox placement. Authenticated SMTP greatly improves reliability compared with unauthenticated PHP mail, but the sending domain should also have correct SPF, DKIM, and DMARC records, a verified From address, and a reputable mail provider. Plattio Forms includes an on-demand DNS check for these records.

= How are forms embedded? =

Use the shortcode shown in the forms list or builder, for example `[plattio_form id="123"]`.

= Does Save and Continue store uploaded files or signatures? =

No. Textual form values and repeater rows can be restored through the secure continuation link. File uploads and signatures are intentionally excluded and must be added again after the form is continued.

= Are webhook credentials included in form exports? =

No. Webhook header values are encrypted at rest on the originating website and are omitted from JSON exports and persistent browser autosaves. Enter those values again after importing a form on another website.


= How does the Email Builder work? =

Activate the Plattio Forms license, enable Email Builder under Modules, and create a design under Plattio Forms > Email Builder. Designs belong to a specific form and can be selected separately inside each enabled notification in the form builder. HTML messages use email-safe table layouts and inline styles, while a plain-text alternative is generated automatically for mail clients that do not display HTML.

= Are Email Builder designs included when a form is exported? =

Yes. Designs connected to the exported form are included in the JSON package, and notification references are remapped during import. Media attachment IDs are removed from portable exports and replaced with the current image URLs so an unrelated attachment with the same numeric ID cannot be selected on the destination website. Images can be reselected from the destination media library after import.

= How are PDF documents generated? =

Activate the Plattio Forms license under Settings > General, enable PDF Documents under Modules, open PDF Documents, choose a connected form and template, then customize the content blocks, branding, paper settings, notification attachments, access restrictions, and conditional generation rules. Documents are generated before notification emails are sent and are stored with the entry when entry storage is enabled.

= Does the PDF module use an external service? =

No. PDF files are generated locally on the WordPress server. The bundled lightweight engine does not send form data to a remote service and does not ship external font files. A local copy of Mozilla PDF.js is used only in the administrator browser when an existing PDF is imported as a positioning background.

= Are collected signatures automatically legally binding? =

The module records a handwritten signature image and the form submission data. Whether a signature is legally enforceable depends on the form wording, evidence of intent and consent, record integrity, applicable law, and the specific transaction. Obtain legal advice for regulated or high-value agreements.

== Changelog ==
= 2.2.2 =
* Restored independent scrolling for the WordPress admin sidebar while the full-screen Email Builder is open.

= 2.2.2 =
* Moved AI Agent AJAX capability and nonce verification directly into each request handler so WordPress Plugin Check can verify the security boundary without helper-method inference.

= 2.2.2 =
* Added compact, localized AI prompt placeholders and suggested-form pills before the first request.
* Added a searchable WooCommerce Product field with secure, on-demand product lookup by product name or SKU.
* Added AI guidance for product-return, warranty, repair, and product-selection forms without exposing the full product catalog to the AI provider.
* Fixed reported translation placeholder, prepared SQL replacement, nonce-analysis, input sanitization, and custom-table caching warnings.
* Updated and recompiled all 31 bundled PO/MO locale catalogs.

= 2.1.11 =
* Replaced the AI Agent send-button Dashicons with dedicated SVG icons positioned in the exact geometric center of the button.
* Kept a separate centered spinner icon while the agent is working.

= 2.1.10 =
* Centered the AI Agent send icon precisely in both axes.
* Replaced the rotating send arrow with a dedicated rotating work-status icon while the agent is processing.
* Added live busy-state labeling for assistive technologies.

= 2.1.9 =
* Added a customizable text setting for the File Upload drop zone beneath the upload icon.
* Added complete-form AI translation for form text, field text, choice labels, upload prompts, navigation labels, confirmations, notifications, and linked email designs.
* Preserved field IDs, choice values, visual media, smart tags, URLs, recipients, logic, and non-text configuration during AI translations.
* Added completeness validation and safe translated copies of linked email designs.
* Updated and recompiled all 31 bundled PO/MO locale catalogs.

= 2.1.8 =
* Added safe AI selection of icons from the integrated visual-choice icon library.
* Preserved existing visual-card icons and images during targeted AI changes.

= 2.1.7 =
* Moved AI Agent provider and privacy settings into a dedicated AI Agent tab under Plattio Forms Settings.
* Added targeted AI update operations so field, form-setting, notification, and email-design changes are applied without rebuilding unrelated parts of the form.
* Added task-aware progress plans that reflect the requested operation and continue through clarification questions without restarting.
* Preserved builder undo history and draft saving for both full form creation and targeted updates.
* Refreshed all 31 PO/MO locale catalogs for the new settings and progress interface strings.

= 2.1.6 =
* Changed the AI prompt field to a compact one-line input that grows automatically with additional lines.
* Added continuous visual progress that pauses for clarification and resumes the same job when the administrator replies.

= 2.1.5 =
* Fixed the AI Agent send button icon alignment so the icon stays vertically centered.
* Switched all AI Agent UI avatar references to the supplied mascot asset with versioned URLs to prevent stale browser caches.

= 2.1.4 =
* Updated the AI Agent avatar assets to use the supplied round mascot artwork throughout the builder and settings interface.

= 2.1.3 =
* Replaced the oversized strict AI blueprint grammar with a compact strict response envelope.
* Moved the complete form blueprint into a JSON string that is decoded and fully normalized by Plattio Forms on the server.
* Prevented Claude schema-compilation failures for complex forms while retaining strict action, message, and question output.
* Kept backward compatibility with blueprint responses produced by earlier AI Agent versions.

= 2.1.2 =
* Restricted OpenAI selection to the current recommended GPT-5.6 Sol, Terra, and Luna models.
* Restricted Anthropic selection to Claude Fable 5, Opus 4.8, Sonnet 5, and Haiku 4.5 with server-side allowlist validation.
* Replaced free-text model fields and model discovery controls with stable provider-specific selectors.
* Made the AI Agent send control the same height as the prompt field and reduced it to one centered send icon with an accessible label.
* Renamed the form-builder header button to AI Agent while retaining the full AI Form Agent title inside the drawer.

= 2.1.1 =
* Fixed OpenAI Responses API multi-turn conversations by sending assistant history in the supported message format.
* Moved the AI system prompt to the Responses API `instructions` field and kept user/assistant history as plain message content.
* Added explicit handling for provider refusals and incomplete responses.
* Prevented expected provider validation errors from surfacing as browser-level 502 failures in WordPress admin.

= 2.1.0 =
* Added the premium AI Form Agent module with separate OpenAI Responses API and Anthropic Messages API adapters.
* Added encrypted bring-your-own-key settings, configurable provider models, connection testing, model discovery, automatic provider fallback, and per-user request throttling.
* Added a guided AI conversation inside the form builder that asks clarifying questions whenever important requirements are missing or ambiguous.
* Added complete blueprint generation for supported fields, form styling, spam/privacy settings, confirmations, administrator and submitter notifications, and optional professional Email Builder designs.
* Added website-language instructions, site-color detection, active-module awareness, safe current-form context, visual generation progress, builder undo support, and automatic draft saving.
* Added a purpose-built transparent avatar asset with the character extending below the circular avatar boundary.
* Kept the module out of all frontend requests and limited its CSS and JavaScript to the AI settings page and active form-builder screen.
* Updated all 31 PO/MO locale catalogs, block metadata, uninstall cleanup, documentation, and plugin version to 2.1.0.

= 2.0.9 =
* Completed a security and frontend-runtime hardening review across public submissions, administrator actions, file delivery, module loading, and builder integrations.
* Added exact form-aware asset discovery for shortcodes, native blocks, synced Gutenberg patterns, Plattio Builder layouts, and reusable Plattio Blocks.
* Added a late-render compatibility path that prints only the styles required by a form rendered after `wp_head`, without enabling site-wide assets.
* Reduced normal frontend PHP loading by keeping the administrator runtime and large PDF/Email Builder classes out of ordinary page requests unless their execution path requires them.
* Hardened public uploads with a centralized extension allowlist, active-content denylist, WordPress MIME verification, uploaded-file validation, exact detected MIME matching, and schema-scoped upload handling.
* Added throttling and restrictive response headers to password-protected PDF access, plus no-referrer protection for tokenized signature and PDF responses.
* Updated the plugin, block metadata, security documentation, and all 31 PO/MO locale catalogs to version 2.0.9.

= 2.0.8 =
* Added a native Plattio Forms element through the public Plattio Builder third-party extension API.
* Added a live selector for every published Plattio Forms shortcode, with title and description overrides matching UX Builder.
* Added real server-rendered form previews in Plattio Builder while preventing editor-side form interaction and accidental submissions.
* Added early, layout-aware frontend asset detection for direct elements and nested reusable Plattio Blocks.
* Kept the integration entirely inside Plattio Forms so Plattio Theme updates do not overwrite it.
* Updated plugin, block, documentation, and all 31 locale catalog headers to version 2.0.8.

= 2.0.7 =
* Made the UX Builder Show form title control an explicit shortcode override, so it works even when the title is disabled in the Plattio Forms builder.
* Added a native dynamic Gutenberg block registered from block metadata with a selector for every published Plattio Forms shortcode.
* Added server-rendered visual form previews, title and description controls, alignment support, and editor-safe disabled form interactions.
* Loaded core form styles and active Signature/Multi-Page module styles inside the block editor preview.
* Reused existing translated interface strings and updated all 31 locale catalog headers for version 2.0.7.

= 2.0.6 =
* Added a native Plattio Forms element to Flatsome UX Builder without modifying the theme.
* Added a live form selector that inserts the selected published form through the existing `[plattio_form]` shortcode.
* Added title and description visibility controls to the UX Builder element.
* Loaded Plattio Forms and active frontend module assets inside the UX Builder content iframe.
* Added dynamic-form initialization so forms rendered by visual builders receive normal frontend behavior.

= 2.0.5 =
* Made visible Email Builder preview blocks directly selectable with mouse or keyboard.
* Clicking a preview element now opens that block's settings in the Content sidebar and highlights the selected block.
* Kept preview content sandboxed while allowing the parent builder to handle safe block selection.

= 2.0.4 =
* Expanded the visual-choice icon picker from the original curated selection to the full supported WordPress Dashicons set, with commonly used icons shown first.
* Added a compatibility migration from the legacy education icon to the supported WordPress learn-more icon.
* Introduced no new translatable interface strings, so all 31 bundled locale catalogs remain current.

= 2.0.3 =
* Placed the visual-choice Icon, Image, and remove controls on one compact horizontal row.
* Shortened the custom-image button label to Image and replaced the remove text link with an accessible trash icon button.
* Updated and recompiled all 31 bundled language catalogs for the revised visual-choice controls.

= 2.0.2 =
* Split visual choice media into a built-in WordPress icon picker and a separate custom-image selector.
* Added a curated Dashicons library with secure allowlist validation in the builder, saved schema, and frontend renderer.
* Constrained icons and images to the active one-, two-, three-column, or inline choice layout instead of using intrinsic image dimensions.
* Added and compiled the new visual-choice controls in all 31 bundled locale catalogs.

= 2.0.1 =
* Added visual image/icon cards for Multiple Choice and Checkboxes fields.
* Added per-choice WordPress Media Library selection, responsive card layouts, selected/focus states, and builder preview support.
* Preserved the existing standard choice layout for full backward compatibility.

= 2.0.0 =
* Added the premium Email Builder module with a dedicated visual block editor, drag-and-drop ordering, undo/redo, reusable designs, and responsive desktop and mobile previews.
* Added email-safe logo, heading, text, image, button, divider, spacer, all-fields, single-field, two-column, footer, and sanitized custom-HTML blocks.
* Added global width, colors, font family, content padding, corner radius, text direction, preheader, block spacing, alignment, media, and responsive-button controls.
* Added seven professional starter designs and per-notification design selection inside the form builder.
* Added Smart Tags for form, entry, site, notification message, individual fields, all fields, file links, and administrator entry links.
* Added test-email delivery through the configured global mailer and an automatically generated plain-text alternative body for accessibility and mail-client compatibility.
* Added form duplication, individual form export/import, template-ID remapping, safe portable image URLs, template deletion cleanup, and module-safe fallback to existing plain-text notifications.
* Added all Email Builder source strings to all 31 bundled PO and MO catalogs; Norwegian Bokmål is complete for version 2.0.0.

= 1.9.1 =
* Kept the builder revision history fully contained inside its sidebar panel, with wrapping and responsive controls that no longer create horizontal scrolling.
* Removed the View Entries button from the form builder header. Entries remain available from the main Plattio Forms administration menu.
* Added automatic revision retention: each form keeps its 20 newest normal revisions, and older revisions are permanently pruned after the form is saved.

= 1.9.0 =
* Added a safe calculated field with live browser updates and authoritative server-side recalculation. Formulas support field references, arithmetic operators, parentheses, min, max, sum, avg, round, ceil, floor, and abs without using eval().
* Added configurable repeater fields with structured rows, multiple column types, required columns, minimum and maximum row limits, frontend add/remove controls, entry storage, notifications, exports, and webhooks.
* Added secure Save and Continue with expiring continuation links, optional email delivery, SHA-256 token hashes, rate limiting, draft cleanup, and no storage of raw continuation tokens. File uploads and signatures are intentionally excluded from saved drafts.
* Added an Integrations panel with conditional POST, PUT, and PATCH webhooks, encrypted custom-header values and encrypted queued payloads, safe URL validation, asynchronous delivery, atomic job claiming, interrupted-job recovery, scheduled cleanup, and up to five retry attempts. Header values are excluded from form exports and persistent browser autosaves.
* Added builder undo/redo controls and keyboard shortcuts, local browser autosave recovery, and WordPress revision history with secure restoration.
* Added upgrade-safe database tables and indexes for saved drafts and background jobs, while keeping optional work out of normal page requests.
* Extended conditional logic cleanup and field-reference maintenance to integration feeds.

= 1.8.3 =
* Fixed per-form JSON exports being contaminated by legacy Unicode-repair warnings, which made valid exports impossible to import on another website.
* Corrected the legacy Unicode sequence matcher and added defensive match validation for PHP 8.x compatibility.
* Wrapped form export generation in an isolated output buffer so notices from unrelated code cannot be written into downloaded JSON files.
* Made the importer recover valid Plattio Forms JSON from previously contaminated exports, including the supplied 1.8.2 export.

= 1.8.2 =
* Added a dedicated export icon button to every form row on the Forms screen.
* Each button downloads only that form definition as a JSON file compatible with the existing Plattio Forms import tool. Entries are not included.
* Kept the existing all-forms export under Tools unchanged.

= 1.8.1 =
* Restored reliable signature thumbnails and full signature previews on the Entries screen by rebuilding secure URLs from each saved token instead of relying on an old stored site URL.
* Kept existing signatures viewable even when the optional signature editor module is not currently active, without exposing the protected PNG files directly.
* Added a compact trash-icon button for deleting an individual entry directly from the list.
* Added row checkboxes, Select All, and permanent bulk deletion while preserving active entry filters and deleting associated uploads safely.

= 1.8.0 =
* Added lightweight global email delivery under Settings > Email, based on the reliable wp_mail()/PHPMailer integration pattern used by dedicated SMTP plugins.
* Added WordPress default and authenticated Other SMTP delivery methods with host, port, TLS/SSL, Auto TLS, authentication, username, encrypted password, and connection timeout settings.
* Added forced From Name and From Email controls, Return-Path support, and preservation of the original sender as Reply-To when possible.
* Applied the mailer to WordPress core, WooCommerce, Plattio Forms, and other compatible wp_mail() messages rather than only form notifications.
* Added an AJAX test email with SMTP diagnostics, an on-demand MX/SPF/DMARC/DKIM domain check, mail-plugin conflict detection, Site Health status, and non-sensitive debug information.
* Stored SMTP credentials separately with authenticated encryption derived from WordPress security salts and avoided database writes during successful normal email sending.

= 1.7.5 =
* PDF content in all built-in templates now remains top-aligned when Page background is set to None.
* Removed automatic vertical centering from both the live preview and generated PDF output.
* Decorative background choices continue to adjust the safe top and side margins without changing vertical alignment.

= 1.7.4 =
* Fixed a fatal error on the General settings page on PHP 8.1 and newer by replacing the deprecated readonly() helper with WordPress wp_readonly().

= 1.7.3 =
* The Position form fields section is now available only after an existing PDF background has been uploaded and prepared.
* Added clearer spacing between the PDF background control and the field-positioning tools.
* Blank documents now use a free-position block canvas: added blocks can be dragged from the settings panel onto the page and moved directly in the live preview.
* Free-position block page, horizontal position, vertical position, and width settings are saved and used by the generated PDF.
* Exact-position number fields no longer rebuild the settings panel on every keystroke, so complete values can be typed without repeatedly refocusing the input.
* Positioned form fields are now reserved for uploaded PDF backgrounds, while blank documents use draggable content blocks for consistent editing behavior.

= 1.7.2 =
* Simplified the license section to a compact license-key field and a single red/green activation state button.
* Centered Dashicons consistently beside button text throughout the plugin administration screens.
* Removed the Restricted badge from active locked premium modules.
* Moved the Manage license link into the module footer in place of the load-note text for restricted premium modules.

= 1.7.1 =
* Embedded the production Ed25519 client verification key for the Plattio Forms license client.
* The PDF Logo block now always uses the logo selected in the document Appearance settings.
* Centered the Choose PDF button icon with its label.
* Added free-position field placement to blank PDF documents, including draggable form fields and the document logo.

= 1.7.0 =
* Integrated the bundled Plattio License Client SDK with the plattio.no licensing API and native WordPress plugin updates.
* Added an AJAX-powered license key field under Plattio Forms > Settings > General with activation, validation, deactivation, masked key, domain, and expiry status.
* Added premium metadata and a WordPress Dashicons premium key to the Module Library.
* Made PDF Documents a premium module that cannot be activated without a valid Plattio Forms license.
* Existing generated PDF files remain accessible and stored data remains intact when a license becomes invalid; new PDF editing and generation are restricted.
* Added daily validation, encrypted local license storage, the 72-hour server-unavailable grace model, signed response verification, and licensed update delivery through the supplied SDK.

= 1.6.1 =
* Added a dedicated Logo content block to the PDF module with media selection, width, and alignment controls.
* PDF content is vertically centered when Page background is set to None.
* Top band, side band, corners, grid, and diagonal backgrounds now apply matching safe-area offsets in both live preview and generated PDFs.

= 1.6.0 =
* Made all built-in PDF templates form-aware so only fields that exist in the connected form can be selected, referenced, or positioned.
* Added rendering of image files uploaded through form upload fields in normal PDF templates and exact-position PDF backgrounds.
* Added import of an existing blank PDF as a multi-page document background.
* Added a visual field palette for clicking or dragging connected form fields onto the exact position on each imported PDF page.
* Added page-specific coordinates, dimensions, label visibility, typography, alignment, and color settings for positioned fields.
* Bundled PDF.js locally for secure browser-side preparation of imported PDF pages without sending documents to an external service.
* Added all new PDF background and positioning strings to every bundled PO/MO catalog; Norwegian Bokmål remains the only fully translated catalog.

= 1.5.0 =
* The Add New PDF button now opens a truly blank PDF document connected to the current form, ready to build from scratch.
* Added a blank document template with no preloaded content blocks.
* Sidebar-based document templates vertically center their remaining content in both the live preview and generated PDF when the sidebar background is removed.
* Empty PDF documents remain empty until content blocks are added.

= 1.4.9 =
* Fixed all PDF content block switches so they update the live preview immediately on both input and change events without duplicate renders.
* Normalized switch values from saved documents so 0, 1, true, and false are interpreted consistently.
* The Show labels switch now reliably changes the field preview layout.
* The Show empty fields switch now has a visible and accurate preview purpose for empty upload and signature values.
* Preserved the WordPress page, PDF settings panel, and preview scroll positions during switch updates.

= 1.4.8 =
* Restored immediate live-preview updates for switches inside PDF content blocks while preserving all editor scroll positions.
* Checkbox-based PDF settings now use the reliable change event instead of depending on browser-specific input-event behavior.
* The signature placeholder switch is now reflected directly in the live document preview.

= 1.4.7 =
* Fixed PDF content switches so activating or deactivating them no longer moves the WordPress page or settings panel to the top.

= 1.4.6 =
* Vertically centered the Dashicons inside the previous and next PDF preview navigation buttons.

= 1.4.5 =
* Preserved the PDF editor page, settings-panel, and preview scroll positions when document switches are enabled or disabled.
* PDF switches now update only their setting and live preview without moving the administrator away from the current editing position.

= 1.4.4 =
* Rebuilt the PDF document live preview with the same paper dimensions, orientation, margins, header/footer space, colors, borders, and point-based typography used by the PDF engine.
* Added user-friendly Previous and Next page controls for multi-page document templates.
* The preview now fits one complete PDF page into the available workspace and recalculates its scale when the editor is resized.
* Improved vertical centering of labels and values in generated PDF table cells and aligned single-field labels with their selected alignment.
* Added real selected-image previews for image blocks.

= 1.4.3 =
* Made the Dynamic default values picker collapsible in the field settings.
* The picker is closed by default and can be opened or closed from its header.
* Added keyboard-accessible disclosure state with aria-expanded and a rotating WordPress Dashicon.

= 1.4.2 =
* Hid unrelated WordPress and third-party admin notices on the PDF document editor while keeping PDF module save/error notices.
* Corrected PDF preview button icon alignment.
* Improved document logo selection with a visible selected-logo preview and live document preview.

= 1.4.1 =
* Changed the PDF document editor to a full-height fixed workspace with independent preview and settings scrolling.
* Set the thin form-builder navigation labels to 11px with a 1.18 line height.
* Added clickable dynamic default-value tags and support for logged-in user first and last names.

= 1.4.0 =
* Added the optional PDF Documents module, which loads its PHP only while activated.
* Added a visual block-based PDF builder with a live document preview and direct access from the form builder.
* Added 18 starting templates covering notifications, general documents, legal agreements, applications, cover pages, reports, invoices, quotes, receipts, certificates, and event tickets.
* Added more than 40 visual themes, logo support, page backgrounds, container borders, headers, footers, page numbers, A3/A4/A5/Letter/Legal paper sizes, and portrait or landscape orientation.
* Added blocks for headings, rich text, all fields, single fields, entry metadata, images, signatures, invoices, certificates, dividers, spacing, and page breaks.
* Added Smart Tags, conditional generation, secure tokenized downloads, login/role/entry-user/password access rules, confirmation download tags, entry regeneration, and automatic PDF attachments for selected notifications.
* Added temporary 24-hour secure PDF downloads for forms that do not store entries, with scheduled cleanup.
* Added all PDF Documents interface strings to all 31 locale catalogs and completed the Norwegian Bokmål translation.
* Added no external PDF service, remote assets, telemetry, or bundled font files.

= 1.3.5 =
* Removed the requested padding, divider border, and rounded border declarations from the thin builder navigation and set navigation button borders to zero.
* Improved shortcode copy feedback so the translated confirmation is visibly shown inside the button, including compact admin layouts.
* Fixed the international phone control so its full outer border remains visible and matches other fields across all configured field sizes.

= 1.3.4 =
* Made the global Field Size setting apply consistently to standard inputs, dropdowns, phone controls, upload zones, choices, and submit buttons.
* Added a per-form option to hide the form title on the frontend while preserving shortcode title overrides.
* Added an optional international phone layout with a searchable country-code dropdown, Unicode flags, accessible keyboard behavior, localized country names where supported by the browser, and server-side phone validation.

= 1.3.3 =
* Fixed the Dropdown preview in the visual builder so it renders as one clean select control with a single native WordPress arrow icon.
* Fixed frontend select height, padding, line-height, and theme overrides so option text is no longer clipped.

= 1.3.2 =
* Replaced the native file input appearance with an accessible drag-and-drop upload area using the WordPress upload Dashicon.
* Added click and touch file selection, desktop drag-and-drop, selected-file feedback, and a remove-file control.
* Updated the visual builder preview to match the frontend upload field.
* Added the new uploader interface strings to all 31 bundled language catalogs.

= 1.3.1 =
* Fixed UTF-8 storage for form schemas so translated text retains characters such as Æ, Ø, Å and other non-ASCII scripts.
* Added automatic repair for legacy form text where Unicode escape sequences were stored without their backslash, such as u00f8.

= 1.3.0 =
* Added the optional Multi-Page Forms module to the Module Library.
* Added unlimited Page Break fields with drag-and-drop placement in the visual builder.
* Added Progress Bar, Circles, Connector, and no-indicator display styles with configurable color.
* Added first-page and per-page titles, custom Next and Previous labels, optional Previous buttons, last-page Previous control, CSS classes, and Left, Center, Right, or Split navigation alignment.
* Added optional clickable circle and connector steps, smooth scroll-to-form behavior, and a setting to disable scroll animation.
* Form values remain in place while navigating, current-page validation prevents invalid forward navigation, and conditionally empty intermediate pages are skipped.
* Added a ready-made three-step Multi-Page Contact Form template.
* Added translated Multi-Page Forms strings to all 31 bundled locale catalogs.
* Multi-page PHP loads only when activated, and its frontend JavaScript and CSS load only on forms containing a Page Break field.

= 1.2.1 =
* Kept saved signatures visually contained inside the signature field on the entry detail screen.
* Added a compact signature thumbnail to the entries overview.
* Removed the visible instruction below the signature pad.

= 1.2.0 =
* Added a lightweight Module Library with secure activation and deactivation controls.
* Added the optional Digital Signatures module with finger, mouse, stylus, and high-DPI responsive canvas support.
* Added Signature field settings for required status, field width, Smart Logic, ink color, pad background, height, pen thickness, clear-button text, description, and CSS class.
* Signatures are validated on the browser and server, stored as protected PNG files, shown in entries, available through tokenized view/download links, exportable in CSV, and attachable to notification emails.
* Signature PHP loads only when the module is active; signature JavaScript and CSS load only when an active form actually contains a Signature field.
* Updated all 31 bundled locale catalogs for the module and signature workflow.

= 1.1.0 =
* Added Smart Logic to every supported field with Show or Hide actions.
* Added multiple AND rules and OR rule groups.
* Added case-insensitive comparisons: is, is not, empty, not empty, contains, does not contain, starts with, ends with, greater than, and less than.
* Added chained field dependency handling on both the frontend and the server.
* Added multiple named notifications with conditional routing, smart-tag recipients, Reply-To, upload attachments, duplication, deletion, and ordering.
* Added multiple named confirmations with conditional message, WordPress page, and redirect actions; the first matching confirmation is used.
* Hidden conditional fields are excluded from browser validation, server validation, stored entries, notifications, and uploaded-file processing.
* Added page, site, administrator, and logged-in user smart tags for dynamic field default values.
* Added translated conditional-logic interface strings to all bundled locale packs.

= 1.0.6 =
* Changed administrator and submitter notifications to clean plain-text emails without embedded HTML or CSS.
* Removed automatic form and entry ID metadata from email bodies, including legacy saved notification templates.
* Kept a simple Powered by Plattio Forms footer with the Plattio URL.

= 1.0.5 =
* Open field settings when any part of a preview field is clicked.
* Added a native WordPress gear button to each field toolbar for direct access to field settings.
* Kept the WordPress admin menu independently scrollable while the full-height builder is open.

= 1.0.4 =
* Replaced plain-text notifications with professional responsive HTML emails for administrators and submitters.
* Added a structured field summary, form metadata, and a Powered by Plattio Forms footer.
* Removed frontend hover styling from form fields while preserving the focus state.

= 1.0.3 =
* Added clear 100%, 50%, and 33% width controls to every field.
* Added field-specific settings for validation, defaults, choice layouts, dates, times, numbers, and text lengths.
* Reduced builder navigation label size and corrected the Add New Form Dashicon alignment.

= 1.0.2 =
* Extended the visual builder to the full WordPress admin viewport height.
* Added translated visual confirmation after copying a shortcode.

= 1.0.1 =
* Improved and widened visual builder navigation and field palette.
* Corrected and stabilized native WordPress Dashicons throughout the builder.
* Added per-field and form-wide options to use field labels as placeholders.
* Improved preview accuracy, field controls, and drag-and-drop feedback.

= 1.0.0 =
* Initial release.
