Skip to content

Development to Main#115

Merged
noelsaw1 merged 9 commits intomainfrom
development
Mar 12, 2026
Merged

Development to Main#115
noelsaw1 merged 9 commits intomainfrom
development

Conversation

@noelsaw1
Copy link
Contributor

Description

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update
  • 🧪 Test update
  • ♻️ Refactoring (no functional changes)

Related Issue

Fixes #(issue number)

Changes Made

Testing

  • Ran dist/tests/run-fixture-tests.sh - All tests pass
  • Tested against real WordPress plugin/theme
  • Added new test fixtures (if applicable)
  • Verified no new issues in dist/tests/fixtures/clean-code.php

Checklist

  • My code follows the project's coding standards
  • I have updated the documentation (README.md, CHANGELOG.md)
  • I have added tests that prove my fix/feature works
  • All new and existing tests pass
  • I have updated CHANGELOG.md with my changes
  • I have read and agree to the Contributor License Agreement (CLA)

CLA Signature

For first-time contributors: Please comment below with:

I have read and agree to the CLA

This is a one-time requirement. Once signed, you can contribute to all future PRs without re-signing.

Questions about the CLA? See CLA.md or email cla@hypercart.com


Additional Notes

noelsaw1 and others added 9 commits February 9, 2026 21:14
- **Wrapped 8 raw `grep -r` file-discovery calls with `run_with_timeout "$MAX_SCAN_TIME"`**
  - These one-off check sections lacked any timeout protection and could stall indefinitely
  - Aggregated pattern detection (Magic String Detector) was already protected; these checks were not
  - **Affected checks:**
    - `AJAX_FILES` — wp_ajax handlers without nonce validation (line ~4216)
    - `TERMS_FILES` — get_terms without number limit (line ~4617)
    - `CRON_FILES` — Unvalidated cron intervals (line ~5024)
    - `N1_FILES` — N+1 meta-in-loop patterns (line ~5271, pipeline: timeout wraps first recursive grep)
    - `THANKYOU_CONTEXT_FILES` — WooCommerce coupon logic in thank-you context (line ~5463)
    - `SMART_COUPONS_FILES` — WooCommerce Smart Coupons detection (line ~5554)
    - `PERF_RISK_FILES` — WooCommerce Smart Coupons performance risk (line ~5566)
    - `JSON_RESPONSE_FILES` — HTML-escaping in JSON response URL fields (line ~5633)
  - **Behavior on timeout:** Check returns empty result, reports "passed," scan continues
  - **Impact:** Eliminates "apparent hang" reports on small/medium repositories where a single check stalled
  - **No new functions or abstractions** — reuses existing `run_with_timeout` infrastructure
Replaces Linux runners with macOS to resolve persistent CI failures.
Updates jq install step to use brew with a pre-installed check fallback.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Enables CI to run on every push to development so failures can be
caught and iterated on without requiring a PR or manual dispatch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces file-specific log ignores with a blanket dist/logs/ rule
and removes the tracked .gitkeep. Logs are runtime artifacts and
should never appear in the repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add timeout-minutes: 10 as job-level safety net
- Add --skip-magic-strings to prevent the known CI hang at that step
- Narrow --paths to dist/bin dist/lib (skip test fixtures which contain
  intentional antipatterns and inflate scan time)
- Add --no-log to avoid writing runtime log files during CI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sets FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true at workflow level to
silence the Node.js 20 deprecation warning on actions/checkout@v4
and actions/upload-artifact@v4 ahead of the June 2 2026 deadline.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@noelsaw1 noelsaw1 merged commit d72fc5d into main Mar 12, 2026
2 checks passed
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.

1 participant