-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinfo.json
More file actions
17 lines (17 loc) · 17.6 KB
/
info.json
File metadata and controls
17 lines (17 loc) · 17.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"name": "WP Loupe",
"slug": "wp-loupe",
"version": "0.8.5",
"download_url": "https://github.com/soderlind/wp-loupe/releases/latest/download/wp-loupe.zip",
"tested": "7.0",
"requires": "6.3",
"requires_php": "8.2",
"last_updated": "2026-04-17 02:36:57",
"sections": {
"description": "WP Loupe improves WordPress core search by maintaining its own index for fast lookups, supporting typo tolerance, phrase matching, basic exclusion operators, and per\u2013post-type customization.\n\n<h3>MCP (Model Context Protocol) Integration</h3>\nWP Loupe includes an optional MCP server (disabled by default) for external agents / automation.\n\nKey points:\n<ul><li>Discovery endpoints: `/.well-known/mcp.json` and `/.well-known/oauth-protected-resource` (toggle in Settings \u2192 WP Loupe \u2192 MCP)</li>\n<li>Commands include `searchPosts`, `getPost`, `getSchema`, and `healthCheck`</li>\n<li>Anonymous access can be enabled with lower rate limits; tokens raise limits and can unlock health checks</li>\n<li>Tokens are scoped (`search.read`, `health.read`), have configurable TTL (1\u2013168 hours, or 0 = indefinite), and can be revoked</li>\n<li>Tokens are stored hashed (raw value shown once); pagination cursors are HMAC-protected</li>\n<li>Rate limits are configurable (anonymous vs authenticated), with filter hooks and a WP-CLI token command available</li>\n\n</ul>Full documentation: https://github.com/soderlind/wp-loupe/blob/main/docs/mcp.md\n\n<h3>Core Features</h3>\n\n<ul><li>\ud83d\ude80 Enhanced search engine replacing WordPress default</li>\n<li>\u26a1 Lightning-fast, precise result delivery</li>\n<li>\ud83d\udd04 Real-time index synchronization</li>\n<li>\ud83c\udf10 Support for multiple languages</li>\n<li>\ud83d\udce6 Full custom post type integration</li>\n<li>\ud83d\udcc8 Integrated search performance metrics</li>\n<li>\u2705 Seamless compatibility with WordPress default themes</li>\n\n</ul><h3>Search Capabilities</h3>\n\n<ul><li>\ud83d\udd0d Typo-tolerant searching - find results even with misspellings</li>\n<li>\"...\" Phrase matching with quotation marks</li>\n<li>`-` Exclusion operator support (e.g., `term -excluded`)</li>\n<li>OR search: `term1 term2` finds content with either term</li>\n<li>\ud83d\udcd6 Pagination support</li>\n<li>Stemming support</li>\n<li>Stop words recognition</li>\n\n</ul><h3>Developer Features</h3>\n\n<ul><li>\ud83d\udee0\ufe0f Extensive filter system for customization</li>\n<li>\ud83d\udcca Performance monitoring and diagnostics</li>\n<li>\ud83d\udd27 Customizable indexing</li>\n<li>Field weighting control</li>\n\n</ul><h3>Administration</h3>\n\n<ul><li>Simple settings interface</li>\n<li>Post type selection</li>\n<li>Field configuration options</li>\n<li>One-click reindexing</li>\n<li>Processing time monitoring</li>\n\n</ul><h3>Filters</h3>\n\nThese filters allow developers to customize WP Loupe's behavior:\n\n`wp_loupe_db_path`\n\nControls where the search index is stored.\nDefault: WP_CONTENT_DIR . '/wp-loupe-db'\n\n`wp_loupe_post_types`\n\nModifies which post types are included in search.\nDefault: ['post', 'page']\n\n`wp_loupe_posts_per_page`\n\nControls search results per page.\nDefault: WordPress \"Blog pages show at most\" setting\n\n`wp_loupe_index_protected`\n\nControls indexing of password-protected posts.\nDefault: false\n\n`wp_loupe_field_{$field_name}`\n\nModifies a field before indexing.\nExample: The plugin uses `wp_loupe_field_post_content` to strip HTML tags from content\n\n`wp_loupe_schema_{$post_type}`\n\nCustomizes the schema for a post type.\n\nFor usage examples, see the [filter documentation at GitHub](https://github.com/soderlind/wp-loupe?tab=readme-ov-file#filters).",
"changelog": "<h3>Changelog</h3><h4>0.8.4</h4><ul><li>Changed: Updated PHP dependencies to `loupe/loupe` 0.13.12, `phpunit/phpunit` 12.5, and `pestphp/pest` 4.5.</li><li>Changed: Updated JavaScript tooling dependencies and lockfile to address open dependency advisories.</li><li>Changed: PHPUnit configuration and legacy test method names were updated for PHPUnit 12 compatibility.</li></ul><h4>0.8.3</h4><ul><li>Fixed: `should_intercept_query()` validates all public searchable post types are indexed before intercepting generic searches.</li><li>Changed: Added DocBlocks for methods in search hooks, token service, and indexer classes.</li></ul><h4>0.8.2</h4><ul><li>Changed: Enhanced README with WP Loupe compatibility note.</li><li>Changed: Updated dev dependencies (`basic-ftp` 5.0.5 \u2192 5.2.0).</li></ul><h4>0.8.1</h4><ul><li>Fixed: Search hooks now activate for AJAX requests (e.g., live search), resolving missing results in AJAX-powered search forms.</li><li>Fixed: Pagination respects the query `posts_per_page` variable before falling back to the global option.</li><li>Fixed: `should_intercept_query()` intercepts AJAX search requests, not only main queries.</li><li>Changed: Search engine retrieves up to 1 000 hits per post type before client-side paging to prevent truncated result sets.</li><li>Changed: Updated PHP and JavaScript dependencies.</li></ul><h4>0.8.0</h4><ul><li>Added: Batched reindexing to avoid admin request timeouts on large sites.</li><li>Added: Admin-only maintenance REST endpoint: `POST /wp-json/wp-loupe/v1/reindex-batch`.</li><li>Added: WP-CLI command for batched reindexing: `wp wp-loupe reindex`.</li><li>Added: Pest test runner (dev) alongside PHPUnit.</li><li>Changed: Reindexing is triggered via a separate admin UI button (not tied to saving settings).</li></ul><h4>0.7.0</h4><ul><li>Added: Search API guide with hook-based field preparation examples (facets, geo, sorting).</li><li>Added: Filter `wp_loupe_is_safely_sortable_meta_{$post_type}` to override meta sortability decisions.</li><li>Fixed: Geo-point meta fields are treated as sortable-safe for distance sorting.</li></ul><h4>0.6.0</h4><ul><li>Added: Split search engine (side-effect free) from front-end hooks to avoid REST/MCP side effects.</li><li>Added: Advanced REST search API via POST `/wp-json/wp-loupe/v1/search` (JSON filters, facets, geo, sorting).</li><li>Removed: Bundled UI integration (block/shortcode/search form override). Build your own UI using the REST API.</li><li>Changed: Upgraded `loupe/loupe` to 0.13.4 and tightened runtime requirements checks.</li><li>Fixed: Reindexing now safely rebuilds/migrates indexes across Loupe schema upgrades.</li><li>Fixed: Guarded against empty `wp_loupe_db_path` filter values.</li></ul><h4>0.5.7</h4><ul><li>Added: Always expose core WordPress fields (`post_title`, `post_content`, `post_excerpt`, `post_date`, `post_modified`, `post_author`, `permalink`) in REST field discovery and settings UI even if unchecked for indexing.</li><li>Changed: Field discovery flow now starts with mandatory core fields then merges schema & meta keys for stable UI state.</li><li>Fixed: Previous changelog typo (\"dependecies\" -> \"dependencies\").</li></ul><h4>0.5.6</h4><ul><li>Changed: Updated dependencies to latest versions</li></ul><h4>0.5.5</h4><ul><li>Added: Settings toggle to enable or disable automatic plugin updates (defaults enabled).</li><li>Added: Schema manager unit test validating baseline `post_date` only.</li><li>Added: Updated translation template with new settings strings.</li><li>Changed: Simplified baseline schema to only include mandatory `post_date`; per-post-type field settings now applied cleanly.</li><li>Changed: Readme wording trimmed to reduce promotional language.</li><li>Fixed: Structural mismatch in default schema logic preventing accurate field inheritance.</li></ul><h4>0.5.4</h4><ul><li>Added: Automatic plugin update infrastructure (filter-based) with constant opt-out.</li><li>Added: Migration ensuring mandatory `post_date` field exists after Loupe upgrade; conditional reindex strategy (immediate for small sites, scheduled for large).</li><li>Fixed: Publishing/indexing error caused by missing SQLite `post_date` column.</li><li>Internal: Post-date migration triggers safe reindex path based on site size.</li></ul><h4>0.5.3</h4><ul><li>Added: Copy buttons (with accessible live feedback) for MCP manifest and protected resource endpoints.</li><li>Added: Aria-live region and translatable status messages for copy success/failure.</li><li>Changed: Removed inline JavaScript for endpoint copying; logic centralized in `admin.js`.</li><li>Fixed: Clipboard fallback for browsers without `navigator.clipboard` support.</li><li>Changed: Minor wording clarity improvements in endpoint descriptions.</li><li>Note: Small UX iteration paving the way for richer manifest metadata.</li></ul><h4>0.5.2</h4><ul><li>Added: Settings surfacing discovery endpoints (manifest & protected resource) for MCP clients.</li><li>Added: Accessibility improvements groundwork (live region placeholder) before 0.5.3 enhancements.</li><li>Changed: Removed POST `/commands` from visible endpoint list (method clarity).</li><li>Fixed: Ensured reliable JSON output for `/.well-known/mcp.json` (rewrite + fallback path).</li><li>Fixed: Clipboard copy resilience improvements (initial implementation) preparing for 0.5.3.</li><li>I18n: Regenerated `wp-loupe.pot` with new MCP strings and translator comments.</li><li>Note: Internal rate-limit option polish and manifest stability adjustments.</li></ul><h4>0.5.1</h4><ul><li>UI: Wrapped MCP token table in panel and standardized max-width (840px)</li><li>UI: Reordered headings and moved Save button for consistency</li><li>MCP: Token management interface (scopes, TTL presets, revoke all, last-used tracking, copy-once)</li><li>MCP: Hybrid anonymous/authenticated search access with scoped tokens</li><li>MCP: Secure HMAC-signed pagination cursors for `searchPosts`</li><li>MCP: WP-CLI token issuance mirrored in admin interface</li></ul><h4>0.5.0</h4><ul><li>Initial MCP integration (preview): discovery manifest, commands, rate limiting, scoped tokens, pagination security</li><li>Requires PHP 8.3+ and Loupe 0.12.13</li></ul><h4>0.5.0</h4><p>Introduces optional MCP (Model Context Protocol) server (disabled by default). After upgrading:</p><p>1. Go to Settings \u2192 WP Loupe \u2192 MCP tab and enable the server.</p><p>2. Create a scoped access token (copy it once) for higher search limits or health checks.</p><p>3. (Optional) Adjust rate limits (anonymous vs authenticated) before exposing to external agents.</p><p>This is a developer/automation feature; sites not using MCP can ignore these new settings.</p><h4>0.4.3</h4><ul><li>Fixed: Inline JavaScript using `wp_print_inline_script_tag`.</li><li>Plugin updates are handled automatically via GitHub. No need to manually download and install updates.</li></ul><h4>0.4.2</h4><ul><li>Customizer settings not being saved</li></ul><h4>0.4.1</h4><ul><li>Update settings documentation in README.md</li><li>Update translations for new strings</li></ul><h4>0.4.0</h4><ul><li>Added improved caching mechanisms for better performance</li><li>Enhanced field configuration management and organization</li><li>Refactored code structure for better maintainability</li><li>Optimized sortable field checking with static caching</li><li>Improved attribute extraction and configuration building</li><li>More efficient handling of typo tolerance configuration</li></ul><h4>0.3.2</h4><ul><li>Fixed: In readme.txt, update the `Tested up to` value to 6.7</li></ul><h4>0.3.1</h4><ul><li>Bug fix: Non-scalar fields no longer get selected by default for sorting when adding a new post type</li><li>Improved field configuration UI to properly handle non-sortable fields</li><li>Updated translations for new strings</li></ul><h4>0.3.0</h4><ul><li>Added support for custom post types</li><li>Added field configuration interface for indexing, filtering, and sorting</li><li>Improved search algorithm</li><li>Performance optimizations</li></ul><h4>0.2.3</h4><ul><li>Enhanced field indexing to strictly respect settings configuration</li><li>Improved schema manager to only include explicitly selected fields</li><li>Refined factory class to ensure proper field filtering from settings</li><li>Added filter `wp_loupe_field_{$field_name}` to allow field modification.</li></ul><h4>0.2.2</h4><ul><li>Changed: Modified field indexing to only include explicitly selected fields in settings</li><li>Changed: Updated schema manager to respect indexable field settings</li><li>Changed: Improved field selection behavior in admin interface</li></ul><h4>0.2.1</h4><ul><li>Added translation support for admin interface</li><li>Updated translation files with new strings</li></ul><h4>0.2.0</h4><ul><li>Added new field settings management interface in the settings page</li><li>Added ability to configure Weight, Filterable, and Sortable options per field</li><li>Added help tabs to explain field configuration options</li><li>Added detailed explanations for Weight, Filterable, and Sortable fields</li><li>Added help sidebar with documentation link</li></ul><h4>0.1.7</h4><ul><li>Refactored code: Replaced WP_Loupe_Shared trait with WP_Loupe_Factory class</li><li>Improved code organization and maintainability</li><li>Enhanced code structure for better testability</li></ul><h4>0.1.6</h4><ul><li>Housekeeping</li></ul><h4>0.1.5</h4><ul><li>Fixed: GitHub API authentication errors in updater class</li><li>Fixed: Added proper token-based authentication for GitHub API requests</li><li>Fixed: Resolved 403 errors when checking for plugin updates</li></ul><h4>0.1.4</h4><ul><li>Fixed issue with plugin update notification not showing in some cases</li><li>Fixed GitHub release asset detection for automatic updates</li></ul><h4>0.1.3</h4><ul><li>Security: Improved GitHub integration with proper API token handling</li><li>Security: Updated GitHub actions workflow for better release asset management</li><li>Added: Plugin update success notification</li><li>Added: Improved GitHub release asset detection with regex pattern</li><li>Added: Updated installation instructions for automatic updates</li><li>Changed: Enhanced updater with better error handling</li><li>Changed: Updated dependencies to latest versions</li></ul><h4>0.1.2</h4><ul><li>Added \"Behind the scenes\" documentation section explaining plugin's internal dataflow</li><li>Added detailed step-by-step documentation on indexing and search processes</li><li>Implemented automatic GitHub updates using YahnisElsts/plugin-update-checker library</li><li>Added acknowledgement for third-party libraries used</li><li>Improved README documentation with more thorough explanations of architecture</li><li>Enhanced code organization and comments for better developer understanding</li><li>Simplified plugin update process with direct GitHub integration</li></ul><h4>0.1.1</h4><ul><li>Clear search results cache when reindexing, saving, updating or deleting posts</li></ul><h4>0.1.0</h4><ul><li>Added new WP_Loupe_Schema_Manager class for schema configurations</li><li>Added methods for indexable, filterable, and sortable fields</li><li>Added prepare_document method in WP_Loupe_Indexer</li><li>Enhanced reindex_all method with prepare_document</li><li>Improved search method in WP_Loupe_Search with schema-based fields</li><li>Added search results caching for better performance</li><li>Updated create_post_objects method for efficient post fetching</li><li>Added schema customization documentation in README.md</li></ul><h4>0.0.31</h4><ul><li>Update readme.txt</li></ul><h4>0.0.30</h4><ul><li>Added post type selection in settings page</li><li>Added support for all public post types in search</li><li>Added default selection of 'post' and 'page' for new installations</li><li>Improved settings UI with Select2 dropdown</li><li>Updated post type handling in search index</li></ul><h4>0.0.20</h4><ul><li>Fix Typo in class-wp-loupe-loader.php</li></ul><h4>0.0.19</h4><ul><li>Changed: Update dependencies</li></ul><h4>0.0.18</h4><ul><li>Fixed return value in posts_pre_query to return null instead of posts for better WP Core integration</li></ul><h4>0.0.17</h4><ul><li>Added wp_loupe_posts_per_page filter hook for customizing posts per page</li><li>Added PHPDoc blocks for all class properties in search class</li><li>Improved code documentation for all method parameters</li><li>Enhanced error handling in database operations</li></ul><h4>0.0.16</h4><ul><li>Added proper documentation to WP_Loupe_Search class</li><li>Added missing PHPDoc blocks for class properties</li><li>Fixed PHPCS warnings related to comment formatting</li><li>Fixed inline documentation for better code readability</li></ul><h4>0.0.15</h4><ul><li>Added pagination support for search results</li><li>Added total found posts and max pages calculation</li><li>Added proper handling of posts per page setting</li><li>Improved search query interception logic</li><li>Enhanced performance for large result sets</li></ul><h4>0.0.14</h4><ul><li>Fixed problem with reindexing all posts and pages from the admin interface</li></ul><h4>0.0.13</h4><ul><li>Improved search results handling for custom post types</li><li>Enhanced post object creation with proper post type support</li></ul><h4>0.0.12</h4><ul><li>Added comprehensive documentation to all classes and methods</li><li>Added proper DocBlocks following WordPress coding standards</li><li>Improved code documentation across all files</li></ul><h4>0.0.11</h4><ul><li>Added trait for sharing Loupe instance creation between classes</li><li>Updated field names to match WordPress post field names</li><li>Fixed search results handling and post object creation</li></ul><h4>0.0.10</h4><ul><li>Performance: Reduced search attributes to only retrieve essential fields</li><li>Performance: Removed content from sortable attributes</li><li>Performance: Removed highlighting feature</li><li>Fixed: Typo in search query variable</li><li>Fixed: Code style improvements for better maintainability</li></ul><h4>0.0.1 - 0.0.5</h4><p>Development version, do not use in production.</p>"
},
"author": "Per Soderlind",
"author_homepage": "https://soderlind.no",
"homepage": "https://github.com/soderlind/wp-loupe"
}