Dashboard › cli › Distillation
aaea2ad1-791f-4c4d-bea5-550962f1fa58["lore_tm_v1_3u7TXxSPpx0TaKLXWHgJcL1mCEeWKUCJsIXGA_0gaCY","lore_tm_v1_vaWp1-DdJ3FRAAaVcH6YhsxJ67AwY9WIDx7q3Rfo0pA","lore_tm_v1_QJ7ElFDBIQ-S-tX3Oj6mEnVw_YCPL2T2zHbqSM-HxWM","lore_tm_v1_ZLxtM3Qzuja4SBmGqDx9tir-yp2Mfx-xwrRB3sYm1OU","lore_tm_v1_ezBV3y0fvzXpXIAL7bSFGwnw41d_8uCg4hlMPzUVpL4","lore_tm_v1_b7U35EOgnvgLS0KzuSZWM38jDLXbtYjdVq-4BVFKgBI","lore_tm_v1_h5vCy2mL2grScaY-AbDiSKB7OECSbi1fj7Fn943p2JE","lore_tm_v1_-5DOwIuga71Cd5ekhTuPpvrlo0YebiRxj441JWP7ZjM"]
getsentry/cli before importing any CLI history into getsentry/sentry-mcp; only after recording the released bridge version may getsentry/cli#1239 begin.getsentry/toolkit / ghcr.io/getsentry/toolkit; 2. getsentry/cli / ghcr.io/getsentry/cli.getsentry/cli; every migrated CLI stable release and nightly must therefore be dual-published to Toolkit and the legacy CLI endpoints during 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 source list; preserve delta-patch chains (sha256-<binary> / from-version) and cleanup/keep-count parity across both GHCR packages; configure post-migration Toolkit releases and nightlies to publish to both repositories; keep getsentry/cli writable through the compatibility window.getsentry/cli with the dual-source resolver, using the release system’s computed version rather than manually pinning a target; 2. verify a pre-bridge binary upgrades to the bridge through getsentry/cli; 3. verify the bridge handles a 404 from not-yet-existing getsentry/toolkit and upgrades through getsentry/cli; 4. verify identical install-script behavior; 5. record the bridge version; only then start getsentry/cli#1239.getsentry/cli; 3. verify the bridge binary and a Toolkit-built binary upgrade through getsentry/toolkit; 4. simulate a Toolkit 404 and verify both new binaries fall back to getsentry/cli; 5. compare release assets, SHA-256 values, GHCR manifests, and delta-chain metadata across both repositories and require exact matches; 6. run the same matrix for the install script and one nightly.getsentry/cli may be archived only after telemetry and release evidence show the legacy endpoint is unnecessary, and it must remain writable until then.https://github.com/getsentry/cli/issues/1248 from https://github.com/getsentry/cli/issues/1244#issuecomment-4978828102. (meaning July 15, 2026)/home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/toolkit-bridge-upgrade/packages/cli/src/lib/upgrade.ts imports binary helpers including fetchWithUpgradeError, GITHUB_RELEASES_URL, getBinaryDownloadUrl, getGitHubHeaders, and isNightlyVersion, plus GHCR helpers downloadNightlyBlob, fetchManifest, fetchNightlyManifest, findLayerByFilename, getAnonymousToken, and getNightlyVersion.src/lib/upgrade.ts defines OfflineMode = false | "explicit" | "network-fallback" and NIGHTLY_TAG = "nightly".getCurlInstallPaths() in src/lib/upgrade.ts resolves curl-install paths in this priority: 1. stored DB path when method is "curl" and its directory still exists; 2. process.execPath when within a known curl directory; 3. the XDG-aware default install directory.getCurlInstallPaths() addresses a prior failure where a purged temporary SENTRY_INSTALL_DIR left a DB row pointing to a dead location, causing ENOENT ... open '.../sentry.lock'; inaccessible or absent stored hints now fall through to execPath or the default path.waitForBinaryVisible() in src/lib/upgrade.ts handles Windows + Bun 1.3.9 issue CLI-1D3, where Bun.file().writer().end() may return before the OS exposes the file and a subsequent Bun.spawn fails with Executable not found in $PATH.VERIFY_MAX_ATTEMPTS = 6 and VERIFY_BASE_DELAY_MS = 100, probing at 0, 100, 300, 700, 1500, and 3100 ms with exponential sleeps of 100, 200, 400, 800, and 1600 ms.probeBinaryFile(path) accepts only a visible regular file with size greater than zero; waitForBinaryVisible(path) throws UpgradeError("execution_failed", ...) when the downloaded file never becomes visible or stays empty.downloadBinaryToTemp() first attempts a delta upgrade, falls back to a full download on delta failure, verifies the temporary file is visible and non-empty, best-effort clears the consumed patch cache, applies mode 0o755 outside Windows, and retains the upgrade lock on success for the download→spawn→install pipeline.UpgradeError("offline_cache_miss", ...); explicit offline mode advises rerunning without --offline, while network-fallback mode advises checking the internet connection.downloadFullBinary() dispatches nightly versions to downloadNightlyToPath() and stable versions to downloadStableToPath(downloadTag ?? version, ...).brew upgrade getsentry/tools/sentry; the requested version is intentionally ignored because Homebrew manages versioning via the tap formula and does not support arbitrary release pinning.yarn global add sentry@${version} for Yarn and install -g sentry@${version} for npm, pnpm, and Bun; .cmd execution on Windows requires shell: true.src/lib/version-check.ts:286-287 calls fetchLatestNightlyVersion(signal) or fetchLatestFromGitHub(signal); src/lib/upgrade.ts defines fetchLatestFromGitHub at line 399, fetchLatestNightlyVersion at line 467, fetchLatestVersion at line 498, versionExists at line 551, downloadBinaryToTemp at line 902, and executeUpgrade at line 1122; src/commands/cli/upgrade.ts calls fetchLatestVersion at line 289, versionExists at line 325, and executeUpgrade at lines 642 and 727.