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
3 changes: 2 additions & 1 deletion apps/comments-ui/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ export default (function viteConfig() {
},
preview: {
host: '0.0.0.0',
port: 7173
port: 7173,
cors: true
},
server: {
port: 5368
Expand Down
3 changes: 2 additions & 1 deletion apps/portal/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ export default defineConfig((config) => {
},
preview: {
host: '0.0.0.0',
port: 4175
port: 4175,
cors: true
},
server: {
port: 5368
Expand Down
2 changes: 1 addition & 1 deletion apps/shade/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"@testing-library/react": "14.3.1",
"@testing-library/react-hooks": "8.0.1",
"@types/lodash-es": "4.17.12",
"@types/node": "22.15.3",
"@types/node": "22.15.7",
"@vitejs/plugin-react": "4.4.1",
"c8": "8.0.1",
"chai": "4.5.0",
Expand Down
125 changes: 61 additions & 64 deletions compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,62 @@
name: ghost

# Template to share volumes and environment variable between all services running the same base image
x-service-template: &service-template
volumes:
- .:/home/ghost
- ${SSH_AUTH_SOCK}:/ssh-agent
- ${HOME}/.gitconfig:/root/.gitconfig:ro
- node_modules_ghost_root:/home/ghost/node_modules:delegated
- node_modules_ghost_admin:/home/ghost/ghost/admin/node_modules:delegated
- node_modules_ghost_api-framework:/home/ghost/ghost/api-framework/node_modules:delegated
- node_modules_ghost_constants:/home/ghost/ghost/constants/node_modules:delegated
- node_modules_ghost_core:/home/ghost/ghost/core/node_modules:delegated
- node_modules_ghost_custom-fonts:/home/ghost/ghost/custom-fonts/node_modules:delegated
- node_modules_ghost_domain-events:/home/ghost/ghost/domain-events/node_modules:delegated
- node_modules_ghost_donations:/home/ghost/ghost/donations/node_modules:delegated
- node_modules_ghost_email-addresses:/home/ghost/ghost/email-addresses/node_modules:delegated
- node_modules_ghost_email-service:/home/ghost/ghost/email-service/node_modules:delegated
- node_modules_ghost_html-to-plaintext:/home/ghost/ghost/html-to-plaintext/node_modules:delegated
- node_modules_ghost_i18n:/home/ghost/ghost/i18n/node_modules:delegated
- node_modules_ghost_job-manager:/home/ghost/ghost/job-manager/node_modules:delegated
- node_modules_ghost_link-replacer:/home/ghost/ghost/link-replacer/node_modules:delegated
- node_modules_ghost_member-attribution:/home/ghost/ghost/member-attribution/node_modules:delegated
- node_modules_ghost_members-csv:/home/ghost/ghost/members-csv/node_modules:delegated
- node_modules_ghost_mw-error-handler:/home/ghost/ghost/mw-error-handler/node_modules:delegated
- node_modules_ghost_mw-vhost:/home/ghost/ghost/mw-vhost/node_modules:delegated
- node_modules_ghost_offers:/home/ghost/ghost/offers/node_modules:delegated
- node_modules_ghost_post-events:/home/ghost/ghost/post-events/node_modules:delegated
- node_modules_ghost_post-revisions:/home/ghost/ghost/post-revisions/node_modules:delegated
- node_modules_ghost_prometheus-metrics:/home/ghost/ghost/prometheus-metrics/node_modules:delegated
- node_modules_ghost_security:/home/ghost/ghost/security/node_modules:delegated
- node_modules_ghost_tiers:/home/ghost/ghost/tiers/node_modules:delegated
- node_modules_ghost_webmentions:/home/ghost/ghost/webmentions/node_modules:delegated
- node_modules_apps_admin-x-activitypub:/home/ghost/apps/admin-x-activitypub/node_modules:delegated
- node_modules_apps_admin-x-design-system:/home/ghost/apps/admin-x-design-system/node_modules:delegated
- node_modules_apps_admin-x-framework:/home/ghost/apps/admin-x-framework/node_modules:delegated
- node_modules_apps_admin-x-settings:/home/ghost/apps/admin-x-settings/node_modules:delegated
- node_modules_apps_announcement-bar:/home/ghost/apps/announcement-bar/node_modules:delegated
- node_modules_apps_comments-ui:/home/ghost/apps/comments-ui/node_modules:delegated
- node_modules_apps_portal:/home/ghost/apps/portal/node_modules:delegated
- node_modules_apps_posts:/home/ghost/apps/posts/node_modules:delegated
- node_modules_apps_shade:/home/ghost/apps/shade/node_modules:delegated
- node_modules_apps_signup-form:/home/ghost/apps/signup-form/node_modules:delegated
- node_modules_apps_sodo-search:/home/ghost/apps/sodo-search/node_modules:delegated
- node_modules_apps_stats:/home/ghost/apps/stats/node_modules:delegated
environment:
- DEBUG=${DEBUG:-}
- SSH_AUTH_SOCK=/ssh-agent
- NX_DAEMON=${NX_DAEMON:-true}
- GHOST_DEV_IS_DOCKER=true
- GHOST_DEV_APP_FLAGS=${GHOST_DEV_APP_FLAGS:-}
- GHOST_UPSTREAM=${GHOST_UPSTREAM:-}
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY:-}
- STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY:-}
- STRIPE_ACCOUNT_ID=${STRIPE_ACCOUNT_ID:-}

services:
ghost:
<<: *service-template
build:
context: .
dockerfile: ./.docker/Dockerfile
Expand All @@ -19,91 +75,32 @@ services:
- "7173:7173" # Comments
- "7174:7174" # Comments HTTPS
profiles: [ ghost ]
volumes:
# Mount the source code
- .:/home/ghost

## SSH Agent forwarding
- ${SSH_AUTH_SOCK}:/ssh-agent

## Git config
- ${HOME}/.gitconfig:/root/.gitconfig:ro

# Volume exclusions:
## Prevent collisions between host and container node_modules
- node_modules_ghost_root:/home/ghost/node_modules:delegated
- node_modules_ghost_admin:/home/ghost/ghost/admin/node_modules:delegated
- node_modules_ghost_api-framework:/home/ghost/ghost/api-framework/node_modules:delegated
- node_modules_ghost_constants:/home/ghost/ghost/constants/node_modules:delegated
- node_modules_ghost_core:/home/ghost/ghost/core/node_modules:delegated
- node_modules_ghost_custom-fonts:/home/ghost/ghost/custom-fonts/node_modules:delegated
- node_modules_ghost_domain-events:/home/ghost/ghost/domain-events/node_modules:delegated
- node_modules_ghost_donations:/home/ghost/ghost/donations/node_modules:delegated
- node_modules_ghost_email-addresses:/home/ghost/ghost/email-addresses/node_modules:delegated
- node_modules_ghost_email-service:/home/ghost/ghost/email-service/node_modules:delegated
- node_modules_ghost_html-to-plaintext:/home/ghost/ghost/html-to-plaintext/node_modules:delegated
- node_modules_ghost_i18n:/home/ghost/ghost/i18n/node_modules:delegated
- node_modules_ghost_job-manager:/home/ghost/ghost/job-manager/node_modules:delegated
- node_modules_ghost_link-replacer:/home/ghost/ghost/link-replacer/node_modules:delegated
- node_modules_ghost_member-attribution:/home/ghost/ghost/member-attribution/node_modules:delegated
- node_modules_ghost_members-csv:/home/ghost/ghost/members-csv/node_modules:delegated
- node_modules_ghost_mw-error-handler:/home/ghost/ghost/mw-error-handler/node_modules:delegated
- node_modules_ghost_mw-vhost:/home/ghost/ghost/mw-vhost/node_modules:delegated
- node_modules_ghost_offers:/home/ghost/ghost/offers/node_modules:delegated
- node_modules_ghost_post-events:/home/ghost/ghost/post-events/node_modules:delegated
- node_modules_ghost_post-revisions:/home/ghost/ghost/post-revisions/node_modules:delegated
- node_modules_ghost_prometheus-metrics:/home/ghost/ghost/prometheus-metrics/node_modules:delegated
- node_modules_ghost_security:/home/ghost/ghost/security/node_modules:delegated
- node_modules_ghost_tiers:/home/ghost/ghost/tiers/node_modules:delegated
- node_modules_ghost_webmentions:/home/ghost/ghost/webmentions/node_modules:delegated
- node_modules_apps_admin-x-activitypub:/home/ghost/apps/admin-x-activitypub/node_modules:delegated
- node_modules_apps_admin-x-design-system:/home/ghost/apps/admin-x-design-system/node_modules:delegated
- node_modules_apps_admin-x-framework:/home/ghost/apps/admin-x-framework/node_modules:delegated
- node_modules_apps_admin-x-settings:/home/ghost/apps/admin-x-settings/node_modules:delegated
- node_modules_apps_announcement-bar:/home/ghost/apps/announcement-bar/node_modules:delegated
- node_modules_apps_comments-ui:/home/ghost/apps/comments-ui/node_modules:delegated
- node_modules_apps_portal:/home/ghost/apps/portal/node_modules:delegated
- node_modules_apps_posts:/home/ghost/apps/posts/node_modules:delegated
- node_modules_apps_shade:/home/ghost/apps/shade/node_modules:delegated
- node_modules_apps_signup-form:/home/ghost/apps/signup-form/node_modules:delegated
- node_modules_apps_sodo-search:/home/ghost/apps/sodo-search/node_modules:delegated
- node_modules_apps_stats:/home/ghost/apps/stats/node_modules:delegated
tty: true
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
environment:
- DEBUG=${DEBUG:-}
- SSH_AUTH_SOCK=/ssh-agent
- NX_DAEMON=${NX_DAEMON:-true}
- GHOST_DEV_IS_DOCKER=true
- GHOST_DEV_APP_FLAGS=${GHOST_DEV_APP_FLAGS:-}
- GHOST_UPSTREAM=${GHOST_UPSTREAM:-}
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY:-}
- STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY:-}
- STRIPE_ACCOUNT_ID=${STRIPE_ACCOUNT_ID:-}

