Skip to content

Added labs flag for in-app support - #32546

Merged
mike182uk merged 1 commit into
mainfrom
mike/gva-1144-in-app-support-labs-flag
Nov 4, 2026
Merged

mike182uk merged 1 commit into
mainfrom
mike/gva-1144-in-app-support-labs-flag

Conversation

@mike182uk

Copy link
Copy Markdown
Member

ref https://linear.app/ghost/issue/GVA-1144/add-labs-flag-to-ghost-for-in-app-support

In-app support will let Ghost(Pro) users open Help in a sidebar inside Admin rather than a new tab. Admin will mark the Help links with an attribute when this flag is on, and the host script binds to those links to open the support app. Keeping it behind a private flag means the Admin changes can merge and deploy before the support app and host script are ready, with no change for anyone until the flag is enabled.

ref https://linear.app/ghost/issue/GVA-1144/add-labs-flag-to-ghost-for-in-app-support

In-app support will let Ghost(Pro) users open Help in a sidebar inside Admin
rather than a new tab. Admin will mark the Help links with an attribute when
this flag is on, and the host script binds to those links to open the support
app. Keeping it behind a private flag means the Admin changes can merge and
deploy before the support app and host script are ready, with no change for
anyone until the flag is enabled.
@coderabbitai

coderabbitai Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The change adds inAppSupport to the private Labs feature list and to the Admin Labs settings list. The Admin entry is named “In-app support” and notes that it requires a host script to provide the support app.

Possibly related PRs

  • TryGhost/Ghost#32087: This PR also changes the Admin Help and support experience, adding a support-request form inside the Admin help chat.

Suggested reviewers: 9larsons

Merge Risk: Minimal · up to ff6bd

The lab flag registration and Admin setting are consistent and safe to merge.

Pre-merge checks: Passed 7
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the main change: adding a Labs flag for in-app support.
Description check Passed The description directly explains the in-app support behavior, the private flag, and the deployment purpose. It matches the changeset.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Type-Safe Boundaries Passed PASS. The PR only adds the static inAppSupport flag to the typed Admin feature list and the private Labs allowlist. It does not consume HTTP, API, environment, database, filesystem, queue, or event …
New Files Are Typescript Passed The PR changes two pre-existing files: one .tsx file and one .js file. The diff reports both as modified (M), and both existed in the base ref. The PR adds no new .js, .jsx, .cjs, or `.mjs…
Tooling Ownership Passed PASS. The PR changes only Admin Labs UI and Ghost Core Labs policy. apps/admin/src/settings/advanced/labs/private-features.tsx places the toggle with the existing private feature entries, and `ghost…
Full details: Type-Safe Boundaries

Explanation

PASS. The PR only adds the static inAppSupport flag to the typed Admin feature list and the private Labs allowlist. It does not consume HTTP, API, environment, database, filesystem, queue, or event data. It adds no any, unchecked as, @ts-ignore, or @ts-nocheck, and it does not duplicate a Zod-described type.

Full details: New Files Are Typescript

Explanation

The PR changes two pre-existing files: one .tsx file and one .js file. The diff reports both as modified (M), and both existed in the base ref. The PR adds no new .js, .jsx, .cjs, or .mjs source file.

Full details: Tooling Ownership

Explanation

PASS. The PR changes only Admin Labs UI and Ghost Core Labs policy. apps/admin/src/settings/advanced/labs/private-features.tsx places the toggle with the existing private feature entries, and ghost/core/shared/labs.js places inAppSupport in PRIVATE_FEATURES, which feeds the writable allowlist and flag list. The existing settings write and input-filter paths consume that shared list. No scripts, tools, configuration, or misplaced scripts folder changed.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Tip

🎯 Customize your risk assessments

Guide how CodeRabbit assesses merge risk and security architecture risk. Highlight sensitive changes and explain your security boundaries using Merge Risk Instructions and Security Risk Instructions in your review settings. Security architecture risk assessments require the Advanced plan or above.

✅ Automatic approvals, with your rules

Let CodeRabbit approve pull requests once required threads are resolved, pre-merge checks pass, and your risk limits are met. Enable Automatic approvals in review settings, with overrides for teams or file paths.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 82db3de and ff6bdb7.

Files selected for processing: 2
  • apps/admin/src/settings/advanced/labs/private-features.tsx
  • ghost/core/shared/labs.js

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Recent review details
Context from checks skipped due to timeout: 15
  • GitHub Check: Build Ghost-CLI archive
  • GitHub Check: CodeRabbit
  • GitHub Check: App Playwright Acceptance Tests (@tryghost/admin 1/3)
  • GitHub Check: Unit tests (Node 24.20.0)
  • GitHub Check: Typecheck
  • GitHub Check: App Playwright Acceptance Tests (@tryghost/admin 3/3)
  • GitHub Check: Legacy tests (Node 22.23.4, mysql8)
  • GitHub Check: Acceptance tests (Node 22.23.4, mysql8)
  • GitHub Check: App Playwright Acceptance Tests (@tryghost/admin 2/3)
  • GitHub Check: Legacy tests (Node 24.20.0, mysql8)
  • GitHub Check: Build Docker Images
  • GitHub Check: Unit tests (Node 22.23.4)
  • GitHub Check: Acceptance tests (Node 24.20.0, mysql8)
  • GitHub Check: Lint
  • GitHub Check: Analyze (javascript-typescript)
Additional context used
Code guidelines: 6
docs/practices/internationalization.md — configured
docs/practices/error-handling.md — configured
apps/shade/AGENTS.md — configured
tools/README.md — configured
docs/codebase/direction.md — auto-discovered
docs/codebase/monorepo-structure.md — configured
Path-based instructions: 10
Review Admin UI for existing Shade reuse, correct component layer, semantic tokens, and accessible interaction states.

