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
102 changes: 102 additions & 0 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,108 @@
"dependencyDashboardApproval": true
},

// Keep `@types/*` aligned with the runtime major they describe. Type defs
// for a different major than what actually runs are silently wrong at best
// (e.g. @types/express 5 vs Express 4) and build-breaking at worst
// (@types/react 19 fails the @tryghost/shade build under React 18) — this
// is what stalled the grouped "Update Types packages (major)" PR (#28307).
// Two mechanisms, with the major-dashboard-approval rule above as the human
// backstop for any types-ahead major that still slips through:
//
// 1. @types/node has no `node` npm package to pair with — it tracks the
// Node.js runtime declared in `engines`, not a dependency — so a hard
// version cap is the only lever. Raise it when we bump the Node engine.
{
"description": "Cap @types/node at the installed Node major (engines: ^22.13.1)",
"matchPackageNames": [
"@types/node"
],
"allowedVersions": "<23"
},

// 2. Every other @types/* is grouped WITH the runtime package it describes
// (rules below) so a runtime major and its type-definition major travel
// in the same PR and land together, instead of the types racing ahead.
// This is self-maintaining — no per-package caps to hand-raise on each
// upgrade (a stale cap silently flips from guard to blocker once the
// runtime moves, as happened with supertest 6 -> 7).
//
// Any @types/* with NO managed runtime peer is left as its own individual
// PR rather than lumped into one mega "Types packages (major)" PR (so one
// breaking type can't block the rest). Ordering matters: this ungroup
// default comes BEFORE the pairings so the pairings (later) win for paired
// packages, and the pairings come BEFORE the react17/eslint9/tailwind3
// catalog rules below so those version-lane groups still win for their own
// depTypes (e.g. react@17 in the react17 catalog stays in its own PR).
{
"description": "Unpaired @types/* majors get their own PR, not one mega Types group",
"matchPackageNames": [
"@types/**"
],
"matchUpdateTypes": [
"major"
],
"groupName": null
},
{
"description": "React runtime + its type defs bump together",
"groupName": "React",
"matchPackageNames": [
"react",
"react-dom",
"@types/react",
"@types/react-dom"
]
},
{
"description": "Express runtime + its type defs bump together",
"groupName": "Express",
"matchPackageNames": [
"express",
"@types/express"
]
},
{
"description": "jest runtime + its type defs bump together",
"groupName": "jest",
"matchPackageNames": [
"jest",
"@types/jest"
]
},
{
"description": "supertest runtime + its type defs bump together",
"groupName": "supertest",
"matchPackageNames": [
"supertest",
"@types/supertest"
]
},
{
"description": "dockerode runtime + its type defs bump together",
"groupName": "dockerode",
"matchPackageNames": [
"dockerode",
"@types/dockerode"
]
},
{
"description": "nodemailer runtime + its type defs bump together",
"groupName": "nodemailer",
"matchPackageNames": [
"nodemailer",
"@types/nodemailer"
]
},
{
"description": "sinon runtime + its type defs bump together",
"groupName": "sinon",
"matchPackageNames": [
"sinon",
"@types/sinon"
]
},

// Group NQL packages separately from other TryGhost packages
{
"groupName": "NQL packages",
Expand Down
40 changes: 20 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
pull-requests: read
steps:
- name: Checkout current commit
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ env.HEAD_COMMIT }}
fetch-depth: 0
Expand Down Expand Up @@ -241,7 +241,7 @@ jobs:
if: github.event_name == 'pull_request'
steps:
- name: Checkout PR head commit
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
Expand All @@ -262,7 +262,7 @@ jobs:
if: github.event_name == 'pull_request'
steps:
- name: Checkout PR head commit
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
Expand All @@ -282,7 +282,7 @@ jobs:
if: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.affected_projects_str != ''
name: Lint
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 1000
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
Expand Down Expand Up @@ -322,7 +322,7 @@ jobs:
needs.job_setup.outputs.is_tag == 'true'
|| needs.job_setup.outputs.changed_i18n_apps == 'true'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
Expand All @@ -348,7 +348,7 @@ jobs:
CI: true
COVERAGE: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
Expand Down Expand Up @@ -387,7 +387,7 @@ jobs:
node: ${{ fromJSON(needs.job_setup.outputs.node_test_matrix) }}
name: Unit tests (Node ${{ matrix.node }})
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 1000
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
Expand Down Expand Up @@ -493,7 +493,7 @@ jobs:
NODE_ENV: ${{ matrix.env.NODE_ENV }}
name: Acceptance tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }})
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
env:
Expand Down Expand Up @@ -612,7 +612,7 @@ jobs:
NODE_ENV: ${{ matrix.env.NODE_ENV }}
name: Legacy tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }})
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
submodules: true
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
Expand Down Expand Up @@ -676,7 +676,7 @@ jobs:
env:
CI: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
env:
Expand Down Expand Up @@ -731,7 +731,7 @@ jobs:
ports:
- 7181:7181
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install Tinybird CLI
run: curl -fsSL https://tinybird.co/install.sh | sh
- name: Build project
Expand Down Expand Up @@ -827,7 +827,7 @@ jobs:
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
submodules: true

