Dashboard › cli › Distillation
a3bd1cd1-5b19-403c-9d55-39a7451ccb42["lore_tm_v1_Gq5q2G8XROkNVV37bje0NbBLgO5NBncpLbeHKWvALK8","lore_tm_v1_UQ8f6WyYnFiPRqHgmKzVa1y7LEAwZkX87DCPMi_VX1U","lore_tm_v1_y_9xWLKZLN5YB6hb70ckm2uWh-1oq34v3NlWcnsUwjw","lore_tm_v1_TCzBNgdvZ_bGEKwROmOFwOqpnTJYbwV8Xl5xwqJ8ymw","lore_tm_v1_5O9wyxLIcHa5YJ1akURs_Cfz5P5uHg6KQAjPCEVTHG4","lore_tm_v1_zEx0ibnQFxjJK6YrC6ceIWWUJwp8LqH6BTEc0piYOB0","lore_tm_v1_HdJzhloyTfvG56yjGLfZE4lMzm2QMm_VRkGbIPtvCSc","lore_tm_v1_O2Obm_C6AWZD1VNdCUwFqTRzc8O7dFiqmWgD4oeDVnM","lore_tm_v1_N2_8wBw9QfT6KTG8ixUnNxsyI9xlJ1iBBZnqbSTPLxg","lore_tm_v1_HOZi9-zNBx7o8KWelcdanZJ2nWhadYjTcQ4dCS9QMHQ","lore_tm_v1_9unsuqQJudz7VJtZBWZ2AEd7LcBF5JoVPdm93a4TJ4w","lore_tm_v1_NpsvYv1p9EuYvKSTiRMuwqIrEpdaKp-NKsIEHRVSHcs","lore_tm_v1_kJhHpfEs5HjK6IqaP4dkYpgt6h78u0gK3kV9tGDWPH8","lore_tm_v1_u6prr-gwCjzLWySeVQhnOsP3OwCNVycrHFVg8KhdzCE","lore_tm_v1_9tXphjpzCXiotHVUkZQEvSE23PnUV7qT_0pQhQ6AeKA","lore_tm_v1_9fV7a0fdIlQ-KWjMYm1edlweixdpr4QpLi7Axwsli9M","lore_tm_v1_uMFnEQcBk8IS6xExxXeZheppNKDM3avUo3lc--FSKCY","lore_tm_v1_ZgoEScJ2GG0fyJ_wHjtv52WWuEGcxIjlNRZwQR456FU","lore_tm_v1_vIW7lIYdHaMuRPM7ndSZYOuMxhN9oOj21wBK2tGmCLI","lore_tm_v1_uR6B3rwYDLE6Lfhz7KlDu5JF02nM4V-QRktycA5oVAk","lore_tm_v1_XLSpq0knksQoQbVxVPBm9_XHbLPhpqMjoU8WaGOB17s","lore_tm_v1_z4giy0OIdVByL1YpMi_H9x6wqkvpcuaorEbAkP_wEkQ","lore_tm_v1_PTp5G8isWb2AVq3bqzjds5JURiTrDnYJN8YAJv-iwrw","lore_tm_v1_-AOsnqXCGgJU-_Q5lMzmXKvY039G545l0zVF3FaPf4U","lore_tm_v1_oOncXsGyH7Im0MEdgfJyI-lfv_8xD3qmgfz1Gd_H7Os","lore_tm_v1_8JE-fL4emFXYApgkQcZwrHh9SMu2tAjip8MPldsO2rg","lore_tm_v1_gjq_ow9HOgTaaBzgHwCbd_vTxbVy7xtGFDGYozM9qxo","lore_tm_v1_glPAA21nEa7WJmgL-bLkUTTFmZbovu0i2Sman7AbxNw","lore_tm_v1_CJJqunVR78VZAuKu59yRfeogcIVSuBbQAOv1KxdQwso","lore_tm_v1_Fcq6XDd3sGP1l6NCrqe1WG60DO_RrOiYrB9VVxjgAqA","lore_tm_v1_mryJaiVG7lnHKwDm5SGjIlrtVNCBLdn-1u--zi2IYPg","lore_tm_v1_36lt4JzwlsvYvCGBGDpguumfUev53OYLz5PUFVC_93Y","lore_tm_v1_obWCYvYhvq-SOClSP6lwBMp1hc8sq4hiqN8-FhSnAKg","lore_tm_v1_AKEocN9JoTyD8mc7-ZVcjpw1q1qAZz8iAR_V8VwmkpA","lore_tm_v1_f8vgkzE1v8CTb7Ru3UVjR9HioBDRXwct3RVKxNfBP84","lore_tm_v1_v1e6zmQYenUzjGLR5_sIcTzZ7zrn6ZKVdaNTjFeQRrM","lore_tm_v1_I8qNyBQFgSTzmleN6urffPFE_nhjlkCOn4doQm-rlk8","lore_tm_v1_D6e3D_p6Gu2wYVw-b7AZRIkabqdeOLMK5TpDGthZ81g"]
Date: Sep 9, 2026
packages/cli/test/lib/version-check.test.ts had 3 failures and 45 passes across 48 tests. prefetchStablePatches() and prefetchNightlyPatches() received only [targetVersion, AbortSignal] instead of the expected [targetVersion, AbortSignal, UpgradeSource]; failures covered Toolkit stable (99.0.0), legacy stable after Toolkit 404 (99.0.0), and Toolkit nightly (99.0.0-dev.200).packages/cli/src/lib/version-check.ts by passing the discovery-selected source as the third argument to prefetchNightlyPatches(latestVersion, signal, source) and prefetchStablePatches(latestVersion, signal, source).packages/cli/test/lib/release-notes.test.ts, the focused Vitest run under v4.1.10 passed all 86 tests across 3 files in 4.99s. The removed-test.poolOptions Vitest 4 warning remained.TS1005: ',' expected at packages/cli/src/commands/cli/upgrade.ts:869, where startChangelogFetch(channel, currentVersion, targetVersion, offline, source?: UpgradeSource) had a missing comma after offline: OfflineMode.packages/cli/install, packages/cli/src/commands/cli/upgrade.ts, packages/cli/src/lib/binary.ts, packages/cli/src/lib/delta-upgrade.ts, packages/cli/src/lib/ghcr.ts, packages/cli/src/lib/release-notes.ts, packages/cli/src/lib/upgrade.ts, packages/cli/src/lib/version-check.ts, packages/cli/test/lib/binary.test.ts, packages/cli/test/lib/delta-upgrade.test.ts, packages/cli/test/lib/ghcr.test.ts, packages/cli/test/lib/install-script.test.ts, packages/cli/test/lib/release-notes.test.ts, packages/cli/test/lib/upgrade.test.ts, and packages/cli/test/lib/version-check.test.ts.packages/cli/src/lib/binary.ts, packages/cli/src/lib/ghcr.ts, packages/cli/src/lib/release-notes.ts, and packages/cli/src/lib/upgrade.ts: PRIMARY_UPGRADE_SOURCE and defaults derived from it were inferred as UpgradeSource | undefined because UPGRADE_SOURCES was typed only as readonly UpgradeSource[] under noUncheckedIndexedAccess.PRIMARY_UPGRADE_SOURCE typing root cause was fixed in packages/cli/src/lib/binary.ts by declaring UPGRADE_SOURCES as ] as const satisfies readonly [UpgradeSource, ...UpgradeSource[]];, proving the ordered source list is non-empty and making UPGRADE_SOURCES[0] an UpgradeSource.TS1016: A required parameter cannot follow an optional parameter at packages/cli/src/lib/release-notes.ts:677; the final fetchNightlyChangelog() order is (fromVersion, toVersion, source: UpgradeSource, maxItems?: number).v4.1.10; Biome checked 5 files with no fixes required.maybePrefetchPatches(channel, latestVersion, signal, source) now preserves source affinity by calling prefetchNightlyPatches(latestVersion, signal, source) or prefetchStablePatches(latestVersion, signal, source). Delta-prefetch failures are caught and logged as "Delta patch pre-fetch failed (best-effort)"; stale-cache cleanup failures are caught and logged as "Patch cache cleanup failed (best-effort)".checkForUpdateInBackgroundImpl() obtains { version: latestVersion, source } from either fetchLatestNightlyVersionWithSource(signal) or fetchLatestFromGitHubWithSource(signal), stores the version with setVersionCheckInfo(latestVersion), and passes the same source to maybePrefetchPatches(). Expected AbortErrors are not reported; other failures are recorded on the detached Sentry span as version_check.error and version_check.error_type, with status code 2, rather than sent to the Issues feed via captureException.fetchLatestFromGitHubWithSource(signal?, sources = UPGRADE_SOURCES) and fetchLatestNightlyVersionWithSource(signal?, sources = UPGRADE_SOURCES) accept an ordered source list. The compatibility wrapper fetchLatestFromGitHub(signal?, source?) constrains discovery to [source] when a source is explicitly supplied, otherwise uses UPGRADE_SOURCES.prefetchNightlyPatches(targetVersion, signal?, source = getPrimaryUpgradeSource()) uses nightlySource(source), and prefetchStablePatches(targetVersion, signal?, source = getPrimaryUpgradeSource()) uses stableSource(source).packages/cli/test/commands/cli/upgrade.test.ts to the prior 15-file set.packages/cli/src/lib/release-notes.ts: fetchReleasesForChangelog(source) requests ${getGitHubReleasesUrl(source)}?per_page=30; fetchStableChangelog(options) requires source: UpgradeSource; and buildChangelogSummaryForSource() rejects tags that do not begin with a nonempty selected source.tagPrefix, strips the prefix, then compares versions.source.githubRepo in https://api.github.com/repos/${source.githubRepo}/commits?sha=main&since=${sinceDate}&until=${untilDate}&per_page=100. It offsets both encoded nightly timestamps by +1s: since excludes the current versionβs commit and until includes the target versionβs commit.FetchChangelogOptions includes optional source?: UpgradeSource; fetchChangelog(opts) defaults it to PRIMARY_UPGRADE_SOURCE, passes it to either fetchNightlyChangelog(fromVersion, toVersion, source, maxItems) or fetchStableChangelog({...opts, source}), and preserves best-effort behavior by catching errors, logging "Changelog fetch failed:", and returning null.packages/cli/src/lib/release-notes.ts, packages/cli/src/lib/version-check.ts, packages/cli/test/lib/release-notes.test.ts, and packages/cli/test/lib/version-check.test.ts totaled 331 insertions and 47 deletions.getsentry/cli#1244 source affinity in exactly 4 focused files: packages/cli/src/lib/version-check.ts, packages/cli/src/lib/release-notes.ts, packages/cli/test/lib/version-check.test.ts, and packages/cli/test/lib/release-notes.test.ts.UpgradeSource is threaded from stable/nightly discovery into patch prefetch; stable and nightly changelogs stay on the selected repository without later fallback; Toolkit releases are filtered by the cli@ tag prefix; and best-effort non-throwing behavior plus existing defaults are preserved.