Home

>

Tools

>

Ghost

>

Releases

>

5.94.2

Ghost Release: 5.94.2

Tag Name: v5.94.2

Release Date: 9/23/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.94.2: Bug Fixes and UI Improvements

This release focuses on fixing several critical bugs affecting member filtering, bookmark cards, and editor functionality. It also includes UI improvements for the Portal and ActivityPub integration, along with performance optimizations for the members API endpoint. These changes enhance stability and user experience across the platform while laying groundwork for future features.

Highlight of the Release

    • Fixed member filtering for 'Unsubscribed from newsletter' filters that previously returned all members when multiple filters were used
    • Added local revisions to the editor as a backstop against data loss
    • Fixed bookmark card functionality to properly fetch and store icons and thumbnails locally
    • Added a maximum limit of 100 for GET members admin endpoint to improve API performance
    • Improved ActivityPub integration with reply functionality and UI enhancements

Migration Guide

GET Members API Endpoint Limit Change

The GET ghost/api/admin/members/ endpoint no longer supports the limit=all parameter. Any request with limit=all or a limit greater than 100 will only return up to 100 members per request.

Required Action: If your integration or custom code uses limit=all to retrieve all members, you must update your code to implement pagination. Use the page parameter along with limit to retrieve members in batches.

Example:

// Before
const allMembers = await api.members.browse({ limit: 'all' });

// After
let allMembers = [];
let page = 1;
let hasMore = true;

while (hasMore) {
  const response = await api.members.browse({ 
    limit: 100, 
    page: page 
  });
  
  allMembers = allMembers.concat(response);
  
  if (response.length < 100) {
    hasMore = false;
  } else {
    page++;
  }
}

This change aims to improve the performance and scalability of the API, especially for sites with large member databases.

Upgrade Recommendations

This release (v5.94.2) contains important bug fixes and performance improvements that benefit all Ghost installations. We recommend upgrading promptly, especially if you:

  1. Use member filtering with newsletter subscription status
  2. Work with bookmark cards in the editor
  3. Have experienced issues with the "Unsaved post" modal appearing after publishing
  4. Manage a large member database and use the GET members API endpoint

The upgrade process should be straightforward with no breaking changes for most users, except for the GET members API endpoint limit change which requires pagination implementation if you were previously using limit=all.

Priority: Medium Urgency: Normal Complexity: Low (standard upgrade process)

Bug Fixes

Member Management

  • Fixed member filtering for "Unsubscribed from newsletter" filters that previously returned all members when multiple filters were used
  • Removed safeguard around bulk deletion when multiple newsletter filters are in use, as the root problem has been fixed

Editor Issues

  • Fixed "Unsaved post" modal incorrectly showing after publishing (reverted two commits)
  • Fixed wrong breadcrumb and missing post status when starting a new post from analytics
  • Fixed issue with bookmark card functionality to properly fetch and store icons and thumbnails locally
  • Fixed duplicate oembed requests when adding bookmarks to the editor

UI and Navigation

  • Fixed issue with comments UI styling and spacing
  • Fixed avatars appearing stretched in replies for ActivityPub
  • Fixed date storage for analytics job using SQLite (previously stored as Unix timestamps)
  • Fixed post reply button behavior in ActivityPub integration

Error Reporting

  • Fixed missing extra context for Sentry report for editor 404
  • Fixed "[Object]" appearing in Sentry log for unsaved-changes reason diff
  • Filtered Sentry network breadcrumbs to reduce noise in error reports

New Features

ActivityPub Integration Enhancements

  • Reply Functionality: Added the ability to reply to ActivityPub content with a dedicated reply box
  • UI Improvements: Added "More" menu for feed items with options like "Delete" and "Copy link"
  • User Experience: Implemented focus states, placeholder text, and success notifications for replies
  • Data Management: Updated to use the new activities endpoint for better performance with paginated data

Analytics Improvements

  • Data Consistency: Updated KPI pipe to fill missing data points in charts
  • Terminology Clarification: Renamed "unique visitors" to "unique visits" for accuracy
  • Filtering: Fixed audience filtering to properly update top metrics along with charts

Editor Enhancements

  • Data Protection: Added local revisions stored in browser localStorage as protection against data loss
  • Debugging: Added comprehensive logging of post state changes to help identify and fix editor issues
  • Error Handling: Improved error messages to distinguish between deleted posts and editor crashes

Security Updates

No specific security fixes were mentioned in this release.

Performance Improvements

API Performance

  • Added a maximum limit of 100 for GET members admin endpoint
    • Previously, using limit=all would return all members in a single request
    • This change improves API response times and reduces server load for sites with large member bases
    • Pagination must now be implemented to retrieve the complete list of members

ActivityPub Integration

  • Updated ActivityPub app to utilize new activities endpoint
    • Returns a paginated list of activities instead of all data at once
    • Addresses issue where the inbox was returning up to 33MB of data
    • Significantly improves loading times and reduces memory usage

Analytics Data Processing

  • Updated KPI pipe to fill missing data points
    • Implemented Clickhouse's WITH FILL feature to handle gaps in time series data
    • Fixed bounce rate calculation to avoid generating nulls
    • Results in smoother, more consistent chart displays

Error Logging

  • Improved Sentry error reporting efficiency
    • Removed large lexical objects from context that were being truncated anyway
    • Added more targeted context data like diffs for lexical changes
    • Filtered network breadcrumbs to reduce noise in error logs

Impact Summary

Ghost v5.94.2 delivers several important bug fixes and quality-of-life improvements across the platform. The most significant impact comes from fixing member filtering for newsletter unsubscribes, which previously returned incorrect results when using multiple filters. This ensures accurate member segmentation and targeting.

Performance improvements to the members API endpoint will benefit sites with large member databases by enforcing pagination, while the addition of local revisions to the editor provides an important safety net against data loss during editing sessions.

For international users, additional translations and fixes for missing i18n strings improve the experience for non-English installations. The ActivityPub integration continues to mature with new reply functionality and UI improvements, making the social features more robust.

Overall, this release focuses on stability, performance, and user experience refinements rather than introducing major new features, making it a recommended upgrade for all Ghost installations.

Full Release Notes

  • 🎨 Wrapped missing i18n strings in portal (#21042) - Cathy Sarisky
  • 🎨 Added a maximum limit of 100 for GET members admin endpoint (#20643) - Princi Vershwal
  • 🐛 Fixed wrong breadcrumb and missing post status when starting new post from analytics - Kevin Ansfield
  • 🐛 Fixed fetching and storing bookmark card icons and thumbnails (#21036) - Princi Vershwal
  • 🐛 Fixed member filtering for "Unsubscribed from newsletter" filters (#20926) - Sag

View the changelog for full details: v5.94.1...v5.94.2

Statistics:

File Changed172
Line Additions3,209
Line Deletions964
Line Changes4,173
Total Commits65

User Affected:

  • Fixed member filtering for 'Unsubscribed from newsletter' filters, resolving an issue where using multiple newsletter filters returned all members
  • Added a maximum limit of 100 for GET members admin endpoint to improve API performance
  • Fixed breadcrumb navigation and post status display when starting a new post from analytics
  • Improved editor stability with local revisions as a backstop against data loss

Contributors:

daniellockyersagzyvershwalmike182ukrenovate[bot]kevinansfieldtombaryschicodurden21ErisDSsanne-san9larsonscathysariskycmraibledjordjevlaisallouisgithub-actions[bot]