- 0.3.3: Shorter MCP ability descriptions. The opening sentence of get-lock and list-locked now says what the ability does and returns in under 100 characters, because discover-abilities lists only that sentence. The detail follows unchanged. Wording only: no change to behaviour, inputs or outputs.
- 0.3.2: get-lock, list-locked and set-lock are marked as working on one site's posts (meta site_scoped). Where LH MCP Adapter Extensions is active they take an optional site_id to check or lock posts on another site you belong to, with the lock capability checked on that site. Calls without site_id are unchanged.
- 0.3.1: The list-locked and set-lock abilities now end their descriptions with the actual lock capability, e.g. "Requires manage_options.", so MCP clients see the real requirement even when it has been changed with the lock_capability filter. list-locked also describes its page and per_page parameters.
- 0.3.0: Locks are now enforced on every write path, not only through capabilities, and can be managed over MCP. A locked post can no longer be updated (title, content, excerpt, status, parent, slug, revision restore), trashed or deleted, nor have its public (non-underscore) custom fields changed, by any account without the lock capability, whatever route the write takes (wp-admin, REST, MCP abilities, cron, other plugins), as long as it goes through the WordPress APIs. Previously a caller that only checked a type-level capability such as edit_posts could still write to a locked post. Cron and other signed-out contexts are refused too; legitimate background updaters can use LH_Post_Locking_Plugin::run_bypassing_lock() or the lh_post_locking_bypass_lock filter. New helpers for callers: last_refused_post() (to replace core's misleading 'empty content' error), locked_error(), get_lock_details() and blocks_write(); new lh_post_locking_write_refused action and lh_post_locking_is_frozen_meta_key filter. New MCP abilities: lh-post-locking/get-lock, lh-post-locking/set-lock and lh-post-locking/list-locked. Scheduled publishing of a locked future post still works, and term assignments are not frozen. Also removes the class_exists() guard around the plugin class, per LH conventions.
- 0.2.0: First working release. Administrators can lock any post, page or other post type with custom-fields support so that only users with manage_options (filterable via lh_post_locking_lock_capability) can edit, delete or publish it. The lock is stored as post meta beside the post status, so locked posts can still be published, private or any custom status. Lock editing checkbox in the block editor status panel and in the classic editor Publish box; Locked post state, Locked view and Lock/Unlock bulk actions in list tables. Comment moderation on locked posts is unaffected, and copies made with LH Copy to Draft start unlocked. Fires lh_post_locking_post_locked and lh_post_locking_post_unlocked. Replaces LH Locked Post Status.
- 0.1.0: Initial scaffold.