CodeRabbit configuration file

Files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
New source files must be TypeScript: flag new JS files as a required change unless exempt (DB migrations, tool/config files, tools/scripts/, docker/, generated code).

CodeRabbit configuration file

Files:

  • ghost/core/shared/labs.js
Review lens: "where does this data become trusted?" Boundary data (HTTP input, external API/SDK responses, env/config, DB/filesystem reads, queue/webhook/event payloads) is `unknown` until validated — Zod by default.

CodeRabbit configuration file

Files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
Prioritise concrete correctness, security, data-integrity, compatibility, and regression risks.

CodeRabbit configuration file

Files:

  • ghost/core/shared/labs.js
  • apps/admin/src/settings/advanced/labs/private-features.tsx
Applicability reference: AGENTS.md: # AGENTS.md **Translations:** follow the [internationalization guide](docs/practices/internationalization.md).

CodeRabbit inference engine (docs/practices/internationalization.md)

Files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
Source excerpt: Use that fallback when there is no safe, useful message.

CodeRabbit inference engine (docs/practices/error-handling.md)

Files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
Applicability reference: AGENTS.md: # AGENTS.md **Admin UI:** read [`apps/admin/README.md`](apps/admin/README.md) and [`apps/shade/AGENTS.md`](apps/shade/AGENTS.md).

CodeRabbit inference engine (apps/shade/AGENTS.md)

Files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
Applicability reference: AGENTS.md: # AGENTS.md **Repository tooling:** read the [tooling ownership guide](tools/README.md) Source excerpt: | Job | Home | How it runs | | ---------------------------------------------------...

CodeRabbit inference engine (tools/README.md)

Files:

  • ghost/core/shared/labs.js
  • apps/admin/src/settings/advanced/labs/private-features.tsx
Applicability reference: AGENTS.md: # AGENTS.md Start with: [Codebase direction](docs/codebase/direction.md) Source excerpt: Build new Admin UI in [`apps/admin/`](../../apps/admin/) with `admin-x-framework` for API access and Shade for UI.

CodeRabbit inference engine (docs/codebase/direction.md)

Files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
Applicability reference: AGENTS.md: # AGENTS.md Start with: [Monorepo structure](docs/codebase/monorepo-structure.md) AGENTS.md: # AGENTS.md **Ghost Core:** use the [server map](docs/codebase/monorepo-structure.md#ghost-co...

CodeRabbit inference engine (docs/codebase/monorepo-structure.md)

Files:

  • ghost/core/shared/labs.js
  • apps/admin/src/settings/advanced/labs/private-features.tsx
Learnings: 1
Learning: 2026-07-21T19:57:01.324Z
Learnt from: troyciesco
Repo: TryGhost/Ghost PR: 29497
File: apps/admin/src/automations/components/canvas/off-value.tsx:4-4
Timestamp: 2026-07-21T19:57:01.324Z
Learning: Admin UI in Ghost is intentionally not localized. During code review, do not request adding i18n/translation hooks, wrappers, or new locale keys (e.g., updates to `packages/i18n/locales/en/ghost.json`) for Admin UI strings, including any React components under `apps/admin/src/`.

Applied to files:

  • apps/admin/src/settings/advanced/labs/private-features.tsx
Additional comments: 2
ghost/core/shared/labs.js: 1

66-66: LGTM!

apps/admin/src/settings/advanced/labs/private-features.tsx: 1

105-110: LGTM!

@mike182uk
mike182uk marked this pull request as ready for review November 4, 2026 08:22
@nx-cloud

nx-cloud Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix

Ensure the fix-ci command is configured to always run in your CI pipeline to get automatic fixes in future runs. For more information, please see https://nx.dev/ci/features/self-healing-ci


View your CI Pipeline Execution ↗ for commit ff6bdb7

Command Status Duration Result
nx run ghost:test:ci:integration ✅ Succeeded 2m 32s View ↗
nx run ghost:test:bullmq:scenarios ✅ Succeeded 57s View ↗
nx run ghost:test:integration ✅ Succeeded 1m 45s View ↗
nx run ghost:test:bullmq ✅ Succeeded 48s View ↗
nx run ghost:test:ci:e2e ✅ Succeeded 5m 11s View ↗
nx run @tryghost/admin:test:acceptance --shard=1/3 ✅ Succeeded 5m 25s View ↗
nx run @tryghost/admin:test:acceptance --shard=3/3 ✅ Succeeded 5m 38s View ↗
nx run @tryghost/admin:test:acceptance --shard=2/3 ✅ Succeeded 5m 28s View ↗
Additional runs (11) ✅ Succeeded ... View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-11-04 08:33:51 UTC

@codecov

codecov Bot commented Nov 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.88%. Comparing base (a654d53) to head (ff6bdb7).
⚠️ Report is 5 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #32546      +/-   ##
==========================================
+ Coverage   85.85%   85.88%   +0.03%     
==========================================
  Files        1414     1414              
  Lines       53618    53618              
  Branches     9237     9239       +2     
==========================================
+ Hits        46034    46051      +17     
+ Misses       6445     6433      -12     
+ Partials     1139     1134       -5     
Flag Coverage Δ
e2e-tests 73.29% <ø> (+0.06%) ⬆️
unit-tests 69.24% <ø> (+0.15%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mike182uk
mike182uk merged commit a3536ac into main Nov 4, 2026
63 checks passed
@mike182uk
mike182uk deleted the mike/gva-1144-in-app-support-labs-flag branch November 4, 2026 08:44
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