Releases: ArsNovaSingers/ars-nova-ops
Release list
v1.3.0 — read-only /site/inspect
Adds a read-only REST route for inspecting plugin settings that WordPress core REST does not expose.
GET /wp-json/ans-ops/v1/site/inspect — returns allow-listed options. Pass ?name=<option> for one, omit for all. Requires manage_options.
Motivation: Tickera and its Mailchimp add-on store everything in a single serialized option, so there was no way to check what address or settings they hold without wp-admin.
Design notes:
- The inspect allow-list is separate from the one used by
/site/options. That list is shared with the option writer, so anything added there would become writable. Inspect is read-only by construction. - Values whose key matches
key|secret|token|password|salt|auth|credential|privateare returned as***redacted***, at every level of a nested settings array. Empty values stay empty rather than implying a secret is set. - Recursion is depth-capped at 8.
Initial allow-list: tc_general_setting, tc_general_settings, tc_mailchimp_settings, the five woocommerce_email_* fields, woocommerce_store_address, admin_email, siteurl, home. Extend via the ans_ops_inspectable_options filter.
v1.2.1 - fix: overwrite was discarded for wordpress.org slug installs
The bug
ans_ops_route_install() called:
ans_ops_run_install( $package, ( '' !== $slug ) ? false : $overwrite );
That threw away the caller's overwrite flag whenever the source was a
WordPress.org slug - including when /plugin/update had just set it to
true.
Consequence:
| Source | Already installed? | Before 1.2.1 |
|---|---|---|
| slug (wordpress.org) | no | works |
| slug | yes | always HTTP 500 |
| url / zip_b64 / drive_file_id + overwrite | yes | works |
So new installs worked, our own GitHub-released plugins updated fine, and
updating any already-installed wordpress.org plugin (WooCommerce, Yoast,
Kadence, Tickera add-ons) was impossible. That mix is why the failure read as
intermittent rather than total.
1.2.1 honours $overwrite for every source.
This retires gotcha 17 in the Plugin Build Registry - the
deactivate/delete/reinstall workaround is no longer needed, and it was only
ever safe for plugins holding no options.
Also: failures now say why
A failed install returned { ok:false, error, messages } with HTTP 500. The
MCP connector's error mapper reads only the WordPress WP_Error shape
(code / message), so it matched neither field and reported a bare
WordPress API returned HTTP 500. - discarding a reason the server had
already spelled out.
Failure responses now carry code and message as well as error and
messages, so the existing connector surfaces the real cause with no
redeploy.
v1.2.0 - Google Drive install source + core site options
Adds drive_file_id as an install source: plugin zips are fetched from Google Drive AUTHENTICATED, via ars-nova-google-connector's service account, so the Drive folder stays private. This replaces zip_path, which stopped working when the WordPress connectors moved to Cloud Run. Drive share links do NOT work as a url source - Drive serves servers differently than browsers - so the fetch verifies the PK zip header before unpacking and reports a permissions error as a permissions error. Also lands GET/POST ans-ops/v1/site/options for the core options WordPress REST omits (timezone_string, gmt_offset, blog_public), behind a strict allow-list.
v1.0.0
Initial import. Canonical source == DEV 1.0.0. Installable zip attached (top folder ars-nova-ops/).