=== GriffinForms - Form Builder with Multi-Step and Registration Forms ===
Contributors: griffinforms
Tags: form builder, multi-step, registration form, conditional logic, file upload
Requires at least: 6.6
Tested up to: 7.0
Requires PHP: 8.2
Stable tag: 3.2.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

WordPress form builder for multi-step forms, user registration, file uploads, payments, and custom themes.

== Description ==

GriffinForms is a WordPress form builder for multi-step forms, user registration, uploads, payments, and forms that need more than a single message field. It gives you stronger control over how the form looks, behaves, and continues after submission.

It is a better fit for registration forms, applications, requests, uploads, and payment collection than for a simple one-page contact form. If you need forms that do real work, GriffinForms is built for that next step.

= Why teams choose GriffinForms =
- **Multi-step forms**: break longer forms into pages with per-step validation so users can complete structured flows without feeling overwhelmed. You can also add an optional progress bar — stepper or tabs style — so users always know where they are in the process.
- **WordPress user registration**: create WordPress users from form submissions with immediate, pending-activation, or manual-review workflows, multiple registration workflows per form, role assignment, duplicate-account handling, and account-action visibility in the admin area.
- **File uploads**: support multi-file uploads per field with controls for file types, size limits, file counts, image constraints, and storage behavior.
- **Stripe and PayPal payments**: build WordPress payment forms with product-style workflows, product images, a cart-style review step, hosted checkout options, and resume links for pending payments.
- **MailChimp integration**: subscribe form submitters to MailChimp audiences as part of the submission flow — map form fields to MailChimp merge tags, assign tags, and control consent behavior per form.
- **WordPress conditional logic**: go beyond simple show and hide with rules that can change labels, values, headings, success messages, redirects, and submit behavior — across fields, rows, and pages.
- **Email and notifications**: send notifications and autoresponders through WordPress mail, Custom SMTP, SendGrid, or Mailgun, with reusable messages and merge variables.
- **Spam protection**: choose from reCAPTCHA, hCaptcha, Cloudflare Turnstile, or honeypot, and combine them with native rate limiting on submissions and file uploads for layered protection.
- **Builder checks system**: a live status bar in the form builder surfaces errors, warnings, and info counts as you edit — covering spam config, email setup, compliance, registration risks, and layout issues before you publish.
- **Compliance profiles**: per-form GDPR and HIPAA-ready profiles with submission hashing, layout snapshots, configurable retention, and WordPress personal data export and erase integration.
- **Templates and theming**: turn forms into reusable templates, then style them with built-in themes or your own custom theme variations.
- **Submission clarity in WordPress**: review entries in a richer admin view with event timelines, per-submission audit logs, metadata, and settings history when troubleshooting production forms.
- **Switching from another plugin**: if you are already running Contact Form 7, WPForms Lite, Ninja Forms, or Formidable Forms, GriffinForms includes a guided migration tool that imports your existing forms and submissions so you can move without starting over.

= Best-fit use cases =
- WordPress user registration forms with account creation or admin review
- Multi-step request and intake forms
- Application forms with file uploads
- Support workflows with conditional fields
- Payment forms for donations, simple orders, or paid requests
- Multi-step forms where incomplete submissions should still stay visible in the admin area
- Forms that need stronger styling control, clearer notifications, and better admin visibility

= Built for structured form workflows =
GriffinForms treats layout as a core part of form building. The drag-and-drop builder uses pages, rows, columns, sidebar controls, and reusable fields to make complex forms easier to shape and maintain. Then you can layer in conditions, uploads, notifications, and payments where needed. This makes longer forms easier to manage and easier for users to complete.

Reusable fields also help solve a common admin problem: teams should not need to recreate the same Name, Email, Phone, or Address field across every new form. Common fields can be managed from one place, which helps keep repeated workflows faster to build and more consistent over time.

= File uploads with practical control =
File uploads are not limited to a basic attachment field. GriffinForms supports multi-file uploads per field and is designed for workflows where uploads matter, such as applications, support requests, and document collection. For example, an application form can collect resumes, ID documents, certificates, and supporting images in one submission instead of forcing users to send files separately later. You can control allowed file types, per-file and total upload size limits, max file counts, image-specific constraints, and storage behavior, then manage uploaded files from WordPress.

= Payment workflows with Stripe and PayPal =
If you enable Stripe or PayPal, GriffinForms can handle payment collection inside the form flow. This is useful for donations, simple product or service requests, paid applications, and other workflows where payment is part of submission instead of a separate checkout. GriffinForms supports a fuller review-and-pay pattern with product-style selections, product images, and cart-style summaries. Stripe can stay on-page for card collection, while PayPal uses its hosted popup approval flow. For pending payments, resume links can bring users back so they can continue from where they left off.

= Strong conditional logic layer =
Conditional logic in GriffinForms goes beyond a simple show-or-hide toggle. You can use field, row, and form-level rules to change labels and values, control headings and visibility, swap success messages, trigger redirects, and adjust submit-button behavior.

Conditions also go beyond basic text matching. GriffinForms supports checks across field values, counts, password strength, browser time, address parts, and payment-specific conditions such as product, gateway, totals, and counts. That makes it useful for smarter routing, cleaner payment flows, and forms that react as the submission takes shape.

For example, you can show a payment step only when a paid option is selected, then change the success message or redirect users to a different next step after submission.

= Themable forms with deeper styling control =
Forms should not look disconnected from the rest of your site. GriffinForms includes built-in themes, but the theme system goes further than picking a preset. You can create new themes from scratch or modify existing ones with control over typography, layout, inputs, buttons, and states such as hover, focus, and active. Dark themes also look especially strong in GriffinForms, which helps when you want forms to feel more polished and deliberate instead of settling for one generic form look.

= Submissions, logs, and admin visibility =
Submissions are stored in your WordPress database, but the admin experience goes further than a simple entry list. GriffinForms includes a richer submission view with metadata, payment context where applicable, submission-specific logs, and event timelines so you can follow what happened to a submission and where it changed.

Native logging adds another layer of visibility for production sites. Timeline-style logs, searchable categories, job visibility, retention settings, and settings history make it easier to troubleshoot failed steps, trace changes, and understand what happened over time.

GriffinForms also supports partial submissions, which means incomplete multi-step submissions can still remain visible in the admin area when that workflow matters.

= WordPress account registration workflows =
GriffinForms includes a flexible user registration workflow for registration forms that need to create or manage WordPress users after submission. You can build a simple WordPress registration form for one account, or use an iterable email field for multi-user registration from a single form submission. GriffinForms lets you choose whether a registration form should use a mapped password or send the native WordPress password setup link, assign the WordPress user role for the account being created, and map optional profile data such as username, first name, last name, and profile image when the form collects it.

