Skip to content

Error before app config link prompts in non-TTY#7687

Draft
gonzaloriestra wants to merge 1 commit into
cli-interactivity/theme-dev-reconciliationfrom
cli-interactivity/non-tty-link-error
Draft

Error before app config link prompts in non-TTY#7687
gonzaloriestra wants to merge 1 commit into
cli-interactivity/theme-dev-reconciliationfrom
cli-interactivity/non-tty-link-error

Conversation

@gonzaloriestra
Copy link
Copy Markdown
Contributor

@gonzaloriestra gonzaloriestra commented Jun 1, 2026

WHY are these changes introduced?

Related to https://github.com/shop/issues-develop/issues/22869

app config link can still reach prompt-only paths when a caller has not provided enough information to choose the remote app or local config file name. In non-interactive environments, that should fail with actionable guidance instead of attempting to render prompts.

This is especially important for commands that call linking indirectly: they should surface that the project needs to be linked first with explicit flags, rather than hanging or failing inside prompt rendering.

WHAT is this pull request doing?

  • Adds a shared non-TTY guard before app config link prompts for remote app selection.
  • Adds the same guard before app config link prompts for a new config file name.
  • Suggests rerunning shopify app config link with the missing required flags, such as --client-id or --file-name.
  • Covers both non-TTY failure paths in the link service tests.

How to test your changes?

  • pnpm vitest run packages/app/src/cli/services/app/config/link.test.ts
  • pnpm vitest run packages/app/src/cli/services/app/config/link.test.ts packages/app/src/cli/commands/app/config/link.test.ts packages/app/src/cli/commands/app/config/validate.test.ts

Checklist

  • I've considered possible cross-platform impacts (Mac, Linux, Windows)
  • I've considered possible documentation changes
  • I've considered analytics changes to measure impact
  • The change is user-facing, so I've added a changelog entry with pnpm changeset add

Copy link
Copy Markdown
Contributor Author

gonzaloriestra commented Jun 1, 2026

@github-actions github-actions Bot added the no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users. label Jun 1, 2026
@gonzaloriestra gonzaloriestra changed the base branch from cli-interactivity/app-config-validate to graphite-base/7687 June 1, 2026 12:39
@gonzaloriestra gonzaloriestra force-pushed the cli-interactivity/non-tty-link-error branch from eebbb8e to 733fe27 Compare June 1, 2026 12:39
@gonzaloriestra gonzaloriestra changed the base branch from graphite-base/7687 to cli-interactivity/theme-dev-reconciliation June 1, 2026 12:39
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Differences in type declarations

We detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:

  • Some seemingly private modules might be re-exported through public modules.
  • If the branch is behind main you might see odd diffs, rebase main into this branch.

New type declarations

We found no new type declarations in this PR

Existing type declarations

packages/cli-kit/dist/private/node/constants.d.ts
@@ -7,6 +7,7 @@ export declare const environmentVariables: {
     enableCliRedirect: string;
     env: string;
     firstPartyDev: string;
+    hostedApps: string;
     noAnalytics: string;
     optOutInstrumentation: string;
     appAutomationToken: string;
packages/cli-kit/dist/public/common/version.d.ts
@@ -1 +1 @@
-export declare const CLI_KIT_VERSION = "4.1.0";
\ No newline at end of file
+export declare const CLI_KIT_VERSION = "4.0.0";
\ No newline at end of file
packages/cli-kit/dist/public/node/context/local.d.ts
@@ -42,6 +42,13 @@ export declare function isShopify(env?: NodeJS.ProcessEnv): Promise<boolean>;
  * @returns True if the SHOPIFY_UNIT_TEST environment variable is truthy.
  */
 export declare function isUnitTest(env?: NodeJS.ProcessEnv): boolean;
+/**
+ * Returns true if the CLI is running in hosted apps mode.
+ *
+ * @param env - The environment variables from the environment of the current process.
+ * @returns True if the HOSTED_APPS environment variable is truthy.
+ */
+export declare function isHostedAppsMode(env?: NodeJS.ProcessEnv): boolean;
 /**
  * Returns true if reporting analytics is enabled.
  *

@gonzaloriestra gonzaloriestra force-pushed the cli-interactivity/theme-dev-reconciliation branch from e4069c5 to c5d2d3f Compare June 1, 2026 12:45
@gonzaloriestra gonzaloriestra force-pushed the cli-interactivity/non-tty-link-error branch from 733fe27 to 3487ec3 Compare June 1, 2026 12:45
@gonzaloriestra gonzaloriestra force-pushed the cli-interactivity/non-tty-link-error branch from 3487ec3 to a8e4e4a Compare June 1, 2026 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog This PR doesn't include a changeset entry. Is an internal only change not relevant to end users.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant