=== HandyPal Accessibility Widget ===
Contributors: rgenzon
Tags: accessibility, wcag, ada, a11y, disability
Requires at least: 5.0
Tested up to: 7.1
Stable tag: 1.5.2
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add visitor-controlled accessibility tools to your WordPress site. Visitor-controlled text, contrast, reading, and navigation tools.

== Description ==

HandyPal is an accessibility widget that helps make your website usable for everyone, including people with disabilities. Its visitor tools complement accessibility audits and manual remediation of your site.

= Key Features =

* **Visitor Accessibility Tools** - Text, contrast, reading, and navigation preferences
* **Text-to-Speech** - Full page narration for visually impaired users
* **Language Translation** - Language translation tools
* **Customizable Widget** - Match your brand with custom colors and positioning
* **Accessibility Support** - Visitor tools complement accessibility audits and manual remediation
* **Real-time Accessibility Audits** - Identify and fix accessibility issues

= Accessibility Features Include =

* Adjust text size, line height, and letter spacing
* High contrast modes (smart, high, higher, highest)
* Reading guide and reading mask
* Dyslexia-friendly font
* Hide images option
* Keyboard navigation enhancements
* Focus indicators
* Color blind filters (protanopia, deuteranopia, tritanopia, achromatopsia)
* Text-to-speech narration
* Page zoom
* Stop animations
* And many more...

= Quick Setup =

1. Install and activate the plugin
2. Go to Settings > HandyPal
3. Enter your account token from handypal.net
4. The widget automatically appears on your site!

= Requirements =

