Dashboard › cli › Distillation
649598bf-edae-4704-a21a-03647503e4c3["lore_tm_v1_YbZ6wDHtHhZwR4bKd1X5twLXiDCpOCWFh0AwFQlkPQE","lore_tm_v1_ThuJdipPiOvSryHhKVG1gsfk756Cs7qQpMb05tnL8sU"]
Date: Sep 10, 2026
--offline upgrades are supported only for curl-installed binaries.sentry cli upgrade nightly means βSwitch to nightly channel and update.β/; for example, ~/.local/bin/ must compare equal to ~/.local/bin.packages/cli/src/commands/cli/upgrade.ts now imports isNightlyVersion and type UpgradeSource from packages/cli/src/lib/binary.ts.validateMethod() in packages/cli/src/commands/cli/upgrade.ts no longer accepts channel; it derives pinnedVersion by treating values in CHANNEL_VERSIONS as unpinned and otherwise removing VERSION_PREFIX_REGEX. Homebrew rejects a pinned version only when !isNightlyVersion(pinnedVersion).packages/cli/src/commands/cli/upgrade.ts now returns { kind: "target", target: resolvedTarget, source }; executeStandardUpgrade() accepts and destructures optional source?: UpgradeSource.packages/cli/src/commands/cli/upgrade.ts defines SPAWN_RETRY_BASE_MS = 500; spawn retry delay is documented as attempt * base.packages/cli/src/commands/cli/upgrade.ts say the existing package-manager installation may appear earlier in PATH and provide removal hints: npm β npm uninstall -g sentry, pnpm β pnpm remove -g sentry, bun β bun remove -g sentry, yarn β yarn global remove sentry, brew β brew uninstall getsentry/tools/sentry.packages/cli/src/lib/binary.ts defines InstallationMethod as "curl" | "brew" | "npm" | "pnpm" | "bun" | "yarn" | "unknown".packages/cli/src/lib/binary.ts adds source-aware upgrade selection using UpgradeSource, with PRIMARY_UPGRADE_SOURCE as the default source. Only HTTP 404 advances to the next source; every other HTTP or transport outcome does not trigger source fallback. If every source returns HTTP 404, UpgradeSourceNotFoundError reports: No CLI upgrade source was found: every source returned HTTP 404.fetchWithUpgradeError() in packages/cli/src/lib/binary.ts now preserves arbitrary cancellation: when init.signal?.aborted, it throws init.signal.reason; an AbortError is also rethrown unchanged.fetchWithUpgradeError() now classifies TLS and connection failures as UpgradeTransportError rather than generic UpgradeError("network_error", ...); TLS details use buildTlsErrorDetail(error), while other failures report Failed to connect to ${serviceName}: ${msg}.getBinaryPaths(installPath) in packages/cli/src/lib/binary.ts derives tempPath: ${installPath}.download, oldPath: ${installPath}.old, and lockPath: ${installPath}.lock.packages/cli/src/lib/binary.ts checks ~/.local/bin and ~/bin candidates already present in PATH; samePath makes this membership check case-insensitive on Windows and macOS.