Dashboard › cli › Distillation
bf6a8392-9438-4d35-b87a-cafbc9b0eb13["lore_tm_v1_xuxqRtQveuDJhKD-Paco4fpaJwvsiHVYN0TmopMKzuo","lore_tm_v1_ZKT5rSj2VTxNlzTjNbC8pu-pB9MFoXcFsYh60NeGrwg","lore_tm_v1_UHg5jwDjzdRa5vg68K_eAZJ9K5oNC_6vgS7exVUQY-A"]
sentry cli upgrade nightly as βSwitch to nightly channel and update.βstable (default, latest stable release) and nightly (built from main, updated on every commit); subsequent bare sentry cli upgrade calls use the persisted channel.sentry cli upgrade β update to latest using the persisted channel; 2. sentry cli upgrade nightly β switch to nightly and update; 3. sentry cli upgrade stable β switch back to stable and update; 4. sentry cli upgrade 0.5.0 β install a specific stable version; 5. sentry cli upgrade --check β check without installing; 6. sentry cli upgrade --force β force re-download even if up to date; 7. sentry cli upgrade --method npm β force npm; 8. sentry cli upgrade --offline β upgrade from cached patches without network; 9. sentry cli upgrade --no-agent-skills β skip reinstalling agent skills.curl, brew, npm, pnpm, bun, and yarn; --offline means βUpgrade using only cached version info and patches (no network),β while --no-agent-skills skips agent-skill installation for AI coding assistants.resolveContext(version, flags) in the CLI upgrade command calls validateMethod(method, versionArg, flags.offline), removing channel from validateMethod()βs arguments.isNightlyVersion(pinnedVersion) is true; the code checks method === "brew" && pinnedVersion && !isNightlyVersion(pinnedVersion).getArtifactChannel(target: string): ReleaseChannel, deriving the artifact channel from the resolved target version rather than relying only on the selected/persisted channel.VERSION_PREFIX_REGEX from an explicit versionArg and propagates the selected UpgradeSource alongside the resolved target.persistChannel(channel, channelChanged, version) runs only after offline target resolution because setReleaseChannel() clears the version-check cache on channel changes, which would otherwise prevent resolveOfflineTarget() from reading the cached version.startChangelogFetch() now accepts an options object containing channel, currentVersion, targetVersion, offline, and optional source?: UpgradeSource; it passes source to fetchChangelog(), returns undefined when offline or when versions are equal, and swallows fetch errors so changelog failure never blocks an upgrade.startChangelogFetch() with channel: getArtifactChannel(result.targetVersion) and source: resolved.source, so changelog lookup follows the resolved artifact and upgrade source.{ target, offline, source } from target resolution and starts changelog fetching in parallel with the download using getArtifactChannel(target) plus the same source.isNightlyVersion(target) && method !== "curl" rather than channel === "nightly" && method !== "curl", ensuring an explicitly resolved nightly artifact triggers migration even when channel state differs.source and channel to migrateToStandaloneForNightly(...); standard upgrades pass source to executeStandardUpgrade(...).CLI_VERSION === target && !flags.force && !channelChanged; otherwise it calculates isDowngrade(CLI_VERSION, target) and reports downgraded or upgraded with currentVersion, targetVersion, channel, method, forced, optional offline, warnings, and changelog.packages/cli/src/lib/delta-upgrade.ts defines NORMALIZED_RELEASE_SOURCE = Symbol("normalizedReleaseSource") and brands NormalizedGitHubReleases with readonly [NORMALIZED_RELEASE_SOURCE]: string so normalized stable GitHub release tags retain the identity of their explicit upgrade source.upgradeSourceKey(source: UpgradeSource) returns ${source.githubRepo}\0${source.ghcrRepo}\0${source.tagPrefix}, using NUL separators to distinguish the sourceβs GitHub repository, GHCR repository, and tag prefix.