@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=148408>
  a sioc:Post ;
  dc:title "Changelog" ;
  dcterms:identifier 148408 ;
  dc:modified "2026-10-15T01:30:24Z"^^xsd:dateTime ;
  dc:created "2026-09-25T17:14:06Z"^^xsd:dateTime ;
  sioc:link <https://lhero.org/portfolio/lh-knowledge-base/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>Part of:</strong> <a href=\"https://lhero.org/portfolio/lh-knowledge-base/\">LH Knowledge Base</a></li></ul><ul class=\"lh_portfolio-changelog\"><li><strong>1.8.1:</strong> Knowledge base abilities are marked as working on one site&#039;s knowledge base (meta site_scoped). Where LH MCP Adapter Extensions is active they take an optional site_id to read or edit another site&#039;s knowledge base you belong to, with permissions checked on that site. Calls without site_id are unchanged.</li><li><strong>1.8.0:</strong> Security fix: get-entry no longer returns draft, pending, private or trashed entries to users who only have read; an entry that is not active now also needs edit_post, and is reported as not found otherwise. All five abilities now declare output schemas, and create-entry, get-entry and list-entries descriptions end with the capability they require. The ability category is renamed from knowledge-base to lh-knowledge-base, matching the plugin text domain.</li><li><strong>1.7.13:</strong> Knowledge base entries can now be locked with LH Post Locking: the entry post type supports custom fields, which makes it lockable and lets the lock checkbox appear in the block editor. update-entry and trash-entry now check edit_post or delete_post on the entry itself, not only edit_posts, so they respect per-entry restrictions such as a lock, and a locked entry is refused with a clear &#039;entry is locked&#039; error (with locked: true) instead of core&#039;s misleading &#039;content, title, and excerpt are empty&#039;.</li><li><strong>1.7.12:</strong> Logged-out requests for Markdown (.md) knowledge base URLs now get a short Markdown explanation that the knowledge base requires signing in, with a log-in link that returns to the requested URL and a pointer to the MCP abilities, sent with status 403. Every .md URL gets the same response whether or not the entry exists, so it reveals nothing about the knowledge base&#039;s contents.</li><li><strong>1.7.11:</strong> Fixed the Markdown (.md) versions of knowledge base entries, indexes and logs being readable without logging in. They now follow the same access rule as the HTML pages (lh_kb_current_user_can_view, logged-in users by default) and return 404 otherwise, and Markdown responses are marked private and uncacheable so a page cache cannot serve them to anyone else.</li><li><strong>1.7.10:</strong> Now requires PHP 8.2, matching LH Content Converter, which this plugin requires and which needs PHP 8.2 for its bundled conversion library. No change to how the plugin works.</li><li><strong>1.7.9:</strong> Markdown conversion now goes through LH Content Converter, the renamed LH Markdown Converter, which uses Automattic&#039;s blocks engine. Entries written as Markdown are now saved as the block markup the editor itself produces: list items and nested lists as real list-item blocks, quotes with inner paragraphs, and tables with header and body rows. The required plugin is now lh-content-converter, and the plugin header declares PHP 8.1, which that plugin needs. The version is now read from the plugin header.</li><li><strong>1.7.8:</strong> Markdown conversion now delegates to the shared LH Markdown Converter plugin instead of bundling league/commonmark and league/html-to-markdown in this plugin. The knowledge base&#039;s own conversion options (no autolinks, no hard breaks, no table pipe alignment) are passed through, and conversion degrades safely if the converter plugin is missing. LH Markdown Converter is now a required plugin.</li><li><strong>1.7.7:</strong> create-entry and update-entry now take Markdown content as content_md, the same field name get-entry returns, so content read from one entry can be written straight back. Previously the write side used a different name, and content passed under the read-side name was silently ignored while the call still reported success. All abilities now reject unknown parameters, update-entry returns an error when given nothing to change, and the modified timestamps the abilities return are now correct for the site&#039;s timezone. History before 1.7.8 not listed here was not carried over from the plugin&#039;s old readme.</li><li><strong>1.5.0:</strong> Entries now use their own Active status instead of Published, so visibility is controlled by the plugin: logged-in users can see entries and anonymous visitors cannot. The rule is filterable through lh_knowledge_base_current_user_can_view, so it can be tied to membership or capabilities, and existing published entries are moved to the new status on activation.</li><li><strong>1.1.0:</strong> Separates an entry&#039;s own document from its folder index. /knowledge/{slug}.md now serves the entry&#039;s content and returns 404 if it has none; /knowledge/{slug}/index.md serves a generated index of its children and returns 404 if it has none. Concept documents gain OKF-style YAML front matter, and every ability response now reports has_content, has_children, concept_url and index_url so an agent can see which URLs are live.</li><li><strong>1.0.0:</strong> Initial release. Adds a per-site knowledge base: hierarchical lh_kb_entry entries with a free-form entry type taxonomy seeded with concept, workflow, ability and platform. Each entry is served as Markdown at /knowledge/{slug}.md, with links rewritten to their Markdown versions, and MCP abilities create-entry, get-entry, update-entry, list-entries and trash-entry give AI agents full read and write access.</li></ul>"^^rdf:XMLLiteral ;
  sioc:content "Part of: LH Knowledge Base1.8.1: Knowledge base abilities are marked as working on one site&#039;s knowledge base (meta site_scoped). Where LH MCP Adapter Extensions is active they take an optional site_id to read or edit another site&#039;s knowledge base you belong to, with permissions checked on that site. Calls without site_id are unchanged.1.8.0: Security fix: get-entry no longer returns draft, pending, private or trashed entries to users who only have read; an entry that is not active now also needs edit_post, and is reported as not found otherwise. All five abilities now declare output schemas, and create-entry, get-entry and list-entries descriptions end with the capability they require. The ability category is renamed from knowledge-base to lh-knowledge-base, matching the plugin text domain.1.7.13: Knowledge base entries can now be locked with LH Post Locking: the entry post type supports custom fields, which makes it lockable and lets the lock checkbox appear in the block editor. update-entry and trash-entry now check edit_post or delete_post on the entry itself, not only edit_posts, so they respect per-entry restrictions such as a lock, and a locked entry is refused with a clear &#039;entry is locked&#039; error (with locked: true) instead of core&#039;s misleading &#039;content, title, and excerpt are empty&#039;.1.7.12: Logged-out requests for Markdown (.md) knowledge base URLs now get a short Markdown explanation that the knowledge base requires signing in, with a log-in link that returns to the requested URL and a pointer to the MCP abilities, sent with status 403. Every .md URL gets the same response whether or not the entry exists, so it reveals nothing about the knowledge base&#039;s contents.1.7.11: Fixed the Markdown (.md) versions of knowledge base entries, indexes and logs being readable without logging in. They now follow the same access rule as the HTML pages (lh_kb_current_user_can_view, logged-in users by default) and return 404 otherwise, and Markdown responses are marked private and uncacheable so a page cache cannot serve them to anyone else.1.7.10: Now requires PHP 8.2, matching LH Content Converter, which this plugin requires and which needs PHP 8.2 for its bundled conversion library. No change to how the plugin works.1.7.9: Markdown conversion now goes through LH Content Converter, the renamed LH Markdown Converter, which uses Automattic&#039;s blocks engine. Entries written as Markdown are now saved as the block markup the editor itself produces: list items and nested lists as real list-item blocks, quotes with inner paragraphs, and tables with header and body rows. The required plugin is now lh-content-converter, and the plugin header declares PHP 8.1, which that plugin needs. The version is now read from the plugin header.1.7.8: Markdown conversion now delegates to the shared LH Markdown Converter plugin instead of bundling league/commonmark and league/html-to-markdown in this plugin. The knowledge base&#039;s own conversion options (no autolinks, no hard breaks, no table pipe alignment) are passed through, and conversion degrades safely if the converter plugin is missing. LH Markdown Converter is now a required plugin.1.7.7: create-entry and update-entry now take Markdown content as content_md, the same field name get-entry returns, so content read from one entry can be written straight back. Previously the write side used a different name, and content passed under the read-side name was silently ignored while the call still reported success. All abilities now reject unknown parameters, update-entry returns an error when given nothing to change, and the modified timestamps the abilities return are now correct for the site&#039;s timezone. History before 1.7.8 not listed here was not carried over from the plugin&#039;s old readme.1.5.0: Entries now use their own Active status instead of Published, so visibility is controlled by the plugin: logged-in users can see entries and anonymous visitors cannot. The rule is filterable through lh_knowledge_base_current_user_can_view, so it can be tied to membership or capabilities, and existing published entries are moved to the new status on activation.1.1.0: Separates an entry&#039;s own document from its folder index. /knowledge/{slug}.md now serves the entry&#039;s content and returns 404 if it has none; /knowledge/{slug}/index.md serves a generated index of its children and returns 404 if it has none. Concept documents gain OKF-style YAML front matter, and every ability response now reports has_content, has_children, concept_url and index_url so an agent can see which URLs are live.1.0.0: Initial release. Adds a per-site knowledge base: hierarchical lh_kb_entry entries with a free-form entry type taxonomy seeded with concept, workflow, ability and platform. Each entry is served as Markdown at /knowledge/{slug}.md, with links rewritten to their Markdown versions, and MCP abilities create-entry, get-entry, update-entry, list-entries and trash-entry give AI agents full read and write access." ;
  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> .
