Skip to content

Release v1.30.0#1174

Merged
pattonwebz merged 202 commits into
mainfrom
release/1.30.0
Aug 6, 2025
Merged

Release v1.30.0#1174
pattonwebz merged 202 commits into
mainfrom
release/1.30.0

Conversation

@pattonwebz

@pattonwebz pattonwebz commented Aug 6, 2025

Copy link
Copy Markdown
Member

Steve Jones (4):

  • Fix settings tab input sanitation
  • Add clear issues button to frontend highlighter
  • Add Site Health status checks
  • Hide rescan button when user not logged in

William Patton (16):

  • Backport: Release/1.29.0
  • Add a dockerized phpunit container for running tests locally
  • Update translation files (POT/JSON)
  • PTC accessibility-checker (1985): Automatic Translations July 30, 2025 00:12:27649134
  • Add GitHub Actions workflow for Copilot Agent environment setup
  • Convert copilot-agent.yml workflow to copilot-setup-steps.yml following GitHub Copilot Agents pattern
  • Add unit tests for CleanupOrphanedIssues WP-CLI command
  • Add comprehensive unit tests for Lazyload_Filter class
  • Add copilot instructions file for Accessibility Checker plugin
  • Remove obsolete welcome_page_post_count_change_notice function
  • Add comprehensive unit tests for utility functions with WordPress coding standards compliance
  • Update translation files (POT/JSON)
  • PTC accessibility-checker (1985): Automatic Translations August 04, 2025 19:07:03183220
  • Add comprehensive unit tests for WCAG data structure validation with optimized assertion approach
  • Missing transcript not detecting correctly when using lazyload iframes
  • Fix multiple accessibility icons stacking by implementing inline positioning

Summary by CodeRabbit

  • Chores
    • Updated plugin version to 1.30.0.
    • Increased minimum required WordPress version to 6.6 in documentation.

pattonwebz and others added 30 commits July 14, 2025 13:31
In later php versions this throws a warning and will be deprecated eventually
Adjust the assertion to match ordinals that may include a period at the end, ensuring compatibility with certain php-intl locales.
This commit introduces a Docker Compose setup and a Dockerfile for running PHPUnit tests in a WordPress environment, including a MySQL service and necessary PHP extensions.
`test:php` - invokes the setup script that will build the containers, starts them and runs the tests.
`test:php:run` - runs phpunit inside the container directly, does not try to install you must do that in advance.
`test:php:coverage` - runs the tests and produces coverage reports.
`test:php:stop` - stops the containers
Updated the method name from `get_badge` to `get_accessibility_badge` to better reflect its purpose and improve code readability.
This change enhances the user experience by providing a localized message indicating the number of posts scanned by the Accessibility Checker.

[PRO-165]
This keeps it consistent with the rest of the file and will satisfy markdown-lint MD004
Clarified prerequisites for PHP unit tests and improved wording for Docker setup instructions.
Clarified requirements for the development environment and provided more details on the PHP unit test setup.

[PRO-165]
- Add tests for edac_remove_element_with_value() array manipulation function
- Add tests for edac_filter_by_value() array filtering function
- Add tests for edac_check_plugin_installed() plugin detection function
- Add tests for edac_parse_html_for_media() HTML parsing function
- Add tests for EDAC\Admin\Helpers formatting methods (format_number, format_percentage, get_option_as_array, format_date)
- Add tests for EDAC\Admin\Helpers::array_to_sql_safe_list() SQL safety method

These tests provide high coverage for utility functions with minimal complexity.

Co-authored-by: pattonwebz <3902039+pattonwebz@users.noreply.github.com>
…ons, and network utilities

- Add comprehensive tests for edac_generate_landmark_link() with URL generation, ARIA labels, security escaping
- Add thorough tests for edac_days_active() covering date calculations, edge cases, timezone handling
- Add network-focused tests for EDAC\Admin\Helpers::is_domain_loopback() covering IPv4/IPv6, DNS resolution, performance

These complete the high-impact test coverage improvements for utility functions.

