Terms & Conditions Consent Log — Full changelog

For each release, see the entries below. The latest version is always at the top.
The current release notes also live in readme.txt under "== Changelog ==".

= 1.2.0 =
* New: native WPForms integration. Opt-in toggle in Settings → Integrations; once enabled, every submission of a form that contains a ticked GDPR Agreement field is logged automatically, with the first email field of the form as subject. Stored as consent_type `wpforms_form_{ID}`, one type per form, same pattern as the existing Contact Form 7 integration. Works with WPForms Lite and Pro; no snippets or `accepted_args=4` boilerplate to maintain.
* New: the records filter now also searches inside `consent_text`. A new "Text contains" field on the filters bar runs a LIKE on the accepted text; the live filter, the AJAX pagination and the filtered CSV export all honour it. Useful to find records by a phrase that appeared in a previous version of your terms.
* New: hover tooltip on the "Outdated" badge in the records list — shows the document version stored in the record and the current version side by side, so you can tell at a glance how far back that consent was signed.
* Improved: the admin menu now always lives under Users → Consent log, with or without WooCommerce (previously it lived under the WooCommerce parent when WC was active). One single location, less clutter inside the WooCommerce submenu and one fewer condition to remember.
* Improved: the capability required to manage the plugin defaults to `manage_options` on every install (previously `manage_woocommerce` when WC was active). If you grant access to Shop Managers, add a one-line filter: `add_filter( 'tccl_admin_capability', fn() => 'manage_woocommerce' );`. Both `tccl_admin_menu_parent` and `tccl_admin_capability` filters keep working as before for any other customisation.

= 1.1.0 =
* New: the site icon (Settings > General > Site Icon, available in both classic and block/FSE themes since WordPress 6.5) is now shown on the printable consent certificate, next to the site name. Works for both new and previously stored records — the icon is rendered on demand each time the certificate is opened. Falls back gracefully when no site icon is set.
* Docs: clarified that [tccl_consent_box] is a self-contained form — not meant to be nested inside another form builder's form. Updated the FAQ and the source-file docblock.
* Docs: expanded the WPForms snippet in the FAQ — full example with the mandatory `accepted_args=4`, reading `consent_version` from the global setting, and the multi-form `id_form => [email, checkbox]` pattern. Same fix applied to the Gravity Forms snippet (now reads the version from the setting instead of hardcoding a date).
* Docs: clarified the version bump FAQ — the Settings string must match the document text character by character; pre-bump records are deliberately marked Outdated as the GDPR audit trail demands; do NOT delete Outdated rows.
* Docs: clarified that the certificate is rendered as a print-optimised A4 view — no PDFs are stored on disk and the plugin owns no uploads folder.
* Docs: clarified anonymisation vs deletion in the FAQ; documented the SQL escape hatch for cleaning up test rows without promoting it as a regular flow.

= 1.0.0 =
* Initial release.
* Works with or without WooCommerce. Menu under WooCommerce > Consent log when WC is active, otherwise under Users > Consent log. Capability defaults to manage_woocommerce or manage_options accordingly. Filterable via tccl_admin_menu_parent and tccl_admin_capability.
* Activation notice on the plugins screen with quick links to the Records and the Settings tabs.
* WooCommerce checkout capture (timestamp UTC, IP, user agent, version, source URL, exact text). Order metabox, "Consent" column on the orders list, optional consent lines in the New order admin email and the customer order email. HPOS compatible.
* Contact Form 7 integration (opt-in): captures every form submission that ticks an [acceptance] field, including the source URL of the page that hosted the form. Stored as cf7_form_{ID}, one type per form.
* WordPress comments integration (opt-in): captures the native wp-comment-cookies-consent checkbox (WP 4.9.6+) along with the post permalink. Stored as comment_consent.
* [tccl_consent_box] shortcode and Gutenberg block: stand-alone consent checkbox with REST endpoint, drop-in anywhere. The default text falls back to a configurable site-wide value in Settings > Integrations.
* Public tccl_save_consent() function (now accepting an optional source_url) for any other source (Gravity Forms, WPForms, custom flows…).
* Source URL recorded with every acceptance and shown on the records list, the PDF certificate, the CSV export and the Privacy Tools export.
* SHA-256 integrity sealing per record.
* Printable A4 certificate per record (browser saves it as PDF).
* Native WordPress Privacy Tools integration (export and erase).
* Live partial-match filters (email, order, date range, type) with filtered CSV export.
* Optional opt-in deletion of plugin data on uninstall (off by default).
