30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

v0.0.17 — Features 057 + 058 + 059 (wp-core-reinstall + slug rename + Recovery Mode)

Three features in one release

This release cuts a single 0.0.17 covering three features that landed on main since the last release (0.0.15) without their own release PRs.

Feature 057 — Reinstall WordPress Core

New ability acrossai/reinstall-wp-core under the Core category. Reinstalls the currently-installed WordPress version by handing a synthetic offer with `response = 'reinstall'` to WP core's `Core_Upgrader::upgrade()` — same code path the WordPress dashboard's "Reinstall now" button uses. Uses `allow_relaxed_file_ownership=false` so ownership mismatches surface as errors instead of silent partial-upgrades. Requires BOTH `manage_options` AND `update_core`; honours `DISALLOW_FILE_MODS` via `File_Mods_Guard`; multisite-guarded; refuses when core is being actively updated to a different version (use `acrossai/update-wp-core` for that). Complements the existing `acrossai/update-wp-core`, `acrossai/rollback-wp-core`, and `acrossai/check-wp-core-update` abilities. PR #87.

Feature 058 — BREAKING: slug rename to acrossai/<verb>-<subject>

Two orthogonal changes shipped together:

  • Namespace shortens from acrossai-abilities-manager/ (27 chars) to acrossai/ (9 chars). Matches the WordPress core MCP adapter convention (mcp-adapter/discover-abilities, mcp-adapter/execute-ability) and the broader LLM tool-use ecosystem.
  • Suffixes flip to verb-first form. 163 slug suffixes changed (e.g. site-title-getget-site-title, theme-activateactivate-theme, plugin-listlist-plugins). 56 already-verb-first suffixes only had their namespace shortened. Slugs now read the same word order as their label.

Also flipped 162 PHP class files + class names to match slugs (Site_Title_Get.phpGet_Site_Title.php, class Site_Title_Getclass Get_Site_Title). Internal-only; PSR-4 autoload picks up the new names automatically.

No backwards-compatibility aliases. No automatic data migration — the plugin is small-user; users clear pre-existing overrides + ACL rules keyed on old slugs from the admin UI and re-add them under the new names.

External callers (custom code, saved MCP client configs, ACL entries, scripts calling /wp-json/wp-abilities/v1/abilities/acrossai-abilities-manager/<old>/run) must update their slug references to /wp-json/wp-abilities/v1/abilities/acrossai/<new>/run.

PR #88. Full slug convention captured as DEC-SLUG-CONVENTION-VERB-FIRST in docs/memory/DECISIONS.md.

Feature 059 — Recovery Mode / Safe Mode / fatal-error abilities

7 new abilities under a new Recovery category so an AI agent driving the site over REST/MCP can detect and act on WordPress Recovery Mode without needing an admin to notice the recovery banner in wp-admin:

SlugPurpose
acrossai/get-recovery-mode-statusDetect recovery mode + summary counters (paused counts, fatal-handler enabled)
acrossai/list-paused-pluginsList paused plugins with captured error details (type / file / line / message), enriched with human plugin_name
acrossai/list-paused-themesSymmetric for themes
acrossai/get-recovery-exit-urlReturn the admin-clickable URL that exits recovery mode (WP core's exit action is cookie- + nonce-guarded; a normal admin REST session can't invoke it directly — this returns the URL for an admin or a browser-driving agent to follow)
acrossai/unpause-pluginClear the paused-storage entry so WP retries loading the plugin next request (distinct from deactivate-plugin)
acrossai/unpause-themeSymmetric for themes
acrossai/list-recent-fatal-errorsGrouped PHP Fatal/Parse/Compile errors from debug.log, streamed with a 20 MB tail cap, grouped by `md5(type

Every write action gates on manage_options + File_Mods_Guard::blocked_response(). Fuzzy plugin/theme identifiers flow through the existing Plugin_Helpers::resolve_plugin() / Theme_Helpers::resolve_theme() resolvers.

Intentional non-goals: no programmatic recovery-mode trigger (WP core has NO public API — the handler only fires on real fatals at protected endpoints), no programmatic exit (cookie + nonce guarded).

Also: docs-only tweak to 3 existing abilities (activate-plugin, deactivate-plugin, activate-theme) — their description now notes they work in recovery mode.

PR #89.

Verified

  • PHPUnit 191/191 pass (170 pre-existing + 21 new from Feature 059)
  • PHP syntax lint clean across every touched/new file
  • Every ability slug matches the new acrossai/<verb>-<subject> convention

Note on version numbering

0.0.16 never shipped as an installable version — Feature 058's commits bumped the version constants to 0.0.16 and Feature 059's commits bumped again to 0.0.17 before either got a release PR. The 0.0.16 changelog block in README.txt remains as a historical marker documenting what changed between the 0.0.15 release and this 0.0.17 release; users upgrading from 0.0.15 skip 0.0.16 entirely.

Compatibility

  • PHP 8.1+ / WP 6.9+ (unchanged)
  • No new REST routes, no new database tables, no new composer or npm packages, no new capability requirements

Keep reading