Co-authored-by: pattonwebz <3902039+pattonwebz@users.noreply.github.com>
Co-authored-by: pattonwebz <3902039+pattonwebz@users.noreply.github.com>
…e and fix long lines

Co-authored-by: pattonwebz <3902039+pattonwebz@users.noreply.github.com>
…tioning

Co-authored-by: pattonwebz <3902039+pattonwebz@users.noreply.github.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🔭 Outside diff range comments (1)
readme.txt (1)

212-218: Missing 1.30.0 changelog entry violates release guidelines.

The == Changelog == section still stops at 1.29.0.
Per our “update changelog.txt and readme.txt for each release” rule, please add a = 1.30.0 = entry summarising the fixes and features listed in the PR description.

@@
 == Changelog ==

+# 1.30.0
+* Fixed: Input sanitisation on the settings tab.
+* Added: “Clear issues” button to the frontend highlighter.
+* Added: Site Health status checks.
+* Changed: Hide rescan button when the user is not logged in.
+* Dev: Dockerised PHPUnit environment, new GitHub Actions workflows, and expanded unit tests.
+* Updated: Translation files (POT/JSON) & automatic translations (Jul 30 & Aug 4 2025).
+
 = 1.29.0 =
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e97bff8 and 8b54602.

📒 Files selected for processing (3)
  • accessibility-checker.php (2 hunks)
  • package.json (1 hunks)
  • readme.txt (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
{changelog.txt,readme.txt}

📄 CodeRabbit Inference Engine (.github/copilot-instructions.md)

Update changelog.txt and readme.txt for each release

Files:

  • readme.txt
**/*.php

📄 CodeRabbit Inference Engine (.github/copilot-instructions.md)

**/*.php: Follow WordPress coding standards (WPCS) in all PHP files
Use PSR-4 autoloading with EqualizeDigital\AccessibilityChecker namespace for new classes
Use WordPress hooks and filters appropriately
Use edac_ prefix for custom hooks and filters
Minimum PHP 7.4 compatibility
Use type hints where appropriate in PHP code
Follow WordPress security best practices (sanitization, validation, nonces)
Use WordPress database API (wpdb) for database operations
Prefix all functions and classes with edac_ when in global namespace
Use WordPress hooks (actions/filters) for extensibility
Use WordPress transients for caching
Sanitize all user inputs
Validate and escape all outputs
Use WordPress nonces for form submissions
Implement proper capability checks
Provide appropriate hooks for extensibility when adding new functionality
Use descriptive hook names with edac_ prefix
Document all custom hooks in docblocks
Document custom hooks and filters with clear descriptions and parameter types
Use PHPDoc for all public classes, methods, and properties
Escape all output, especially in admin screens and user-generated content
Use WordPress error handling functions (e.g., WP_Error) for PHP errors

Files:

  • accessibility-checker.php
accessibility-checker.php

📄 CodeRabbit Inference Engine (.github/copilot-instructions.md)

Implement proper activation/deactivation hooks

Files:

  • accessibility-checker.php
**/*.{php,js}

📄 CodeRabbit Inference Engine (.github/copilot-instructions.md)

**/*.{php,js}: Follow WordPress internationalization (i18n) practices and use accessibility-checker text domain
All user-facing text must be translatable
Add inline comments for complex accessibility logic or non-obvious code
Use semantic HTML structure
ARIA attributes used correctly
Keyboard navigation supported
Images have descriptive alt text
Heading hierarchy logical
Screen reader compatibility
Forms are accessible and labeled

Files:

  • accessibility-checker.php
🧠 Learnings (20)
📓 Common learnings
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: No accessibility regressions introduced
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Follow semantic versioning for plugin releases
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to {README.md,changelog.txt} : Update README.md and changelog.txt for any user-facing or API changes
📚 Learning: applies to {readme.md,changelog.txt} : update readme.md and changelog.txt for any user-facing or api...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to {README.md,changelog.txt} : Update README.md and changelog.txt for any user-facing or API changes

Applied to files:

  • readme.txt
  • package.json
📚 Learning: applies to {changelog.txt,readme.txt} : update changelog.txt and readme.txt for each release...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to {changelog.txt,readme.txt} : Update changelog.txt and readme.txt for each release

Applied to files:

  • readme.txt
📚 Learning: follow semantic versioning for plugin releases...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Follow semantic versioning for plugin releases

Applied to files:

  • readme.txt
📚 Learning: in the accessibility checker plugin, the 'wcag' field can use custom values like '0.1' to represent ...
Learnt from: SteveJonesDev
PR: equalizedigital/accessibility-checker#1088
File: includes/classes/Rules/Rule/EmptyParagraphTagRule.php:50-50
Timestamp: 2025-07-18T01:29:35.548Z
Learning: In the Accessibility Checker plugin, the 'wcag' field can use custom values like '0.1' to represent best practice rules and manual testing requirements that don't map directly to specific WCAG success criteria but are still important for accessibility compliance.

Applied to files:

  • readme.txt
  • package.json
  • accessibility-checker.php
📚 Learning: in the accessibility checker plugin, the 'wcag' field can use custom values like '0.3' to represent ...
Learnt from: SteveJonesDev
PR: equalizedigital/accessibility-checker#1088
File: includes/classes/Rules/Rule/VideoPresentRule.php:41-42
Timestamp: 2025-07-18T01:18:27.812Z
Learning: In the Accessibility Checker plugin, the 'wcag' field can use custom values like '0.3' to represent best practice rules and manual testing requirements that don't map directly to specific WCAG success criteria but are still important for accessibility compliance.

Applied to files:

  • readme.txt
  • package.json
  • accessibility-checker.php
📚 Learning: applies to accessibility-checker.php : implement proper activation/deactivation hooks...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to accessibility-checker.php : Implement proper activation/deactivation hooks

Applied to files:

  • readme.txt
  • accessibility-checker.php
📚 Learning: applies to **/*.{php,js} : follow wordpress internationalization (i18n) practices and use accessibil...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to **/*.{php,js} : Follow WordPress internationalization (i18n) practices and use accessibility-checker text domain

Applied to files:

  • readme.txt
  • package.json
  • accessibility-checker.php
📚 Learning: applies to **/*.php : use psr-4 autoloading with equalizedigital\accessibilitychecker namespace for ...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to **/*.php : Use PSR-4 autoloading with EqualizeDigital\AccessibilityChecker namespace for new classes

Applied to files:

  • readme.txt
  • accessibility-checker.php
📚 Learning: use axe-core browser extension for manual accessibility checks...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Use axe-core browser extension for manual accessibility checks

Applied to files:

  • readme.txt
  • package.json
  • accessibility-checker.php
📚 Learning: monitor for new wcag updates and update rules as needed...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Monitor for new WCAG updates and update rules as needed

Applied to files:

  • readme.txt
📚 Learning: in the accessibility checker plugin, the img_alt_missing rule specifically checks for missing alt at...
Learnt from: pattonwebz
PR: equalizedigital/accessibility-checker#927
File: src/pageScanner/checks/img-alt-missing-check.js:35-37
Timestamp: 2025-04-18T14:27:18.140Z
Learning: In the Accessibility Checker plugin, the img_alt_missing rule specifically checks for missing alt attributes on images and image inputs, while empty alt attributes are handled by a separate rule. Each accessibility concern is deliberately separated into individual rules.

Applied to files:

  • readme.txt
  • accessibility-checker.php
📚 Learning: no accessibility regressions introduced...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: No accessibility regressions introduced

Applied to files:

  • package.json
  • accessibility-checker.php
📚 Learning: applies to **/*.php : use descriptive hook names with edac_ prefix...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to **/*.php : Use descriptive hook names with edac_ prefix

Applied to files:

  • accessibility-checker.php
📚 Learning: in the accessibility checker plugin, fix classes use a consistent pattern `isset( $this->is_pro ) &&...
Learnt from: pattonwebz
PR: equalizedigital/accessibility-checker#1089
File: includes/classes/Fixes/Fix/AddSpacebarSupportToLinksWithButtonRoleFix.php:83-83
Timestamp: 2025-07-20T09:54:46.746Z
Learning: In the Accessibility Checker plugin, fix classes use a consistent pattern `isset( $this->is_pro ) && $this->is_pro ? false : true` for the upsell field in their settings arrays. The `is_pro` property is dynamically set and the `isset()` check prevents PHP notices when the property doesn't exist. This is the standard pattern used across all fix classes in the codebase.

Applied to files:

  • accessibility-checker.php
📚 Learning: applies to **/*.php : use edac_ prefix for custom hooks and filters...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to **/*.php : Use edac_ prefix for custom hooks and filters

Applied to files:

  • accessibility-checker.php
📚 Learning: in the accessibility checker plugin, the img_alt_missing rule specifically checks for missing alt at...
Learnt from: pattonwebz
PR: equalizedigital/accessibility-checker#927
File: src/pageScanner/checks/img-alt-missing-check.js:32-32
Timestamp: 2025-04-18T14:27:49.512Z
Learning: In the Accessibility Checker plugin, the img_alt_missing rule specifically checks for missing alt attributes (whether the attribute exists at all), while empty alt attributes (alt="") are handled by a separate rule. This separation of concerns is by design.

Applied to files:

  • accessibility-checker.php
📚 Learning: in the accessibility checker plugin, there are separate rules for different aspects of image accessi...
Learnt from: SteveJonesDev
PR: equalizedigital/accessibility-checker#921
File: src/pageScanner/checks/linked-image-alt-present.js:43-50
Timestamp: 2025-04-15T02:30:38.897Z
Learning: In the Accessibility Checker plugin, there are separate rules for different aspects of image accessibility. The rule `linked_image_alt_present` specifically checks for the presence of alt attributes on linked images, while a separate rule handles validation of empty alt attributes.

Applied to files:

  • accessibility-checker.php
📚 Learning: in the accessibility checker plugin, accessibility rules are separated by specific concerns. for exa...
Learnt from: SteveJonesDev
PR: equalizedigital/accessibility-checker#921
File: src/pageScanner/checks/linked-image-alt-present.js:43-50
Timestamp: 2025-04-15T02:30:38.897Z
Learning: In the Accessibility Checker plugin, accessibility rules are separated by specific concerns. For example, linked images have separate rules for checking: (1) missing alt attributes and (2) empty alt attributes. The rule `linked_image_alt_present` specifically checks for the presence of alt attributes on linked images, while a separate rule `img_linked_alt_empty` handles validation of empty alt attributes. Suggestions should respect this separation of concerns.

Applied to files:

  • accessibility-checker.php
📚 Learning: applies to **/*.php : prefix all functions and classes with edac_ when in global namespace...
Learnt from: CR
PR: equalizedigital/accessibility-checker#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-04T16:46:23.515Z
Learning: Applies to **/*.php : Prefix all functions and classes with edac_ when in global namespace

Applied to files:

  • accessibility-checker.php
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Integration Test: PHP 8.2 | WP latest (+ ms)
  • GitHub Check: Integration Test: PHP 8.1 | WP 6.2
  • GitHub Check: Integration Test: PHP 8.1 | WP latest (+ ms)
🔇 Additional comments (2)
package.json (1)

3-3: Version bump is consistent—verify other manifests.

"version": "1.30.0" aligns with the plugin header and constant.
Please run a quick search to confirm that any additional version holders (composer.json, Docker image tags, etc.) were updated as well to avoid drift during packaging/publishing.

accessibility-checker.php (1)

13-40: Version constant and header in sync—LGTM.
No additional action required.

Comment thread readme.txt
@pattonwebz
pattonwebz changed the base branch from develop to main August 6, 2025 17:58

@SteveJonesDev SteveJonesDev left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to release.

…august-06-2025-17-05-44483508

PTC accessibility-checker (1985): Automatic Translations August 06, 2025 17:05:44483508
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants