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
18 changes: 9 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ jobs:
NX_BASE: ${{ needs.job_setup.outputs.nx_base }}
NX_HEAD: ${{ env.HEAD_COMMIT }}

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -343,7 +343,7 @@ jobs:
name: admin-coverage
path: ghost/*/coverage/cobertura-coverage.xml

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -415,7 +415,7 @@ jobs:
exit 1
fi

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -543,7 +543,7 @@ jobs:
ghost/*/coverage-e2e/cobertura-coverage.xml
ghost/*/coverage-integration/cobertura-coverage.xml

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -629,7 +629,7 @@ jobs:
exit 1
fi

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -682,7 +682,7 @@ jobs:
path: apps/${{ steps.app_name.outputs.name }}/playwright-report
retention-days: 30

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -781,7 +781,7 @@ jobs:
run: |
[ -f ~/.ghost/logs/*.log ] && cat ~/.ghost/logs/*.log

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -1363,7 +1363,7 @@ jobs:
path: e2e/test-results
retention-days: 7

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
with:
status: ${{ job.status }}
Expand Down Expand Up @@ -1823,7 +1823,7 @@ jobs:
- name: Publish to npm
run: npm publish ghost-*.tgz --access public

- uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
if: failure()
with:
status: ${{ job.status }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/label-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ jobs:
runs-on: ubuntu-latest
if: github.repository_owner == 'TryGhost'
steps:
- uses: tryghost/actions/actions/label-actions@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
- uses: tryghost/actions/actions/label-actions@128d496a57fb11e44e97d690f0d5381c58e52489 # main
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ jobs:

- name: Notify on failure
if: failure()
uses: tryghost/actions/actions/slack-build@598d6328d89dbd796aa02ae2ea66308f9d942224 # main
uses: tryghost/actions/actions/slack-build@128d496a57fb11e44e97d690f0d5381c58e52489 # main
with:
status: ${{ job.status }}
env:
Expand Down
Binary file modified apps/activitypub/src/assets/images/ap-welcome.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/ap-nodes-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/ap-nodes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-404.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-casey.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-evan.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-flipboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-gone.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-lever.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/avatar-tangle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/cover-gone.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/cover-lever.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/onboarding/cover-tangle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/activitypub/src/assets/images/profile-card-shadow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/admin-x-design-system/src/docs/assets/ds-structure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified apps/admin-x-design-system/src/docs/assets/style-guide.png
Binary file modified apps/admin-x-settings/src/assets/images/ali-abdaal.png
Binary file modified apps/admin-x-settings/src/assets/images/design-settings.png
Binary file modified apps/admin-x-settings/src/assets/images/footer-marketplace-bg.png
Binary file modified apps/admin-x-settings/src/assets/images/ghost-explore.png
Binary file modified apps/admin-x-settings/src/assets/images/ghost-favicon.png
Binary file modified apps/admin-x-settings/src/assets/images/isaac-saul.png
Binary file modified apps/admin-x-settings/src/assets/images/joel-warner.png
Binary file modified apps/admin-x-settings/src/assets/images/logos/orb-black-1.png
Binary file modified apps/admin-x-settings/src/assets/images/logos/orb-black-2.png
Binary file modified apps/admin-x-settings/src/assets/images/logos/orb-black-3.png
Binary file modified apps/admin-x-settings/src/assets/images/logos/orb-black-4.png
Binary file modified apps/admin-x-settings/src/assets/images/logos/orb-black-5.png
Binary file modified apps/admin-x-settings/src/assets/images/network.png
Binary file modified apps/admin-x-settings/src/assets/images/orb-pink.png
Binary file modified apps/admin-x-settings/src/assets/images/orb-squircle.png
Binary file modified apps/admin-x-settings/src/assets/images/pintura-screenshot.png
Binary file modified apps/admin-x-settings/src/assets/images/portal-splash-user-add.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Alto.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Bulletin.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Casper.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Dawn.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Digest.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Dope.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Ease.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Edge.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Edition.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Episode.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Headline.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Journal.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/London.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Ruby.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Solo.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Source-Magazine.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Source.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Taste.png
Binary file modified apps/admin-x-settings/src/assets/images/themes/Wave.png
Binary file modified apps/admin/public/assets/img/apple-touch-icon.png
Binary file modified apps/admin/src/assets/images/ghost-pro-logo-dark.png
Binary file modified apps/admin/src/assets/images/ghost-pro-logo.png
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.50",
"version": "2.68.51",
"license": "MIT",
"repository": "https://github.com/TryGhost/Ghost",
"author": "Ghost Foundation",
Expand Down
Binary file modified apps/portal/src/images/close.png
Binary file modified ghost/admin/public/assets/img/ap-nodes.png
Binary file modified ghost/admin/public/assets/img/buffer.png
Binary file modified ghost/admin/public/assets/img/firstpromoter.png
Binary file modified ghost/admin/public/assets/img/footer-marketplace-bg.png
Binary file modified ghost/admin/public/assets/img/google-analytics.png
Binary file modified ghost/admin/public/assets/img/gradient-bg.png
Binary file modified ghost/admin/public/assets/img/large.png
Binary file modified ghost/admin/public/assets/img/latest-posts-1.png
Binary file modified ghost/admin/public/assets/img/logos/ghost-logo-black-1.png
Binary file modified ghost/admin/public/assets/img/logos/orb-black-1.png
Binary file modified ghost/admin/public/assets/img/logos/orb-black-2.png
Binary file modified ghost/admin/public/assets/img/logos/orb-black-3.png
Binary file modified ghost/admin/public/assets/img/logos/orb-black-4.png
Binary file modified ghost/admin/public/assets/img/logos/orb-black-5.png
Binary file modified ghost/admin/public/assets/img/logos/orb-pink-3.png
Binary file modified ghost/admin/public/assets/img/medium.png
Binary file modified ghost/admin/public/assets/img/mentions-background.png
Binary file modified ghost/admin/public/assets/img/orb-squircle.png
Binary file modified ghost/admin/public/assets/img/pintura-screenshot.png
Binary file modified ghost/admin/public/assets/img/pintura.png
Binary file modified ghost/admin/public/assets/img/plausible.png
Binary file modified ghost/admin/public/assets/img/small.png
Binary file modified ghost/admin/public/assets/img/touch-icon-ipad.png
Binary file modified ghost/admin/public/assets/img/touch-icon-iphone.png
Binary file modified ghost/admin/public/assets/img/ulysses.png
Binary file modified ghost/admin/public/assets/img/user-cover.png
Binary file modified ghost/admin/public/assets/img/user-image.png
Binary file modified ghost/core/core/server/web/gift-preview/gift-card-noise.png
2 changes: 1 addition & 1 deletion ghost/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@
"probability-distributions": "0.9.1",
"probe-image-size": "7.2.3",
"rss": "1.2.2",
"sanitize-html": "2.17.0",
"sanitize-html": "2.17.4",
"semver": "7.7.4",
"sharp": "0.34.5",
"simple-dom": "1.4.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,90 +1,71 @@
const assert = require('node:assert/strict');
const {assertExists} = require('../../../../utils/assertions');
const sinon = require('sinon');
const express = require('../../../../../core/shared/express');
const request = require('supertest');
const redirectGhostToAdmin = require('../../../../../core/frontend/web/middleware/redirect-ghost-to-admin');
const {handleAdminRedirect} = require('../../../../../core/frontend/web/middleware/redirect-ghost-to-admin');
const configUtils = require('../../../../utils/config-utils');
const urlUtils = require('../../../../../core/shared/url-utils');

describe('Redirect Ghost To Admin', function () {
let req;
let res;
let redirectToAdminStub;

beforeEach(function () {
req = {
path: ''
};
res = {
redirect: sinon.spy()
};

redirectToAdminStub = sinon.stub(urlUtils, 'redirectToAdmin');
});

afterEach(async function () {
sinon.restore();
await configUtils.restore();
});

// Helper function to test redirect behavior
const expectPathCallsRedirectToAdminWith = (inputPath, expectedAdminPath) => {
req.path = inputPath;
handleAdminRedirect(req, res);
sinon.assert.calledOnce(redirectToAdminStub);
sinon.assert.calledWith(redirectToAdminStub, 301, res, expectedAdminPath);
const createApp = () => {
const app = express('test');
app.use(redirectGhostToAdmin());
app.use((req, res) => {
res.sendStatus(204);
});
return app;
};

describe('handleAdminRedirect function', function () {
it('should redirect /ghost (no trailing slash) to admin root', function () {
expectPathCallsRedirectToAdminWith('/ghost', '/');
});
const expectRedirectsToAdmin = async (inputPath, expectedAdminPath) => {
await request(createApp())
.get(inputPath)
.expect(301)
.expect('Location', `http://localhost:2368/ghost${expectedAdminPath}`);
};

it('should redirect /ghost/ to admin root', function () {
expectPathCallsRedirectToAdminWith('/ghost/', '/');
describe('redirects', function () {
beforeEach(function () {
configUtils.set({
url: 'http://localhost:2368',
admin: {redirects: true}
});
});

it('should redirect /ghost/api/admin/site/ to admin API', function () {
expectPathCallsRedirectToAdminWith('/ghost/api/admin/site/', '/api/admin/site/');
it('redirects /ghost (no trailing slash) to admin root', async function () {
await expectRedirectsToAdmin('/ghost', '/');
});
});

describe('redirectGhostToAdmin middleware', function () {
it('should return router with no routes when admin:redirects is disabled', function () {
configUtils.set({admin: {redirects: false}});

const router = redirectGhostToAdmin();

// When disabled, no ghost redirect routes should be added
const ghostRoutes = router.stack.filter(layer => layer.regexp.source.includes('ghost'));
assert.equal(ghostRoutes.length, 0);
it('redirects /ghost/ to admin root', async function () {
await expectRedirectsToAdmin('/ghost/', '/');
});

it('should add admin redirect route when admin:redirects is enabled', function () {
configUtils.set({admin: {redirects: true}});
it('redirects /ghost/api/admin/site/ to admin API', async function () {
await expectRedirectsToAdmin('/ghost/api/admin/site/', '/api/admin/site/');
});
});

const router = redirectGhostToAdmin();
describe('does not redirect', function () {
it('when admin redirects are disabled', async function () {
configUtils.set({admin: {redirects: false}});

// Find the ghost redirect route
const ghostRoute = router.stack.find(layer => layer.regexp.source.includes('ghost'));
assertExists(ghostRoute);
await request(createApp())
.get('/ghost')
.expect(204);
});

it('admin redirect route should match the correct regex pattern', function () {
it('unrelated paths', async function () {
configUtils.set({admin: {redirects: true}});

const router = redirectGhostToAdmin();
const route = router.stack.find(layer => layer.regexp.source.includes('ghost'));

// Test that the regex matches the expected paths
assert.equal(route.regexp.test('/ghost'), true);
assert.equal(route.regexp.test('/ghost/'), true);
assert.equal(route.regexp.test('/ghost/api/admin/site/'), true);

// Test that it doesn't match unrelated paths
assert.equal(route.regexp.test('/admin'), false);
assert.equal(route.regexp.test('/.ghost/'), false);
assert.equal(route.regexp.test('/tag/ghost/'), false);
await request(createApp())
.get('/admin')
.expect(204);
await request(createApp())
.get('/.ghost/')
.expect(204);
await request(createApp())
.get('/tag/ghost/')
.expect(204);
});
});
});
Loading
Loading