Skip to content

[pull] main from TryGhost:main#1008

Merged
pull[bot] merged 8 commits intocode:mainfrom
TryGhost:main
Mar 25, 2026
Merged

[pull] main from TryGhost:main#1008
pull[bot] merged 8 commits intocode:mainfrom
TryGhost:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 25, 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 : )

EvanHahn and others added 8 commits March 25, 2026 16:38
towards https://linear.app/ghost/issue/NY-1163

This change should have no user impact. Just fixes a type error when
this test function was used.
no ref

Before this change, `foo #ff9900` was considered a valid hex color.
After this change, it is not.

I believe it's difficult to have bad data in the database, but if that
happens, we want to check it properly.
…26960)

## Problem

`@site.admin_url` was using `getAdminUrl()` which returns the base admin
domain (e.g. `https://admin.example.com/`) **without** `/ghost/`. This
means the "Site owner login" link on the private page pointed to the
domain root instead of the admin panel for any site with a separate
admin URL configured (including all Ghost(Pro) sites).

## Fix

Changed `update-local-template-options.js` to use `urlFor('admin',
true)` which correctly appends `/ghost/` to the admin URL.

## Test

Added a test that stubs `getAdminUrl()` with a separate domain
(`https://admin.example.com/`) and asserts the resulting `admin_url`
ends with `/ghost/`. This test fails on main and passes with the fix.
no ref
- adds stable Portal offer-page test ids for title, discount label,
message, and updated price
- simplifies the Portal offer page object to expose plain locators
instead of text-specific helper methods
- hides paid-tier Stripe readiness behind createPaidPortalTier(...,
{stripe})
- reduces repeated assertion blocks in portal-offers.test.ts with local
expectation helpers
- teaches the e2e Playwright lint rule to recognize local expect...
assertion helpers
closes https://linear.app/ghost/issue/NY-1178
towards https://linear.app/ghost/issue/NY-1163

This was written almost entirely by Claude Opus 4.6 against the
following prompt:

> I want to create a snapshot test for member welcome emails. We
currently have _some_ tests for this, like in
`ghost/core/test/e2e-api/admin/automated-emails.test.js` and
`ghost/core/test/integration/services/member-welcome-emails.test.js`,
but these don't assert on the final rendered output.
>
> Build a (test-only) change that renders the full HTML of a member
welcome email, and asserts on the snapshot. We have
`assertMatchSnapshot` for this purpose, which I reckon you should use.

I reviewed the code thoroughly and made a couple of small tweaks.
ref https://linear.app/ghost/issue/FEA-480

- adds the `show_share_button` column to newsletters to prep for future
share button functionality
- includes the bare minimum for setting up the migration and for tests
to pass. In this case it includes updating snapshots related to the
newsletter
- also bumps to `6.23.0-rc.0`
no ref

Released new transistor.fm integration, enabling customizable Portal
account settings re: podcast RSS feeds and new embed/editor card support
in the editor.
closes https://linear.app/ghost/issue/NY-1105

This change should have no user impact. All it does is remove the flag,
enabling the feature for everyone.

In addition to automated tests, I manually verified that the new welcome
email editor shows up.
@pull pull bot locked and limited conversation to collaborators Mar 25, 2026
@pull pull bot added the ⤵️ pull label Mar 25, 2026
@pull pull bot merged commit b3bd8d1 into code:main Mar 25, 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.

4 participants