=== EZZE WCAG Pro ===
Contributors: Patzman
Tags: accessibility, wcag, alt text, accessibility test, toolbar
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Accessibility tools for alt text, automated tests, focus styles, skip links, and an optional frontend toolbar.

== Description ==

EZZE WCAG Pro provides practical tools that can help site administrators identify and address accessibility issues in WordPress.

Features in the free plugin include:

* Configurable skip links and visible focus styles.
* Link, breadcrumb, viewport, keyboard shortcut, and frontend toolbar helpers.
* Media-library workflows for reviewing alternative text.
* Automated accessibility test workflows and stored test results.
* Privacy and cloud-service controls in the WordPress administration area.

Some AI and automated testing features use the optional EZZE WCAG Pro managed cloud service. Those features require an explicit administrator connection and are subject to service quotas. Paid plans provide additional service capacity and separately distributed premium functionality; premium-only code is not included in the WordPress.org package.

Automated tests and remediation helpers cannot detect or fix every accessibility issue. Installing or using this plugin does not guarantee compliance with WCAG, EN 301 549, the European Accessibility Act, the ADA, or any other legal or technical standard. A complete accessibility process also requires manual review by qualified people.

More information and documentation: https://ezze-wcag-pro.com/docs/

== External services ==

The local accessibility helpers work without any external service. This plugin connects to the following external services only as described below. Each service lists what it is used for, what data is sent and when, who provides it, and links to its terms of use and privacy policy.

= 1. EZZE WCAG Pro managed cloud service (ezze-wcag-pro-proxy.com) =

Service domain: https://ezze-wcag-pro-proxy.com/ (all endpoints below /proxy/). Terms of use: https://ezze-wcag-pro.com/terms-and-conditions/ Privacy policy: https://ezze-wcag-pro.com/privacy-policy/ Data processing addendum: https://ezze-wcag-pro.com/data-processing-addendum/

