=== AccessLens - Accessibility Checker for WCAG 2.2 & EAA ===
Contributors: manitosdevs
Tags: accessibility, wcag, accessibility-checker, european-accessibility-act, audit
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 0.2.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Accessibility checker for WCAG 2.2 barriers. Scan your site, prioritize fixes, and generate your EAA Accessibility Statement.

== Description ==

AccessLens is an **accessibility checker** for WordPress that scans your pages against **WCAG 2.2** success
criteria and shows you exactly what to fix. It is built for site owners and agencies who need to work towards
the requirements of the **European Accessibility Act (EAA)**, in force in the EU since June 2025.

The plugin is free and fully functional. It sends the page(s) you choose to the external AccessLens engine,
which renders each one in a real browser and runs an automated accessibility analysis (axe-core), then
displays the results in your WordPress dashboard: a severity summary and a detailed violations table with
suggested fixes.

The interface is available in English and Spanish.

= What you get (Free) =

* Scan your site in single-page or sitemap mode (up to 10 pages per scan).
* WCAG 2.2 violations listed per page, classified by severity: critical, serious, moderate, minor.
* A severity summary panel and a printable results view.
* A short, informational questionnaire to help you understand whether your organisation falls under EAA scope.
* An Accessibility Statement report (PDF) generated from your scan data.
* No account or credit card required for the free tier.

= AccessLens Pro =

AccessLens Pro is a paid subscription (149 EUR/year) to the external AccessLens service - not locked code
inside this plugin:

* Full-site crawl of up to 25 pages per scan.
* AI-assisted PDF report: issues prioritized by impact, suggested fixes per WCAG criterion, and alternative-text
  suggestions for images.
* An AI-enhanced Accessibility Statement covering the 9 fields organisations affected by the EAA are typically
  expected to publish.
* Higher daily scan and report quotas.

= About the European Accessibility Act (EAA) =

The European Accessibility Act (Directive (EU) 2019/882) requires many digital products and services sold or
offered in the EU - e-commerce, banking, transport, and communication services among them - to be accessible.
Member States have been applying it since 28 June 2025. AccessLens helps you **prepare for the EAA** and
generate the documentation it asks for; it does not, and cannot, certify legal compliance on your behalf.

= Automated scanning has real limits - and we say so =

Independent research puts the coverage of automated accessibility testing at roughly **25-40% of WCAG success
criteria**. The rest - screen reader behaviour, real keyboard navigation, cognitive load, meaningful reading
order - requires manual testing by a person. AccessLens states this openly in every report instead of hiding
it, which is also why it does not work like an "accessibility overlay" widget: those products have been
publicly criticized by disability advocacy organisations and regulators for creating a false sense of legal
security. AccessLens does not guarantee or certify conformance with the EAA, WCAG, or any other regulation,
and does not provide legal advice.

== External services ==

Scanning a page requires rendering it in a real, headless browser, which cannot run inside WordPress itself.
For that reason, this plugin sends requests to an external service, the **AccessLens engine** (hosted on
Google Cloud Run):

* **What it is:** an audit engine that loads the URL(s) you provide and runs an accessibility analysis
  (axe-core) to detect WCAG violations.
* **When it is used:** only when you, as an administrator, start a scan or generate a report from the
  dashboard.
* **Data sent:** the URL(s) you choose to audit, your site address (used to restrict scans to your own
  domain), and, when generating a report, the site metadata you enter in the form (site name, contact
  email/URL, entity type). No visitor data or WordPress user data is sent.
