Skip to content

Releases: thegrowthproject/wp-llms-txt

v1.3.4

Choose a tag to compare

@daniel-vacic daniel-vacic released this 07 Jan 00:37
432e106

What's New

Bug Fix

  • Root-only /llms.txt: Fixed issue #30 where /blog/post-slug/llms.txt incorrectly returned home page content instead of 404. The /llms.txt endpoint now only matches at the site root.

Generator Improvements (llmstxt.org compliance)

  • Posts limit filter: Added tgp_llms_txt_posts_limit filter (default 50, use -1 for unlimited)
  • Category exclusion: Added tgp_llms_txt_exclude_categories filter to exclude categories by slug
  • Post dates: Each post listing now includes its publish date
  • Last Updated timestamp: Header now includes Last Updated: YYYY-MM-DD
  • Cleaner format: Simplified header to match llmstxt.org spec

Documentation

  • Added new filter documentation to docs/HOOKS.md

v1.3.3

Choose a tag to compare

@daniel-vacic daniel-vacic released this 07 Jan 00:08
f2a764b

What's New

Code Quality (Issue #26)

  • YAML Escaping: Fixed Frontmatter to properly escape YAML 1.2 special characters
  • Markdown Title Escaping: Sanitize titles to escape special markdown characters
  • N+1 Query Fix: Batch loading post meta with update_postmeta_cache()
  • Cache Invalidation: Transient caching with automatic invalidation on post updates
  • RateLimiter Extraction: Extracted rate limiting into dedicated class (SRP)
  • Redis/Memcached Support: Rate limiter uses WordPress object cache

CI/CD Improvements

  • Blacksmith Runners: Migrated all workflows to faster Blacksmith runners
  • PHPUnit Fix: Removed coverage config that caused CI warnings
  • E2E Tests: Fixed wp-env setup for reliable endpoint testing

Testing

  • 140 PHPUnit tests (up from 78)
  • Comprehensive MarkdownConverter test coverage
  • E2E tests for /llms.txt and /*.md endpoints

Documentation

  • Added docs/HOOKS.md with all filters and actions
  • Added composer audit to CI pipeline
  • Track composer.lock for reproducible builds

Housekeeping

  • Removed .claude folder (consolidated in private repo)
  • Added .claude/ to .distignore

v1.3.2

Choose a tag to compare

@daniel-vacic daniel-vacic released this 06 Jan 20:08

Bug Fix

Critical fix: Generator class had private constructor preventing /llms.txt endpoint from working.

Fixed

  • Made Generator constructor public so EndpointHandler can instantiate it for serving /llms.txt requests
  • The PSR-4 migration (v1.3.0) incorrectly made the constructor private

This fixes the "critical error" on /llms.txt endpoints while .md endpoints continued to work.

v1.3.1

Choose a tag to compare

@daniel-vacic daniel-vacic released this 06 Jan 19:52

Bug Fix

Critical fix: Include Composer autoloader in release package.

Fixed

  • Release workflow now runs composer install --no-dev before packaging
  • Removed vendor/ from .distignore so autoloader is included in release ZIP

This fixes the "Failed to open required vendor/autoload.php" error when installing the plugin.

v1.3.0

Choose a tag to compare

@daniel-vacic daniel-vacic released this 06 Jan 19:48
a71c56e

What's New

Features

  • PSR-4 Autoloading: Migrated to PSR-4 namespaces (TGP\LLMsTxt\*) for better code organization
  • Static Initialization Pattern: All classes now use Class::init() with private constructors
  • Error Logging Infrastructure: New Logger class with error/warning/debug levels and action hooks for external integrations (tgp_llms_txt_error, tgp_llms_txt_warning)
  • Rate Limiting: Added IP-based rate limiting (100 requests/minute) for public endpoints with standard headers

Security

  • CSS color and gradient validation for block rendering
  • Manifest structure validation for plugin updates
  • Input sanitization for all proxy headers

Developer Experience

  • Comprehensive PHPUnit test coverage (78 tests, 177 assertions)
  • E2E testing with Playwright
  • WordPress Coding Standards compliance

Breaking Changes

  • Class names changed from TGP_Class_Name to TGP\LLMsTxt\ClassName
  • Requires PHP 8.2+

v1.2.0

Choose a tag to compare

@daniel-vacic daniel-vacic released this 02 Jan 02:25
8a1e5f4

What's New

Blog Filters Blocks

Three new blocks for filtering blog archives with Interactivity API:

  • tgp/blog-filters — Parent container with state management
  • tgp/blog-category-filter — Category pills with active state styling
  • tgp/blog-search — Search input with icon and clear button

Self-Hosted Plugin Updates

Automatic updates from GitHub releases using native WordPress hooks. No external dependencies required.

Testing Infrastructure

  • PHPUnit with Brain Monkey (38 tests)
  • Jest with Interactivity API mock (21 tests)
  • Playwright E2E tests
  • GitHub Actions CI for all tests

Shared Helper Classes

  • TGP_Button_Block_Renderer — Consolidated button rendering
  • TGP_Pill_Block_Renderer — Filter pill rendering
  • TGP_SVG_Sanitizer — Centralized SVG sanitization

New Filters

  • tgp_llms_txt_description — Customize llms.txt site description
  • tgp_llms_txt_contact_url — Customize contact page path
  • tgp_llms_txt_pages — Customize page listings

Breaking Changes

CSS class names migrated to BEM pattern:

  • Before: .tgp-copy-btn, .tgp-btn-icon
  • After: .wp-block-tgp-copy-button, .wp-block-tgp-copy-button__icon

Requirements

  • WordPress 6.5+
  • PHP 8.2+

Full Changelog

See CHANGELOG.md

v1.1.0 - Block Modernization

Choose a tag to compare

@daniel-vacic daniel-vacic released this 30 Dec 19:10
ca0c239

Block Modernization

This release modernizes the plugin's Gutenberg blocks using WordPress 6.5+ APIs.

Changed

  • BREAKING: Requires WordPress 6.5+ (was 5.0+)
  • Migrated copy button to WordPress Interactivity API for reactive state management
  • Copy button now fetches directly from .md endpoint (faster, cached) instead of admin-ajax.php
  • Replaced custom color/style attributes with WordPress Block Supports API
  • Buttons now inherit theme styles automatically (Brand, Dark, Light, Tint variants)
  • Split llm-buttons block into separate copy-button and view-button blocks

Removed

  • includes/class-ui-buttons.php (AJAX handler no longer needed)
  • blocks/llm-buttons/editor.css (styles now from Block Supports)
  • Custom backgroundColor, textColor, borderRadius attributes (replaced by Block Supports)

Fixed

  • Button styles now match theme design system
  • Improved performance by eliminating admin-ajax.php overhead

Requirements

  • WordPress 6.5+
  • PHP 8.2+

v1.0.0 - Initial Release

Choose a tag to compare

@daniel-vacic daniel-vacic released this 29 Dec 20:37
1378882

🎉 Initial Release

Features

  • /llms.txt endpoint with site index following llmstxt.org specification
  • .md endpoints for individual pages and posts
  • Gutenberg block for copy-to-clipboard functionality
  • YAML frontmatter for markdown files (title, description, date, author, tags)
  • Gutenberg to markdown conversion (headings, lists, tables, links, emphasis, code)
  • Cache headers for performance (1 hour)

Developer Experience

  • WordPress Coding Standards (PHPCS) with CI
  • GitHub Actions for linting and releases
  • Automated plugin zip builds on release
  • Issue and PR templates
  • Contributing guidelines

Requirements

  • WordPress 5.0+ (Gutenberg)
  • PHP 8.2+