Home

>

Tools

>

Ghost

>

Releases

>

3.20.0

Ghost Release: 3.20.0

Tag Name: 3.20.0

Release Date: 6/16/2020

Ghost LogoGhost

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

TL;DR

Ghost 3.20.0: Enhanced Member Management, INR Currency Support, and Accessibility Improvements

Ghost 3.20.0 brings significant improvements to the member management system with new filtering capabilities and validation endpoints. The release adds support for Indian Rupee (INR) currency, enhances accessibility with proper image alt attributes, and fixes several critical bugs including private blogging issues, email delivery problems, and custom redirects in subdirectory setups. This update focuses on making Ghost more robust for membership sites while improving the overall user experience.

Highlight of the Release

    • Added support for INR (Indian Rupee) currency in Stripe payments
    • New member filtering by paid status (all/free/paid) in the admin interface
    • Improved accessibility with proper handling of image alt attributes
    • Enhanced member import validation with detailed error reporting
    • Fixed critical issues with private blogging, email delivery, and custom redirects

Migration Guide

This release doesn't contain breaking changes that require specific migration steps. However, there are a few changes to be aware of:

  1. API Endpoint Changes: If you're using the members CSV import/export endpoints directly in your code, note that they have been renamed:

    • POST /members/csv is now POST /members/upload
    • GET /members/csv is now GET /members/download
    • A new validation endpoint POST /members/upload/validate has been added
  2. User Agent Changes: The user-agent for bookmark and oembed requests has been reverted to the previous version. If you have systems that depend on the Ghost user-agent, be aware of this change.

  3. Image Optimization: If you experience any issues with image rendering after upgrading, you can disable srcset generation by setting imageOptimization.srcsets: false in your Ghost configuration.

  4. Stripe Connect: If you're using Stripe Connect, the configuration has been updated to ensure correct behavior regardless of your setup type. No action is required, but it's worth testing your payment flows after upgrading.

Upgrade Recommendations

Recommendation: Standard Upgrade

This release contains important bug fixes and new features that benefit all Ghost users, particularly those using membership features. The upgrade is recommended for all installations but is especially valuable for:

  1. Sites using members and Stripe payments, particularly those with Indian customers who need INR currency support
  2. Sites with private blogging enabled
  3. Sites sending bulk emails to members
  4. Sites using custom redirects in subdirectory setups

The upgrade process follows the standard Ghost update procedure and doesn't require any special steps. As always, it's recommended to backup your database before upgrading.

Upgrade Priority: Medium - Contains valuable improvements and fixes but no critical security patches.

Bug Fixes

  • Private Blogging Issues: Fixed private blogging exposing 404 pages and incorrect robots.txt responses. Improved handling of paths and added error handling for non-existent tag/author RSS feeds.

  • Email Delivery: Fixed missing text-only version in bulk emails by correctly passing it to Mailgun as text instead of plaintext. This helps improve email deliverability and spam scores.

  • Image Rendering:

    • Fixed small images appearing smaller than they should in post content
    • Fixed srcset behavior to not output values for sizes bigger than the original image
    • Only outputs srcset when the image's original size is known
  • Custom Redirects: Fixed custom redirects for subdirectory setups, particularly when using regex patterns for redirect paths, preventing infinite redirect loops.

  • File Uploads: Fixed file inputs not allowing the same file to be re-uploaded in Firefox, improving the content creation workflow.

  • Bookmark Card: Fixed fallback to bookmark card when pasting localhost Ghost URL, allowing the bookmark fallback to work properly when the configured site is on localhost.

  • Stripe Configuration: Fixed Members Stripe configuration for Stripe Connect to ensure correct config regardless of Connect vs Direct vs Both vs Neither setup.

New Features

New Member Management Features

  • Member Filtering by Payment Status: Added the ability to filter members by all/free/paid status in the admin interface, making it easier to manage different member segments.

  • Member Import Validation: Added a new /members/validate endpoint to the Admin API for validating imported members data before actual import. Currently focuses on validating if Stripe customer IDs exist in the connected Stripe account.

  • Enhanced Import Error Reporting: Improved error reporting for member imports with detailed error messages, context, help text, and counts of invalid records.

  • Renamed Import/Export Endpoints: Renamed members import/export endpoints for more consistent API design, moving away from using file type names in URLs.

