Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/clean-flags-retire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@tryghost/kg-default-nodes": patch
---

Removed the unused emailCustomization and emailCustomizationAlpha feature options.
48 changes: 20 additions & 28 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,21 @@ For **help**, **support**, **questions** and **ideas** please use **[our forum](

## Where to Start

If you're a developer looking to contribute, but you're not sure where to begin: Check out the [good first issue](https://github.com/TryGhost/Ghost/labels/good%20first%20issue) label on Github, which contains small piece of work that have been specifically flagged as being friendly to new contributors.
The [codebase documentation](../docs/README.md) explains how to set up the
monorepo and find your way around it. Start with the
[development setup guide](../docs/contributing/development-setup.md), then use
the [contribution workflow](../docs/contributing/workflow.md) when you are ready
to make a change.

After that, if you're looking for something a little more challenging to sink your teeth into, there's a broader [help wanted](https://github.com/TryGhost/Ghost/labels/help%20wanted) label encompassing issues which need some love.
If you're not sure what to work on, start with
[good first issues](https://github.com/TryGhost/Ghost/labels/good%20first%20issue)
or browse the broader
[help wanted](https://github.com/TryGhost/Ghost/labels/help%20wanted) list.

If you've got an idea for a new feature, please start by suggesting it in the [forum](https://forum.ghost.org), as adding new features to Ghost first requires generating consensus around a design and spec.
Discuss new features and substantial product or architectural changes in the
[forum](https://forum.ghost.org) before implementing them.


## Working on Ghost Core

If you're going to work on Ghost core you'll need to go through a slightly more involved install and setup process than the usual Ghost CLI version.

First you'll need to fork [Ghost](https://github.com/tryghost/ghost) to your personal Github account, and then follow the detailed [install from source](https://ghost.org/docs/install/source/) setup guide.


### Branching Guide

`main` on the main repository always contains the latest changes. This means that it is WIP for the next minor version and should NOT be considered stable. Stable versions are tagged using [semantic versioning](http://semver.org/).

On your local repository, you should always work on a branch to make keeping up-to-date and submitting pull requests easier, but in most cases you should submit your pull requests to `main`. Where necessary, for example if multiple people are contributing on a large feature, or if a feature requires a database change, we make use of feature branches.


### Commit Messages
## Commit Messages

We have a handful of simple standards for commit messages which help us to generate readable changelogs. Please follow this wherever possible and mention the associated issue number.

Expand Down Expand Up @@ -58,10 +51,9 @@ There is no need to include what modules have changed in the commit message, as

[Good example](https://github.com/TryGhost/Ghost/commit/95751a0e5fb719bb5bca74cb97fb5f29b225094f)

## Changesets

### Changesets

Ghost publishes several workspace packages to npm — the `@tryghost/*` editor and adapter packages under `koenig/` and `packages/`. When your change touches one of these publishable packages, add a **changeset** so it gets a version bump and a changelog entry:
Ghost publishes several workspace packages to npm — the `@tryghost/*` editor and adapter packages under `koenig/` and `packages/`. When your change affects one of these publishable packages, including by changing a catalog entry it consumes, add a **changeset** so it gets a version bump and a changelog entry:

```bash
pnpm change
Expand All @@ -73,18 +65,18 @@ This records which packages changed and the bump type (patch / minor / major); t
pnpm change --bump none
```

CI enforces this — the **Check app version bump** job fails a pull request that modifies a publishable package without a covering changeset. The pre-commit hook prints a non-blocking reminder locally, and `pnpm change status` shows what's currently pending.
CI enforces this — the **Check app version bump** job fails a pull request that affects a publishable package without a covering changeset. The pre-commit hook prints a non-blocking reminder locally, and `pnpm change status` shows what's currently pending.

For more detail, see the [contribution workflow](../docs/contributing/workflow.md).

### Submitting Pull Requests
## Submitting Pull Requests

We aim to merge any straightforward, well-understood bug fixes or improvements immediately, as long as they pass our tests (run `pnpm test` to check locally). We generally don’t merge new features and larger changes without prior discussion with the core product team for tech/design specification.
We aim to merge any straightforward, well-understood bug fixes or improvements immediately, as long as they pass our tests (run `pnpm check` to ensure everything works). We generally don’t merge new features and larger changes without prior discussion with the core product team for tech/design specification.

Please provide plenty of context and reasoning around your changes, to help us merge quickly. Closing an already open issue is our preferred workflow. If your PR gets out of date, we may ask you to rebase as you are more familiar with your changes than we will be.

### Sharing feedback on Documentation

While the Docs are no longer Open Source, we welcome revisions and ideas on the forum! Please create a Post with your questions or suggestions in the [Contributing to Ghost Category](https://forum.ghost.org/c/contributing/27). Thank you for helping us keep the Docs relevant and up-to-date.
For branch, validation, and pull request details, follow the
[contribution workflow](../docs/contributing/workflow.md).

---

Expand Down
42 changes: 26 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,30 @@ jobs:
echo "GITHUB_EVENT_NAME: ${{ github.event_name }}"
echo "GITHUB_CONTEXT: ${{ toJson(github.event) }}"

- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Set up Node
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
env:
FORCE_COLOR: 0
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts

# Replaced nrwl/nx-set-shas, which verified each candidate commit over the
# API and hid the errors — see scripts/nx-set-shas.js.
- name: Set SHAs for Nx Commands
if: env.IS_TAG != 'true'
uses: nrwl/nx-set-shas@afb73a62d26e41464e9254689e1fd6122ee683c1 # v5.0.1
with:
main-branch-name: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
error-on-no-successful-workflow: ${{ env.IS_MAIN == 'true' && github.repository == 'TryGhost/Ghost' }}
env:
GITHUB_TOKEN: ${{ github.token }}
BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || github.ref_name }}
# Canonical main is the one branch where too narrow a base means
# untested commits land, so there a lookup that comes up empty fails
# the run rather than falling back to the previous commit.
ON_MISSING: ${{ (env.IS_MAIN == 'true' && github.repository == 'TryGhost/Ghost') && 'error' || 'previous-commit' }}
run: node scripts/nx-set-shas.js --branch "$BRANCH" --head "$HEAD_COMMIT" --on-missing "$ON_MISSING"

- name: Check user org membership
id: check_user_org_membership
Expand Down Expand Up @@ -145,6 +163,10 @@ jobs:
- 'scripts/test/check-agent-skill-links.test.js'
core:
- *shared
# Repository documentation and ownership metadata do not affect
# Ghost runtime behaviour, even though they live in .github.
- '!.github/**/*.md'
- '!.github/CODEOWNERS'
- 'ghost/**'
- '!ghost/core/core/server/data/tinybird/**'
# Unit tests + vitest config are exercised only by job_unit-tests;
Expand Down Expand Up @@ -196,18 +218,6 @@ jobs:
run: |
echo 'matrix=["22.23.1"]' >> $GITHUB_OUTPUT

- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
- name: Set up Node
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
env:
FORCE_COLOR: 0
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile --ignore-scripts

- name: Start Nx Cloud CI run
run: pnpm nx start-ci-run

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ run-name: "Release — ${{ inputs.bump-type || 'auto' }} from ${{ inputs.branch

on:
schedule:
- cron: '0 15 * * 5' # Friday 3pm UTC
- cron: '0 15 * * 2' # Tuesday 3pm UTC
workflow_dispatch:
inputs:
branch:
Expand Down
Loading
Loading