tinybird:
extends:
service: ghost
<<: *service-template
build:
context: .
dockerfile: ./.docker/Dockerfile
target: tinybird
working_dir: /home/ghost/ghost/web-analytics
profiles: [ tinybird]
profiles: [ tinybird ]
tty: true

browser-tests:
extends:
service: ghost
<<: *service-template
build:
context: .
dockerfile: ./.docker/Dockerfile
target: browser-tests
command: [ "yarn", "test:browser" ]
profiles: [ browser-tests ]
tty: true

mysql:
image: mysql:8.4.5
Expand Down
5 changes: 5 additions & 0 deletions ghost/admin/.lint-todo
Original file line number Diff line number Diff line change
Expand Up @@ -558,3 +558,8 @@ add|ember-template-lint|no-redundant-role|136|24|136|24|ce988c0098c6e4845fc3307e
add|ember-template-lint|no-redundant-role|91|40|91|40|9d2eded16257516b455504637aab4057b3c0c9ef|1745798400000|1756166400000|1761350400000|app/templates/mentions.hbs
add|ember-template-lint|no-redundant-role|113|20|113|20|0418319e2dce98b674dbb6657d185f465d21f87d|1745798400000|1756166400000|1761350400000|app/templates/mentions.hbs
add|ember-template-lint|no-redundant-role|11|20|11|20|bc4fbabe3d468440d8a2c70e92cec991caca41e2|1745798400000|1756166400000|1761350400000|app/components/dashboard/onboarding/share-modal.hbs
remove|ember-template-lint|no-action|73|82|73|82|f30d469e4ae668f05aca2f92a124a6b4748847a3|1730678400000|1741046400000|1746230400000|app/components/gh-post-settings-menu.hbs
remove|ember-template-lint|no-action|80|92|80|92|f30d469e4ae668f05aca2f92a124a6b4748847a3|1730678400000|1741046400000|1746230400000|app/components/gh-post-settings-menu.hbs
remove|ember-template-lint|no-action|5|14|5|14|a90edd9a99596008f60bfcdbc6befe7fe8d26321|1730678400000|1741046400000|1746230400000|app/components/gh-psm-tags-input.hbs
remove|ember-template-lint|no-action|6|14|6|14|3924d7cfb394cbcfd6b1bf9cf13a5040ac8f94b5|1743984000000|1754352000000|1759536000000|app/components/gh-psm-tags-input.hbs
remove|ember-template-lint|no-action|10|20|10|20|8b7921c0514cfd3fec8c3a474187048bc26faf7f|1743984000000|1754352000000|1759536000000|app/components/gh-psm-tags-input.hbs
8 changes: 4 additions & 4 deletions ghost/admin/app/components/gh-post-settings-menu.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,14 @@
{{#unless this.session.user.isContributor}}
<div class="form-group">
<label for="tag-input">Tags</label>
<GhPsmTagsInput @triggerClass="gh-input-x" @post={{this.post}} @savePostOnChange={{action "savePost"}} @triggerId="tag-input" />
<GhPsmTagsInput @triggerClass="gh-input-x" @post={{this.post}} @savePostOnChange={{this.savePost}} @triggerId="tag-input" />
</div>
{{/unless}}

{{#if this.showVisibilityInput}}
<GhFormGroup @errors={{this.post.errors}} @hasValidated={{this.post.hasValidated}} @property="visibility">
<label for="visibility-input">{{capitalize @post.displayName}} access</label>
<GhPsmVisibilityInput @post={{this.post}} @savePostOnChange={{action "savePost"}} @triggerId="visibility-input" />
<GhPsmVisibilityInput @post={{this.post}} @savePostOnChange={{this.savePost}} @triggerId="visibility-input" />
</GhFormGroup>

{{#if (eq this.post.visibility "tiers")}}
Expand Down Expand Up @@ -617,7 +617,7 @@
@focus-out={{action "setMetaTitle" this.metaTitleScratch}}
@stopEnterKeyDownPropagation={{true}}
data-test-field="meta-title" />
<p>Recommended: <b>60</b> characters. Youve used {{gh-count-down-characters this.metaTitleScratch 60}}</p>
<p>Recommended: <b>60</b> characters. You've used {{gh-count-down-characters this.metaTitleScratch 60}}</p>
<GhErrorMessage @errors={{this.post.errors}} @property="meta-title" />
</GhFormGroup>

Expand All @@ -633,7 +633,7 @@
@focus-out={{action "setMetaDescription" this.metaDescriptionScratch}}
@stopEnterKeyDownPropagation="true"
data-test-field="meta-description" />
<p>Recommended: <b>145</b> characters. Youve used {{gh-count-down-characters this.metaDescriptionScratch 145}}</p>
<p>Recommended: <b>145</b> characters. You've used {{gh-count-down-characters this.metaDescriptionScratch 145}}</p>
<GhErrorMessage @errors={{this.post.errors}} @property="meta-description" />
</GhFormGroup>

Expand Down
6 changes: 3 additions & 3 deletions ghost/admin/app/components/gh-psm-tags-input.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
@extra={{hash
tokenComponent=(component "gh-token-input/tag-token")
}}
@onChange={{action "updateTags"}}
@onCreate={{action "createTag"}}
@onChange={{this.updateTags}}
@onCreate={{this.createTag}}
@options={{this.availableTags}}
@renderInPlace={{true}}
@selected={{this.post.tags}}
@showCreateWhen={{action "hideCreateOptionOnMatchingTag"}}
@showCreateWhen={{this.hideCreateOptionOnMatchingTag}}
@triggerId={{this.triggerId}}
@triggerClass={{@triggerClass}}
/>
3 changes: 2 additions & 1 deletion ghost/core/core/server/services/members/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,8 @@ function createApiInstance(config) {
emailSuppressionList,
settingsCache,
sentry,
settingsHelpers
settingsHelpers,
urlUtils
});

return membersApiInstance;
Expand Down
Loading
Loading