Dashboard › cli › Distillation
e80a258d-9428-463e-82ac-5d60461534a0["lore_tm_v1_d7biUP-XHdd8MuyR1VXz5hcKyPxyI5lZrPz-D5eCYgk","lore_tm_v1_JN62BH90R9UaNW33wqPmMkBcnwqPBMxMlaBVYBhCLhE"]
packages/cli/src/commands/cli/upgrade.ts:863-929 documents sentry cli upgrade as supporting persistent stable and nightly release channels. Ordered examples: 1. sentry cli upgrade updates using the persisted channel; 2. sentry cli upgrade nightly switches to nightly and updates; 3. sentry cli upgrade stable switches back to stable and updates; 4. sentry cli upgrade 0.5.0 installs a specific stable version; 5. sentry cli upgrade --check checks without installing; 6. sentry cli upgrade --force forces a re-download when current; 7. sentry cli upgrade --method npm forces npm; 8. sentry cli upgrade --offline uses cached patches without network; 9. sentry cli upgrade --no-agent-skills skips reinstalling agent skills.packages/cli/src/commands/cli/upgrade.ts:825-840 defines startChangelogFetch(channel, currentVersion, targetVersion, offline): it returns undefined without fetching when offline or already at the target; otherwise it calls fetchChangelog({ channel, fromVersion: currentVersion, toVersion: targetVersion }) and swallows errors so changelog retrieval never blocks an upgrade.packages/cli/src/commands/cli/upgrade.ts:846-860 defines buildCheckResultWithChangelog(), which builds a check-only UpgradeResult, sets result.offline = true when applicable, and awaits the parallel changelog promise.upgradeCommand resolves { channel, versionArg, channelChanged, method } via resolveContext(version, flags), then calls resolveTargetWithFallback() under “Checking for updates...” progress and persists the channel through persistChannel(channel, channelChanged, version).--check results with differing current and target versions fetch a changelog before returning; offline-fallback checks resolve as kind: "target" and are guarded by flags.check to prevent an actual upgrade.action: "up-to-date" when CLI_VERSION === target unless --force is supplied or the release channel changed.migrateToStandaloneForNightly() because nightly is GitHub-only; curl nightly upgrades and all standard cases call executeStandardUpgrade().action as "downgraded" or "upgraded" based on isDowngrade(CLI_VERSION, target), and includes current/target versions, channel, method, forced/offline state, migration warnings, and changelog.GITHUB_RELEASES_URL matches: 1. packages/cli/src/lib/upgrade.ts:29 import; 2. packages/cli/src/lib/upgrade.ts:403 ${GITHUB_RELEASES_URL}/latest; 3. packages/cli/src/lib/upgrade.ts:562 ${GITHUB_RELEASES_URL}/tags/${version}; 4. packages/cli/src/lib/release-notes.ts:18 import; 5. packages/cli/src/lib/release-notes.ts:564 ${GITHUB_RELEASES_URL}?per_page=${CHANGELOG_MAX_RELEASES}; 6. packages/cli/src/lib/binary.ts:250 export const GITHUB_RELEASES_URL = getGitHubReleasesUrl();; 7. packages/cli/src/lib/delta-upgrade.ts:35 import; 8. packages/cli/src/lib/delta-upgrade.ts:124 releasesUrl: GITHUB_RELEASES_URL; 9. packages/cli/src/lib/delta-upgrade.ts:159 fetches ${GITHUB_RELEASES_URL}?per_page=12.