Payment Improvements

  • INR Currency Support: Added support for Indian Rupee (INR) currency in Stripe payments, addressing the needs of users in India who face special rules in Stripe for this currency and desire local-selling capabilities.

Content Management Enhancements

  • Force Re-render Option: Added ?force_rerender=true parameter to posts edit endpoint, allowing HTML to be regenerated without modifying the mobiledoc content. This is useful for updating old content when mobiledoc->html output is improved.

  • Image Optimization Controls: Added imageOptimization:srcsets configuration option to allow disabling of srcset attributes in content when needed.

Developer Features

  • Site URL Meta Tag: Added a new meta tag for site URL (behind dev flag) to help determine the exact Ghost site URL from a theme, which is used by members.js to initialize the script and use members/admin API.

Security Updates

  • Email Address Protection: Removed "from address" overwrite in the importer to prevent bypassing the email validation flow, ensuring that email addresses are properly validated before use.

  • Private Content Protection: Improved the private blogging system to better protect content by fixing issues where 404 pages and robots.txt were being exposed instead of redirecting to the private login page.

Performance Improvements

  • Optimized Image Handling: Improved the handling of image srcsets to be more efficient, only generating srcset attributes when the original image size is known and avoiding unnecessary attributes for sizes larger than the original image.

  • Improved API Query Performance: Added customQuery bookshelf plugin that allows customization of SQL queries used in the findPage method by individual models, enabling more efficient querying for paid/free members.

  • Streamlined Private Blogging: Reworked the private blogging middleware for better performance and clearer logic flow, improving the handling of private routes and reducing unnecessary processing.

Impact Summary

Ghost 3.20.0 significantly enhances the membership and payment capabilities of the platform, making it more robust for creators monetizing their content. The addition of INR currency support opens up better payment options for the Indian market, while the new member filtering and validation features provide site administrators with more powerful tools for managing their audience.

The release also addresses several important bugs that improve the stability and user experience of Ghost sites. Fixes for private blogging, email delivery, and custom redirects resolve issues that could potentially impact site functionality and user experience. The accessibility improvements with proper image alt attributes demonstrate Ghost's commitment to creating an inclusive platform.

For developers, the new configuration options and API endpoints provide more flexibility and control over how Ghost renders content and handles data. The renamed endpoints and improved error reporting make the API more consistent and developer-friendly.

Overall, this release represents a solid improvement to Ghost's core functionality, particularly for membership sites, while maintaining backward compatibility and addressing key pain points reported by the community.

Full Release Notes

  • ✨ Added INR currency support (#11911) - Hannah Wolfe
  • ✨ Added all/free/paid filter to members admin screen (TryGhost/Admin#1600) - Kevin Ansfield
  • ✨ Added /members/validate ednpoint to Admin API - Nazar Gargol
  • 🐛 Fixed private blogging exposing 404 and robots (#11922) - Hannah Wolfe
  • 🐛 Fixed fallback to bookmark card when pasting localhost Ghost url - Kevin Ansfield
  • 🐛 Fixed small images appearing smaller in post content - Kevin Ansfield
  • 🐛 Fixed missing text version in bulk email (#11919) - Hannah Wolfe
  • 🐛 Fixed custom redirects for subdirectory setups - Fabien O'Carroll
  • 🐛 Fixed file inputs not allowing same file to be re-uploaded in Firefox - Kevin Ansfield
  • ♿️ Added blank alt attributes to images when no alt text is provided - Kevin Ansfield

See the changelogs for Ghost and Ghost-Admin for the details of every change in this release.

Statistics:

File Changed47
Line Additions853
Line Deletions430
Line Changes1,283
Total Commits31

User Affected:

  • Can now filter members by paid status (all/free/paid) in the admin interface
  • Have access to a new `/members/validate` endpoint for validating imported members data
  • Can use the new INR currency for Stripe payments
  • Can force re-render post HTML without modifying mobiledoc content using `?force_rerender=true`
  • Will see improved error reporting for member imports with detailed error messages and counts

Contributors:

nazdaniellockyerkevinansfieldrshbhgrgallouisrenovate[bot]ErisDS