What it is and what it is used for: The EZZE WCAG Pro cloud service is operated by the plugin author (Patrick Helms, website https://ezze-wcag-pro.com/) and answers at `https://ezze-wcag-pro-proxy.com/`. It performs processing that cannot be done inside WordPress: automated accessibility tests of public pages, AI alternative texts, AI explanations and element fixes, AI image accessibility reviews, page preview screenshots, authentication of the connected site, usage limits and optional service messages for the plugin.

When the plugin contacts it: Nothing is sent until an administrator explicitly connects the plugin to the cloud service. After that the plugin contacts the service in these cases only:
* When an administrator or authorized user starts a cloud feature (an Accessibility Test, an AI alt text suggestion, an AI Element Fix, an AI explanation, an AI insight or an image review). The site is paired and authenticated with the service on its first request.
* When an administrator opens the plugin Dashboard or usage views, which load the current usage and quota status from the service.
* When an administrator opens the plugin's own administration screens, the plugin downloads a small public JSON file with optional service messages (at most every two minutes, cached). This request is a plain GET request and carries no site data apart from the technical data every web request contains, such as the IP address.

What data is sent: Depending on the feature, a request contains the site URL and a site identifier, the Freemius install and plan information needed to authenticate the site, the plugin version, the URL of the page to test, test results and the affected HTML snippets, image URLs or image files with media metadata (for example title, alt text and file name), and the selected language and settings.

Provider: Patrick Helms (https://ezze-wcag-pro.com/). Terms of use: https://ezze-wcag-pro.com/terms-and-conditions/. Privacy policy: https://ezze-wcag-pro.com/privacy-policy/. Data processing addendum: https://ezze-wcag-pro.com/data-processing-addendum/.

= 2. OpenAI (used by the EZZE WCAG Pro cloud service for AI features) =

What it is and what it is used for: OpenAI language models create AI alternative texts, AI explanations, AI Element Fixes, AI insights and image accessibility reviews.

How it is connected: The WordPress site never contacts OpenAI directly. It only contacts the EZZE cloud service (service 1), which forwards the content needed for the requested feature to the OpenAI API (`api.openai.com`).

What data is sent and when: Only when one of these AI features is used. Depending on the feature this is the image or image data and its media metadata, the page or HTML snippet that is affected, the related accessibility test result, and the selected language and settings. Nothing is sent to OpenAI for the local-only helpers or for tests that do not use AI.

Provider: OpenAI. Terms of use: https://openai.com/policies/services-agreement/. Privacy policy: https://openai.com/policies/privacy-policy/.

= 3. Google (used by the EZZE WCAG Pro cloud service for automated tests) =

What it is and what it is used for: Google provides the PageSpeed Insights API (`pagespeedonline.googleapis.com`) behind the EZZE cloud service. It runs the automated Accessibility Tests of a public page.

How it is connected: The WordPress site never contacts Google directly. It only contacts the EZZE cloud service (service 1).

What data is sent and when: For an Accessibility Test, the URL of the page to be tested and the device type (desktop or mobile) are sent to PageSpeed Insights when the test is started.

Provider: Google. Terms of use: https://developers.google.com/terms. Privacy policy: https://policies.google.com/privacy.

= 4. Freemius (users.freemius.com, checkout.freemius.com) =

What it is and what it is used for: The plugin uses the Freemius SDK for the optional account connection, licensing, plan and quota information, purchases and consent-based usage data.

What data is sent and when: Only after the administrator opts in on the Freemius opt-in screen, starts a purchase or license action, or submits the optional deactivation feedback form. Freemius then receives the data shown on that screen, which can include the site URL, WordPress and PHP versions, plugin version, locale and the administrator's name and email address. Purchase and license actions send the data required to complete them. If the administrator submits the optional feedback form when deactivating the plugin, the selected reason, any text entered and an anonymous installation identifier are also sent to Freemius, even without an opt-in.

Provider: Freemius, Inc. Terms of use: https://freemius.com/terms/. Privacy policy: https://freemius.com/privacy/.

== Installation ==

1. Upload the plugin through the WordPress Plugins screen, or install it from the WordPress.org plugin directory.
2. Activate EZZE WCAG Pro.
3. Open the EZZE WCAG Pro administration page and configure the local accessibility helpers you need.
4. Connect the optional cloud service only if you want to use AI or managed test features and accept the displayed data-processing terms.

== Frequently Asked Questions ==

= What happens when the Free cloud allowance is exhausted? =

The Free cloud service includes 25 AI Alt Text generations and 25 AI Element Fix generations, each granted once and not renewed monthly. After an allowance is exhausted, additional cloud generations require a paid service plan. Existing alt texts, saved fixes, local previews, copying, manual editing, and local accessibility helpers remain available without consuming generations. Accessibility Tests have a separate allowance of 5 URLs per month.

= Does the plugin make a website WCAG compliant? =

No. It provides automated checks and implementation helpers, but automated tools cannot establish full conformance. Manual testing, editorial work, development, and ongoing monitoring remain necessary.

= Do I need an EZZE or Freemius account? =

No account is required for local-only helpers. An administrator connection is required for managed cloud and AI features because those requests must be authenticated and counted against the applicable service quota.

= Is website data sent to another server? =

Only after the optional managed cloud service has been connected. Data can then be exchanged when a cloud feature is used or when the plugin retrieves service-related information such as usage and quota status. A separate public service-message request may also occur on plugin administration screens; it carries no site data apart from the technical data every web request contains, such as the IP address. The exact categories of data and service providers are described in the External services section above and on the plugin's consent screen.

= Are third-party JavaScript or CSS files loaded from a CDN? =

No. Runtime libraries are bundled locally. Human-readable sources and licenses are stored under `assets/lib/`. The Tailwind CSS rebuild command is documented in the Source Code section below.

= Does uninstalling remove all plugin data? =

Deactivation does not remove settings or test history. Review and export any information you need before manually deleting plugin data.

== Privacy ==

Local settings and test results are stored in the WordPress database. Cloud processing is opt-in and can be disconnected from Account & License or the secure Freemius management screen. Site operators remain responsible for selecting an appropriate legal basis, updating their own privacy notice, and entering into a data processing agreement where required.

== Changelog ==

= 1.0.0 =

* Fixes Borlabs Cookie 2.x banner suppression for authenticated Accessibility Test requests without changing normal visitor consent.
* Hides batch status and unavailable batch options on the Free plan and clarifies test labels.
* Preserves settings persistence, Dashboard score colors, and enabled-by-default screenshots for new settings.

* Fixes settings persistence by decoding serialized form fields before field-specific validation.
* Applies the correct red, yellow, or green score badges to the latest Dashboard test results.
* Clarifies the two one-time Free AI cloud allowances and continued access to existing results and local features.
* Initial public release of the Free plugin for WordPress.org.
* Adds local accessibility helpers for skip links, visible focus, links, breadcrumbs, viewport behavior, keyboard shortcuts, and the frontend accessibility Toolbar.
* Adds Media Library workflows for reviewing and managing alternative text.
* Adds opt-in cloud workflows for automated accessibility tests, AI alt text, and AI Element Fixes, subject to the documented Free service quotas.
* Includes explicit cloud consent, privacy information, account controls, and clear Free-plan states throughout the administration area.
* Bundles Freemius WordPress SDK 2.13.4 for optional account, licensing, update, and plan handling.
* Hardens validation, nonces, contextual escaping, database access, debug logging, and file handling for WordPress.org.
* Improves the frontend Toolbar on mobile and with themes that change root font sizing.
* Recovers completed accessibility-test responses after transient browser or gateway timeouts without starting duplicate tests.
* Clarifies pending cloud activation throughout the Dashboard and Cloud-dependent integrations.
* Refines responsive administration layouts, keyboard access, focus handling, dialogs, feature icons, and Media Library batch actions.
* Improves the Accessibility Inspector with clearer element context, copyable technical details, safer duplicate-target handling, and responsive navigation.
* Adds bounded, reversible browser previews for supported fixes with exact undo and changed-page protection; previews never save changes to WordPress content.
* Adds reviewed local Explanation & Solution guidance without consuming Cloud quota.
* Makes evidence-bound AI Element Fixes available in Free within the included 25 one-time generations, while saved fixes and previews remain quota-free.
* Restores the Free dashboard result overview through shared read-only content discovery without including the premium batch module.
* Strengthens AI Element Fix quality by validating generated guidance against stored test evidence and withholding unsafe or outdated replacement code.
* Adds compact, searchable Accessibility Test content selection with URL paths, accessible full-address previews, and responsive keyboard and touch behavior.
* Adds reviewed AI Alt Text suggestions to the selected native Image block with WordPress Undo and without changing Media Library metadata.
* Refines Media Library and block-editor AI Alt Text controls into compact disclosures and clarifies the effect of marking an image as decorative.

== Upgrade Notice ==

= 1.0.0 =

Initial public release. Review the cloud-service consent and privacy information before enabling optional AI or managed testing features.