This user registration system is built for real workflows, not just one fixed registration form pattern. You can decide whether user registration happens immediately, waits for admin activation, or stays in manual review, and you can control how duplicate-account cases are handled. GriffinForms also gives registration forms stronger admin visibility through native logging, submission-side account activity, account-action follow-up, and builder checks that help catch missing mappings, risky password choices, and iterable registration-form edge cases before the form goes live.

Helpful docs:
- [Registration workflow modes](https://griffinforms.com/docs/user-docs/user-registrations/overview-and-workflow-modes.php)
- [Submission Accounts Accordion](https://griffinforms.com/docs/user-docs/user-registrations/submission-accounts-accordion.php)
- [Password strategies](https://griffinforms.com/docs/user-docs/user-registrations/password-strategies-and-password-setup.php)

= Spam protection and rate limiting =
GriffinForms supports multiple CAPTCHA providers, including reCAPTCHA, Cloudflare Turnstile, and hCaptcha. It also includes native rate limiting and backend anti-spam checks, so spam protection does not depend on a single layer. That protection applies across the submission flow, including workflows that use file uploads.

= Email delivery and notifications =
GriffinForms can send admin notifications and autoresponders through WordPress mail or configured delivery providers such as Custom SMTP, SendGrid, and Mailgun. That gives you more flexibility when you need more dependable delivery for production forms.

Helpful docs:
- [Email settings](https://griffinforms.com/docs/user-docs/email-and-notifications/email-settings.php)
- [Managing messages](https://griffinforms.com/docs/user-docs/email-and-notifications/managing-messages.php)
- [Mail merge placeholders](https://griffinforms.com/docs/user-docs/email-and-notifications/mail-merge-placeholders.php)

= Reusable messages and merge variables =
GriffinForms includes a reusable message system for admin alerts and autoresponders. You can build messages once, reuse them across forms, and insert merge variables so subjects and message bodies can pull values from the submission at send time. That makes it easier to maintain more personalized and more consistent email workflows without rewriting the same message for every form.

GriffinForms also supports mapping autoresponders to different email fields inside the same form. For example, a staff member can submit a form on behalf of a client, student, or employee, while the correct confirmation message is still sent to the email field for that actual person.

Admin alerts can also be mapped per recipient, so different staff members or teams can receive different messages for the same submission. For example, one alert can go to admissions, another to finance, and another to operations when each team needs different context.

= Easier first-form experience =
GriffinForms includes a guided onboarding flow to help new users create and publish a useful first form more quickly. That makes it easier to start with a working form instead of a blank builder and then expand into more advanced flows later. Starter forms and reusable templates also help teams move faster when they need to repeat similar workflows across forms or sites.

= Griffin Assist — AI form building inside the builder =
Griffin Assist lets you build and refine forms using plain-English prompts directly inside the GriffinForms builder. Describe the form you need, and Griffin Assist drafts the structure for you. From there you keep full control — drag, rearrange, and fine-tune using the same builder you already know.

This is not a separate AI tool that hands off a static export. Griffin Assist works inside your live draft, so changes appear immediately in the builder as you prompt them.

**Drafting a new form**: type a prompt in the Create Form modal and Griffin Assist generates a starting structure with pages, rows, and fields. The draft opens in the builder ready for you to refine. When you are happy with it, publish it to make it live. If you want to start over, discard it — your other forms are never affected.

**Editing an existing form**: open any form in AI draft mode using the AI Edit action. Griffin Assist targets only the elements you ask about, so editing a field label or adding a new page does not rebuild the whole form or disturb fields and logic you already configured.

**Chat Mode**: toggle Chat Mode on to ask questions, explore ideas, and get suggestions before committing to a change. Griffin Assist returns clickable action buttons so you can review a suggestion and apply it with one click. Structural suggestions such as adding a new section, page, or row appear alongside copy advice.

**Suggestion pills**: each element type in the builder has a set of context-aware suggestion pills — one-tap actions tailored to what is currently selected. Improving a field label, polishing a description, adding a file upload hint, or refining dropdown options all have their own targeted pills. Translation is also available as a one-tap action that rewrites all labels, descriptions, options, and button text into your target language.

Griffin Assist requires an active AI provider connection. You can connect OpenAI, Anthropic, Google Gemini, xAI Grok, or Mistral from the AI settings tab using your own API key. A data-sharing consent step is required before Griffin Assist sends any form data to an external provider.

= GriffinForms Pro =
GriffinForms Pro is an optional paid add-on that extends the core plugin with premium field types and submission management tools.

**Pro field types:**
- **Signature** — collect signatures directly inside the form, stored alongside the submission
- **Rating** — star-based rating fields for feedback, surveys, and reviews
- **Rich Text** — let respondents format answers with bold, lists, and basic text formatting
- **Image Selection** — present options as clickable image cards instead of plain radio buttons or checkboxes
- **Likert Scale** — structured grid for multi-row agreement or frequency questions

**Submission export:**
Download submission data as CSV, JSON, Excel (XLSX), or Printable HTML directly from the WordPress admin. Export a single entry with the row action or bulk-select a batch. Complex fields like address and Likert scales are cleanly flattened for use in Excel or Google Sheets.

**Submission editing:**
Let submitters return and edit their own submissions via a secure, time-limited edit URL. Configure access policies, edit windows, and age limits per form. Edits appear in the submission history timeline with rollback support, so admins retain full visibility over what changed and when.

All Pro features work with conditional logic, multi-step forms, compliance profiles, and Griffin Assist — the same as core fields.

= Gutenberg and advanced workflows =
GriffinForms works with Gutenberg and also includes a stronger technical foundation for advanced evaluators, including a documented REST API surface, capability-aware access control, device management for protected companion routes, and webhook-ready architecture. Multi-step submissions use AJAX handling with server-side validation and anti-spam checks, which helps longer forms feel more responsive while still enforcing validation on the backend. Post-submission actions such as emails and other follow-up work can also be processed in the background, which helps more complex workflows stay smoother after a form is submitted.

These are not the first thing most users need, but they help show GriffinForms is built for more than a simple one-page contact form.

Helpful docs:
- [Embedding forms](https://griffinforms.com/docs/user-docs/building-forms/embedding-forms.php)
- [Multi-page forms](https://griffinforms.com/docs/user-docs/building-forms/multi-page-forms.php)
- [Conditional logic](https://griffinforms.com/docs/user-docs/conditional-logic/overview.php)

= Privacy-conscious by default =
Form submissions stay in WordPress by default. External services are only involved when you enable them, such as payments, CAPTCHA, or email delivery providers. See the External Services section below for details.

GriffinForms also includes per-form compliance profiles (Standard, GDPR, and HIPAA-ready) with submission hashing, layout snapshots, configurable retention policies, and WordPress personal data export and erase integration when those workflows matter.

= External Services =
GriffinForms can connect to these third-party services when enabled:
- **Google reCAPTCHA** (spam protection): [Terms](https://www.google.com/intl/en/policies/terms/) and [Privacy](https://www.google.com/intl/en/policies/privacy/)
- **Stripe** (payments): [Terms](https://stripe.com/legal) and [Privacy](https://stripe.com/privacy)
- **PayPal** (payments): [Terms](https://www.paypal.com/webapps/mpp/ua/useragreement-full) and [Privacy](https://www.paypal.com/webapps/mpp/ua/privacy-full)
- **Cloudflare Turnstile** (spam protection): [Terms](https://www.cloudflare.com/terms/) and [Privacy](https://www.cloudflare.com/privacypolicy/)
- **hCaptcha** (spam protection): [Terms](https://www.hcaptcha.com/terms) and [Privacy](https://www.hcaptcha.com/privacy)
- **SendGrid** (email delivery): [Terms](https://www.twilio.com/legal/tos) and [Privacy](https://www.twilio.com/legal/privacy)
- **Mailgun** (email delivery): [Terms](https://www.mailgun.com/legal/terms/) and [Privacy](https://www.mailgun.com/legal/privacy-policy/)
- **MailChimp** (audience sync): [Terms](https://mailchimp.com/legal/terms/) and [Privacy](https://mailchimp.com/legal/privacy/)
- **OpenAI** (AI form building, when configured): [Terms](https://openai.com/policies/terms-of-use) and [Privacy](https://openai.com/policies/privacy-policy)
- **Anthropic** (AI form building, when configured): [Terms](https://www.anthropic.com/legal) and [Privacy](https://www.anthropic.com/legal/privacy)
- **Google Gemini** (AI form building, when configured): [Terms](https://policies.google.com/terms) and [Privacy](https://policies.google.com/privacy)
- **xAI Grok** (AI form building, when configured): [Terms](https://x.ai/legal/terms-of-service) and [Privacy](https://x.ai/legal/privacy-policy)
- **Mistral** (AI form building, when configured): [Terms](https://mistral.ai/terms/) and [Privacy](https://mistral.ai/privacy/)

= Learn more =
- Documentation: [GriffinForms Docs](https://griffinforms.com/docs/)
- User docs: [GriffinForms User Docs](https://griffinforms.com/docs/user-docs/)
- Templates: [Form Templates](https://griffinforms.com/templates/)
- Releases: [Release Notes](https://griffinforms.com/releases/)
- Privacy: [Privacy Policy](https://griffinforms.com/privacy.php)

= Use-case guides =
- [WordPress user registration form](https://griffinforms.com/solutions/wordpress-user-registration-form.php)
- [WordPress multi-step form](https://griffinforms.com/solutions/wordpress-multi-step-form.php)
- [WordPress payment form](https://griffinforms.com/solutions/wordpress-payment-form.php)
- [WordPress file upload form](https://griffinforms.com/solutions/wordpress-file-upload-form.php)
- [WordPress conditional logic form](https://griffinforms.com/solutions/wordpress-conditional-logic-form.php)

== Installation ==

1. Upload the plugin to the `/wp-content/plugins/griffinforms-form-builder` directory or install it via the WordPress plugin screen.
2. Activate it through the **Plugins** screen.
3. Go to the **GriffinForms** menu in the admin sidebar to start building forms.

== Frequently Asked Questions ==

= Can I build multi-step forms in WordPress? =
Yes. Use pages in the builder to create multi-step forms with clear navigation between steps.

= Can GriffinForms create WordPress users from form submissions? =
Yes. GriffinForms includes a dedicated Accounts workflow for WordPress user registration. You can map form fields to account creation, choose duplicate-account behavior, and use immediate, pending, or manual-review account flows depending on the form.

= Can one form submission create more than one WordPress account? =
Yes. If the mapped email field is iterable, one submission can fan out into multiple account actions. GriffinForms treats those as separate target account actions in the runtime and admin UI.

= Can I create application forms with file uploads? =
Yes. GriffinForms supports upload fields with multi-file selection, file-type checks, size limits, file-count limits, and related upload controls, which makes it a good fit for application-style forms, support requests, and document collection workflows.

= Can I collect payments with Stripe or PayPal? =
Yes. GriffinForms supports both Stripe and PayPal for payment forms and payment-related workflows inside the form flow, including review-and-pay steps and resume links for pending payments.

= Can GriffinForms send email through SMTP, SendGrid, or Mailgun? =
Yes. GriffinForms supports WordPress mail, Custom SMTP, SendGrid, and Mailgun for notifications and autoresponders.

= Does GriffinForms support reusable email messages and merge variables? =
Yes. GriffinForms includes reusable messages for notifications and autoresponders, along with merge-variable support so message content can be personalized from submission data. It also supports mapping autoresponders to different email fields inside the same form when the submitter and recipient are not the same person, and mapping admin alerts to different recipients when teams need different messages.

= Does GriffinForms include spam protection? =
Yes. GriffinForms supports reCAPTCHA, hCaptcha, Cloudflare Turnstile, and a silent honeypot, along with native rate limiting on both submissions and file uploads. Multiple layers can be combined independently of each other.

= Does GriffinForms support conditional logic? =
Yes. GriffinForms supports more than simple show and hide rules. You can use conditional logic across fields, rows, and the form itself to control visibility, labels, headings, success messages, redirects, and submit behavior based on user input.

= Does GriffinForms include native logs? =
Yes. Native logging includes timeline-style logs, searchable categories, submission history, and stronger troubleshooting visibility when logging is enabled.

= Does GriffinForms keep settings history for troubleshooting? =
Yes. GriffinForms keeps a short history trail for global settings changes, which helps when you need to see what changed, when it changed, and who changed it on a production site.

= Can I style forms to match my site? =
Yes. GriffinForms includes a theme system with built-in themes and deeper styling controls, so you can modify existing themes or create new ones with control over form inputs, buttons, and states.

= Where are submissions stored? =
Submissions are stored in your WordPress database. File uploads are stored in the WordPress uploads directory.

= Can I see incomplete multi-step submissions in the admin area? =
Yes. GriffinForms supports partial submissions, so incomplete multi-step entries can still remain visible in the admin area.

= Does it work with Gutenberg? =
Yes. You can use GriffinForms with Gutenberg and other shortcode-friendly editor or page-builder workflows.

= Can I reuse forms or templates across sites? =
Yes. GriffinForms supports reusable templates as well as JSON export and import, which makes it easier to repeat proven workflows and speed up setup across forms or sites.

= Is GriffinForms only for contact forms? =
No. GriffinForms can handle contact forms, but it is better suited to structured workflows such as applications, requests, uploads, and payment forms.

= Does GriffinForms include GDPR or HIPAA compliance features? =
Yes. GriffinForms includes per-form compliance profiles (Standard, GDPR, and HIPAA-ready) with submission hashing, layout snapshots, configurable retention, and WordPress personal data export and erase integration.

= Does the builder warn me about form configuration problems? =
Yes. The builder includes a live checks system that shows error, warning, and info counts as you edit. It covers spam configuration, email setup, compliance risks, registration mapping issues, and layout problems — so you can catch issues before the form goes live.

= Where can I find documentation? =
See the docs at [GriffinForms Docs](https://griffinforms.com/docs/).

= Is GriffinForms free? =
The core plugin is free and includes multi-step forms, user registration, file uploads, Stripe and PayPal payments, MailChimp integration, conditional logic, compliance profiles, and AI-assisted building — with no paid tier required for any of those features. GriffinForms Pro is an optional paid add-on that adds Square payments, Google Sheets sync, Klaviyo marketing integration, premium field types (Signature, Rating, Rich Text, Image Selection, Likert Scale), submission export, and frontend submission editing.

= What does GriffinForms Pro include? =
GriffinForms Pro adds Square payments, Google Sheets sync, and Klaviyo marketing integration, along with premium field types — Signature, Rating, Rich Text, Image Selection, and Likert Scale — submission export (CSV, JSON, Excel, Printable HTML), and frontend submission editing with secure edit URLs, access policies, time-window controls, and edit history with rollback. All Pro features work with conditional logic, multi-step forms, and compliance profiles. The core plugin remains free and fully functional without Pro.

= Can submitters edit their own submissions after they submit? =
Yes, with GriffinForms Pro. Pro generates secure, time-limited edit URLs that you can send to submitters. You control the access policy (who can edit), the edit window (how long after submission), and age limits per form. All edits are tracked in the submission history timeline with rollback support so admins can see exactly what changed.

= Does GriffinForms integrate with MailChimp? =
Yes. GriffinForms includes a built-in MailChimp integration that subscribes form submitters to a MailChimp audience as part of the submission flow. You can map form fields to MailChimp merge tags, assign tags, and control consent behavior per form. MailChimp credentials are configured globally in Integrations, and sync runs in the background so the form submission is not blocked by API latency.

= Can I migrate my existing forms from another plugin? =
Yes. GriffinForms includes a guided migration tool that imports forms and submissions from Contact Form 7, WPForms Lite, Ninja Forms, and Formidable Forms free. Go to GriffinForms → Import to get started — GriffinForms detects installed plugins automatically and shows you what it can bring across. Migrated forms behave like any GriffinForms form, so you can edit, extend, and layer in conditional logic without rebuilding from scratch.

= How does GriffinForms compare to Contact Form 7? =
Contact Form 7 is a lightweight plugin built around a shortcode textarea editor with no visual builder, no submission storage by default, and spam protection limited to its own CAPTCHA module. GriffinForms includes a visual drag-and-drop builder, stores all submissions in WordPress, supports multi-step forms, user registration, file uploads, Stripe and PayPal payments, and four independent spam protection layers. See the full comparison: https://griffinforms.com/solutions/contact-form-7-alternative.php

= How does GriffinForms compare to WPForms? =
WPForms Lite includes a visual builder and basic Stripe support, but multi-step forms, conditional logic, file uploads, and user registration all require a Pro licence. In GriffinForms, all of those features are included in the free core plugin with no upgrade required. See the full comparison: https://griffinforms.com/solutions/wpforms-alternative.php

= How does GriffinForms compare to Gravity Forms? =
Gravity Forms requires an annual licence starting at $59/year. GriffinForms is free, includes built-in compliance profiles, AI-assisted form building with Griffin Assist, and a builder checks system that surfaces errors and warnings before you publish. See the full comparison: https://griffinforms.com/solutions/gravity-forms-alternative.php

== Screenshots ==

1. Visual drag-and-drop form builder with field palette, live canvas, and summary panel
2. Griffin Assist generating a multi-step job application form from a single prompt
3. User Registration workflow modal — configure role, creation mode, and access in guided steps
4. Submission detail view with event log showing mail, system, and processing events
5. Conditional Logic rule editor with condition, action, and live summary header
6. Compliance settings — GDPR and HIPAA-ready profiles with per-field retention controls
7. Builder checks warnings overlay — actionable alerts for missing autoresponder and admin email
8. Multi-step form on the frontend showing the step progress indicator and Next button
9. Submissions admin list with 800+ entries, compliance badges, and status filter tabs
10. Form theme selection modal with visual previews across multiple theme categories

== Changelog ==

= 3.2.3.0 – 2026-06-10 =

**Minor**

* Introduced a Column Manager for all list views. A columns icon in the list toolbar opens a modal where you can show or hide columns, drag them into any order, choose a display variant for columns that support multiple formats (such as showing a username with or without the full name), set a custom percentage width per column, and control how many items appear per page. Preferences are saved site-wide and persist across page loads.
* Added optional Last Edited and Last Editor columns to all list surfaces that track edit history. Last Editor supports a username-only display variant.
* Added Klaviyo as a recognised marketing integration in Core. A Klaviyo icon appears on submissions that have been synced, and the single submission page shows a Klaviyo marketing activity card alongside other integration cards. Full sync functionality activates with GriffinForms Pro.
* Fixed the single log entry page so the related-item ID cell renders its "Open" link as a clickable link instead of printing raw HTML.
* Corrected Column Manager label mismatches where the modal showed a different name than the table heading for four columns: Attachments (submissions), Signals (forms and submissions), Log Type (logs), and Date / Time (logs).
* Renamed the internal `isread` column key to `readstatus` for clarity; existing preferences migrate automatically on next save.

= 3.2.2.0 – 2026-06-08 =

**Patch**

* Square is now a recognised payment option in GriffinForms. Full payment processing is activated by the Pro plugin.
* Fixed the payment field builder preview so a single product card no longer stretches to fill the full field width when only one product is configured.
* Fixed the payment field in the Gutenberg block preview so configured products now render as actual cards instead of a static placeholder.
* Fixed the address field country dropdown in the Gutenberg block preview inheriting an unwanted minimum height from the global select control rule.

= 3.2.1.0 – 2026-06-06 =

**Patch**

* The command palette resting pill now updates immediately when the form name is saved via the inline canvas input or the Form Options modal — no page reload required.
* The native `<select>` preview for dropdown fields in the builder now stays in sync with option changes made in the inline option editor. Adds, deletes, renames, and reorders are all reflected after each save.
* Previous, Next, and Submit button labels are now editable directly on the builder canvas — click the button text, type, and the label saves on a short debounce. The Page Navigation Editor accordion in the right sidebar has been removed.
* Form Options and Notifications modals now fetch fresh content from the server each time they open, so changes made via inline editing or AI database patching are immediately visible without a page reload.

= 3.2.0.0 – 2026-06-06 =

**Minor**

* Fixed a builder bug where the last radio or checkbox option could refuse to move when you tried to drag it upward.
* Improved no-theme frontend styling so form buttons follow the active site theme more naturally instead of feeling visually out of place.
* Cleaned up no-theme frontend details, including validation message styling, Likert table borders, stepper presentation, and excess empty space inside payment cards.
* Fixed the builder so switching back to the default style correctly clears the previously applied themed background.
* Improved publish-location tracking so forms embedded with shortcodes or the Gutenberg block are recorded more reliably when posts and pages are saved.
* Reduced builder clutter by hiding empty form, page, and row headings/descriptions until they are actually needed.
* Fixed Gemini provider errors being shown as misleading Griffin Assist validation failures.
* Added clearer Gemini quota error messaging when the connected Google AI project has no usable request quota.

= 3.1.9.0 – 2026-06-02 =

**Patch**

* Griffin Assist thinking stream is now rendered live in the chat window as it arrives, giving real-time visibility into the AI reasoning phase. The stream clears automatically when the final response lands.
* Batch operations now show an incremental per-item status list in the chat — each item progresses through waiting, working, and done states as the operation runs.
* The intent classifier now returns structured output (operation, target scope, target attribute, batch flag, and confidence) fed from the operation catalog, replacing the coarse three-value classification. When confidence is low, the assistant surfaces candidate paths as clickable options rather than guessing.
* Payment field product cards on the builder canvas now support inline editing — click any product name, price, or description to edit it in place without opening a panel. Image placeholders have an Add Image button that opens the WordPress Media Manager. Add Product remains a separate canvas panel for new products only.
* The builder canvas now shows an aurora-style animated overlay while a Griffin Assist request is in flight, blocking accidental edits and signalling AI activity.
* Clicking a form name in the All Forms list now navigates directly to the form builder. The deprecated Edit Form page is no longer the default destination for that link.
* The "Show page headings" toggle in the progress bar settings has been renamed to "Use page headings as step labels" to accurately reflect its behaviour. The Step Name field description now cross-references the toggle. No logic or storage changes.
* Submissions list has a dedicated Read/Unread column immediately after the submission name, moving the unread orb out of the Signals column.
* Date range filters on list pages now convert site-local day boundaries to UTC before comparing against the stored created timestamp, fixing incorrect results on sites with a UTC offset.
* The right-sidebar accordion on single submission pages now opens the first panel by default instead of the User Registration panel.
* Required field indicator is now a global setting under Settings → General. Choose an asterisk (default), custom text, or nothing. The setting propagates to the frontend, builder preview, Gutenberg block preview, and template previews.
* Conditional logic value inputs for text-type conditions now render as a contenteditable rich field with inline variable tag pills instead of a plain textarea. Tags are removable and the Insert Variable button has been redesigned.
* Deleting a dropdown option while another option's label is being edited no longer triggers a race condition that restores the deleted option.
* Column headers on the Forms, Submissions, and Logs list tables no longer wrap to a second line at narrow viewport widths.
* No-theme mode now applies explicit font weights to field labels (600), checkbox and radio labels (500), and floating labels (400) to prevent site-theme inheritance from affecting form typography.
* Recent entries widget in the builder right sidebar now renders nonce-failure responses as a styled error message instead of displaying raw JSON.
* Checkbox and radio option groups on the frontend are now flush with the left edge. Bootstrap's default left indent is removed via a scoped CSS override.
* Fixed a PHP 8.4 deprecation notice on the New Form and Edit Form pages caused by `InputRadio` passing a null `css_class` to `wp_kses_post`. Fixed a second deprecation on the New Message page caused by `RichText` passing a null value to `wp_editor`.

= 3.1.8.0 – 2026-05-31 =

**Patch**

* Griffin Assist can now add email notifications by prompt and edit existing notification copy — subject line, heading, body, and recipient address.
* Griffin Assist can now rewrite step labels on multi-step forms in a single prompt.
* Advisory action buttons now carry the original question and advisory response as context into the follow-up mutation, producing more coherent results when acting on a Chat Mode suggestion.
* Inline option editing for checkbox, radio, and dropdown (select) fields — rename, reorder, add, and delete options directly on the builder canvas without opening a settings panel.
* Form Structure Tree moved from the right sidebar to the left sidebar. The Structure button is now in the titlebar left zone. The panel is persistent and does not close on element selection.
* Griffin Assist routing refactored into discrete components: SurfaceRouter, BuilderAssistRouter, IntentClassifier, and OperationPlanner. No behaviour change for existing prompts.
* Inter font is used throughout the form builder UI. Other admin pages continue to use the system font stack.
* Fixed a model behaviour where form generation placed all fields inside a single half-width column. Fields now default to one per row at full width unless the prompt explicitly requests a multi-column layout.

= 3.1.7.0 – 2026-05-23 =

**Patch**

* Added a guided migration tool for switchers from Contact Form 7, WPForms Lite, Ninja Forms, and Formidable Forms free. Forms are mapped into the native GriffinForms import shape and imported through the existing FormImport path so migrated forms behave like regular GriffinForms forms.
* Migration is accessible from a new Import page under the GriffinForms menu. The page has select, running, and results states with per-form status reporting and a skipped-items breakdown.
* Supported field type mappings cover all free-tier fields for each plugin. Unsupported or Pro-only fields are reported in the results as skipped with factual reasons instead of silently dropped.
* Submission migration is included for CF7 (via CFDB7), WPForms, Ninja Forms, and Formidable Forms when the respective entry tables are present and the source has stored submissions.
* Competitor conditional logic is not translated; forms that contain it record a per-form note in migration results.
* A migration notice appears in the All Forms list when supported competitor plugins with importable forms are detected. It is per-user dismissible.
* An import entry point appears in onboarding: detected plugin logos are shown in the welcome step with a direct link to the import page, and a contextual panel also appears in the starter-preview step.
* Fixed a regression where the Griffin Assist create prompt replayed on every builder refresh when the builder was opened in AI draft mode. The `auto_start_pending` one-shot flag is now consumed correctly at render time.

= 3.1.6.0 – 2026-05-21 =

**Patch**

* Confirmed compatibility with WordPress 7. All major surfaces audited and tested under WP7 with no regressions.
* Builder UI accent colors now use `color-mix()` with `--wp-admin-theme-color` instead of hardcoded WP6-era blue values, so the builder respects the active WordPress admin theme color on WP7 and above.
* Changed the Command Palette keyboard shortcut from Cmd+K / Ctrl+K to Cmd+Shift+K (Mac) and Ctrl+Shift+O (Windows/Linux) to avoid conflict with the WordPress 7 global command palette.
* The Create with AI button on the All Forms page now uses an indigo-to-purple gradient to distinguish it visually from standard WordPress admin buttons.
* Folder picker modal hover, focus, and selected-row states now derive from the WP admin theme color via `color-mix()`, replacing hardcoded hex values.
* All non-builder admin modal buttons now use WordPress native `button`/`button-primary` classes; publish success notices use native `notice notice-success` markup.
* Griffin Assist now falls back to WordPress 7 Connector keys for OpenAI, Anthropic, and Google Gemini when no GriffinForms-specific API key is set. Key resolution order: GriffinForms own key → WordPress Connector key → no key. The Integrations modal shows a notice when a Connector key is active.
* When no Active AI Provider is selected in Settings → AI but WordPress 7 Connector keys are available, the Griffin Assist chat sidebar shows inline provider buttons so you can activate a provider without leaving the builder.
* The Create with AI modal is now accessible when WordPress 7 Connector keys are available, even if no Active AI Provider has been selected yet.
* AI Edit now works on any form — manually built, imported, or AI-created. Previously it silently fell back to the standard builder on non-AI-draft forms.
* Opening AI Edit on a regular form now automatically starts an AI draft session, enabling the Finalize and Discard banner and Undo/Reset controls.
* Discard Draft on an AI Edit session now preserves the form and exits the session. Discard on a Create with AI draft continues to delete the unpublished draft as before.

= 3.1.5.0 - 2026-05-18 =

**Minor**

* Redesigned the builder titlebar action cluster: Conditional Logic, Integrations, and Accounts moved into the options menu, while the titlebar stays cleaner and more consistent with Gutenberg conventions.
* Added a builder-side Form Options modal with tabbed access to General, Behavior, Availability, Submission, and Compliance settings without leaving the editor.
* Added a builder-side Form Notifications modal with a channel-agnostic architecture. Ships with email autoresponder and email alert channels, supports field-mapped or static recipients, and hydrates legacy notification settings into the new card model on first open.
* Added a Command Palette (Cmd+K / Ctrl+K, or click the form name pill) for instant access to integrations, themes, form settings, builder keywords, plugin settings, recent forms, and create actions such as New Form, New Message, New Folder, and New Theme.
* Fixed statusbar stacking: the form-area now takes remaining flex space so the statusbar sits in-flow at the bottom of the builder wrapper instead of floating above sidebar and field content.
* Updated the checks pipeline for notifications v2 compatibility: autoresponder and admin alert checks now read from the new notification cards schema, and forms now surface an error when an enabled notification card points to a field that no longer exists.
* Included release polish and compatibility fixes across the builder: Form Options now opens with its first tab active, titlebar dropdown duplication was removed, checks overlays gained loading placeholders, and legacy single-item admin controls were isolated from builder-only styling classes.

= 3.1.4.0 – 2026-05-17 =

**Patch**

* Fixed multi-step stepper connector line gap caused by a CSS box-shadow on the marker element that extended beyond its bounding rect.
* Fixed multi-step stepper layout on narrow screens and mobile: all beads now stay on one horizontal line and only the active step's label is shown.
* Fixed builder preview stepper always showing step 1 as active with no completed ticks, regardless of which page is selected in the builder.
* Fixed builder preview stepper bead count not updating when a form page is added or deleted — the stepper now refreshes immediately.
* Fixed Griffin Assist remove-field, remove-column, and remove-page operations not cascade-deleting associated database records, leaving orphaned rows behind.
* Fixed submission deletion not removing linked revision history across all deletion paths: admin list, bulk delete, retention scheduler, and form deletion with "Also permanently delete all submissions" checked.
* Added Core-side infrastructure for the Google Sheets Pro integration: Pro badge pill on the integration card and upsell shell in the info view when Pro is not installed. Google Sheets remains in Coming Soon state until Pro 0.9.0.0 ships.

= 3.1.3.0 – 2026-05-12 =

**Minor**

* Added Anthropic, Google Gemini, xAI Grok, and Mistral as supported Griffin Assist AI providers alongside OpenAI, each with bring-your-own API key configuration in the AI settings flow.
* Added submissions-list extension hooks so Pro and future extensions can inject bulk actions, row actions, and page modals without Core file edits.
* Added a Global Settings General-section extension hook so Pro and future extensions can append settings rows without replacing the Core settings page.
* Added Core-side submission export upsell registration and locked/live discoverability surfaces across submissions list actions and the single submission page.
* Refreshed the single submission page design for cleaner readability and aligned the Download action surface with the new export entitlement flow.

= 3.1.2.0 – 2026-05-11 =

**Patch**

* Added Mailchimp as a first-party marketing integration. Global API key and audience discovery are configured in the Integrations modal. Per-form settings control audience selection, subscriber email mapping, optional first/last name mapping, static tags, consent source field, and subscription mode.
* Added Mailchimp post-submission subscriber sync through the existing jobs/pipeline architecture. Sync runs in the background so frontend submissions are not blocked by third-party API latency.
* Added Mailchimp subscriber identity storage: canonical submission-level state is persisted to submission metadata, with secondary user-meta indexing when a WordPress user account is linked to the submission.
* Added Mailchimp-specific log support with a dedicated log category, covering connection tests, configuration saves, audience discovery, and per-submission sync lifecycle events (queued, processing, synced, skipped, failed).
* Added Mailchimp signal to the submissions list signals column so Mailchimp-enabled and synced submissions surface a Mailchimp indicator alongside existing signals.
* Added Mailchimp checks-pipeline coverage: builder and runtime checks surface missing audience configuration, missing subscriber email mapping, and stale audience references before submission time.
* Added marketing activity summary card to the single submission view. The card shows Mailchimp provider identity, sync status badge, and submission-level Mailchimp state rows when Mailchimp metadata exists for a submission.
* Added Mailchimp support documentation covering API key setup, audience selection, configuration field reference, Marketing vs Transactional key differences, and log state meanings.

= 3.1.1.0 – 2026-05-10 =

**Patch**

* Added PayPal as a core payment processor alongside Stripe.
* Added PayPal integration-modal configuration for sandbox/live mode, client ID, client secret, and optional buyer-facing label, description, and logo visibility settings.
* Added server-side PayPal order creation, resume, and capture flow using the official popup-based checkout model.
* Refactored the core payment controller and review-step runtime so multiple payment gateways can share the same session/create/resume/complete architecture.
* Added PayPal Review & Pay frontend support with lazy SDK loading, hosted PayPal buttons, popup approval, and server capture completion.
* Kept Review & Pay aligned with FormTheme and no-theme rendering contracts for both Stripe and PayPal.
* Fixed encrypted settings caching so server-side PayPal authentication always reads the decrypted client secret during checkout.
* Improved payment visibility in admin submissions by showing the correct payment gateway name, icon, and PayPal order/capture metadata in submission payment cards.
* Updated submissions list signals so payment submissions can show payment-processor icons, with a dedicated pending-payment signal icon for unpaid payment submissions.

= 3.1.0.0 – 2026-05-09 =

**Minor**

* Added Pro Fields section to the form builder left sidebar, surfacing Pro field types as non-draggable pills with a Pro badge so users know what upgrading unlocks. Pills become fully draggable when Pro is active and entitled.
* Seeded default folder structure on first installation so new installs have an organised starting point.
* Removed redundant top borders from the page navigation widget and toned down label font size.
* Added a preview button to the builder titlebar with a desktop/tablet/mobile viewport switcher and fullscreen expand mode. Preview loads the live WordPress theme with conditional logic and submission workflows active.
* Applied form theme page background colour as a 70% white tint to the builder form area so the canvas reflects the configured theme without being overwhelming.
* Checks pipeline: email edit-access field is no longer required, allowing blank values to pass validation correctly.
* Added `{submission:edit_url}` merge token for use in messages and notifications, resolving to the frontend edit URL for the current submission.
* Switched the builder UI to Inter as the default typeface with a 14px root and an em-based type scale. Font applies to the builder surface and all builder modals.
* Added Image Selection field: core scaffolding and frontend/admin integration.
* Expanded the loading overlay quote library from 62 to 150 entries, adding Marcus Aurelius, Plato, Socrates, Aristotle, Pythagoras, Bertrand Russell, Feynman, Heisenberg, Faraday, Dickens, Brontë, Maupassant, O. Henry, and public-domain poetry stanzas from Frost, Keats, Byron, Shelley, and Milton.
* Fixed image selection option keys (e.g. `opt_XXXXXXXX`) being printed as the submission display name in the submissions list.
* Fixed Pro page heading badge contrast (white text on light grey) by applying Bootstrap `text-bg-secondary`.
* Suppressed horizontal scroll in the field picker left sidebar; styled the vertical scrollbar to match the builder aesthetic.

= 3.0.9.0 – 2026-05-07 =

**Patch**

* Fixed uninstall flow to delete migration and backfill markers when delete-data is enabled, so reinstall on the same database starts clean.
* Fixed Freemius detection so Pro is recognised correctly after the plugin folder is renamed.
* Fixed builder loading overlay flash caused by the spinner becoming briefly visible on fast loads.
* Refined builder overlay design to a flush full-area style.
* Added delayed fade-in for admin container pages to hide unstyled layout flash when Bootstrap loads slowly.
* Removed rounded-circle class from submit button so button shape follows the form theme correctly.
* Capped font sizes on no-theme forms to prevent site theme inheritance from producing oversized text. Iteration, payment, and success message elements now included.
* Added Bootstrap-native button classes to no-theme form buttons for consistent default styling.
* Fixed preview modal so it fills available viewport height instead of being clipped short.
* Fixed log list primary column so JSON-encoded messages show a readable label instead of raw JSON.
* Fixed menu icon dark flash on page load by adding an explicit white fill to the SVG path.
* Standardised all admin list column badges to Bootstrap badge text-bg-* classes for consistent styling.
* Added unread-state blue orb to the submissions signals column.
* Added live unread submission count badge to the Submissions submenu item.
* Added Mark Read and Mark Unread row actions to the submissions list with inline AJAX.
* Added Mark Read and Mark Unread bulk actions to the submissions list.
* Added Read and Unread filter links to the submissions list subsubsub bar.
* Added paperclip signal to submissions list when a submission has file attachments.
* Added payment signal to submissions list when a submission has a payment attached.
* Fixed integration settings JSON decode errors from flooding the log on every page load.
* Fixed log page HTML entities being double-escaped in message output.
* Fixed log list Array to string conversion warning from raw array message values.

For earlier release notes (3.0.8.0 and below), see https://griffinforms.com/releases/

== Upgrade Notice ==

= 3.2.3.0 =

Minor release. Adds a Column Manager to all list views — show, hide, reorder, set variants and widths, and control items per page. Adds optional Last Edited and Last Editor columns across all lists. Introduces Klaviyo scaffolding in Core with a submissions list signal and a single submission marketing card. Fixes a raw-HTML rendering bug on the log detail page and corrects four column label mismatches in the Column Manager modal. Recommended for all users.

= 3.2.2.0 =

Patch release. Registers the Square payment provider scaffold in Core, fixes a single-product card layout regression in the payment field builder preview, renders real product cards in the Gutenberg block preview, and corrects an address field select height in the block editor. Recommended for all users.

= 3.2.1.0 =

Patch release. Builder consistency improvements: the command palette form name, dropdown select preview, and nav button labels now stay in sync with saved data without a page reload. Form Options and Notifications modals always show current data on open. The Page Navigation Editor sidebar widget is replaced by direct inline editing on the canvas buttons. Recommended for all users.

= 3.2.0.0 =

Minor release. Fixes the remaining choice-field drag-sort regression, improves no-theme frontend presentation, hardens frontend publish-location tracking, reduces empty builder metadata noise, fixes default-style theme background reset, and corrects Gemini provider failure handling. Recommended for all users.

= 3.1.9.0 =

Patch release. Activates the Griffin Assist thinking stream and batch status UI, upgrades the intent classifier to structured output, adds payment field inline editing and the builder in-flight lock overlay, and closes a range of QA items across the submissions list, date filters, conditional logic, and frontend CSS. Recommended for all users.

= 3.1.8.0 =

Patch release. Expands Griffin Assist with notification management, message copy editing, and step label rewrites. Adds inline option editing for choice and dropdown fields. Moves the Structure Tree to the left sidebar. Recommended for all users.

= 3.1.7.0 =

Patch release. Adds guided form migration from Contact Form 7, WPForms Lite, Ninja Forms, and Formidable Forms free. Migrated forms use the native GriffinForms import shape. Also fixes the Griffin Assist auto-start regression on builder refresh. Recommended for all users switching from a supported competitor plugin.

= 3.1.6.0 =

Compatibility release for WordPress 7. Updates accent colors, resolves the Command Palette keybinding conflict with the WP7 global palette, and adds WordPress 7 Connectors API support so Griffin Assist can use site-wide AI provider keys automatically. AI Edit now works on any form. Recommended for all users, especially those on WordPress 7.

= 3.1.5.0 =

Minor release. Form Options and Notifications now live inside the builder, the titlebar is cleaner, checks are more reliable with the new notifications model, and the new command palette adds fast access to forms, settings, keywords, and create actions. Recommended for all users.

= 3.1.4.0 =

Patch release. Fixes multi-step stepper connector line gap, mobile stepper layout, and builder preview stepper accuracy. Tightens data cleanup for AI edits and submission deletion. Recommended for all users with multi-step forms.

= 3.1.3.0 =

Adds four new Griffin Assist provider options, new developer extension hooks for submissions and Global Settings, and Core groundwork for Pro submission export.

= 3.1.0.0 =

Minor release. Pro Fields section in the builder sidebar, Image Selection field, builder Inter font and type scale, preview button with viewport switcher, merge token for submission edit URL, expanded 150-quote loading overlay, and several bug fixes. Recommended for all users.

= 3.0.9.0 =

Patch. Submissions list read/unread workflow, signals column improvements, admin UI polish, font size hierarchy for no-theme forms, and uninstall cleanup fixes. Recommended for all users.

= 3.0.8.0 =

This release improves the builder experience, adds clearer upsell surfaces for Pro features, and fixes preview links so they do not appear as real frontend publish locations.

= 3.0.4.0 =
Adds submission source URL capture, a branded admin footer, and Griffin Assist API key guidance. Fixes webhook infinite retry, integration settings log noise, bulk action Apply button, and Gutenberg block preview clipping. Also lays the groundwork for the upcoming GriffinForms Pro add-on. Recommended for all users.

= 3.0.6.0 =
Hotpatch release that fixes the post-update slowdown, removes the cron schedule warning, and speeds up builder insert workflows. Recommended for all users.

= 3.0.5.0 =
Faster activation, safer update handling, cleaner All Forms workflows, a full-page builder loading screen, and Griffin Assist support for Pro field types. Recommended for all users.

= 3.0.3.0 =
Adds an optional progress bar to multi-step forms — enable it per-form in the Form tab. Also fixes the Gutenberg block failing to register after a plugin update. Recommended for all users.

= 3.0.2.0 =
Introduces Griffin Assist AI form drafting — create and edit forms using plain-English prompts directly inside the builder. Includes surgical patch-based mutation, Chat Mode, full suggestion pill catalog, bulk translation, AI consent settings, and a Publish/Discard draft lifecycle. Recommended for all users.

= 3.0.1.0 =
* Minor release: Preparation for Griffin Assist with encrypted settings and AI broker foundation.

= 3.0.0.0 =
Major quality and reliability release: improves long-term stability, safer fallback behavior, and future growth groundwork while keeping current Core workflows stable. Recommended update.

= 2.4.4.0 =
Focused onboarding and editor polish release: fixes Gutenberg text-field preview rendering, hardens the frontend honeypot flow, improves the empty Forms onboarding state, and gives onboarding a cleaner reduced-chrome presentation. Recommended update.

= 2.4.3.1 =
Hotpatch release: fixes the final guided User Registration review step and the related editor regression introduced in 2.4.3.0. Recommended update.

= 2.4.3.0 =
Registration polish release: adds a guided User Registration creation flow, cleaner editing, native admin confirmations, and tighter submission-side follow-up behavior. Recommended update.

= 2.4.2.0 =
Follow-up registration release: adds submission/user linkage, REST exposure, onboarding registration starters, registration import/export support, and builder/admin refinements around registration workflows. Recommended update.

= 2.4.0.0 =
Workflow release: adds a dedicated WordPress account-registration system with builder-side setup, queued post-submission execution, submission-page admin account actions, and stronger checks coverage for registration forms. Recommended update after workflow QA.

= 2.3.9.0 =
Focused credibility patch: cleaner admin edit screens, a completed builder contextual-toolbar/overflow-menu path, restored Gutenberg preview field parity, and evidence-backed companion device-limit verification. Recommended update.

= 2.3.8.0 =
Adds a guided first-run setup, starter forms, easier publish options, and safer placement behavior on builder-managed pages. Recommended update.

= 2.3.7.0 =
Companion device + webhook foundation release: device registry/admin controls, fan-out notification pipeline contracts, webhook verification hardening, Gutenberg form-picker auth fix, and admin device UI polish. Recommended update.

= 2.3.5.0 =
API readiness and security hardening release: companion-app endpoints, capability matrix permissions, expanded audit diagnostics, and stricter guardrails. Recommended update.

= 2.3.4.0 =
Feature release focused on form creation flow and builder safety: improved Create Form UX, automatic starter layout seeding, and minimum-structure delete safeguards. Recommended update.

= 2.3.3.0 =
Focused quality patch for Gutenberg multi-block theme isolation, address field joined-input edge consistency, delete-flow reliability, and clearer builder insertion feedback. Recommended update.

= 2.3.2.0 =
Quality patch release focused on builder stability, delete-sync consistency, themed/no-theme validation and responsive parity, and cleaner frontend logs/warnings. Recommended update.

= 2.3.1.0 =
Focused quality patch for phone field usability and message HTML handling. Recommended update.

= 2.3.0.0 =
Adds compliance profiles, submission metadata timelines, builder warnings, and WordPress privacy tool integration. Recommended update.

= 2.2.0.0 =
Adds a new Form/Element tab system in the form builder right sidebar with new Summary, Structure, Logs, and Recent Submissions widgets.

= 2.1.9.1 =
Improves phone field defaults and layout behavior, especially on narrow layouts. Update recommended.

== License ==

GriffinForms is open source and licensed under GPLv2 or later.
