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

Start free trial

v0.0.15

Bulk Actions overhaul — Custom Abilities admin page

UI-only release. Replaces the Custom Abilities Bulk Actions dropdown (Publish / Unpublish / Delete) with four ability-native optgroups that mirror the per-row edit drawer:

  • Site Access — Force Allow / Inherit / Force Block
  • MCP Exposure — Enable / Default / Disable
  • User Access — Add / edit access rule… (opens a modal mounting the composer <AccessControl> picker, applies one rule to all selected slugs) + Reset to Default (allow everyone)
  • Overrides — Force Reset (clears every override column per slug)

Destructive transitions prompt for confirmation. Row-level checkbox now works on every ability regardless of Source (Plugin / Core / Theme / Custom) — the previous db-only gate was a hangover from the deleted Delete flow. Full-screen busy overlay with WP-native .spinner is-active + body scroll-lock during every bulk apply.

Also fixed

Composer User Access rule keys were storing the ability slug with the / character stripped when applied via the (new) bulk path — the resulting rows were orphan in the DB. Root cause + fix documented under BUG-COMPOSER-AC-SLUG-DOUBLE-ENCODE in docs/memory/BUGS.md. Guarded by a Jest regression test.

Scope

Client-side only. Reuses existing REST endpoints; no new database tables, no new endpoints, no PHP changes, no dependency changes, no permission changes. Server-side sanitisation and authorisation are unchanged. Safe upgrade.

Test coverage

25 new Jest tests across three suites cover payload discipline, partial-failure re-throw, null-response guard on the composer path, and the slug-encoding regression.

Deferred to a follow-up

UserAccessBulkModal.jsx component-level Jest coverage — tracked as issue #84 (composer <AccessControl> needs a React test-double).


Full changelog: https://github.com/acrossai-co/acrossai-abilities-manager/blob/main/README.txt
Feature PR: #85 · Release PR: #86 · Follow-up issue: #84


Keep reading