npm package diff
Package: @forge/cli-shared
Versions: 8.8.1-next.5-experimental-ab371ba - 8.8.1-next.7
File: package/out/ui/text.js
Index: package/out/ui/text.js
===================================================================
--- package/out/ui/text.js
+++ package/out/ui/text.js
@@ -73,8 +73,9 @@
         invalidSite: 'The site you entered is not an Atlassian site. Rerun the command with the URL to an Atlassian site to install the app.',
         invalidWorkspace: 'The workspace you entered is not a valid workspace. Rerun the command with the URL to a valid workspace to install the app.',
         invalidInstallationContext: 'Could not find an installation for the provided Atlassian app',
         invalidTokenInKeytar: `Your API token is no longer valid. Run ${forge('login')} to reset your login credentials.`,
+        invalidUpgradeTarget: 'You must specify either "all" or "code" as the upgrade target.',
         invalidTokenInEnv: (instructionsUrl, emailVar, tokenVar) => `The API token on your machine is no longer valid.` +
             `\n    1) Get a new API token: ${instructionsUrl}` +
             `\n    2) Set your email and the token to ${emailVar} and ${tokenVar} environment variables.`,
         promptInputRequired: 'Your response is needed to continue.',
@@ -126,9 +127,15 @@
         promptSite: 'Enter the site URL:',
         promptWorkspace: 'Enter the workspace URL:'
     },
     upgradeContext: {
-        overview: `To upgrade your app to use the latest scopes, select it from the list.\n${ctrlC}`,
+        overview: (isCodeUpgrade, version, isLatest) => {
+            const upgradeType = isCodeUpgrade ? 'code' : 'code and scopes';
+            if (version && !isLatest) {
+                return `To upgrade your app to use the ${upgradeType} from version ${version}, select it from the list.\n${ctrlC}`;
+            }
+            return `To upgrade your app to use the latest ${upgradeType}, select it from the list.\n${ctrlC}`;
+        },
         promptInstallation: 'Select the site or workspace to upgrade:'
     },
     optionSite: 'site URL (example.atlassian.net)',
     optionProduct: (supportedProducts) => `Atlassian app (${supportedProducts.join(', ')})`,
@@ -892,9 +899,9 @@
         devAppInstallWarning: `${chalk_1.default.bold('WARNING:')} You are about to install a development app to a production site. If you do not intend to test your app, we strongly recommend that you deploy your app to production and install the production version instead.`,
         majorVersionIsNotLatest: (versionToInstall) => `WARNING: You are about to install a previous version of the app. (${versionToInstall})`,
         devAppInstallConfirm: `Are you sure you want to proceed?`,
         optionConfirmScopes: 'skip confirmation of scopes for the app before installing or upgrading the app',
-        optionUpgrade: 'upgrade an existing installation',
+        optionUpgrade: 'upgrade an existing installation (allowed values: all (default), code)',
         optionLicense: 'specify the license value for the app (allowed values: active, standard, advanced, inactive, and trial)',
         optionLicenseModes: 'specify the list of license mode value for the app (allowed values: user-access)',
         optionUsersWithAccess: 'specify the list of Atlassian Account IDs(aaid) for users who have access to the app',
         optionMajorVersion: 'specify the major version to install',
@@ -931,10 +938,9 @@
                 '\n\nTo install the app on this site, generate an installation link ' +
                 'in the developer console and share it with the site admin: ' +
                 `https://developer.atlassian.com/console/myapps/${appId}/distribution`,
             appendRequestIdToErrorMessage: (message, requestId) => `${message} For more help on this issue, please reach out to support (${buildTerminalLink('https://developer.atlassian.com/support')}) and provide them the following request ID: ${requestId}`,
