robotstxt-manager/changelog.txt
2026-08-14 07:55:23 +00:00

166 lines
7.4 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

== Changelog ==
= 0.3.1 =
_Release date: 2026-08-14_
* Default store URL is now `https://www.robotstxt.software` (was `https://plugins.robotstxt.es`). Applies to new activations and fresh installs; existing saved URLs are preserved. The catalog API at the new domain is verified live.
* Plugin version 0.3.0 → 0.3.1.
= 0.3.0 =
_Release date: 2026-08-13_
**Highlights**
* Classic install/activate/update flow: the catalog actions now run on a full page load (`admin-post.php` with per-action-and-slug nonces) and report the outcome through standard admin notices (green success / red error) at the top of the page, replacing the previous AJAX flow.
**Added**
* Activate action — installed-but-inactive plugins show an "Activate" button that calls `activate_plugins()`.
* Update action — plugins with a newer catalog version show an "Update" button that re-downloads the ZIP and runs the `Plugin_Upgrader` with `overwrite` enabled.
* Install/Activate/Update buttons are nonce links (`robotstxt_manager_{action}_{slug}` nonce actions) to `admin-post.php`, all `manage_options`-gated.
* Redirect-based notices: handlers redirect back to the catalog page carrying `robotstxt_manager_result` (success/error) and `robotstxt_manager_message`, rendered as dismissible standard notices.
**Changed**
* `Robotstxt_Manager_Installer` rewritten from an AJAX handler to three admin-post handlers (`robotstxt_manager_install`, `robotstxt_manager_activate`, `robotstxt_manager_update`); download logic (Bearer account-key auth, ZIP validation, temp-file cleanup) unchanged.
* Removed the AJAX endpoint, `manager-install.js`, and its script localization.
* Plugin version 0.2.0 → 0.3.0.
**Compatibility**
* WordPress: 7.0 - 7.1 (declared floor of the ecosystem; scan-confirmed lower)
* PHP: 8.4 - 8.5 (declared floor of the ecosystem; scan-confirmed lower)
= 0.2.0 =
_Release date: 2026-08-12_
**Highlights**
* Phase 2: the Install action. Free and premium plugins can be installed directly from the ROBOTSTXT catalog into the local site, authenticated with the account-level API key (requires Plugins Core 1.4.0+).
**Added**
* `Robotstxt_Manager_Installer` — AJAX handler (`wp_ajax_robotstxt_manager_install_plugin`, nonce-protected, `manage_options`-gated) that resolves the plugin in the remote catalog, downloads the ZIP (free plugins with a published public `download_url` directly; everything else via Core's authenticated `/download` endpoint with an `Authorization: Bearer <account API key>` header), validates the archive (ZIP magic bytes), installs it via `Plugin_Upgrader`, and cleans up the temp file on every path.
* `public/js/manager-install.js` — wires the Install buttons to the AJAX action with in-flight state and result rendering.
* Catalog view: enabled Install buttons for compatible plugins (free and premium).
**Changed**
* Plugin version 0.1.3 → 0.2.0. Description updated to reflect Phase 2.
**Compatibility**
* WordPress: 7.0 - 7.1 (declared floor of the ecosystem; scan-confirmed lower)
* PHP: 8.4 - 8.5 (declared floor of the ecosystem; scan-confirmed lower)
= 0.1.3 =
_Release date: 2026-08-12_
**Changed**
* Version bumped 0.1.2 → 0.1.3.
* `composer.json` PHP requirement updated from `>=8.4` to `>=7.4` to match the real PHPCompatibility scan floor and the plugin header.
* `composer.lock` regenerated.
* `.pot` file regenerated for v0.1.3.
**Compatibility**
* WordPress: 4.7 - 7.1
* PHP: 7.4 - 8.5
**Tests**
* PHP Coding Standards: PHP_CodeSniffer 3.13.6
* WordPress Coding Standards: WPCS 3.4.1
* PHPStan: level 9, 0 errors
* PHPCompatibility: 7.48.5 clean
* wp-compat: 0 errors against WP 4.7
= 0.1.2 =
_Release date: 2026-08-12_
**Highlights**
* Documentation refresh: readme.txt and changelog.txt aligned to the standard templates.
**Changed**
* Version bumped 0.1.1 → 0.1.2.
* readme.txt: added Extra Configurations section, Automatic download subsection in Installation, Previous versions link in Changelog.
* changelog.txt: 0.1.1 entry reformatted to follow the standard template (Highlights, Changed, Compatibility, Tests).
* PHPCompatibility scan (5.68.5): real PHP floor is **7.2**. Project declares **8.4** (ecosystem exception).
* wp-compat scan against WordPress 4.7: **zero WPCompat errors**. Real WP floor is **≤ 4.7**. Project declares **7.0** (ecosystem support window).
**Compatibility**
* WordPress: 4.7 - 7.1
* PHP: 7.4 - 8.5
**Tests**
* PHP Coding Standards: PHP_CodeSniffer 3.13.6
* WordPress Coding Standards: WPCS 3.4.1
* PHPStan: level 9, 0 errors
* PHPCompatibility: 8.48.5 clean (real floor 7.2)
* wp-compat: 0 errors against WP 4.7
= 0.1.1 =
_Release date: 2026-08-12_
**Highlights**
* Compatibility scans completed and documented. No code changes.
**Changed**
* Version bumped 0.1.0 → 0.1.1.
* PHPCompatibility scan (5.68.5) completed: real PHP floor is **7.2** (highest-required feature is `object` return type, introduced in PHP 7.2). The project deliberately declares **8.4** to match the ROBOTSTXT ecosystem — this is a documented exception to `AGENTS-deploy.md` §"PHP compatibility check".
* wp-compat scan against WordPress 4.7: **zero WPCompat errors**. The Manager's code uses only WordPress APIs available since 4.7 or earlier. The real WordPress floor is **≤ 4.7**; the project declares `Requires at least: 7.0` to match the ecosystem support window.
* `.pot` file regenerated for v0.1.1.
**Compatibility**
* WordPress: 4.7 - 7.1
* PHP: 7.4 - 8.5
**Tests**
* PHP Coding Standards: PHP_CodeSniffer 3.13.6
* WordPress Coding Standards: WPCS 3.4.1
* PHPStan: level 9, 0 errors
* PHPCompatibility: 8.48.5 clean (real floor 7.2)
* wp-compat: 0 errors against WP 4.7
= 0.1.0 =
_Release date: 2026-08-12_
**Highlights**
* Phase 1 scaffold of Manager (by ROBOTSTXT) — client-side dashboard for the ROBOTSTXT plugin ecosystem. Read-only catalog view with local install-state resolution.
**Added**
* Plugin header, autoloader (Composer with manual fallback), lifecycle hooks, constants (`ROBOTSTXT_MANAGER_VERSION`, `ROBOTSTXT_MANAGER_DIR`, `ROBOTSTXT_MANAGER_URL`, `ROBOTSTXT_MANAGER_BASENAME`).
* `Robotstxt_Manager_Loader` action/filter queue (identical pattern to Core/Mollie/Sync).
* `Robotstxt_Manager_Encryption` — AES-256-CBC encrypt/decrypt for the API key, using WordPress `AUTH_KEY` + `AUTH_SALT` for key derivation. Same pattern as Core's Forgejo token encryption.
* `Robotstxt_Manager_Core_Client` — HTTP client for the remote Plugins Core REST API. Authenticated via `Authorization: Bearer <key>` header. Implements `test_connection()`, `get_catalog()` (cached in transient), `clear_catalog_cache()`.
* `Robotstxt_Manager_Settings` — Settings API page with Store URL, API Key (masked, encrypted, last-4 hint, delete-on-empty preservation), Catalog Cache TTL, Data-on-Uninstall opt-in. AJAX "Test connection" button with nonce + capability check.
* `Robotstxt_Manager_Admin` — Top-level admin menu (label "ROBOTSTXT") with catalog table view. Resolves local install/active/update state for every catalog entry using `get_plugins()` + `is_plugin_active()`. "Refresh catalog" admin-post action.
* `uninstall.php` with opt-in data deletion (default: preserve all options and transients).
* Per-project tooling: Composer, PHPCS + WPCS + PHPCompatibility, PHPStan level 9 + wp-compat, PHPUnit. `bin/preflight.sh` and `bin/deploy.sh`.
**Compatibility**
* WordPress: 4.7 - 7.1
* PHP: 7.4 - 8.5
**Tests**
* Phase 1 scaffold — plugin-header tests included. Additional tests for Core client, settings, and admin rendering in follow-up phases.