Skip to content

Refactored update-check notifications and added opt-out config#27877

Draft
rob-ghost wants to merge 1 commit into
feat/ber-3651-ghsa-notificationsfrom
feat/operator-update-checks
Draft

Refactored update-check notifications and added opt-out config#27877
rob-ghost wants to merge 1 commit into
feat/ber-3651-ghsa-notificationsfrom
feat/operator-update-checks

Conversation

@rob-ghost
Copy link
Copy Markdown
Contributor

@rob-ghost rob-ghost commented May 13, 2026

Problem

Operators have no way to disable update notifications today. privacy.useUpdateCheck: false looks like an off switch but only changes POST → GET — the poll still happens and the response still produces banners and admin emails. For managed hosts running Ghost on behalf of customers, that means customers receive banner notifications and emails about updates they have no power to action.

Solution

A single new operator-facing config that gates notifications without sacrificing Ghost's telemetry data. The two concerns — "should Ghost phone home with usage stats?" and "should my admins/customers be informed about updates?" — are now independently controllable. Self-hoster defaults stay the same; managed hosts get the off switch they need.

The composition is two-knob, four-quadrant: default everything, telemetry only, notifications only, or neither (the last case short-circuits the poll entirely since there's no purpose left).

The same config will also gate the GHSA security advisory feed once that lands — operators get one decision to make, not two. If finer granularity is needed later (separate auto-update behaviour, per-feed control), the namespace accommodates it.

Stacking

Built on top of the notifications domain refactor in #27868. The base branch is set accordingly so the diff shows only this PR's changes.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 13, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 313b3bda-bc48-4a99-a5ae-a494ee9345fb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/operator-update-checks

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added the migration [pull request] Includes migration for review label May 13, 2026
@rob-ghost rob-ghost changed the base branch from main to feat/ber-3651-ghsa-notifications May 13, 2026 19:36
@rob-ghost rob-ghost removed the migration [pull request] Includes migration for review label May 13, 2026
@TryGhost TryGhost deleted a comment from github-actions Bot May 13, 2026
@rob-ghost rob-ghost force-pushed the feat/ber-3651-ghsa-notifications branch from f8fa616 to be73213 Compare May 13, 2026 22:46
When set to false, the update-check service still polls (so Ghost
continues to receive telemetry on the install) but the response is
not processed into notifications — no banner, no admin email. Future
upstream feeds like GHSA will read the same key.

If an operator wants the install to stay silent end-to-end, the
existing privacy.useUpdateCheck=false combined with this new setting
short-circuits the poll entirely: neither purpose remains.

The gate composes with the existing privacy lever as two independent
opt-outs, not a single switch — operators can disable just
notifications, just telemetry, both, or neither.
@rob-ghost rob-ghost force-pushed the feat/operator-update-checks branch from 63dad01 to c113035 Compare May 14, 2026 09:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant