diff --git a/docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts b/docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts new file mode 100644 index 00000000000..de54cbdae2e --- /dev/null +++ b/docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts @@ -0,0 +1,24 @@ +// This is an autogenerated file. Don't edit this file manually. +/** + * The following flags are available for the `store auth list` command: + * @publicDocs + */ +export interface storeauthlist { + /** + * Output the result as JSON. Automatically disables color output. + * @environment SHOPIFY_FLAG_JSON + */ + '-j, --json'?: '' + + /** + * Disable color output. + * @environment SHOPIFY_FLAG_NO_COLOR + */ + '--no-color'?: '' + + /** + * Increase the verbosity of the output. + * @environment SHOPIFY_FLAG_VERBOSE + */ + '--verbose'?: '' +} diff --git a/docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts b/docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts new file mode 100644 index 00000000000..4b7cdae1c44 --- /dev/null +++ b/docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts @@ -0,0 +1,36 @@ +// This is an autogenerated file. Don't edit this file manually. +/** + * The following flags are available for the `store create preview` command: + * @publicDocs + */ +export interface storecreatepreview { + /** + * Two-letter country code for the store, such as US, CA, or GB. + * @environment SHOPIFY_FLAG_STORE_COUNTRY + */ + '--country '?: string + + /** + * Output the result as JSON. Automatically disables color output. + * @environment SHOPIFY_FLAG_JSON + */ + '-j, --json'?: '' + + /** + * The name of the store. + * @environment SHOPIFY_FLAG_PREVIEW_STORE_NAME + */ + '--name '?: string + + /** + * Disable color output. + * @environment SHOPIFY_FLAG_NO_COLOR + */ + '--no-color'?: '' + + /** + * Increase the verbosity of the output. + * @environment SHOPIFY_FLAG_VERBOSE + */ + '--verbose'?: '' +} diff --git a/docs-shopify.dev/commands/interfaces/store-list.interface.ts b/docs-shopify.dev/commands/interfaces/store-list.interface.ts new file mode 100644 index 00000000000..674f068aaec --- /dev/null +++ b/docs-shopify.dev/commands/interfaces/store-list.interface.ts @@ -0,0 +1,30 @@ +// This is an autogenerated file. Don't edit this file manually. +/** + * The following flags are available for the `store list` command: + * @publicDocs + */ +export interface storelist { + /** + * Output the result as JSON. Automatically disables color output. + * @environment SHOPIFY_FLAG_JSON + */ + '-j, --json'?: '' + + /** + * Disable color output. + * @environment SHOPIFY_FLAG_NO_COLOR + */ + '--no-color'?: '' + + /** + * The numeric organization ID. Auto-selects if you belong to a single organization. + * @environment SHOPIFY_FLAG_ORGANIZATION_ID + */ + '--organization-id '?: string + + /** + * Increase the verbosity of the output. + * @environment SHOPIFY_FLAG_VERBOSE + */ + '--verbose'?: '' +} diff --git a/docs-shopify.dev/commands/interfaces/store-open.interface.ts b/docs-shopify.dev/commands/interfaces/store-open.interface.ts new file mode 100644 index 00000000000..a6eb0aeb6c8 --- /dev/null +++ b/docs-shopify.dev/commands/interfaces/store-open.interface.ts @@ -0,0 +1,24 @@ +// This is an autogenerated file. Don't edit this file manually. +/** + * The following flags are available for the `store open` command: + * @publicDocs + */ +export interface storeopen { + /** + * Disable color output. + * @environment SHOPIFY_FLAG_NO_COLOR + */ + '--no-color'?: '' + + /** + * The myshopify.com domain of the store. + * @environment SHOPIFY_FLAG_STORE + */ + '-s, --store ': string + + /** + * Increase the verbosity of the output. + * @environment SHOPIFY_FLAG_VERBOSE + */ + '--verbose'?: '' +} diff --git a/docs-shopify.dev/generated/generated_docs_data_v2.json b/docs-shopify.dev/generated/generated_docs_data_v2.json index 493572e967a..f33d3f63776 100644 --- a/docs-shopify.dev/generated/generated_docs_data_v2.json +++ b/docs-shopify.dev/generated/generated_docs_data_v2.json @@ -4369,6 +4369,44 @@ "value": "export interface search {\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" } }, + "storeauthlist": { + "docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts": { + "filePath": "docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts", + "name": "storeauthlist", + "description": "The following flags are available for the `store auth list` command:", + "isPublicDocs": true, + "members": [ + { + "filePath": "docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--no-color", + "value": "''", + "description": "Disable color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_NO_COLOR" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--verbose", + "value": "''", + "description": "Increase the verbosity of the output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_VERBOSE" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-auth-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "-j, --json", + "value": "''", + "description": "Output the result as JSON. Automatically disables color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_JSON" + } + ], + "value": "export interface storeauthlist {\n /**\n * Output the result as JSON. Automatically disables color output.\n * @environment SHOPIFY_FLAG_JSON\n */\n '-j, --json'?: ''\n\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" + } + }, "storeauth": { "docs-shopify.dev/commands/interfaces/store-auth.interface.ts": { "filePath": "docs-shopify.dev/commands/interfaces/store-auth.interface.ts", @@ -4623,6 +4661,62 @@ "value": "export interface storebulkstatus {\n /**\n * The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations on this store in the last 7 days.\n * @environment SHOPIFY_FLAG_ID\n */\n '--id '?: string\n\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * The myshopify.com domain of the store.\n * @environment SHOPIFY_FLAG_STORE\n */\n '-s, --store ': string\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" } }, + "storecreatepreview": { + "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts": { + "filePath": "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts", + "name": "storecreatepreview", + "description": "The following flags are available for the `store create preview` command:", + "isPublicDocs": true, + "members": [ + { + "filePath": "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--country ", + "value": "string", + "description": "Two-letter country code for the store, such as US, CA, or GB.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_STORE_COUNTRY" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--name ", + "value": "string", + "description": "The name of the store.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_PREVIEW_STORE_NAME" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--no-color", + "value": "''", + "description": "Disable color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_NO_COLOR" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--verbose", + "value": "''", + "description": "Increase the verbosity of the output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_VERBOSE" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-create-preview.interface.ts", + "syntaxKind": "PropertySignature", + "name": "-j, --json", + "value": "''", + "description": "Output the result as JSON. Automatically disables color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_JSON" + } + ], + "value": "export interface storecreatepreview {\n /**\n * Two-letter country code for the store, such as US, CA, or GB.\n * @environment SHOPIFY_FLAG_STORE_COUNTRY\n */\n '--country '?: string\n\n /**\n * Output the result as JSON. Automatically disables color output.\n * @environment SHOPIFY_FLAG_JSON\n */\n '-j, --json'?: ''\n\n /**\n * The name of the store.\n * @environment SHOPIFY_FLAG_PREVIEW_STORE_NAME\n */\n '--name '?: string\n\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" + } + }, "storeexecute": { "docs-shopify.dev/commands/interfaces/store-execute.interface.ts": { "filePath": "docs-shopify.dev/commands/interfaces/store-execute.interface.ts", @@ -4851,6 +4945,90 @@ "value": "export interface storeinfo {\n /**\n * Output the result as JSON. Automatically disables color output.\n * @environment SHOPIFY_FLAG_JSON\n */\n '-j, --json'?: ''\n\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * The myshopify.com domain of the store.\n * @environment SHOPIFY_FLAG_STORE\n */\n '-s, --store ': string\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" } }, + "storelist": { + "docs-shopify.dev/commands/interfaces/store-list.interface.ts": { + "filePath": "docs-shopify.dev/commands/interfaces/store-list.interface.ts", + "name": "storelist", + "description": "The following flags are available for the `store list` command:", + "isPublicDocs": true, + "members": [ + { + "filePath": "docs-shopify.dev/commands/interfaces/store-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--no-color", + "value": "''", + "description": "Disable color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_NO_COLOR" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--organization-id ", + "value": "string", + "description": "The numeric organization ID. Auto-selects if you belong to a single organization.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_ORGANIZATION_ID" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--verbose", + "value": "''", + "description": "Increase the verbosity of the output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_VERBOSE" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-list.interface.ts", + "syntaxKind": "PropertySignature", + "name": "-j, --json", + "value": "''", + "description": "Output the result as JSON. Automatically disables color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_JSON" + } + ], + "value": "export interface storelist {\n /**\n * Output the result as JSON. Automatically disables color output.\n * @environment SHOPIFY_FLAG_JSON\n */\n '-j, --json'?: ''\n\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * The numeric organization ID. Auto-selects if you belong to a single organization.\n * @environment SHOPIFY_FLAG_ORGANIZATION_ID\n */\n '--organization-id '?: string\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" + } + }, + "storeopen": { + "docs-shopify.dev/commands/interfaces/store-open.interface.ts": { + "filePath": "docs-shopify.dev/commands/interfaces/store-open.interface.ts", + "name": "storeopen", + "description": "The following flags are available for the `store open` command:", + "isPublicDocs": true, + "members": [ + { + "filePath": "docs-shopify.dev/commands/interfaces/store-open.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--no-color", + "value": "''", + "description": "Disable color output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_NO_COLOR" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-open.interface.ts", + "syntaxKind": "PropertySignature", + "name": "--verbose", + "value": "''", + "description": "Increase the verbosity of the output.", + "isOptional": true, + "environmentValue": "SHOPIFY_FLAG_VERBOSE" + }, + { + "filePath": "docs-shopify.dev/commands/interfaces/store-open.interface.ts", + "syntaxKind": "PropertySignature", + "name": "-s, --store ", + "value": "string", + "description": "The myshopify.com domain of the store.", + "environmentValue": "SHOPIFY_FLAG_STORE" + } + ], + "value": "export interface storeopen {\n /**\n * Disable color output.\n * @environment SHOPIFY_FLAG_NO_COLOR\n */\n '--no-color'?: ''\n\n /**\n * The myshopify.com domain of the store.\n * @environment SHOPIFY_FLAG_STORE\n */\n '-s, --store ': string\n\n /**\n * Increase the verbosity of the output.\n * @environment SHOPIFY_FLAG_VERBOSE\n */\n '--verbose'?: ''\n}" + } + }, "themecheck": { "docs-shopify.dev/commands/interfaces/theme-check.interface.ts": { "filePath": "docs-shopify.dev/commands/interfaces/theme-check.interface.ts", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index ede9a3c16d4..d1a5c0e2590 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,14 @@ # @shopify/app +## 4.5.0 + +### Patch Changes + +- @shopify/organizations@4.5.0 +- @shopify/cli-kit@4.5.0 +- @shopify/theme@4.5.0 +- @shopify/plugin-cloudflare@4.5.0 + ## 4.4.0 ### Minor Changes diff --git a/packages/app/package.json b/packages/app/package.json index 953cd152a0a..ab3d5573951 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/app", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "description": "Utilities for loading, building, and publishing apps.", "homepage": "https://github.com/shopify/cli#readme", @@ -61,10 +61,10 @@ "@graphql-typed-document-node/core": "3.2.0", "@luckycatfactory/esbuild-graphql-loader": "3.8.1", "@oclif/core": "4.8.3", - "@shopify/cli-kit": "4.4.0", - "@shopify/plugin-cloudflare": "4.4.0", - "@shopify/organizations": "4.4.0", - "@shopify/theme": "4.4.0", + "@shopify/cli-kit": "4.5.0", + "@shopify/plugin-cloudflare": "4.5.0", + "@shopify/organizations": "4.5.0", + "@shopify/theme": "4.5.0", "@shopify/theme-check-node": "3.26.1", "@shopify/toml-patch": "0.3.0", "chokidar": "3.6.0", diff --git a/packages/cli-kit/CHANGELOG.md b/packages/cli-kit/CHANGELOG.md index 8db11b0858f..e2013ed5fca 100644 --- a/packages/cli-kit/CHANGELOG.md +++ b/packages/cli-kit/CHANGELOG.md @@ -1,5 +1,7 @@ # @shopify/cli-kit +## 4.5.0 + ## 4.4.0 ### Minor Changes diff --git a/packages/cli-kit/package.json b/packages/cli-kit/package.json index acc67c443e4..0ddcbca7abf 100644 --- a/packages/cli-kit/package.json +++ b/packages/cli-kit/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/cli-kit", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "private": false, "description": "A set of utilities, interfaces, and models that are common across all the platform features", diff --git a/packages/cli-kit/src/public/common/version.ts b/packages/cli-kit/src/public/common/version.ts index d5ca40d0cdd..fc68ae42d33 100644 --- a/packages/cli-kit/src/public/common/version.ts +++ b/packages/cli-kit/src/public/common/version.ts @@ -1 +1 @@ -export const CLI_KIT_VERSION = '4.4.0' +export const CLI_KIT_VERSION = '4.5.0' diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 39ddba89292..495bd1c4519 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,14 @@ # @shopify/cli +## 4.5.0 + +### Minor Changes + +- bacbcf2: Add `shopify store auth list` to list stores authenticated on this machine with `shopify store auth`. +- bacbcf2: Add `shopify store create preview` to create a preview Shopify store with no existing account required. +- bacbcf2: Add `shopify store list` to list stores in a Shopify organization. +- bacbcf2: Add `shopify store open` to open a store's storefront in your default web browser. + ## 4.4.0 ### Minor Changes diff --git a/packages/cli/README.md b/packages/cli/README.md index 773806ae41c..888f4a00dbd 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -80,12 +80,16 @@ * [`shopify plugins update`](#shopify-plugins-update) * [`shopify search [query]`](#shopify-search-query) * [`shopify store auth`](#shopify-store-auth) +* [`shopify store auth list`](#shopify-store-auth-list) * [`shopify store bulk cancel`](#shopify-store-bulk-cancel) * [`shopify store bulk execute`](#shopify-store-bulk-execute) * [`shopify store bulk status`](#shopify-store-bulk-status) +* [`shopify store create preview`](#shopify-store-create-preview) * [`shopify store execute`](#shopify-store-execute) * [`shopify store graphiql`](#shopify-store-graphiql) * [`shopify store info`](#shopify-store-info) +* [`shopify store list`](#shopify-store-list) +* [`shopify store open`](#shopify-store-open) * [`shopify theme check`](#shopify-theme-check) * [`shopify theme console`](#shopify-theme-console) * [`shopify theme delete`](#shopify-theme-delete) @@ -3262,6 +3266,41 @@ EXAMPLES $ shopify store auth --store shop.myshopify.com --scopes read_products,write_products --json ``` +## `shopify store auth list` + +List stores authenticated directly with store auth. + +``` +USAGE + $ shopify store auth list [-j] [--no-color] [--verbose] + +FLAGS + -j, --json + Output the result as JSON. Automatically disables color output. + [env: SHOPIFY_FLAG_JSON] + + --no-color + Disable color output. + [env: SHOPIFY_FLAG_NO_COLOR] + + --verbose + Increase the verbosity of the output. + [env: SHOPIFY_FLAG_VERBOSE] + +DESCRIPTION + List stores authenticated directly with store auth. + + Lists stores authenticated directly on this machine with `shopify store auth`. + + Use this command to find stores that can be used with store-authenticated commands such as `shopify store execute`. + To list stores in a Shopify organization, run `shopify store list`. + +EXAMPLES + $ shopify store auth list + + $ shopify store auth list --json +``` + ## `shopify store bulk cancel` Cancel a bulk operation on a store. @@ -3422,6 +3461,48 @@ EXAMPLES $ shopify store bulk status --store shop.myshopify.com --id 123456789 ``` +## `shopify store create preview` + +Create a preview Shopify store. + +``` +USAGE + $ shopify store create preview [--country ] [-j] [--name ] [--no-color] [--verbose] + +FLAGS + -j, --json + Output the result as JSON. Automatically disables color output. + [env: SHOPIFY_FLAG_JSON] + + --country= + Two-letter country code for the store, such as US, CA, or GB. + [env: SHOPIFY_FLAG_STORE_COUNTRY] + + --name= + The name of the store. + [env: SHOPIFY_FLAG_PREVIEW_STORE_NAME] + + --no-color + Disable color output. + [env: SHOPIFY_FLAG_NO_COLOR] + + --verbose + Increase the verbosity of the output. + [env: SHOPIFY_FLAG_VERBOSE] + +DESCRIPTION + Create a preview Shopify store. + + Creates a new Shopify store, with no need for an existing account. + +EXAMPLES + $ shopify store create preview --name "Lavender Candles" + + $ shopify store create preview --name "Lavender Candles" --country US + + $ shopify store create preview --name "Lavender Candles" --json +``` + ## `shopify store execute` Execute GraphQL queries and mutations on a store. @@ -3591,6 +3672,80 @@ EXAMPLES $ shopify store info --store shop.myshopify.com --json ``` +## `shopify store list` + +List stores in a Shopify organization. + +``` +USAGE + $ shopify store list [-j] [--no-color] [--organization-id ] [--verbose] + +FLAGS + -j, --json + Output the result as JSON. Automatically disables color output. + [env: SHOPIFY_FLAG_JSON] + + --no-color + Disable color output. + [env: SHOPIFY_FLAG_NO_COLOR] + + --organization-id= + The numeric organization ID. Auto-selects if you belong to a single organization. + [env: SHOPIFY_FLAG_ORGANIZATION_ID] + + --verbose + Increase the verbosity of the output. + [env: SHOPIFY_FLAG_VERBOSE] + +DESCRIPTION + List stores in a Shopify organization. + + Lists stores in a Shopify organization available to the current CLI account. + + When more than one organization is available, the command prompts you to pick one unless you provide + `--organization-id`. + In non-interactive environments, `--organization-id` is required. + + Run `shopify organization list` to find organization IDs. + +EXAMPLES + $ shopify store list + + $ shopify store list --organization-id 1234567 + + $ shopify store list --json +``` + +## `shopify store open` + +Open your Shopify store in the default web browser. + +``` +USAGE + $ shopify store open -s [--no-color] [--verbose] + +FLAGS + -s, --store= + (required) The myshopify.com domain of the store. + [env: SHOPIFY_FLAG_STORE] + + --no-color + Disable color output. + [env: SHOPIFY_FLAG_NO_COLOR] + + --verbose + Increase the verbosity of the output. + [env: SHOPIFY_FLAG_VERBOSE] + +DESCRIPTION + Open your Shopify store in the default web browser. + + Opens the storefront for a store you have access to in your default web browser. + +EXAMPLES + $ shopify store open --store shop.myshopify.com +``` + ## `shopify theme check` Validate the theme. diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index d6882fba5b4..f89365d0538 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -6055,7 +6055,6 @@ } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], "id": "store:auth:list", @@ -6414,7 +6413,7 @@ "flags": { "country": { "description": "Two-letter country code for the store, such as US, CA, or GB.", - "env": "SHOPIFY_FLAG_PREVIEW_STORE_COUNTRY", + "env": "SHOPIFY_FLAG_STORE_COUNTRY", "hasDynamicHelp": false, "multiple": false, "name": "country", @@ -6457,7 +6456,6 @@ } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], "id": "store:create:preview", @@ -6783,7 +6781,6 @@ } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], "id": "store:list", @@ -6833,7 +6830,6 @@ } }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ ], "id": "store:open", @@ -9052,5 +9048,5 @@ "strict": true } }, - "version": "4.4.0" + "version": "4.5.0" } \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json index ae9c2e32c54..023b59ce8e3 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/cli", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "private": false, "description": "A CLI tool to build for the Shopify platform", @@ -60,12 +60,12 @@ "@oclif/core": "4.8.3", "@oclif/plugin-commands": "4.1.57", "@oclif/plugin-plugins": "5.4.47", - "@shopify/app": "4.4.0", - "@shopify/store": "4.4.0", - "@shopify/cli-kit": "4.4.0", - "@shopify/plugin-cloudflare": "4.4.0", - "@shopify/plugin-did-you-mean": "4.4.0", - "@shopify/theme": "4.4.0", + "@shopify/app": "4.5.0", + "@shopify/store": "4.5.0", + "@shopify/cli-kit": "4.5.0", + "@shopify/plugin-cloudflare": "4.5.0", + "@shopify/plugin-did-you-mean": "4.5.0", + "@shopify/theme": "4.5.0", "@shopify/cli-hydrogen": "13.0.0", "@types/global-agent": "3.0.0", "@vitest/coverage-istanbul": "^3.2.6", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index e02a71f78d2..ae9892aee9b 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,7 @@ # @shopify/create-app +## 4.5.0 + ## 4.4.0 ## 4.3.0 diff --git a/packages/create-app/oclif.manifest.json b/packages/create-app/oclif.manifest.json index 6426a93ffa3..87eaf3fc1f8 100644 --- a/packages/create-app/oclif.manifest.json +++ b/packages/create-app/oclif.manifest.json @@ -117,5 +117,5 @@ "summary": "Create a new app project" } }, - "version": "4.4.0" + "version": "4.5.0" } \ No newline at end of file diff --git a/packages/create-app/package.json b/packages/create-app/package.json index a29f3908b74..3168dea007c 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/create-app", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "private": false, "description": "A CLI tool to create a new Shopify app.", @@ -58,8 +58,8 @@ "esbuild": "0.28.1" }, "devDependencies": { - "@shopify/cli-kit": "4.4.0", - "@shopify/app": "4.4.0", + "@shopify/cli-kit": "4.5.0", + "@shopify/app": "4.5.0", "esbuild-plugin-copy": "^2.1.1", "@vitest/coverage-istanbul": "^3.2.6" }, diff --git a/packages/organizations/CHANGELOG.md b/packages/organizations/CHANGELOG.md index 9f80977d872..91c1b0adf08 100644 --- a/packages/organizations/CHANGELOG.md +++ b/packages/organizations/CHANGELOG.md @@ -1,5 +1,11 @@ # @shopify/organizations +## 4.5.0 + +### Patch Changes + +- @shopify/cli-kit@4.5.0 + ## 4.4.0 ### Patch Changes diff --git a/packages/organizations/package.json b/packages/organizations/package.json index 9453002c9a3..963f3355f51 100644 --- a/packages/organizations/package.json +++ b/packages/organizations/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/organizations", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "private": true, "description": "Utilities for working with Shopify organizations", @@ -39,7 +39,7 @@ ] }, "dependencies": { - "@shopify/cli-kit": "4.4.0", + "@shopify/cli-kit": "4.5.0", "@graphql-typed-document-node/core": "3.2.0" }, "devDependencies": { diff --git a/packages/plugin-cloudflare/CHANGELOG.md b/packages/plugin-cloudflare/CHANGELOG.md index 9441ed327ac..6621425b354 100644 --- a/packages/plugin-cloudflare/CHANGELOG.md +++ b/packages/plugin-cloudflare/CHANGELOG.md @@ -1,5 +1,11 @@ # @shopify/plugin-cloudflare +## 4.5.0 + +### Patch Changes + +- @shopify/cli-kit@4.5.0 + ## 4.4.0 ### Patch Changes diff --git a/packages/plugin-cloudflare/package.json b/packages/plugin-cloudflare/package.json index 0021e008959..875baf56736 100644 --- a/packages/plugin-cloudflare/package.json +++ b/packages/plugin-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/plugin-cloudflare", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "description": "Enables the creation of Cloudflare tunnels from `shopify app dev`, allowing previews from any device", "keywords": [ @@ -46,7 +46,7 @@ }, "dependencies": { "@oclif/core": "4.8.3", - "@shopify/cli-kit": "4.4.0" + "@shopify/cli-kit": "4.5.0" }, "devDependencies": { "@vitest/coverage-istanbul": "^3.2.6" diff --git a/packages/plugin-did-you-mean/CHANGELOG.md b/packages/plugin-did-you-mean/CHANGELOG.md index 65b2c594dca..43460b5072f 100644 --- a/packages/plugin-did-you-mean/CHANGELOG.md +++ b/packages/plugin-did-you-mean/CHANGELOG.md @@ -1,5 +1,11 @@ # @shopify/plugin-did-you-mean +## 4.5.0 + +### Patch Changes + +- @shopify/cli-kit@4.5.0 + ## 4.4.0 ### Patch Changes diff --git a/packages/plugin-did-you-mean/package.json b/packages/plugin-did-you-mean/package.json index 4bcb23a22a2..5fd7e6ba29b 100644 --- a/packages/plugin-did-you-mean/package.json +++ b/packages/plugin-did-you-mean/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/plugin-did-you-mean", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "private": true, "bugs": { @@ -41,7 +41,7 @@ }, "dependencies": { "@oclif/core": "4.8.3", - "@shopify/cli-kit": "4.4.0", + "@shopify/cli-kit": "4.5.0", "n-gram": "2.0.2" }, "devDependencies": { diff --git a/packages/store/CHANGELOG.md b/packages/store/CHANGELOG.md index 1a0e9826dd5..b510c08c797 100644 --- a/packages/store/CHANGELOG.md +++ b/packages/store/CHANGELOG.md @@ -1,5 +1,19 @@ # @shopify/store +## 4.5.0 + +### Minor Changes + +- bacbcf2: Add `shopify store auth list` to list stores authenticated on this machine with `shopify store auth`. +- bacbcf2: Add `shopify store create preview` to create a preview Shopify store with no existing account required. +- bacbcf2: Add `shopify store list` to list stores in a Shopify organization. +- bacbcf2: Add `shopify store open` to open a store's storefront in your default web browser. + +### Patch Changes + +- @shopify/organizations@4.5.0 +- @shopify/cli-kit@4.5.0 + ## 4.4.0 ### Minor Changes diff --git a/packages/store/package.json b/packages/store/package.json index 7a56c753432..af250770a4c 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -1,6 +1,6 @@ { "name": "@shopify/store", - "version": "4.4.0", + "version": "4.5.0", "packageManager": "pnpm@10.11.1", "private": true, "description": "Utilities for working with Shopify stores", @@ -41,8 +41,8 @@ "dependencies": { "@graphql-typed-document-node/core": "3.2.0", "@oclif/core": "4.8.3", - "@shopify/cli-kit": "4.4.0", - "@shopify/organizations": "4.4.0" + "@shopify/cli-kit": "4.5.0", + "@shopify/organizations": "4.5.0" }, "devDependencies": { "@vitest/coverage-istanbul": "^3.2.6" diff --git a/packages/store/src/cli/commands/store/auth/list.test.ts b/packages/store/src/cli/commands/store/auth/list.test.ts index 9a6885238e9..178122b14a2 100644 --- a/packages/store/src/cli/commands/store/auth/list.test.ts +++ b/packages/store/src/cli/commands/store/auth/list.test.ts @@ -25,7 +25,6 @@ describe('store auth list command', () => { }) test('does not expose organization or source-selection flags', () => { - expect(StoreAuthList.hidden).toBe(true) expect(StoreAuthList.flags.json).toBeDefined() expect(StoreAuthList.flags).not.toHaveProperty('organization-id') expect(StoreAuthList.flags).not.toHaveProperty('from') diff --git a/packages/store/src/cli/commands/store/auth/list.ts b/packages/store/src/cli/commands/store/auth/list.ts index 271fe414046..2243d2d92d6 100644 --- a/packages/store/src/cli/commands/store/auth/list.ts +++ b/packages/store/src/cli/commands/store/auth/list.ts @@ -4,8 +4,6 @@ import Command from '@shopify/cli-kit/node/base-command' import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' export default class StoreAuthList extends Command { - static hidden = true - static summary = 'List stores authenticated directly with store auth.' static descriptionWithMarkdown = `Lists stores authenticated directly on this machine with \`shopify store auth\`. diff --git a/packages/store/src/cli/commands/store/create/preview.test.ts b/packages/store/src/cli/commands/store/create/preview.test.ts index aba7a289aff..9781d98bc63 100644 --- a/packages/store/src/cli/commands/store/create/preview.test.ts +++ b/packages/store/src/cli/commands/store/create/preview.test.ts @@ -12,10 +12,6 @@ vi.mock('@shopify/cli-kit/node/ui', async () => { }) describe('store create preview command', () => { - test('is hidden until preview store creation is generally available', () => { - expect(StoreCreatePreview.hidden).toBe(true) - }) - test('passes parsed flags through to the service', async () => { const result = { status: 'success' as const, diff --git a/packages/store/src/cli/commands/store/create/preview.ts b/packages/store/src/cli/commands/store/create/preview.ts index f49c1ae4e2f..db7d9a9340f 100644 --- a/packages/store/src/cli/commands/store/create/preview.ts +++ b/packages/store/src/cli/commands/store/create/preview.ts @@ -8,8 +8,6 @@ import {renderSingleTask} from '@shopify/cli-kit/node/ui' import {Flags} from '@oclif/core' export default class StoreCreatePreview extends StoreCommand { - static hidden = true - static summary = 'Create a preview Shopify store.' static descriptionWithMarkdown = `Creates a new Shopify store, with no need for an existing account.` diff --git a/packages/store/src/cli/commands/store/list.ts b/packages/store/src/cli/commands/store/list.ts index 9920606cf34..119dbcc8071 100644 --- a/packages/store/src/cli/commands/store/list.ts +++ b/packages/store/src/cli/commands/store/list.ts @@ -5,8 +5,6 @@ import StoreCommand from '../../utilities/store-command.js' import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' export default class StoreList extends StoreCommand { - static hidden = true - static summary = 'List stores in a Shopify organization.' static descriptionWithMarkdown = `Lists stores in a Shopify organization available to the current CLI account. diff --git a/packages/store/src/cli/commands/store/open.ts b/packages/store/src/cli/commands/store/open.ts index f4c25417bcc..57cdff7345a 100644 --- a/packages/store/src/cli/commands/store/open.ts +++ b/packages/store/src/cli/commands/store/open.ts @@ -4,8 +4,6 @@ import {storeFlags} from '../../flags.js' import {globalFlags} from '@shopify/cli-kit/node/cli' export default class StoreOpen extends StoreCommand { - static hidden = true - static summary = 'Open your Shopify store in the default web browser.' static descriptionWithMarkdown = `Opens the storefront for a store you have access to in your default web browser.` diff --git a/packages/store/src/cli/flags.ts b/packages/store/src/cli/flags.ts index 49ce9304c0c..a0b5ce5c039 100644 --- a/packages/store/src/cli/flags.ts +++ b/packages/store/src/cli/flags.ts @@ -17,7 +17,7 @@ export function isCountryCode(value: string): boolean { } export const previewStoreFlags = { - country: countryFlag('SHOPIFY_FLAG_PREVIEW_STORE_COUNTRY'), + country: countryFlag('SHOPIFY_FLAG_STORE_COUNTRY'), } export const storeFlags = { diff --git a/packages/store/src/cli/services/store/create/preview/index.test.ts b/packages/store/src/cli/services/store/create/preview/index.test.ts index b5e6845c7f9..dc134b869b3 100644 --- a/packages/store/src/cli/services/store/create/preview/index.test.ts +++ b/packages/store/src/cli/services/store/create/preview/index.test.ts @@ -1,4 +1,4 @@ -import {PREVIEW_USER_ID_PREFIX, createPreviewStoreCommand} from './index.js' +import {createPreviewStoreCommand} from './index.js' import {STORE_AUTH_APP_CLIENT_ID} from '../../auth/config.js' import {describe, expect, test, vi} from 'vitest' @@ -28,7 +28,7 @@ describe('preview store create service', () => { expect(setStoredStoreAppSession).toHaveBeenCalledWith({ store: 'x12y45z.myshopify.com', clientId: STORE_AUTH_APP_CLIENT_ID, - userId: `${PREVIEW_USER_ID_PREFIX}placeholder-uuid`, + userId: 'placeholder-uuid', accessToken: 'shpat_token', scopes: ['read_themes', 'write_themes'], acquiredAt: '2026-06-08T12:00:00.000Z', @@ -44,7 +44,7 @@ describe('preview store create service', () => { }) expect(recordStoreFqdnMetadata).toHaveBeenCalledOnce() expect(recordStoreFqdnMetadata).toHaveBeenCalledWith('x12y45z.myshopify.com', true, '123') - expect(setLastSeenUserId).toHaveBeenCalledWith(`${PREVIEW_USER_ID_PREFIX}placeholder-uuid`) + expect(setLastSeenUserId).toHaveBeenCalledWith('placeholder-uuid') expect(result).toEqual({ status: 'success', message: @@ -79,10 +79,8 @@ describe('preview store create service', () => { }, ) - expect(setStoredStoreAppSession).toHaveBeenCalledWith( - expect.objectContaining({userId: `${PREVIEW_USER_ID_PREFIX}123`, scopes: []}), - ) - expect(setLastSeenUserId).toHaveBeenCalledWith(`${PREVIEW_USER_ID_PREFIX}123`) + expect(setStoredStoreAppSession).toHaveBeenCalledWith(expect.objectContaining({userId: '123', scopes: []})) + expect(setLastSeenUserId).toHaveBeenCalledWith('123') }) test('passes client options to the create request', async () => { @@ -132,7 +130,7 @@ describe('preview store create service', () => { ) expect(setStoredStoreAppSession).toHaveBeenCalledOnce() - expect(setLastSeenUserId).toHaveBeenCalledWith(`${PREVIEW_USER_ID_PREFIX}123`) + expect(setLastSeenUserId).toHaveBeenCalledWith('123') expect(recordStoreFqdnMetadata).toHaveBeenCalledOnce() expect(recordStoreFqdnMetadata).toHaveBeenCalledWith('x12y45z.myshopify.com', true, '123') expect(result.status).toBe('success') diff --git a/packages/store/src/cli/services/store/create/preview/index.ts b/packages/store/src/cli/services/store/create/preview/index.ts index 204f7dee870..4fd2d111156 100644 --- a/packages/store/src/cli/services/store/create/preview/index.ts +++ b/packages/store/src/cli/services/store/create/preview/index.ts @@ -4,8 +4,6 @@ import {recordStoreFqdnMetadata} from '../../attribution.js' import {setStoredStoreAppSession} from '@shopify/cli-kit/node/store-auth-session' import {setLastSeenUserId} from '@shopify/cli-kit/node/session' -export const PREVIEW_USER_ID_PREFIX = 'preview:' - interface CreatePreviewStoreInput { name?: string country?: string @@ -57,7 +55,7 @@ export async function createPreviewStoreCommand( } function previewUserId(response: PreviewStoreCreateResponse): string { - return `${PREVIEW_USER_ID_PREFIX}${response.placeholderAccountUuid ?? response.shop.id}` + return response.placeholderAccountUuid ?? response.shop.id } async function persistPreviewStoreSession( diff --git a/packages/store/src/cli/services/store/info/index.test.ts b/packages/store/src/cli/services/store/info/index.test.ts index 63532f8d7c8..c91c7f2c76b 100644 --- a/packages/store/src/cli/services/store/info/index.test.ts +++ b/packages/store/src/cli/services/store/info/index.test.ts @@ -153,7 +153,7 @@ describe('getStoreInfo', () => { vi.mocked(getCurrentStoredStoreAppSession).mockReturnValueOnce({ store: SHOP, clientId: STORE_AUTH_APP_CLIENT_ID, - userId: 'preview:placeholder-uuid', + userId: 'placeholder-uuid', accessToken: 'shpat_preview_token', scopes: [], acquiredAt: '2026-06-08T12:00:00.000Z', @@ -177,6 +177,7 @@ describe('getStoreInfo', () => { expect(fetchDestinationsContext).not.toHaveBeenCalled() expect(fetchOrganizationShop).not.toHaveBeenCalled() expect(recordStoreFqdnMetadata).toHaveBeenCalledWith(SHOP, true, '123') + expect(setLastSeenUserId).toHaveBeenCalledWith('placeholder-uuid') expect(getPreviewStore).toHaveBeenCalledWith({ shopId: '123', adminApiToken: 'shpat_preview_token', @@ -199,7 +200,7 @@ describe('getStoreInfo', () => { vi.mocked(getCurrentStoredStoreAppSession).mockReturnValueOnce({ store: SHOP, clientId: STORE_AUTH_APP_CLIENT_ID, - userId: 'preview:placeholder-uuid', + userId: 'placeholder-uuid', accessToken: 'shpat_preview_token', // Preview stores are preapproved for a large, fixed scope catalog; the re-auth message // should not dump the whole list back at the user (see the placeholder assertion below). @@ -236,7 +237,7 @@ describe('getStoreInfo', () => { vi.mocked(getCurrentStoredStoreAppSession).mockReturnValueOnce({ store: SHOP, clientId: STORE_AUTH_APP_CLIENT_ID, - userId: 'preview:placeholder-uuid', + userId: 'placeholder-uuid', accessToken: 'shpat_preview_token', scopes: ['read_products'], acquiredAt: '2026-06-08T12:00:00.000Z', @@ -261,7 +262,7 @@ describe('getStoreInfo', () => { vi.mocked(getCurrentStoredStoreAppSession).mockReturnValueOnce({ store: SHOP, clientId: STORE_AUTH_APP_CLIENT_ID, - userId: 'preview:placeholder-uuid', + userId: 'placeholder-uuid', accessToken: 'shpat_preview_token', scopes: ['read_themes', 'write_themes'], acquiredAt: '2026-06-08T12:00:00.000Z', @@ -289,7 +290,7 @@ describe('getStoreInfo', () => { vi.mocked(getCurrentStoredStoreAppSession).mockReturnValueOnce({ store: SHOP, clientId: STORE_AUTH_APP_CLIENT_ID, - userId: 'preview:placeholder-uuid', + userId: 'placeholder-uuid', accessToken: 'shpat_preview_token', scopes: [], acquiredAt: '2026-06-08T12:00:00.000Z', @@ -565,7 +566,7 @@ The CLI is currently unable to prompt for reauthentication.`) mockStoreAuthFallback() vi.mocked(loadStoredStoreSession).mockResolvedValue({ ...STORED_SESSION, - userId: 'preview:placeholder-uuid', + userId: 'placeholder-uuid', kind: 'preview', scopes: ['read_products', 'write_products', 'read_themes'], }) diff --git a/packages/store/src/cli/services/store/info/index.ts b/packages/store/src/cli/services/store/info/index.ts index 7fe73c6a3fc..8edf47be6c4 100644 --- a/packages/store/src/cli/services/store/info/index.ts +++ b/packages/store/src/cli/services/store/info/index.ts @@ -65,6 +65,7 @@ export async function getStoreInfo(options: GetStoreInfoOptions): Promise