Home

>

Tools

>

Ghost

>

Releases

>

4.39.0

Ghost Release: 4.39.0

Tag Name: v4.39.0

Release Date: 3/11/2022

Ghost LogoGhost

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

TL;DR

Ghost v4.39.0 introduces multiple tiers support, allowing site owners to create and manage different membership tiers with individual welcome pages and visibility settings. This release also enhances member filtering with new options like "Name", "Email", and "Last seen" filters, adds "contains" operator support to query parameters, and includes redesigned user authentication pages. Several bugs have been fixed, including issues with file imports, tag creation, and theme previews.

Highlight of the Release

    • Multiple membership tiers support is now generally available
    • Enhanced member filtering with Name, Email, and Last seen filters
    • New "contains" operator support for API query parameters
    • Redesigned user authentication pages
    • Updated fixtures for easier onboarding

Migration Guide

Tier Visibility Changes

The release migrates from using portal_products and portal_plans settings to using the visibility property directly on tiers. This change is handled automatically through migrations, but if you've built custom integrations that rely on these settings, you'll need to update them to use the tier visibility property instead.

API Path Changes

The API base path has been centralized across the server codebase. If you have custom code that interacts with Ghost's API paths, you might need to review it to ensure compatibility.

Stripe Product Naming

A migration has been added to rename any Stripe Products from "Default Product" to the site title. This should happen automatically, but if you notice any issues with your Stripe products, you may need to check their names.

NQL Library Update

Ghost has switched from @nexes/nql to @tryghost/nql and bumped @tryghost/bookshelf-plugins to get access to the latest NQL version. If you're using custom filtering in your integrations, be aware of the new operators available.

Upgrade Recommendations

This is a feature-rich release with significant enhancements to Ghost's membership capabilities. The introduction of multiple tiers support represents a major improvement for site owners looking to diversify their membership offerings.

Who should upgrade immediately:

  • Site owners who want to offer multiple membership tiers
  • Those experiencing issues with tag creation or content imports
  • Anyone who needs the enhanced member filtering capabilities

Upgrade difficulty: Medium

The upgrade process should be straightforward for most users, as the migrations for tier visibility changes are handled automatically. However, if you have custom integrations or themes that interact with membership features, you may need to test them after upgrading.

Testing recommendation:

  • Test your membership flows after upgrading
  • Verify that existing tiers and members are correctly migrated
  • If you use custom filtering in the API, test with the new operators
  • Check that your theme correctly displays multiple tiers if applicable

Bug Fixes

Fixed Content Import Issues

  • Fixed uppercase file extensions being ignored in content import
  • Fixed error handling when a zip combines multiple data formats
  • Added missing length check in getBaseDirectory

Fixed Tag Management

  • Fixed duplicate tags being created when slugs contain spaces
  • Fixed tag slug cleaning process before matching with existing tags

Fixed UI and Theme Issues

  • Fixed "Must be in the past" error when closing and re-opening publish menu while scheduling
  • Fixed Casper preview in theme directory showing an older version
  • Fixed theme activation with capitalized names

Fixed API and Data Issues

  • Fixed members endpoint not ignoring unknown includes
  • Fixed error when editing user with empty roles data
  • Fixed default value for Tier visibility
  • Fixed new sites using "Default Product" Tier name

New Features

Multiple Tiers Support

Ghost now supports creating and managing multiple membership tiers, allowing site owners to offer different subscription options to their audience. Each tier can have its own:

  • Individual welcome page
  • Visibility settings for portal and themes
  • Custom benefits

Enhanced Member Filtering

  • Added "Name" and "Email" filters to the members screen
  • Added "Last seen" filter to the members screen
  • These filtering options are now generally available without requiring feature flags

New Query Parameter Operators

Added "contains" operator support to ?filter= query parameters with multiple variations:

  • :~'string' - contains
  • :-~'string' - does not contain
  • :~^'string' - starts with
  • :-~^'string' - does not start with
  • :~$'string' - ends with
  • :-~$'string' - does not end with
  • Support for escaping quotes in strings, e.g., 'O\'Nolan'

Redesigned Authentication Pages

  • Updated password protection page with improved layout
  • Redesigned user authentication pages for better user experience
  • Updated unsubscribe page

Security Updates

No significant security fixes were mentioned in this release.

Performance Improvements

Improved Error Handling

  • Improved error display in Sentry for theme responses
  • Re-throw error when attempting to create webhooks to ensure proper error propagation

Optimized Image Processing

  • Enabled fetching .ico dimension size via probe-image-size instead of downloading the entire image
  • Updated probe-image-size options to reflect underlying library changes from request to needle

Code Optimization

  • Centralized base API path value across server codebase for better maintainability
  • Changed c8 reporter from html to html-spa for more useful coverage reports
  • Configured CI to only calculate coverage for recommended Node version
  • Cleaned up multiple loops in onSaving of Post model

Impact Summary

Ghost v4.39.0 marks a significant evolution in Ghost's membership capabilities with the introduction of multiple tiers support. This feature allows site owners to create different membership levels with customized welcome pages and visibility settings, enabling more sophisticated monetization strategies.

The release also enhances the member management experience with improved filtering options, making it easier to segment and target specific member groups. The addition of the "contains" operator for API queries provides developers with more powerful and flexible ways to retrieve data.

User experience improvements are evident in the redesigned authentication pages and updated fixtures that make getting started with Ghost more intuitive. Several bug fixes address issues with content imports, tag creation, and theme previews, improving overall platform stability.

For developers, the centralization of API paths and improved error handling enhance the maintainability and reliability of custom integrations. The migration from settings-based visibility control to tier-based properties represents a more logical and scalable approach to managing membership offerings.

Overall, this release significantly enhances Ghost's capabilities as a membership platform while improving usability for both site owners and developers.

Full Release Notes

  • ✨ Added support for multiple tiers (#14311) - Rishabh Garg
  • ✨ Added "Name" and "Email" filters to members screen - Kevin Ansfield
  • ✨ Added "contains" operator support to ?filter= query params (#14286) - Kevin Ansfield
  • ✨ Added "Last seen" filter to members screen - Kevin Ansfield
  • 🎨 Redesigned user authentication pages (TryGhost/Admin#2286) - Sanne de Vries
  • 💡 Updated fixtures to make it easier to get started (#14299) - Matt Hanley
  • 🐛 Fixed "Must be in the past" error when closing and re-opening publish menu whilst scheduling - Kevin Ansfield
  • 🐛 Fixed uppercase file extensions ignored in content import (#14268) - Simon Backx
  • 🐛 Fixed duplicate tags created when slugs contain spaces (#14277) - Simon Backx
  • 🐛 Fixed Casper preview in theme directory showing an older version - Kevin Ansfield

View the changelogs for full details:

🪄 Love open source? We're hiring Node.js Engineers to work on Ghost full-time

Statistics:

File Changed67
Line Additions1,834
Line Deletions827
Line Changes2,661
Total Commits59

User Affected:

  • Can now create and manage multiple membership tiers instead of just one
  • Can set individual welcome pages for each tier
  • Can control visibility settings for individual tiers in portal and themes
  • Benefit from improved member filtering capabilities

Contributors:

renovate-botallouisdaniellockyerrenovate[bot]peterzimonrshbhgrgmatthanleynazkevinansfieldsanne-sanErisDSSimonBackxsam-lord