bpmore/statamic-a11y-gate
An accessibility gate for Statamic that checks content against configurable a11y rules before publishing, helping editors catch issues early and keep sites WCAG-friendly.
Architecture fit
listable: false), a per-entry "Check" action, a save-time gate that refuses publishes, and a Tools page with findings lists. Findings reference page content (heading text, image src, link words) and are rendered inside the control panel.Integration feasibility
composer require, PHP/Statamic floors, optional ext-intl for locale-aware checks, config publish tag, and the two files an uninstall can leave behind). This closes a real onboarding gap.composer update alone does not remediate. The deploy must also run php artisan vendor:publish --tag=statamic-a11y-gate --force (or php artisan statamic:install). Environments that treat "composer update + cache clear" as a complete upgrade will remain vulnerable while reporting 0.10.2.--tag=laravel-assets, which publishes nothing for this addon) means version numbers cannot be trusted as an upgrade contract. Pin exact versions and read release notes each bump.Technical risk
<img src=/x.png onerror=...> is escaped on the front end but reached the panel decoded and was rendered via innerHTML. Trigger conditions: an attacker with permission to save a gated entry plants it; it executes in the CP session of an admin who presses Check on that entry or is refused a save of it. That is an author→admin privilege-escalation path exercised during ordinary editorial review.list-disc bullets). Similar guards should be expected for future CP regressions.Key questions
Stack fit
ext-intl, which improves locale-aware checks; absence degrades rather than blocks.Migration path
composer require the pinned 0.10.2 → php artisan vendor:publish --tag=statamic-a11y-gate --force → php artisan statamic:install if that is our standard → clear config/view caches → confirm the served CP asset hash changed → only then close the ticket.--tag=laravel-assets; the release notes explicitly correct the earlier instruction, which published nothing for this addon.--force overwrites published files. If we have local modifications to the addon's config or views, capture them first.Compatibility
0.10.2 exactly and require a release-note read before any bump.listable). All three have changed or been corrected in this release.Sequencing
ext-intl.Maintenance
Support
## Support section and composer.json support key at least make the constraint explicit rather than implicit.Scaling
Failure modes
--force clobbers any local customisation of the addon's published files.list-disc class is the template — a class the panel's stylesheet does not contain renders flat with no error. Now guarded by a build test, but the class of failure persists for anything outside that test's coverage.listable: false.Ramp-up
How can I help you explore Laravel packages today?