* A HandyPal account (free trial available at [handypal.net](https://www.handypal.net))
* WordPress 5.0 or higher
* PHP 7.4 or higher

== Installation ==

= Automatic Installation =

Once the WordPress.org listing is published, search for "HandyPal" under Plugins > Add New, install and activate it, then open Settings > HandyPal. Until then, use the manual ZIP installation below.

= Manual Installation =

1. Download the plugin ZIP file
2. Log in to your WordPress admin dashboard
3. Go to Plugins > Add New > Upload Plugin
4. Choose the ZIP file and click "Install Now"
5. Activate the plugin
6. Go to Settings > HandyPal to configure

= Configuration =

1. Log in to your [HandyPal dashboard](https://www.handypal.net/dashboard)
2. Go to Settings and copy your Account Token
3. In WordPress, go to Settings > HandyPal
4. Paste your Account Token and save
5. Your website will be automatically registered and the widget will appear

== Frequently Asked Questions ==

= Do I need a HandyPal account? =

Yes, you need a HandyPal account to use this plugin. You can start a free 7-day trial at [handypal.net](https://www.handypal.net).

= Will this slow down my website? =

The widget loads asynchronously from the HandyPal CDN. Performance depends on your site, network, and configuration.

= Is HandyPal WCAG 2.1 compliant? =

HandyPal provides visitor accessibility tools. Installing a widget does not guarantee WCAG conformance or legal compliance. Audit your content and fix accessibility issues in your site code.

= Does it work with caching plugins? =

The plugin includes JavaScript exclusions for WP Rocket, LiteSpeed Cache, and Autoptimize. Test your caching setup after installation.

= Can I use this on multiple sites? =

Yes! Depending on your plan, you can use HandyPal on 1-20+ websites. Each WordPress installation will automatically register as a site on your account.

= What if I already have another accessibility plugin? =

HandyPal will detect other accessibility plugins and display a warning. We recommend using only one accessibility widget to avoid conflicts.

= How do I customize the widget appearance? =

Widget customization (position, colors, icons, button text) is managed from your HandyPal dashboard. Go to your website's Customize page at handypal.net/dashboard to adjust the appearance.

= What happens if my subscription expires? =

The widget will stop appearing on your site. Your settings are preserved, so if you resubscribe, the widget will work again automatically.

== Screenshots ==

1. HandyPal widget on a website
2. Widget settings panel
3. WordPress admin settings page
4. Connection status showing active subscription

== External Services ==

This plugin connects to HandyPal when you save or verify your account token. It sends the token, site URL, and site name to https://www.handypal.net/api/wordpress/validate to authenticate and register the website. When enabled, the widget loads JavaScript and CSS from https://cdn.handypal.net and requests its configuration from HandyPal. Widget usage events may be sent to HandyPal. A HandyPal account and an authorized plan are required.

Service terms: https://www.handypal.net/terms
Privacy policy: https://www.handypal.net/privacy

== Changelog ==

= 1.5.2 =
* Refresh clean, visible dashboards every 15 seconds without replacing unsaved edits.


= 1.5.1 =
* Share widget visibility and page-path rules with the HandyPal dashboard.
* Retire local visibility overrides after an explicit import/keep choice when needed.
* Refresh shared settings when returning to either dashboard, preserving unsaved edits.
* Save only changed appearance fields so unrelated settings from the other dashboard are preserved.


= 1.5.0 =
* Customize widget color, position, icon, and size directly in Settings > HandyPal.
* Control automatic accessibility fixes in grouped WordPress dashboard controls.
* Keep appearance and fixes synchronized with your HandyPal website settings.
* Private account tokens stay server-side; site ownership and active subscriptions are verified on every request.
* Tested on WordPress 7.1.3 and PHP 8.3, with PHP 7.4 compatibility regression coverage.


= 1.4.4 =
* Fixed: Replacing or clearing an account token disconnects the previous website.
* Fixed: Validation and fallback caches are bound to the token; fallback expires after 24 hours.
* Improved: Repeatable WordPress.org and direct-download packaging with consistent release metadata.

= 1.4.3 =
* Fixed: Removed directory assets (banners, icons, screenshots) from plugin package
* Fixed: Removed inline script/style tags, using wp_enqueue exclusively
* Fixed: Renamed main plugin file to follow plugin-slug.php convention
* Fixed: Removed discouraged load_plugin_textdomain() call
* Fixed: Proper input sanitization for nonce verification
* Removed: Custom auto-update filter in favor of WordPress native auto-updates

= 1.4.0 =
* Improved: Widget assets now loaded via wp_enqueue_style and wp_enqueue_script for better compatibility
* Improved: Proper output escaping throughout admin interface
* Improved: WordPress.org plugin guidelines compliance
* Fixed: Prefixed global variables in uninstall routine
* Removed: Debug logging from production code

= 1.3.0 =
* Improved: New 2-column layout for settings page - easier to navigate and less scrolling
* Improved: Cleaner sidebar with connection status, updates, and quick links
* Improved: More compact auto-update toggle design

= 1.2.0 =
* Added: Auto-update toggle - keep your plugin automatically updated with the latest features and security fixes
* Added: Auto-updates enabled by default for new installations

= 1.1.0 =
* Added: Live widget preview with actual dashboard styling
* Security: Added nonce verification for cache clear operations
* Security: Added environment check for SSL bypass in dev mode
* Security: Improved escaping of dynamic content

= 1.0.9 =
* Added: Widget preview in admin settings
* Added: Page exclusion feature - hide widget on specific pages

= 1.0.8 =
* Added: HandyPal shield logo on plugin settings page
* Fixed: Icon handling in update info

= 1.0.7 =
* Added: Check for updates section in plugin settings with one-click update

= 1.0.6 =
* Improved: Reduced update cache time and added force refresh support

= 1.0.5 =
* Improved: Customize link now goes directly to website's customize page

= 1.0.4 =
* Added: Helpful message directing users to HandyPal Dashboard for widget customization

= 1.0.3 =
* Removed: Documentation link from settings

= 1.0.2 =
* Removed: Position setting from plugin (now syncs from HandyPal dashboard)

= 1.0.1 =
* Fixed: Widget CSS now loads correctly
* Added: Automatic update notifications

= 1.0.0 =
* Initial release
* Account token authentication
* Automatic website registration
* Caching plugin compatibility
* Conflict detection with other accessibility plugins
* 24-hour fallback caching for API issues

== Upgrade Notice ==

= 1.5.0 =
Customize appearance and automatic fixes from the WordPress dashboard. Connect with your private HandyPal account token to use the new controls.


= 1.4.4 =
Fixes stale website connections when changing tokens and separates directory and direct-download update channels.

= 1.4.3 =
WordPress.org plugin review compliance fixes: proper asset handling, input sanitization, and native auto-updates.

= 1.4.0 =
Improved WordPress.org compatibility, proper asset enqueuing, and security hardening.

= 1.3.0 =
New 2-column layout makes the settings page easier to navigate with less scrolling.

= 1.2.0 =
Added auto-update toggle to keep your plugin automatically updated with the latest security fixes and features.

= 1.1.0 =
Security improvements and live widget preview that shows your actual dashboard styling.

= 1.0.9 =
New widget preview and page exclusion features. Hide the widget on specific pages like checkout or login.

= 1.0.8 =
Updated plugin branding and fixed icon display in WordPress updates.

= 1.0.7 =
Adds a "Check for updates" button in plugin settings for easy one-click updates.

= 1.0.1 =
Fixes CSS loading issue and adds automatic update notifications.

== Privacy Policy ==

HandyPal collects the following data:
* Your website URL and name (for registration and widget configuration)
* Widget usage analytics (how often the widget is opened)

Visitor analytics are handled by the HandyPal service. See the [Privacy Policy](https://www.handypal.net/privacy).

== Support ==

* Documentation: [handypal.net/help](https://www.handypal.net/help)
* Support: [handypal.net/contact](https://www.handypal.net/contact)
* Dashboard: [handypal.net/dashboard](https://www.handypal.net/dashboard)
