Dashboard › cli › Distillation
c5315194-68e6-41be-a76f-89fa88fe6099["lore_tm_v1_JOLDT87L-AuijRwbsNWxHGBjYe_xkF-iQSDL7DEyaNQ","lore_tm_v1_ut0Qh5UDKq2i8KFrb3pYDVjV7Z6JWXX4T3kV3j4iB14","lore_tm_v1_S_plJK3i8EgYkFsZMS8MCEJHbrxRA8hv1cQQx9_Atmc","lore_tm_v1_78NbdAr4Fx5ajjzjDH0d8SDGdpxhIYF7QtFztb5PeHY"]
cea7b2afba91f11f1cdbb1785ea97ba61159520c lists, in order: 04867eaf9b412a62d4b1ea1c59c2b382c557bd0b feat(cli): add toolkit upgrade bridge; 9c874298e3b57515ba36d35140627a668a46dc7b fix(cli): address toolkit bridge review; 723375b6ce4e37884e760fa0f848e7e7e3effcc9 fix(cli): address upgrade review findings; dbee7e9f2a4555e044f74dfebad002cccfa43a1f test(cli): update toolkit upgrade fixtures; 5ffa5cd0fe02c0a5dc5bec9a8a099f4135c0b447 fix(cli): harden upgrade source resolution; c8c815bbecf472061ec02ab96d1a31f23f078d01 fix(cli): validate GitHub release pagination; b6484e0fb1eb0f8bce68272d538f5c3b26cd5bd5 fix(cli): validate resolved upgrade metadata; c6030fbf4d0c190f037c86d832edb6680d3e54ab fix(cli): bind nightly manifests to versions; 2f9b5d0d26124d445a916b8bfc584ad518720584 fix(cli): isolate pinned upgrade resolution; 4a1d5bad105c006193c68459175f5eb3c7f78e08 test(cli): update pinned version fixture; e565b1afb39a341605adc883de8812851de7d581 fix(cli): validate stable upgrade metadata; f1c10a6cb1a753b8c4b8c613cd78735c3f12cba6 fix(cli): preserve pinned upgrade contracts; dcf6719995800d28d6f88a8c709abe4aa3d0b6db test(cli): validate GitHub request origin; e22f0eba66298a7228a988a4adcf1ec5be85227b fix(cli): preserve source and cancellation provenance; 878459c490576dbb7abb76d3a3dc1b5d9fc62c1f fix(cli): fail closed on upgrade metadata; 7d62ffa8317f9b98be0dc4afec0a927c1cabb0b7 fix(cli): preserve paginated request cancellation; cea7b2afba91f11f1cdbb1785ea97ba61159520c fix(cli): validate release response shapes.cea7b2afba91f11f1cdbb1785ea97ba61159520c, upgrade-related implementation locations include packages/cli/src/commands/cli/upgrade.ts:301 calling versionExists(lookupMethod, target), lines 695 and 783 calling executeUpgrade(...), and line 892 returning fetchChangelog({...}).cea7b2afba91f11f1cdbb1785ea97ba61159520c, exported upgrade APIs include getBinaryDownloadUrl at packages/cli/src/lib/binary.ts:238; attemptDeltaUpgrade at packages/cli/src/lib/delta-upgrade.ts:618; prefetchNightlyPatches at line 711; prefetchStablePatches at line 719; fetchChangelog at packages/cli/src/lib/release-notes.ts:761; fetchLatestFromGitHub at packages/cli/src/lib/upgrade.ts:546; and fetchLatestNightlyVersion at line 657.cea7b2afba91f11f1cdbb1785ea97ba61159520c, getAnonymousToken is exported at packages/cli/src/lib/ghcr.ts:212 and called from packages/cli/src/lib/upgrade.ts:643, line 791, and line 1026; the line-643 call passes both source and signal.cea7b2afba91f11f1cdbb1785ea97ba61159520c, packages/cli/src/lib/binary.ts defines Toolkit as githubRepo: "getsentry/toolkit" and ghcrRepo: "getsentry/toolkit" at lines 122–123, and legacy CLI as githubRepo: "getsentry/cli" and ghcrRepo: "getsentry/cli" at lines 127–128.cea7b2afba91f11f1cdbb1785ea97ba61159520c, packages/cli/src/lib/binary.ts:279 exports GITHUB_RELEASES_URL = getGitHubReleasesUrl(), while packages/cli/src/lib/ghcr.ts:139 exports GHCR_REPO = PRIMARY_UPGRADE_SOURCE.ghcrRepo.packages/cli/test/commands/cli.test.ts, the nonexistent curl-version test for target 999.0.0 was strengthened to assert expect(callCount).toBe(2) after expecting "Version 999.0.0 not found".packages/cli/src/lib/version-check.ts documents channel-specific checks: nightly builds, identified by CLI_VERSION containing "-dev.<timestamp>", use GHCR’s OCI manifest annotation; stable builds use GitHub Releases; results are cached in the database and displayed on subsequent runs.packages/cli/src/lib/version-check.ts changed maybePrefetchPatches(channel, latestVersion, signal) to accept source: UpgradeSource; it now passes source to both prefetchNightlyPatches(latestVersion, signal, source) and prefetchStablePatches(latestVersion, signal, source), preserving the upgrade source selected during version resolution.maybePrefetchPatches remains best-effort: it skips prefetch unless semverCompare(latestVersion, CLI_VERSION) === 1, silently catches failures so version checking succeeds, logs failures with logger.debug("Delta patch pre-fetch failed (best-effort)", error), and opportunistically cleans stale cached patches afterward.checkForUpdateInBackgroundImpl(): void in packages/cli/src/lib/version-check.ts is nonblocking and runs the fetch in the background; a failure in shouldCheckForUpdate() is caught, sent to Sentry.captureException(error), and returns without crashing the CLI.Sentry.startSpanManual with name: "version-check", op: "version.check", and forceTransaction: true.packages/cli/src/lib/version-check.ts replaced version-only resolution with source-aware resolution: nightly checks now call fetchLatestNightlyVersionWithSource(signal) and stable checks call fetchLatestFromGitHubWithSource(signal), destructuring { version: latestVersion, source }; it stores latestVersion via setVersionCheckInfo(latestVersion) and passes the selected source into maybePrefetchPatches(channel, latestVersion, signal, source).