Repository navigation
Release 1.7.0: rename to AAA Autoload Optimizer - #83
Conversation
- Version 1.6.2 in the plugin header, readme Stable tag and package.json. - Changelog: deadlock fix, W3 Total Cache DbCache fix, readme improvements. - Restore "Requires at least: 6.7". The readme rework lowered it to 6.4, but the plugin calls wp_autoload_values_to_autoload() (WP 6.6+) unguarded, so WP 6.4/6.5 sites would be offered an update that fatals. - "Tested up to: 7.1" (current WordPress; Plugin Check flags 7.0). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Test on Playground |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Plugin name, readme title and all user-facing strings: "AAA Autoload Optimizer". #76 had renamed the headers to "Autoload Optimizer"; the admin page, README.md, known-plugins.json and docblocks still said "AAA Option Optimizer". The Tools menu label is now "Autoload Optimizer". - Slug, text domain, option names and PHP namespaces are unchanged. - Version 1.6.2 -> 1.7.0 (plugin header, Stable tag, package.json, changelog, upgrade notice). The rename is a minor-version change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renames beyond #76#76 renamed the plugin only in the Visible to users (translatable strings in
Readme Repo and data files Internal only, not shown to users Unchanged: the slug Translations: items 1–4 show in English until their translations are updated. |
* Fix W3 Total Cache DbCache fatal in batch_insert W3TC's DbCache wrapper reads `$wpdb->col_info` after each cacheable query, which triggers `wpdb::load_col_info()` -> `mysqli_num_fields()`. For non-SELECT queries the result is `true` (bool), so this fatals with "Argument #1 ($result) must be of type mysqli_result, true given". W3TC bypasses caching for write queries via a regex that matches `START TRANSACTION`, `INSERT`, `COMMIT`, etc. — but not `BEGIN`. Switching `BEGIN` to `START TRANSACTION` (semantically identical in MySQL) lets W3TC's regex catch it and skip the col_info path. Reproduced locally with W3TC 2.9.4: identical stack trace with `BEGIN`, no fatal with `START TRANSACTION`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Improve the readme (#76) Co-authored-by: Filip Ilić <ilic.filip@gmail.com> * Update WPCS to 3.4.1 (security release) Updates wp-coding-standards/wpcs to 3.4.1, which fixes a security issue in the WordPress.WP.EnqueuedResourceParameters sniff where running PHPCS over untrusted PHP code could lead to arbitrary command execution on the scanning host (GHSA-3pwp-g2mj-5p3v). Also bumps the required transitive dependencies: - phpcsstandards/phpcsutils to 1.2.3 - phpcsstandards/phpcsextra to 1.5.1 Lock-file only; composer.json constraints already allowed 3.4.1. Verified locally with PHPCS: no new violations. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Filip Ilic <ilic.filip@gmail.com> * Fix deadlocks when concurrent requests write tracked options Every request writes the options it read to wp_option_optimizer_tracked on shutdown with INSERT ... ON DUPLICATE KEY UPDATE. InnoDB locks rows in VALUES order, which followed per-request access order, so concurrent requests locked the same rows in different orders and deadlocked ("Deadlock found when trying to get lock"), losing that request's counts. Sort the options before writing so all writers lock in one order. On a failed insert, ROLLBACK instead of sending COMMIT (which also hid the error by clearing $wpdb->last_error), and retry once on a deadlock; the deadlock rolls back the whole transaction, so the retry can't double count. Reproduced locally with 20 parallel writers x 50 batch_insert() calls of 200 shuffled options: ~920/1000 deadlocks before, 0/1000 after with all 200000 increments landed. Retry path verified with a forced deadlock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Update PHPStan to 2.3 PHPStan 1.12 to 2.3, with szepeviktor/phpstan-wordpress 1.3 to 2.0 (which brings WordPress stubs 6.9 to 7.1). The code needed no changes. Two config entries did: - excludePaths: tests does not exist in this repository, which PHPStan 2 refuses; marked optional as tests (?). - The ignore for missingType.generics matched nothing on PHPStan 2 and is reported as unused; removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Filip Ilic <ilic.filip@gmail.com> * Release 1.7.0: rename to AAA Autoload Optimizer (#83) * Bump version to 1.6.2 - Version 1.6.2 in the plugin header, readme Stable tag and package.json. - Changelog: deadlock fix, W3 Total Cache DbCache fix, readme improvements. - Restore "Requires at least: 6.7". The readme rework lowered it to 6.4, but the plugin calls wp_autoload_values_to_autoload() (WP 6.6+) unguarded, so WP 6.4/6.5 sites would be offered an update that fatals. - "Tested up to: 7.1" (current WordPress; Plugin Check flags 7.0). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Add 1.6.2 upgrade notice Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Rename plugin to AAA Autoload Optimizer and release as 1.7.0 - Plugin name, readme title and all user-facing strings: "AAA Autoload Optimizer". #76 had renamed the headers to "Autoload Optimizer"; the admin page, README.md, known-plugins.json and docblocks still said "AAA Option Optimizer". The Tools menu label is now "Autoload Optimizer". - Slug, text domain, option names and PHP namespaces are unchanged. - Version 1.6.2 -> 1.7.0 (plugin header, Stable tag, package.json, changelog, upgrade notice). The rename is a minor-version change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * Update banners for the AAA Autoload Optimizer rename - New WordPress.org banners (772x250, 1544x500) with the new name. - Add Dutch banners as banner-*-nl_NL.png, the locale naming WordPress.org uses for localized assets. - Replace github_banner_aaaoo_pp.png with github_banner_aaaao_pp.png and point README.md at it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Signed-off-by: Filip Ilic <ilic.filip@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Joost de Valk <joost@altha.nl> Co-authored-by: Ari Stathopoulos <aristath@gmail.com>
What this does
Prepares the 1.7.0 release: renames the plugin to AAA Autoload Optimizer, bumps the version and fixes two readme headers. Apart from the name strings, there are no code changes in this PR. The rest of the code in the release is what's already on
developsince 1.6.1:batch_insertChanges
Version/Stable tag/package.json→ 1.7.0 (it was 1.6.2 before the rename), with a 1.7.0 changelog entry and upgrade notice.package.jsonhad been stuck at 1.3.2.Requires at least: 6.4→6.7. Rename plugin + readme optimization #76 lowered it from the 6.7 that 1.6.1 shipped with. The plugin callswp_autoload_values_to_autoload()(added in WP 6.6) unguarded in activation, the admin page and the REST endpoints, so WP 6.4/6.5 sites would be offered an update that fatals.Tested up to: 7.0→7.1. 7.1 is the current WordPress release; Plugin Check reports 7.0 as an error.Testing
All tests ran on a local site (WP 7.1.3, MySQL 8.0, PHP 8.3) unless noted.
Deadlock fix (
src/class-database.php)batch_insert()calls of 200 shuffled options.debug.log.%d/%s, quotes, backslash, emoji, numeric, case-only duplicates) all write correctly.W3 Total Cache fix
$wpdbisW3TC\DbCache_WpdbNew): 60 concurrent requests all returned 200, there were no fatals, and tracking still writes.Rename (1.7.0)
wp plugin listshows "AAA Autoload Optimizer 1.7.0".Regression checks
Static and packaging checks
src/autoload.phplacks anABSPATHguard (unchanged since 1.6.1), and the "unescaped DB parameter" warnings are all table names built from constants or SQL that is already prepared.git archive+.distignore): same file list as the 1.6.1 zip on WordPress.org. The only shipped code diff issrc/class-database.php.Not covered
Follow-ups (not in this PR)
composer audit: squizlabs/php_codesniffer CVE-2026-67434. It's a dev-only dependency and not shipped. Needs a bump to 3.13.6+.playground-merged.ymlhas failed on every run since at least September with a workflow-file error.npm run lint:jsprettier error atjs/admin-script.js:654.🤖 Generated with Claude Code