Expand Down Expand Up @@ -1093,7 +1093,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8

Expand Down Expand Up @@ -1140,7 +1140,7 @@ jobs:
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Download public app artifacts
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
Expand Down Expand Up @@ -1312,7 +1312,7 @@ jobs:
shardTotal: 2
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Setup Docker Registry Mirrors
uses: ./.github/actions/setup-docker-registry-mirrors
Expand Down Expand Up @@ -1409,7 +1409,7 @@ jobs:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
Expand Down Expand Up @@ -1493,7 +1493,7 @@ jobs:
]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Restore Admin coverage
if: contains(needs.job_admin-tests.result, 'success')
Expand Down Expand Up @@ -1596,7 +1596,7 @@ jobs:
package_path: 'apps/admin-toolbar'
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- name: Set up Node.js
Expand Down Expand Up @@ -1661,7 +1661,7 @@ jobs:
cdn_paths: 'https://cdn.jsdelivr.net/ghost/admin-toolbar@~CURRENT_MINOR/umd/admin-toolbar.min.js'
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
- name: Set up Node.js
Expand Down Expand Up @@ -1872,7 +1872,7 @@ jobs:
env:
GH_TOKEN: ${{ secrets.CANARY_DOCKER_BUILD }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 0

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Install gh-aw extension
uses: github/gh-aw/actions/setup-cli@ce1794953e0ec42adc41b6fca05e02ab49ee21c3 # v0.68.3
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/create-release-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ jobs:
if: github.repository == 'TryGhost/Ghost'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
if: inputs.base-ref == 'latest'
with:
ref: main
fetch-depth: 0
submodules: true

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
if: inputs.base-ref != 'latest'
with:
ref: ${{ inputs.base-ref }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/devcontainer-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Set up QEMU
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-tb-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
with:
ssh-private-key: ${{ secrets.DEPLOY_KEY }}

- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
# Deploy key (via ssh-agent) is used for git push — it bypasses
# branch protection and triggers downstream workflows (unlike GITHUB_TOKEN)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/translation-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
)
steps:
- name: Checkout main (trusted ref — never the PR head)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
ref: main
Expand Down
2 changes: 1 addition & 1 deletion apps/admin-x-design-system/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"@types/validator": "catalog:",
"@typescript-eslint/parser": "catalog:",
"@vitejs/plugin-react": "catalog:",
"autoprefixer": "10.4.21",
"autoprefixer": "10.5.0",
"c8": "catalog:",
"chai": "catalog:",
"eslint": "catalog:",
Expand Down
2 changes: 1 addition & 1 deletion apps/comments-ui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"@tryghost/nql": "catalog:",
"@vitejs/plugin-react": "catalog:",
"@vitest/coverage-v8": "catalog:",
"autoprefixer": "10.4.21",
"autoprefixer": "10.5.0",
"bson-objectid": "catalog:",
"concurrently": "catalog:",
"eslint": "catalog:",
Expand Down
2 changes: 1 addition & 1 deletion apps/portal/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@tryghost/portal",
"version": "2.68.58",
"version": "2.68.59",
"license": "MIT",
"repository": "https://github.com/TryGhost/Ghost",
"author": "Ghost Foundation",
Expand Down
Loading
Loading