Dashboard › cli › Distillation
408719d8-aa83-45e7-b1cf-983fcdedf65a["lore_tm_v1_5E6MjdrjcaOP4csGsZdGNqfSMxHl4KSLrAIdMgkYQFc","lore_tm_v1_ZQJ9_jsM_pk6HPI-GbPLPcLva4si5gjhkyaNvyjnZIg","lore_tm_v1_cxzSQbnKyEHfofEv4yrrZuBLSAiAIkwXRNAw07hUxy4"]
Date: September 10, 2026
packages/cli/src/lib/errors.ts added UpgradeTransportError extends UpgradeError; its constructor calls super("network_error", message) and sets this.name = "UpgradeTransportError", distinguishing transport failures from HTTP or metadata failures.packages/cli/src/lib/ghcr.ts expanded from 520 to 659 lines and now imports valid as semverValid from semver; PRIMARY_UPGRADE_SOURCE, parseUpgradeJson, and UpgradeSource from ./binary.js; and UpgradeTransportError alongside UpgradeError from ./errors.js.packages/cli/src/lib/ghcr.ts changed GHCR_REPO from the hard-coded "getsentry/cli" to PRIMARY_UPGRADE_SOURCE.ghcrRepo, while retaining the documented public default repository.UpgradeSource, including detection via "ghcrRepo" in sourceOrSignal; source-aware requests use source.ghcrRepo rather than the fixed GHCR_REPO.fetchManifest(token, tag, signal?, source = PRIMARY_UPGRADE_SOURCE) now accepts an upgrade source and builds its URL as ${GHCR_REGISTRY}/v2/${source.ghcrRepo}/manifests/${tag}.fetchNightlyManifest(token, signal?, source = PRIMARY_UPGRADE_SOURCE) now forwards both signal and source to fetchManifest(token, GHCR_TAG, signal, source).downloadNightlyBlob(token, digest, signal?, source = PRIMARY_UPGRADE_SOURCE) now builds the blob endpoint as ${GHCR_REGISTRY}/v2/${source.ghcrRepo}/blobs/${digest} instead of using a fixed repository.ghcr.io may return 301, 302, 307, or 308; forwarding the Authorization header through an automatic redirect to Azure Blob Storage can produce HTTP 404. A direct HTTP 200 is also accepted.response.json() cast with parseUpgradeJson(response, signal, "GHCR tag list returned invalid metadata"). It now requires a non-null object; returns [] when tags is absent; requires tags to be an array containing only strings; and otherwise throws UpgradeError("network_error", "GHCR tag list returned invalid metadata").packages/cli/src/lib/release-notes.ts expanded from 122 to 129 lines and replaced GITHUB_RELEASES_URL with source-aware imports getGitHubReleasesUrl, PRIMARY_UPGRADE_SOURCE, and UpgradeSource from ./binary.js.packages/cli/src/lib/release-notes.ts now imports isNormalizedForSource, NormalizedGitHubReleases, and normalizeStableReleases from ./delta-upgrade.js in addition to GitHubRelease, enabling source-branded normalization of stable release metadata.isNormalizedForSource(releases, source) succeeds; release versions continue to strip a leading v via release.tag_name.replace(VERSION_PREFIX_RE, "").fetchStableChangelog changed from positional arguments (fromVersion, toVersion, maxItems?, prefetchedReleases?) to one FetchChangelogOptions & { source: UpgradeSource } object. It normalizes caller-provided releases with normalizeChangelogReleases(prefetchedReleases, source), otherwise fetches via fetchReleasesForChangelog(source), returns null for an empty release list, and builds output through buildChangelogSummaryForSource(releases, fromVersion, toVersion, { maxItems, source }).fetchNightlyChangelog(fromVersion, toVersion, source, maxItems?) now requires the selected UpgradeSource, ensuring nightly release-note retrieval follows the source chosen during version discovery.since is set to (fromTs + 1) * 1000 to exclude the currently installed commit, and GitHubβs exclusive until is set to (toTs + 1) * 1000 to include the target commit.COMMIT_PREFIX_TO_CATEGORY: feat β features, fix β fixes, and perf β performance; commits containing #skip-changelog are excluded and only the first line of multiline messages is used.