* **AI processing (Pro tier only):** when you request a Pro report, the engine may send fragments of page HTML
  and image URLs to Anthropic (https://www.anthropic.com/legal/privacy) to generate alternative-text
  suggestions and prioritized fix recommendations. This only happens with an active Pro subscription and only
  when you request a report.
* Endpoint: https://eaa-audit-engine-26367529082.europe-southwest1.run.app (fixed by design; scans are
  restricted to your own site's domain).
* Terms of service: https://accesslens-27h.pages.dev/terminos
* Privacy policy: https://accesslens-27h.pages.dev/privacidad

== Installation ==

1. Upload the `accesslens` folder to the `/wp-content/plugins/` directory, or install it via **Plugins > Add
   New** by searching for "AccessLens".
2. Activate the plugin from the "Plugins" menu in WordPress.
3. Open **AccessLens** in the admin menu and run your first scan.

== Frequently Asked Questions ==

= What is the European Accessibility Act (EAA)? =

The EAA (Directive (EU) 2019/882) is an EU law requiring many digital products and services - e-commerce,
banking, transport apps, e-books, and more - to meet accessibility requirements. It has applied since 28 June
2025 across EU Member States.

= Does AccessLens make my website WCAG or EAA compliant? =

No. No automated tool can do that, and any plugin claiming otherwise is not being honest with you. AccessLens
detects a meaningful subset of WCAG 2.2 issues automatically (roughly 25-40% of success criteria) and helps
you prepare the documentation the EAA asks for, but full conformance requires manual testing by a qualified
accessibility expert.

= Is automated accessibility testing enough on its own? =

No. Automated scanning is a strong starting point that catches contrast, missing alt text, form labelling,
heading structure, and similar technical issues quickly and consistently. It cannot evaluate things like
screen reader usability, real keyboard-only navigation, or whether content is genuinely understandable -
those need a human reviewer.

= What is an Accessibility Statement, and why do I need one? =

An Accessibility Statement is a public document describing your site's conformance status, known limitations,
and how users can request help or file a complaint. It is one of the core pieces of documentation
organisations affected by the EAA are expected to publish. AccessLens generates a statement structured around
the 9 typically required fields; the Pro tier enhances it with AI analysis of your full-site crawl.

= Does AccessLens work with Elementor, WooCommerce, or any WordPress theme? =

Yes. AccessLens scans the rendered HTML output of your pages in a real browser, so it works regardless of the
page builder, theme, or e-commerce plugin you use, including Elementor and WooCommerce.

= Can I scan any website with it? =

No. Scans are restricted to the domain of the WordPress site where the plugin is installed. This keeps the
shared scanning service fast and fair for everyone.

= What data is sent to the AccessLens service, and is this GDPR-relevant? =

The plugin sends the URL(s) you choose to scan, your site address, and, when you generate a report, the
metadata you type into the form (site name, contact details, entity type). It does not send visitor data or
WordPress user data. See the "External services" section and the linked privacy policy for full detail.

= How is AccessLens different from accessibility overlay widgets? =

Overlay widgets inject a script that claims to "fix" accessibility on the fly, without changing your site's
actual code. AccessLens does the opposite: it audits your real markup, tells you exactly what's wrong and
where in plain language, and gives you a report and a statement you can act on. It changes nothing on your
site automatically.

= What is the difference between the Free and Pro versions? =

These are tiers of the external AccessLens service, not gated code inside the plugin. Free covers single-page
and sitemap scans (up to 10 pages) plus a report generated from your scan data. Pro (149 EUR/year) adds
full-site crawl up to 25 pages, an AI-assisted PDF report with prioritized fixes and alt-text suggestions,
and higher daily quotas. The plugin itself works fully on the free tier.

= Are there usage limits? =

Yes. To keep the shared service stable, the free tier includes a daily scan and report quota per site, and
the Pro tier includes a substantially higher one. The dashboard shows your current usage after each scan.

= Who needs to comply with the European Accessibility Act? =

Primarily businesses above certain size thresholds that offer digital products or services in the EU, across
sectors like e-commerce, banking, and transport. Micro-enterprises may have exemptions in some cases; always
confirm your specific obligations with a qualified legal advisor.

== Screenshots ==

1. Dashboard with a completed scan: severity summary and per-page results table with the WCAG rules detected.
2. Progress over time: scan history chart showing how violations evolve across scans.
3. Informational EAA scope questionnaire and the new audit form.
4. Accessibility Statement section with the 9-field structure and Pro upgrade.
5. Results table and the accessibility report download form.

== Changelog ==

= 0.2.0 =
* The engine URL is now fixed by design (serviceware model) instead of an editable setting; the Settings page has been removed.
* The scan target and report site are now always restricted to the site's own domain, both client-side and via the engine.
* Clear, actionable error messages for quota limits, rate limits, Pro-only features (with an upgrade link) and a busy engine, instead of raw HTTP errors.
* Scan progress polling is now more resilient to temporary network failures and has a maximum wait time.
* PDF report download is now proxied reliably with progress feedback, instead of a plain form submission.
* Added defense-in-depth host validation and consistent nonce/capability checks on every AJAX handler.
* The last scan result is now persisted and shown when you return to the dashboard.
* New severity summary panel, printable results view, and an Accessibility Statement explainer.
* Per-site daily quotas with usage shown in the dashboard, to keep the free tier stable for everyone.
* The interface is now fully translatable; English source strings with a complete Spanish (es_ES) translation.
* Uninstall cleanup is now multisite-aware.

= 0.1.0 =
* First public release.
* Single, sitemap and full crawl scan modes.
* Informational EAA scope questionnaire.
* AJAX polling every 3 seconds with a results table.
* Accessibility Statement report (PDF) via the AccessLens service.

== Upgrade Notice ==

= 0.2.0 =
Recommended update: more reliable scans and PDF downloads, security hardening, persistent results, and an
English + Spanish interface. No breaking changes.
