Skip to content

[pull] main from TryGhost:main - #1465

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

[pull] main from TryGhost:main#1465
pull[bot] merged 11 commits into
code:mainfrom
TryGhost:main

Conversation

@pull

@pull pull Bot commented Sep 2, 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 : )

acburdine and others added 11 commits September 2, 2026 12:20
no ref

Ghost should run on Node 24, but nothing about shipping on it has to change to
get there. This declares 24 as supported and leaves 22.23.1 as the default
everywhere it is one: devEngines, .nvmrc, .node-version, CI's NODE_VERSION and
all three Dockerfiles. Pro keeps building and running the same image.

The unit, legacy and acceptance matrices have run on 24 for a while and stayed
green through a bug that stopped Ghost booting at all — an ESM/CJS require race
on `got` that only fired during init migrations. Those suites stop at module
level, so full boot is the coverage that was missing. Ghost-CLI's clean-install
scenario is the cheapest place to get it: it installs this build's tarball and
starts it, so it now runs on every Node line `engines` claims, off the same
list the other matrices use.

The latest-release scenario stays on the default. It upgrades from the newest
Ghost on npm, and that release's own `engines` decides which Node versions can
install it — it can join the full list once a published release supports 24.

The debug-log artifact name carries the Node version as well as the scenario,
since the clean-install legs would otherwise collide on upload.

engines.cli is unchanged: the ^1.29.1 minimum is already above the Ghost-CLI
release that added Node 24 support. The renovate @types/node cap also stays at
<23, since it tracks the Node version we develop and build against, which is
still 22.
no ref

The React editor needs the the 'change detection engine' which handles the logic for detecting dirty editor state. This is a port to Typescript with a description of how it works plus significant testing surface.
no ref

The React editor needs the the 'save engine' which handles the logic for various save actions (auto vs manual). This is a port to Typescript with a description of how it works plus significant testing surface.
no ref

The React post editor needs to ask the server for a deduplicated slug when the title or slug changes. Ember does this through its `slug-generator` service; the framework had no equivalent.
no ref

This adds the 'slug machine' as a Typescript module to handle the logic around slug assignment and generation in the migrated Editor activity.
…30469)

no ref

These hooks have no consumers yet; the editor re-authentication flow that uses them lands separately.

The React post editor needs a way to re-authenticate in place when a save hits an expired session. Ember does this through its cookie authenticator; the framework only had `useDeleteSession`.
no ref
- rewrites the editor engine documentation around its current contracts
and design decisions
- removes Ember, migration, and stacked-review context from editor
comments and test descriptions
- replaces numbered invariant labels with standalone behavior
descriptions
…30471)

no ref

Docs-only change to `apps/admin/src/editor/engine/README.md`, plus four comment edits in `save-engine.ts`.
no ref 

Adds logic for the forthcoming publish flows.
no ref

The logic to hold what a user chooses before a post changes status: publish type, scheduling, newsletter and recipients.
…0477)

no ref

Wired up the various engines (save, slug, change detection) into one editing session in the React editor.
@pull pull Bot locked and limited conversation to collaborators Sep 2, 2026
@pull pull Bot added the ⤵️ pull label Sep 2, 2026
@pull
pull Bot merged commit 1aa5cf1 into code:main Sep 2, 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