Dashboard › cli › Distillation
a5bc8ba0-dccb-49da-b7e6-a6e94b73a9aa["lore_tm_v1_G2R_AkOQLCZ8dai1rFXWMPqLcLeRGqwoSg_lXaSBDbc","lore_tm_v1_8Og1kFKgTH_GPUj6PvjyaESAFwCNItopCfz_xsmh5Rs","lore_tm_v1_uZPrXMuQUwhoms6Qw2KOeR31kesgfuD9gG099n6swbw","lore_tm_v1_qXLv1laSD_bXcEuzbM3Sp_N9tYQ0l2IWI3NMuZy8uEU","lore_tm_v1_I3Z-hi0kYSKDFujyWHPyjn_mQq18UYdHS0ttOqVhbHo"]
executeStandardUpgrade() in packages/cli/src/commands/cli/upgrade.ts chooses the rolling NIGHTLY_TAG only when channel === "nightly" and versionArg is absent; a specifically requested nightly version uses its own release tag.executeStandardUpgrade() calls executeUpgrade(method, target, downloadTag, offline, setMessage) inside withProgress({ message: \Downloading ${target}...`, json }); when delta data is returned it logs Applied delta patch (${formatBytes(downloadResult.patchBytes)} downloaded)`.executeStandardUpgrade() derives the current directory from dirname(getCurlInstallPaths().installPath), resolves the destination with resolveUpgradeInstallDir(currentInstallDir, pathEnv), and invokes runSetupOnNewBinary() with install: true, ensureAuthScopes: !json, and noAgentSkills. It releases downloadResult.lockPath in finally; parent/child lock takeover makes a duplicate release harmless.SENTRY_INSTALL_DIR so the child’s determineInstallDir() cannot relocate the binary to a directory absent from PATH. A legacy ~/.sentry/bin installation is relocated to the XDG directory when that directory is already on PATH, after which setup’s legacy migration removes the old binary before writing the new one.executeStandardUpgrade() resolves the updated executable after installation via resolveUpdatedCliPath(execPath, entryPath, pathEnv) so setup uses the new CLI rather than Node’s process.execPath or a removed Homebrew keg path; it calls runSetupOnNewBinary() with install: false.migrateToStandaloneForNightly() migrates brew/npm/pnpm/bun/yarn users to a standalone binary because nightlies are standalone-only. Its ordered workflow is: 1. download to a temporary path, 2. install to determineInstallDir(), 3. run setup to update completions, PATH, and metadata, 4. return warnings that the old package-manager installation may still shadow the new binary.migrateToStandaloneForNightly() uses NIGHTLY_TAG for latest nightly and no rolling tag for a pinned versionArg; it downloads through executeUpgrade("curl", target, downloadTag, undefined, setMessage). A missing result throws UpgradeError("execution_failed", "Failed to download nightly binary").runSetupOnNewBinary() with method: "curl", channel: "nightly", install: true, installDir: determineInstallDir(homedir(), process.env), ensureAuthScopes: !json, and noAgentSkills, then releases downloadResult.lockPath in finally. Setup already records install metadata, so no redundant setInstallInfo call is needed.npm: "npm uninstall -g sentry" and pnpm: "pnpm remove -g sentry".packages/cli/src/lib/db/version-check.ts through getVersionCheckInfo(), setVersionCheckInfo(latestVersion), and clearVersionCheckCache(); packages/cli/src/lib/db/release-channel.ts calls clearVersionCheckCache() when the release channel changes.packages/cli/src/lib/version-check.ts contains pending-check cancellation through abortPendingVersionCheck(), compares latestVersion with CLI_VERSION, stores discovered versions via setVersionCheckInfo(latestVersion), and prefetches channel-specific patches via prefetchNightlyPatches(latestVersion, signal) or prefetchStablePatches(latestVersion, signal)."sentry cli upgrade" and display ${CLI_VERSION} -> ${latestVersion}.getsentry/cli#1244, titled toolkit merge: bridge CLI release + dual-source upgrade compatibility, is an open sub-task of getsentry/cli#1248 and a hard prerequisite for importing CLI history into getsentry/sentry-mcp.getsentry/cli before any CLI history is imported into getsentry/sentry-mcp; it must remain usable before the Toolkit rename and discover Toolkit releases afterward, while older binaries continue upgrading through legacy endpoints.getsentry/toolkit / ghcr.io/getsentry/toolkit, 2. getsentry/cli / ghcr.io/getsentry/cli.getsentry/cli, every migrated stable CLI release and nightly must be dual-published to Toolkit and the legacy CLI endpoints throughout the compatibility window.UPGRADE_SOURCES across src/lib/binary.ts, ghcr.ts, upgrade.ts, and delta-upgrade.ts; mirror the ordered fallback in the install script; add a check: script proving the install script and TypeScript resolver share one ordered list; preserve delta-chain metadata (sha256-<binary> / from-version) and cleanup/keep-count parity across both GHCR packages; and configure Toolkit’s post-migration release flow to publish releases and nightlies to both repositories while keeping getsentry/cli writable.getsentry/cli using the release system’s computed version rather than manually pinning a target, 2. verify a pre-bridge binary upgrades through getsentry/cli, 3. verify the bridge binary handles HTTP 404 from the not-yet-existing getsentry/toolkit source and falls back to getsentry/cli, 4. verify identical install-script behavior, 5. record the released bridge version before beginning getsentry/cli#1239.getsentry/cli, 3. verify bridge and Toolkit-built binaries upgrade through getsentry/toolkit, 4. simulate Toolkit HTTP 404 and verify both new binaries fall back to getsentry/cli, 5. compare release assets, SHA-256 values, GHCR manifests, and delta-chain metadata between both repositories and require exact matches, 6. repeat the matrix for the install script and one nightly.getsentry/cli may be archived only after telemetry and release evidence show the legacy endpoint is no longer needed; until then it must remain writable.getsentry/cli#1248; GitHub user BYK linked it from issue #1244.0e661a5f50e1fa2bb1f0a66f4607e6901ad53628; nearby commits included 0e661a5f5 fix(org): log region URL parse failures in org list (#1539), 9d0901b10 feat(local): Add agent debugging stream (#1538), 72c307f47 fix(cli): log UID resolution failures in sentry cli fix (#1541), e710ce905 fix(telemetry): log process-tree walk failures in agent detection (#1542), and 6e3e7e13a feat(config): follow XDG Base Directory spec for config location (#1503).Binary became visible after ${attempt} attempts on recovery and throws UpgradeError when the downloaded binary never becomes visible or stays empty.VERIFY_BASE_DELAY_MS * 2 ** (attempt - 1) and documents an approximately 3.1-second total wall-clock budget; the shown retry table includes attempt 2 with a 100 ms delay and 200 ms cumulative time.DecompressionStream to minimize memory use; the Windows artifact naming example is sentry-windows-x64.exe.gz.Downloading full binary when falling back, and verifies the resulting file before spawning setup --install; on non-Windows platforms it subsequently applies executable permissions.base-readable.