Skip to content

[pull] main from TryGhost:main#892

Merged
pull[bot] merged 5 commits intocode:mainfrom
TryGhost:main
Feb 3, 2026
Merged

[pull] main from TryGhost:main#892
pull[bot] merged 5 commits intocode:mainfrom
TryGhost:main

Conversation

@pull
Copy link

@pull pull bot commented Feb 3, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

rob-ghost and others added 5 commits February 3, 2026 11:14
Portal's hashchange listener is only registered after its async init
completes. The test was clicking sign-in links before Portal was ready,
causing the hashchange event to be missed. Additionally, the reply test
was interacting with comments-ui before it finished initializing.
ref https://linear.app/ghost/issue/BER-3243

When a comped member upgrades to a paid plan, the complimentary
subscription was not being cancelled, leaving the member with two
active subscriptions. This caused the member to revert to comped
status if the paid subscription was later cancelled.

There are two types of comp: Stripe-backed (legacy, via the comped
flag) and Ghost-only (current Admin UI, via the tiers array). Both
are now handled via a consolidated removeComplimentaryAccess()
method on the member repository, called from linkSubscription when
a paid subscription is linked. Stripe-backed comps are cancelled
via the Stripe API, and Ghost-only comp products are filtered out
by removing products not backed by an active Stripe subscription.

Co-authored-by: Steve Larson <9larsons@gmail.com>
Ref https://linear.app/ghost/issue/BER-3264/filter-refinements

- Append instead of prepend new filters
- Remove search from the filter add dropdown
- set allow multiple to false 
- Truncate or otherwise make filters look better


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Touches the shared `apps/shade` `Filters` component and changes
selection/update behavior, which may affect other filter UIs beyond
comments. Changes are mostly UX/layout, but regressions could impact
filter add/update interactions.
> 
> **Overview**
> Refines the comments filter UI to be *single-instance per field* and
less noisy by disabling field-search in the add-filter popover and
disabling option-search for the `status`/`reported` selects.
> 
> Improves filter ordering and display: URL query parsing now preserves
filter order as written in the URL, and the shared `Filters` component
truncates/constraints selected-value rendering (with better tooltip
titles) to avoid layout overflow.
> 
> Updates shared `Filters` behavior so selecting options for a field
that already has a filter updates that filter in-place (keeping inline
multiselect state in sync) and, when `allowMultiple={false}`, hides
already-used fields from the add-filter list for flat field configs.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c51aa60. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

* **Bug Fixes**
* Fixed filter duplication by auto-updating existing filter fields
instead of creating duplicates.
* Improved filter UI with better width constraints and text truncation
behavior.

* **Changes**
  * Removed search functionality from status and reported filters.
  * Disabled multiple filter selection per field.
  * Hidden filter search input from the filter popover.
  * Enhanced visual presentation of filter values with improved spacing.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Peter Zimon <zimo@ghost.org>
Co-authored-by: Peter Zimon <peter.zimon@gmail.com>
Added the ShadCN checkbox component to enable consistent checkbox styling
across Ghost admin apps. Includes Storybook documentation with examples
for default, labeled, checked, disabled, and controlled states.
*This change should have no user impact.*

This change:

- `memberCountRounding` could sometimes return a `number`. Now, it
always returns a string.
- Adds JSDoc type comments to every function.
@pull pull bot locked and limited conversation to collaborators Feb 3, 2026
@pull pull bot added the ⤵️ pull label Feb 3, 2026
@pull pull bot merged commit 84e2692 into code:main Feb 3, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants