Home

>

Tools

>

Ghost

>

Releases

>

5.97.0

Ghost Release: 5.97.0

Tag Name: v5.97.0

Release Date: 10/18/2024

Ghost LogoGhost

Open-source publishing platform specifically designed for professional bloggers and publications. Focuses on clean, minimalist writing and publishing experience.

TL;DR

Ghost v5.97.0 brings several notable improvements including performance optimizations that significantly reduce CPU usage during site boot, enhanced developer experience with improved Git workflows, and new features like unsubscribe URLs in member API responses. This release also fixes several bugs affecting editors, recommendations, and search functionality while adding new translations and improving the admin interface. The performance improvements are particularly impactful for sites with large numbers of posts, with some operations seeing up to 15% CPU time reduction.

Highlight of the Release

    • Performance optimizations reducing CPU usage by up to 15% for sites with many posts
    • Added unsubscribe_url to member API responses for better third-party integration
    • Fixed missing 'duplicate a post' feature for editors
    • Improved developer experience with automatic submodule handling in Git
    • Added Traditional Chinese (zh-Hant) translation and improved other language translations
    • Fixed NQL filters for single letter slugs
    • Significant size reduction (80-90%) in search, signup, and comments packages

Migration Guide

No breaking changes were introduced in this release that would require migration steps. The performance optimizations and bug fixes should work seamlessly after upgrading.

If you're using the members/:member_id/signin_urls endpoint in third-party integrations, note that it now accepts admin API keys for authentication, which may simplify your integration code.

Upgrade Recommendations

This release is recommended for all Ghost users, especially those with sites containing large numbers of posts who will benefit from the significant performance improvements. The bug fixes for editors, recommendations, and NQL filters also address important functionality issues.

There are no breaking changes, so upgrading should be straightforward with minimal risk. As always, it's recommended to backup your database before upgrading and test the upgrade in a staging environment if possible.

Bug Fixes

Fixed missing 'duplicate a post' feature for editors

Editors were missing the 'duplicate a post' feature in the right-click menu on post/page lists, despite this being a capability they should have according to Ghost's staff user definitions. This has been restored.

Fixed missing incoming recommendations

A regression caused incoming recommendations to be marked as deleted and not render in Admin Settings. This fix updates the refresh logic of incoming recommendations on boot, restoring previously deleted recommendations if they are now available.

Fixed NQL filters for single letter slugs

Fixed an issue where NQL filters weren't working correctly with single letter slugs, which was preventing proper filtering in these cases.

Fixed admin navigation settings

Resolved a regression where pressing ENTER when adding navigation items (when on the last item in the list) no longer created a new row. Also fixed positioning of the '+' button when form errors were showing.

Fixed signin and signup button failure state hover colors

Fixed an issue where button hover states weren't correctly displaying for failure states due to fixed style attributes overriding the intended styling.

Fixed members/signin_urls endpoint authentication

The members/:member_id/signin_urls endpoint now accepts admin API keys for authentication, enabling third-party processes to handle user logins properly instead of requiring staff member credentials.

New Features

Added unsubscribe_url to member API responses

The member API now returns an unsubscribe_url field in responses, making it easier to integrate with third-party services like ActiveCampaign. This change addresses a gap in Ghost's feature set by providing a secure, pre-generated unsubscribe URL that can be used directly by external systems without needing to reconstruct it.

Added Traditional Chinese (zh-Hant) translation

Ghost now includes Traditional Chinese (zh-Hant) translation, expanding the platform's accessibility to Chinese-speaking users.

Enhanced developer tooling

  • Improved pre-commit hook that automatically removes submodules instead of aborting commits
  • Updated VSCode settings to ignore git submodules and simplify the source control workflow
  • Added metrics and monitoring to DatabaseStateManager for better debugging
  • Configured yarn setup to build TypeScript projects before running setup scripts
  • Added proper dependencies between build and test scripts for smoother development workflow

Security Updates

No significant security fixes were included in this release.

Performance Improvements

Significant performance optimizations

This release includes multiple performance optimizations that collectively reduce CPU usage during site boot, especially for sites with large numbers of posts:

  • Optimized Resources constructor by replacing heavy Object.assign operations, cutting 15% CPU time from boot for sites with many resources
  • Optimized loading of dynamic redirects by replacing an O(n²) algorithm with a more efficient approach, speeding up redirect loading by approximately 3x
  • Deferred URL generation until after filtering, cutting 4% CPU time from boot on sites with many posts
  • Replaced lodash functions with native JavaScript in several hot paths:
    • Replaced lodash.each with native JS in raw_knex, cutting 3% CPU time
    • Replaced lodash.{pick,union} with native JS, cutting about 5% CPU time
    • Optimized Bookshelf plugin sanitize.permittedOptions by replacing concat with native spread, cutting ~1.5% from boot time
  • Optimized date and boolean deserialization code by removing lodash dependency
  • Deferred heavy permittedAttributes call unless needed, cutting about 2% from CPU time
  • Added more exclusion fields from URL service config to improve performance of URL service initialization

Build size reduction for frontend components

Fixed build configuration for sodo-search, signup-form, and comments packages, preventing inclusion of unnecessary i18n/locales. This resulted in an 80-90% reduction in build size by eliminating strings that weren't actually used in these components.

Impact Summary

Ghost v5.97.0 delivers substantial performance improvements that will be particularly noticeable for sites with large numbers of posts, with some operations seeing up to 15% CPU time reduction during boot. The release also enhances developer experience with improved Git workflows and VSCode integration, while fixing several important bugs affecting editors, recommendations, and search functionality.

The addition of the unsubscribe_url to member API responses addresses a gap in Ghost's feature set, making it easier to integrate with third-party services like ActiveCampaign. International users will benefit from the new Traditional Chinese translation and improvements to existing translations.

Overall, this release focuses on performance, developer experience, and bug fixes, with no breaking changes that would require special migration steps. The cumulative effect of the performance optimizations should result in faster site boot times and improved responsiveness, especially for larger Ghost installations.

Full Release Notes

  • ✨ Added unsubscribe_url to member api response (#21207) - Steve Larson
  • 🐛 Fixed NQL filters for single letter slugs (#21340) - Steve Larson
  • 🐛 Fixed missing incoming recommendations (#21317) - Sag
  • 🐛 Fixed missing 'duplicate a post' feature for editors (#21304) - Sag
  • 🌐 New translations and bug fix on /month and /year (#21267) - Cathy Sarisky

View the changelog for full details: v5.96.2...v5.97.0

Statistics:

File Changed110
Line Additions1,509
Line Deletions748
Line Changes2,257
Total Commits53

User Affected:

  • Improved pre-commit hook that automatically removes submodules instead of aborting commits
  • VSCode settings updated to ignore git submodules and simplify source control workflow
  • Significant performance optimizations for sites with large numbers of posts
  • New unsubscribe_url field in member API responses for easier third-party integrations
  • Added metrics and monitoring to DatabaseStateManager for better debugging

Contributors:

cmraiblerenovate[bot]daniellockyerkevinansfielddvdwindensagzycathysariskyimgarylaigithub-actions[bot]LaurentGoderre9larsonsaileen