@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix content: <http://purl.org/rss/1.0/modules/content/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<https://lhero.org/?post_type=lh-portfolio-doc&#038;p=147322>
  a sioc:Post ;
  dc:title "Changelog" ;
  dcterms:identifier 147322 ;
  dc:modified "2026-09-13T15:03:45Z"^^xsd:dateTime ;
  dc:created "2026-09-13T15:03:45Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-mcp-buddypress-queries/changelog/> ;
  sioc:has_creator <https://lhero.org/author/1/#account> ;
  sioc:has_container <https://lhero.org/#posts> ;
  content:encoded "<ul class=\"lh_portfolio-meta\"><li><strong>Type:</strong> Doc-section</li><li><strong>Part of:</strong> <a href=\"https://lhero.org/portfolio/lh-mcp-buddypress-queries/\">LH MCP BuddyPress Queries</a></li></ul><ul class=\"lh_portfolio-changelog\"><li><strong>2.1.1:</strong> Patch bump for the deprecated bp_get_group_permalink() -&gt; bp_get_group_url() fix in the Group Listing class (list-groups and get-group abilities), surfaced by a debug-log deprecation notice.</li><li><strong>2.1.0:</strong> Refactor: split the monolithic abilities class into four functional-area classes (group membership, group listing, activity, member directory) plus a shared ability-helpers trait, coordinated by a slim registrar class. Also remove the class_exists() guard around the plugin&#039;s own top-level class declaration, per the updated Plugin Structure convention &#8212; a top-level class with no extends/implements is eligible for PHP/OPcache compile-time early binding, which caused a real production incident on lh-tasks (the guard silently skipped __construct(), so no hooks ever registered, with no fatal or log entry). The guard is reserved for genuinely shared third-party library code, never a plugin&#039;s own classes. No functional or behavioural change &#8212; same 7 ability IDs, same capabilities, same logic, just reorganised into smaller, more maintainable files. Minor version bump.</li><li><strong>2.0.0:</strong> Slim the coordinator abilities class down to a dispatcher: it now only registers the shared ability category and requires/instantiates the four functional-area classes (Group Membership, Group Listing, Activity, Member Directory), each of which registers its own abilities via its own wp_abilities_api_init hook. Also removes the class_exists() guard around the plugin&#039;s own class declaration, per the updated Plugin Structure convention (a top-level class with no extends/implements is eligible for PHP/OPcache compile-time early binding, which caused a real production incident on lh-tasks &#8212; the guard is only for genuinely shared third-party library code, never a plugin&#039;s own classes).</li><li><strong>1.0.1:</strong> Fix documentation links now that the lh-portfolio root entry exists: readme.md and readme.txt pointed at the old, now-trashed /knowledge/plugins/lh-buddypress-queries/ KB page. Point both at the new canonical /portfolio/lh-buddypress-queries/ page and its changelog doc-section, per rules 2-3. Patch bump for the doc-only fix.</li><li><strong>1.0.0:</strong> Initial release. Seven abilities across group membership, group listing, activity streams, and the member directory. Group membership: get-group-members (edit_users &#8212; returns email), get-group-membership-status (bp_moderate). Group listing: list-groups, get-group (both bp_moderate). Activity: get-group-activity, get-user-activity (both bp_moderate). Member directory: search-members (edit_users &#8212; returns email). Deliberately excludes private messages and friend connections &#8212; different risk category, out of scope.</li></ul>"^^rdf:XMLLiteral ;
  sioc:content "Type: Doc-sectionPart of: LH MCP BuddyPress Queries2.1.1: Patch bump for the deprecated bp_get_group_permalink() -&gt; bp_get_group_url() fix in the Group Listing class (list-groups and get-group abilities), surfaced by a debug-log deprecation notice.2.1.0: Refactor: split the monolithic abilities class into four functional-area classes (group membership, group listing, activity, member directory) plus a shared ability-helpers trait, coordinated by a slim registrar class. Also remove the class_exists() guard around the plugin&#039;s own top-level class declaration, per the updated Plugin Structure convention &#8212; a top-level class with no extends/implements is eligible for PHP/OPcache compile-time early binding, which caused a real production incident on lh-tasks (the guard silently skipped __construct(), so no hooks ever registered, with no fatal or log entry). The guard is reserved for genuinely shared third-party library code, never a plugin&#039;s own classes. No functional or behavioural change &#8212; same 7 ability IDs, same capabilities, same logic, just reorganised into smaller, more maintainable files. Minor version bump.2.0.0: Slim the coordinator abilities class down to a dispatcher: it now only registers the shared ability category and requires/instantiates the four functional-area classes (Group Membership, Group Listing, Activity, Member Directory), each of which registers its own abilities via its own wp_abilities_api_init hook. Also removes the class_exists() guard around the plugin&#039;s own class declaration, per the updated Plugin Structure convention (a top-level class with no extends/implements is eligible for PHP/OPcache compile-time early binding, which caused a real production incident on lh-tasks &#8212; the guard is only for genuinely shared third-party library code, never a plugin&#039;s own classes).1.0.1: Fix documentation links now that the lh-portfolio root entry exists: readme.md and readme.txt pointed at the old, now-trashed /knowledge/plugins/lh-buddypress-queries/ KB page. Point both at the new canonical /portfolio/lh-buddypress-queries/ page and its changelog doc-section, per rules 2-3. Patch bump for the doc-only fix.1.0.0: Initial release. Seven abilities across group membership, group listing, activity streams, and the member directory. Group membership: get-group-members (edit_users &#8212; returns email), get-group-membership-status (bp_moderate). Group listing: list-groups, get-group (both bp_moderate). Activity: get-group-activity, get-user-activity (both bp_moderate). Member directory: search-members (edit_users &#8212; returns email). Deliberately excludes private messages and friend connections &#8212; different risk category, out of scope." ;
  sioc:topic <https://lhero.org/?taxonomy=author&term=cap-1> .

<https://lhero.org/author/1/#account> rdfs:seeAlso <https://lhero.org/author/1/?feed=lhrdf&format=turtle> .
<https://lhero.org/?taxonomy=author&term=cap-1> rdfs:seeAlso <https://lhero.org/?taxonomy=author&term=cap-1&feed=lhrdf&format=turtle> .
