Skip to content

[pull] main from TryGhost:main - #1466

Merged
pull[bot] merged 4 commits into
code:mainfrom
TryGhost:main
Sep 3, 2026
Merged

[pull] main from TryGhost:main#1466
pull[bot] merged 4 commits into
code:mainfrom
TryGhost:main

Conversation

@pull

@pull pull Bot commented Sep 3, 2026

Copy link
Copy Markdown

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 4 commits September 2, 2026 23:55
The test that covers creating a member from a Stripe checkout checked the two
emails the checkout produces with an assertion that reads emails in the order
they were sent. Neither email is sent by the webhook request: the staff
notification comes from a subscriber to a domain event, which Ghost holds back
until the transaction that created the member has committed, and the member's
own signup email is started by the webhook handler and never awaited, so that
failing to send it cannot fail the webhook and make Stripe retry the payment
work. Both therefore outlive the response the test waits on, and nothing decides
which of the two lands first, so the test could find an email missing or find
the two the other way round. It now waits for each email on its own and matches
it by content rather than by position, through a new sentEmailEventually
assertion that searches every email sent so far and keeps looking until a
timeout.

Claude-Session: https://claude.ai/code/session_01XFCbqgYHYhd9rZ5WXtqZyT
…or (#30479)

no ref

Adds some ux features to the React post editor.
no ref

Correctness change for the React editor, where any save action would result in 'unsaved changes' being detected.
The tests that check what Ghost records when a Stripe subscription is created read
the member and subscription event rows straight after the webhook responds. Those
rows are not written by the webhook request. Ghost holds each event back until the
transaction that created the member has committed and only then hands it to a
subscriber, which writes the row in its own asynchronous step that nothing about
the request waits for. The row is therefore still being written while the test is
already reading, so a different handful of these tests failed on each run with the
row simply missing. Reading the rows now waits for every dispatched event to have
been handled first.

Claude-Session: https://claude.ai/code/session_01XFCbqgYHYhd9rZ5WXtqZyT
@pull pull Bot locked and limited conversation to collaborators Sep 3, 2026
@pull pull Bot added the ⤵️ pull label Sep 3, 2026
@pull
pull Bot merged commit d4fbd04 into code:main Sep 3, 2026
2 checks passed
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.

2 participants