Dashboard › cli › Distillation
b339aca3-5266-4feb-9751-44cc60c8d01a["lore_tm_v1_A3bPiX_u4NWU2WOfOTfAyOAjdIjzZjLCK24YY8JFLic"]
packages/cli/src/lib/release-notes.ts to import valid as semverValid from semver and to import getGitHubReleasesUrl, PRIMARY_UPGRADE_SOURCE, and type UpgradeSource from ./binary.js, replacing the GITHUB_RELEASES_URL import.fetchNightlyChangelog() in packages/cli/src/lib/release-notes.ts to require source: UpgradeSource after toVersion; the source represents the release source selected during version discovery.CHANGELOG_MAX_RELEASES = 30, higher than the delta-upgrade cap of 12; rationale states GitHub’s API maximum per_page is 100, while 30 covers approximately 6+ months of weekly releases.type UpgradeSource from ./binary.js and replace fetchLatestFromGitHub / fetchLatestNightlyVersion imports with fetchLatestFromGitHubWithSource / fetchLatestNightlyVersionWithSource from ./upgrade.js.checkForUpdateInBackgroundImpl() never throws: it catches errors and reports them to Sentry. If shouldCheckForUpdate() throws due to DB access failure, it calls Sentry.captureException(error) and returns without crashing the CLI.setup and fix only when preceded by cli, preventing false positives such as --project setup.isStderrTTY() returns Boolean(process.stderr.isTTY); update banners are suppressed for non-TTY stderr such as scripts, CI logs, pipes, and editor-captured output, matching gh CLI behavior.getUpdateNotificationWithCopy() never throws: errors are caught and reported to Sentry. It returns null when stderr is non-TTY, the CLI is up to date, cached version information is absent, notification is rate-limited, or an error occurs.getUpdateNotificationWithCopy() persists last_notified = now via markUpdateNotified whenever it returns a non-null update message, causing subsequent invocations inside the rate-limit window to return null.