Releases: MFYDev/ghost-meilisearch
v1.0.3 - Support AI Search
Release Notes - v1.0.3
This release introduces AI-powered search capabilities to the Ghost Meilisearch integration and updates core package versions.
✨ New Features
- AI Search (Semantic Search): Introduced optional AI-powered search functionality leveraging Meilisearch's hybrid search. When enabled, search results are intelligently ranked based on semantic meaning in addition to keywords. (Requires Meilisearch v1.3+ with a configured embedder).
- New Search UI Configuration: Added new options to
window.__MS_SEARCH_CONFIG__
to control AI search:enableAiSearch
(boolean, default:false
): Set totrue
to enable AI search.aiSearchEmbedder
(string, required ifenableAiSearch
is true): The name of the embedder configured in your Meilisearch instance (e.g.,"openai"
).aiSearchLimit
(number, default:3
): The maximum number of results to display in the "AI Suggestions" section.
🚀 Improvements
- Updated Search UI: The search modal now displays results in two distinct sections when AI search is enabled:
- AI Suggestions: Shows semantically relevant results (limited by
aiSearchLimit
). - Keyword Matches: Shows standard keyword-based results.
- AI Suggestions: Shows semantically relevant results (limited by
- Code Refactoring: Refactored internal Search UI code (
search.js
) for better structure, improved result highlighting, and more relevant excerpt snippet generation. - Styling: Updated CSS (
styles.css
) to accommodate the new AI results section.
⬆️ Dependency Updates
- Updated core packages to
v1.0.3
:@fanyangmeng/ghost-meilisearch-search-ui
@fanyangmeng/ghost-meilisearch-cli
@fanyangmeng/ghost-meilisearch-webhook-handler
@fanyangmeng/ghost-meilisearch-config
@fanyangmeng/ghost-meilisearch-core
- Updated various development dependencies in the root
package-lock.json
.
📄 Documentation
- Updated
README.md
with:- Instructions for configuring the new AI search options.
- Details on AI search requirements and behavior.
- Updated CDN URLs and package installation commands to reflect the new versions.
- Revised package version table.
⚙️ Configuration Changes & Notes
- AI Search Setup: If you wish to use the new AI Search feature, update your Search UI configuration (
window.__MS_SEARCH_CONFIG__
in Code Injection orsodoSearch
inconfig.[env].json
if self-hosting the UI script) to includeenableAiSearch: true
andaiSearchEmbedder: "your-embedder-name"
. Ensure your Meilisearch instance is latest and has the specified embedder configured. See Meilisearch AI Search Docs for details. - Update CLI: Update the CLI tool globally:
npm install -g @fanyangmeng/[email protected]
- Update Assets: Update the asset URLs in your Ghost configuration or Code Injection:
- JS:
https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js
- CSS:
https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/styles.css
- JS:
Quick fix for version, dependencies and executable #10
v0.5.1
Quick fix for exact search with double quotes
Please use this in your website with the 0.5.1 version
"sodoSearch": {
"url": "https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js"
}
v0.5.0
Ghost-Meilisearch 0.5.0 Release Notes
I'm excited to announce the release of Ghost-Meilisearch v0.5.0, which brings significant improvements to both search quality and user experience!
Major Changes
- Improved Search Accuracy: Complete overhaul of the search algorithm with exact phrase matching and better relevance sorting
- Enhanced Content Extraction: Added advanced plaintext extraction from HTML with better formatting preservation
- Upgraded Dependencies: All packages have been updated to the latest dependencies, including Meilisearch v0.49.0
Search Improvements
- Exact Phrase Matching: Added support for quoted search terms to find exact phrases
- Improved Plaintext Extraction: Better HTML parsing with Cheerio to create higher quality search indexes
- Enhanced Highlighting: More intelligent highlighting of search terms in both titles and content
- Smarter Results Ranking: Results are now sorted with exact matches first, followed by partial matches
Content Processing Enhancements
- HTML to Plaintext Conversion: Added Cheerio for robust HTML parsing across all platforms
- Structure Preservation: Better handling of lists, tables, and other structured content
- Image Alt Text Extraction: Alt text from images is now preserved in plaintext content
- Cleaner Link Handling: Link text is preserved in a more natural way
- Fallback Processing: Robust regex-based fallback if HTML parsing fails
Visual Improvements
- Better Highlighting: Search terms are now properly highlighted with improved styling
- Fixed Various UI Bugs: Better mobile display and more consistent styling
Technical Changes
- Updated Meilisearch: Now using Meilisearch v0.49.0 (up from v0.37.0)
- Updated Next.js Configuration: Modernized configuration for better performance
- Fixed Cloudflare Workers URL Format: Corrected the example URL format in documentation
- Corrected Index Name: Fixed a typo in the README where
ghost_post
is now correctlyghost_posts
- Consistent HTML Processing: The same HTML processing logic is now used in all webhook handlers (Netlify, Vercel, and Cloudflare)
All Packages Updated to v0.5.0
webhook-handler's latest version is v0.5.1
@fanyangmeng/ghost-meilisearch-search-ui
: Search interface that matches your Ghost theme@fanyangmeng/ghost-meilisearch-cli
: CLI tool for content syncing@fanyangmeng/ghost-meilisearch-webhook-handler
: Webhook handler for real-time updates@fanyangmeng/ghost-meilisearch-config
: Configuration utilities@fanyangmeng/ghost-meilisearch-core
: Core functionality
Upgrading
To upgrade from a previous version, update your package references to use v0.5.0 instead of v0.4.x in your configuration files and code injection headers.
For example, update your code injection from:
<script src="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js"></script>
To:
<script src="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js"></script>
Don't forget to also update the CSS reference if you're using it:
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/styles.css">
For CLI users, update with:
npm install -g @fanyangmeng/[email protected]
v0.4.3 - Fix Netlify API Key Error
Ghost-Meilisearch Integration v0.4.3 Release Notes
What's New
- Simplified webhook event handling: Streamlined the event processing logic to focus on just two main post events: post.added and post.updated instead of tracking multiple state changes separately.
- Improved logging: Added detailed logging throughout the webhook handler to provide better visibility into the processing of posts, making troubleshooting easier.
- Enhanced error handling: Improved signature verification with additional validation checks and better error reporting.
Bug Fixes
- Webhook signature verification: Fixed and reinforced the signature verification process with more robust error handling.
- More reliable post processing: Simplified the logic that determines when to index or remove posts from the search index, ensuring more consistent behavior.
Technical Improvements
- Optimized Netlify function handler: Refactored the Netlify function handler to be more lightweight and resilient to timeouts.
- Better error messages: Added more descriptive error messages and improved error handling throughout.
- Code simplification: Removed redundant conditional checks and simplified the overall control flow.
Affected Packages
- @fanyangmeng/ghost-meilisearch-webhook-handler: Updated to version 0.4.3
Upgrade Instructions
This is a drop-in replacement for the webhook handler. No configuration changes are required.
Full Changelog: v0.4.2...v0.4.3
v0.4.2
Ghost-Meilisearch v0.4.2 Release Notes
I am excited to announce the release of Ghost-Meilisearch v0.4.2, featuring numerous improvements in security, performance, and user experience. This update brings all packages in alignment with version 0.4.2 and introduces several important enhancements.
🔍 Search UI Improvements
- Added proper URL handling in search results - search results now link directly to the full URL instead of relying only on the slug
- Improved search modal behavior with smoother transitions - search UI now properly closes before navigation
- Fixed dark mode highlight color consistency - using #ff1a75 as the default highlight color in dark mode
🔧 API Key Management
- Added comprehensive documentation for creating proper API keys with limited permissions:
- Search-only key for frontend UI
- Writing key for webhook handler with minimal permissions
📝 Documentation Enhancements
- Added detailed instructions for creating API keys with proper permissions
- Improved webhook handler setup documentation with step-by-step guidance
- Updated configuration examples with latest package versions
- Added links to Ghost API documentation
👷 CI/CD Improvements
- Added Cloudflare Workers deployment workflow
- Optimized build process for Cloudflare deployments
🧩 Schema Updates
- Added
url
field to the default schema to support full URL linking
🔄 Dependency Updates
- Updated package dependencies to use versioned dependencies instead of file references
📦 Package Updates
Package | Previous Version | New Version |
---|---|---|
ghost-meilisearch-search-ui | 0.1.3 | 0.4.2 |
ghost-meilisearch-cli | 0.1.3 | 0.4.2 |
ghost-meilisearch-webhook-handler | 0.3.0 | 0.4.2 |
ghost-meilisearch-config | 0.1.0 | 0.4.2 |
ghost-meilisearch-core | 0.1.3 | 0.4.2 |
🔗 Installation & Upgrade
To upgrade to v0.4.2, update your configuration to use the new package versions:
"sodoSearch": {
"url": "https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js"
}
Or via code injection:
<script src="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/styles.css">
For CLI tools, update to the latest version:
npm install -g @fanyangmeng/[email protected]
Acknowledgment
Thanks for @klafbang for the #2 , you actually help me noticed so many hidden bugs and improvements that I should pay attention to. Thank you for your support as well!
What's Changed
Full Changelog: v0.3.0...v0.4.2
v0.3.0 - Vercel Support
Added Vercel Webhook Handler Support
https://ghost-meilisearch.vercel.app/
- Implemented Edge Runtime compatible webhook handler for improved performance
- Added robust webhook signature verification using Web Crypto API for enhanced security
- Introduced intelligent event type detection for different post operations:
- Post creation
- Post updates
- Status changes
- Visibility changes
- Post deletions
- Added support for handling Ghost API content fetching with cache busting
- Implemented automatic synchronization with Meilisearch index based on post status
- Added timeout handling for all asynchronous operations (30s default)
- Included comprehensive error handling and detailed error messages
- Added environment variable validation for required configuration
- Implemented post transformation logic to format Ghost data for Meilisearch
- Added support for post metadata including tags and authors
- Optimized post processing with automatic removal of non-public/unpublished posts
Security
- Implemented webhook signature verification using HMAC SHA-256
- Added timestamp validation in webhook signatures
- Environment variable validation for secure configuration
Performance
- Deployed on Edge Runtime for minimal latency
- Implemented efficient post processing with proper type checking
- Added cache busting for Ghost API requests to ensure fresh content
Full Changelog: v0.2.1...v0.3.0
v0.2.1
Fix turbo build settings
Full Changelog: v0.2.0...v0.2.1
v0.2.0 - Cloudflare Worker Support
I am excited to announce a major update to Ghost-Meilisearch that brings support for Cloudflare Workers alongside our existing Netlify integration. This update gives you more flexibility in how you deploy and manage your Ghost blog's search functionality.
What's New
- Cloudflare Workers Support: Deploy your webhook handler to Cloudflare Workers with just a few clicks using our new integration
- Dual Deployment Options: Choose between Netlify Functions or Cloudflare Workers based on your infrastructure preferences
- Improved Build System: Updated build process to support both deployment targets simultaneously
- Enhanced Documentation: Comprehensive guides for both deployment options
Deployment Options
Option 1: Netlify (Same as before)
Deploy with our one-click Netlify button and configure your environment variables.
Option 2: Cloudflare Workers (New!)
Two ways to deploy:
- Quick Deploy: Use our "Deploy to Cloudflare Workers" button for a streamlined setup
- Manual Deploy: For advanced users who want more control over their deployment
Technical Improvements
- Restructured build pipeline to generate outputs for both platforms
- Added Cloudflare Workers-specific TypeScript configuration
- Implemented Web Crypto API for secure webhook verification on Cloudflare
- Optimized request handling for Cloudflare's environment
Getting Started
Check out our updated README for detailed instructions on setting up with either deployment option. Both methods require the same Ghost webhook configuration, just with different target URLs.
Upgrading
If you're already using ghost-meilisearch with Netlify, your existing setup will continue to work without changes. To migrate to Cloudflare Workers, follow our new documentation for the setup process.
Full Changelog: v0.1.3...v0.2.0
v0.1.3
Ghost Meilisearch Integration v0.1.3 Release Notes
I'm excited to announce the release of Ghost Meilisearch Integration v0.1.3! This update brings numerous enhancements to improve performance, usability, and code quality.
🎉 What's New
UI Improvements
- Empty Search State: Improved handling of empty search states with better visual feedback
- Keyboard Navigation: Better keyboard navigation experience with improved focus management
- Mobile Experience: Enhanced responsive design for better performance on mobile devices
- Visual Feedback: Better visual cues for loading, empty results, and search actions
Code Quality Enhancements
- CLI Tool Improvements: Refactored CLI for better error handling and clearer output messages
- Webhook Handler Optimization: Streamlined webhook handler code for better performance and reduced memory usage
- Core Functionality: Updated error handling approach in core package for more consistent error messages
Documentation Updates
- Project Structure: Added project structure documentation to README
- Demo Animation: Added demo GIF to showcase the search functionality
- Usage Instructions: Clearer installation and usage instructions
Bug Fixes
- Fixed search UI issues when handling empty searches
- Resolved styling inconsistencies between light and dark modes
- Fixed issues with keyboard hint visibility in various states
📦 Package Updates
- search-ui: 0.1.1 → 0.1.3
- webhook-handler: 0.1.0 → 0.1.3
- core: 0.1.0 → 0.1.3
- cli: 0.1.0 → 0.1.3
📝 Repository Updates
- Added project funding information
- Added MIT license
- Configured dependency management with Dependabot
- Updated dependencies to latest versions
⚙️ Getting Started
Check out the updated documentation in the README for installation and configuration instructions.
<script src="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/search.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@fanyangmeng/[email protected]/dist/styles.css">
🙏 Thank You
Thank you to everyone who has provided feedback and support for this project. Your input is invaluable in making Ghost Meilisearch Integration better with each release.
Full Changelog: v0.1.0...v0.1.3
v0.1.0 - First Stable Release
I am excited to announce the initial release of Ghost Meilisearch, a comprehensive integration that brings lightning-fast search capabilities to Ghost CMS blogs using Meilisearch.
🎯 Key Features
Search UI Component
- Beautifully designed, accessible search interface
- Automatic dark/light mode support matching Ghost theme
- Keyboard navigation support (⌘K or / to open)
- Real-time search results with sub-50ms response times
- Rich previews showing post title, excerpt, and featured image
Content Synchronization
- CLI tool for easy index management and content syncing
- Automated webhook handler for real-time content updates
- Support for all Ghost content types (posts, pages, tags, authors)
- Efficient delta updates to minimize resource usage
Developer Experience
- Monorepo architecture for better code organization and maintainability
- TypeScript support throughout the codebase
- Comprehensive configuration options for customization
- Built-in development tools and scripts
🔧 Core Components
- Search UI Package: Drop-in search component compatible with Ghost themes
- CLI Tool: Command-line interface for index management
- Webhook Handler: Netlify-ready function for real-time updates
- Core Package: Main integration logic and Meilisearch interactions
- Config Package: Shared configuration utilities
🚀 Installation Options
- Ghost theme integration via code injection
- Native integration with Ghost's default search (Sodo Search)
- Docker support for containerized deployments
- One-click deployment to Netlify for webhook handling
💡 Technical Highlights
- Optimized index settings for fast and relevant search results
- Secure API key management with separate admin and search-only keys
- Efficient content transformation and indexing pipeline
- Robust error handling and logging
- Automatic retry mechanisms for API resilience
📚 Documentation
Comprehensive documentation is available in the README, covering:
- Quick start guide
- Installation options
- Configuration details
- Security best practices
- Performance optimization tips
- Development guidelines
🔒 Security Features
- Separate API keys for frontend and backend operations
- Secure webhook handling with signature verification
- Environment variable based configuration
- HTTPS support for all API communications
🎨 Customization Options
- Configurable search UI appearance
- Customizable index settings and searchable fields
- Flexible webhook integration options
- Extensible architecture for custom implementations
💻 Requirements
- Ghost 5.0 or higher
- Meilisearch server (cloud or self-hosted)
- Node.js 18 or higher
🔜 Upcoming Features
While this initial release provides a solid foundation, we're already planning improvements:
- Advanced faceted search capabilities
- Enhanced analytics integration
- Additional deployment options
- Performance optimizations for large content sets
🙏 Acknowledgments
Special thanks to:
- The Ghost team for their excellent CMS
- The Meilisearch team for their powerful search engine
- Inspired by https://github.com/magicpages/ghost-typesense
📝 License
Released under the MIT License