-            majorVersionNotFound: 'The major version you specified does not exist. Check the version number and try again.',
-            majorVersionAndUpgrade: 'Cannot use the major version flag with the upgrade flag'
+            majorVersionNotFound: 'The major version you specified does not exist. Check the version number and try again.'
         },
         failedAll: (site, environment) => `Your app in ${(0, environment_1.environmentToOption)(environment)} was not installed on any Atlassian apps on ${chalk_1.default.bold(site)}.`,
         security: {
             banner: (site) => `\n${chalk_1.default.gray('=== ')}Security questions\n
@@ -979,26 +985,27 @@
             start: (envKey, envType) => `Upgrading your app in ${exports.Text.env.displayEnvironment(envKey, envType)}...`,
             end: (displayTick) => `${displayTick ? greenTick + ' ' : ''}Upgrade complete!`,
             error: `Upgrade failed`
         },
-        listScopes: (scopes) => `Your app will be upgraded with the following additional scopes:\n${scopes
+        listScopes: (scopes, isCodeUpgrade) => `Your app will be ${isCodeUpgrade ? 'missing' : 'upgraded with'} the following ${!isCodeUpgrade ? 'additional ' : ''}scopes:\n${scopes
             .map(({ name, requiresInteractiveConsent }) => `- ${name}${requiresInteractiveConsent ? ' (requires user consent)' : ''}`)
             .join('\n')}\n`,
-        listEgressAddresses: (egressAddresses) => `Your app will exchange data with the following urls:\n${egressAddresses.map((url) => `- ${url}`).join('\n')}\n`,
+        listEgressAddresses: (egressAddresses, isCodeUpgrade) => `Your app will${isCodeUpgrade ? ' not' : ''} exchange data with the following urls:\n${egressAddresses.map((url) => `- ${url}`).join('\n')}\n`,
         permissionsMismatch: (environment) => `The scopes or egress URLs in the manifest are different from the scopes in your most recent deployment to ${(0, environment_1.environmentToOption)(environment)}. Try running ${forge('deploy', '-e', (0, environment_1.environmentToOption)(environment))} before upgrading.\n`,
         promptForPermissionsConfirmation: (permissionsMismatchInDevelopment) => permissionsMismatchInDevelopment
             ? 'Are you sure you want to continue upgrading the app?'
             : 'Do you want to continue?',
         success: {
-            banner: (envKey, envType, product, site) => `Your app in the ${exports.Text.env.displayEnvironment(envKey, envType)} environment is now the latest in ${product} on ${buildTerminalLink(site)}.`
+            banner: (envKey, envType, product, site, isLatest = true, version, isCodeUpgrade = false) => `Your app${isCodeUpgrade ? "'s code" : ''} in the ${exports.Text.env.displayEnvironment(envKey, envType)} environment is now ${version && !isLatest ? `version ${version}` : 'the latest'} in ${product} on ${buildTerminalLink(site)}.`
         },
         alreadyUpdated: {
             spinnerSite: 'Site is already at the latest version',
             spinnerWorkspace: 'Workspace is already at the latest version',
             banner: (environment, product, site) => `\nYour app in the ${(0, environment_1.environmentToOption)(environment)} environment is at the latest in ${product} on ${buildTerminalLink(site)}.`
         },
         error: {
-            serverSideInstallationError: (message) => `Upgrade error: ${message}`
+            serverSideInstallationError: (message) => `Upgrade error: ${message}`,
+            decoupledStateNotEnabled: (requestId) => `The specified version is not eligible for a code-only upgrade${requestId ? ` (requestId: ${requestId})` : ''}.`
         }
     },
     installList: {
         cmd: 'list app installations',
@@ -1308,9 +1315,9 @@
             description: 'Change your default development environment',
             info: `To view all environments for this app, run ${forge('environments', 'list')}.`
         },
         seasonalEffects: {
-            description: 'Enable seasonal themes and animations (e.g., Halloween spinners). Can also be disabled with FORGE_DISABLE_SEASONAL_EFFECTS environment variable.'
+            description: 'Enable seasonal themes'
         }
     },
     assistant: {
         description: '[⚠️ experimental feature] manage AI assistant settings (Rovo/Gemini)',