Home

>

Tools

>

Ghost

>

Releases

>

4.13.0

Ghost Release: 4.13.0

Tag Name: v4.13.0

Release Date: 9/6/2021

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.13.0: Enhanced Member Management & Email Features

This release introduces significant improvements to member management with new bulk actions, product event tracking, and better handling of complimentary subscriptions. Email features have been enhanced with improved CTA card rendering and better content formatting. The update also includes routing changes for posts, using UUIDs instead of slugs for improved security, and various performance optimizations and bug fixes.

Highlight of the Release

    • New bulk actions endpoint for member management
    • Added member product events tracking for better subscription history
    • Improved email CTA card rendering to match editor experience
    • Switched post routing to use UUIDs instead of slugs for better security
    • Added proper handling of complimentary subscriptions with creation dates
    • Products now ordered by monthly price by default

Migration Guide

Migration Notes

  • Post URL Changes: The switch from slug-based to UUID-based post routing means that post URLs will now use UUIDs instead of slugs. This should be transparent to most users, but any custom code that relies on slug-based URLs may need to be updated.

  • Member API Changes: If you're using the member APIs directly in custom code, note that several changes have been made:

    • The member serializer now handles Plain Old JavaScript Objects (POJOs)
    • Complimentary members now have dummy subscription data
    • The getMemberIdentityData method now returns the full member object
  • Model Transactions: A new static transaction method has been added to the base model. If you're extending Ghost models in custom code, you can now use this method to create transactions.

Upgrade Recommendations

This release contains several important improvements to member management and email features, along with bug fixes and performance enhancements. It's recommended that all Ghost users upgrade to v4.13.0, especially those who:

  • Use the members and subscription features extensively
  • Send email newsletters regularly and use CTA cards
  • Have custom integrations with the Ghost API for member management

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

Bug Fixes

  • Subscription Handling: Fixed issue where changing a subscription to a new price would not remove the old product from the member.
  • Email Status Setting: Fixed 'sent' status not being properly set when publishing a post with the email_only flag.
  • Import Handling: Fixed errors when importing files missing the email_only key by properly handling default values.
  • Complimentary Subscriptions: Fixed errors that occurred when creating complimentary subscriptions due to missing parameters.
  • Labs Middleware: Fixed reference to isSet method in labs.enabledMiddleware that was not properly bound.
  • Oembed Function: Fixed function complexity lint warning in oembeds by moving complex logic to the service layer.

New Features

Member Management Enhancements

  • Bulk Actions Endpoint: Added a new endpoint for performing bulk actions on members, initially supporting bulk editing with plans to incorporate bulk deletion in the future.
  • Member Product Events: Added a new members_product_events table to track when members are given or lose access to products, enabling better tracking of complimentary memberships.
  • Dynamic Import Thresholds: Added floating threshold for member imports that adjusts based on current member count for better performance.

Email Improvements

  • Enhanced Email CTA Cards: Updated email-CTA card rendering to match the editor experience with improved text alignment, button display options, and divider toggle.
  • Cleaner Email Content: Removed leading/trailing horizontal rules when rendering email content to avoid duplication with CTA card dividers.

Security & Routing

  • UUID-based Post Routing: Switched from slug-based to UUID-based post routing, making posts less discoverable and improving security against content scraping.

Administrative Features

  • Stripe Connection Permissions: Added permission for Administrators to connect to Stripe directly.
  • Email List Check: Moved email list check feature from alpha to general availability.

Security Updates

No specific security fixes were mentioned in this release.

Performance Improvements

  • Code Optimization:

    • Refactored oembed service to use async/await syntax for better readability and maintainability.
    • Removed unused internal request library that was replaced with @tryghost/request.
    • Renamed index.js file to a service to better reflect its purpose and fix ESLint warnings.
  • Testing Improvements:

    • Added c8 coverage to unit tests to provide visibility on code test coverage.
    • Configured c8 to use all source files for more accurate coverage statistics.
    • Added commands for generating coverage reports in different formats.

Impact Summary

Ghost v4.13.0 delivers significant improvements to member management capabilities with new bulk actions and product event tracking, making it easier to manage large member bases and track subscription history. Email creators will benefit from enhanced CTA card rendering and cleaner content formatting, resulting in more professional-looking newsletters.

The switch to UUID-based post routing improves security by making content less discoverable through URL manipulation, while still maintaining SEO benefits. Administrators gain new permissions for Stripe connections and benefit from improved error messaging during member imports.

For developers, the release includes several code quality improvements including test coverage reporting, refactored services using modern JavaScript patterns, and a new transaction method in the base model for better database interaction.

Overall, this release enhances Ghost's capabilities as a professional publishing platform with particular focus on membership and newsletter features, making it a recommended upgrade for all users.

Full Release Notes

Statistics:

File Changed41
Line Additions950
Line Deletions406
Line Changes1,356
Total Commits54

User Affected:

  • Can now connect to Stripe directly with proper permissions
  • Have access to new bulk actions for member management
  • Can benefit from improved member import with dynamic thresholds based on current member count
  • Will see improved error messaging for email verification during member imports

Contributors:

renovate-botkevinansfieldallouisdaniellockyernazrenovate[bot]