Dashboard › cli › Distillation
cc37cdd0-91da-443b-a477-82b48fd9a790["lore_tm_v1_XOP8L7cqmyet0ufMwyc8xNVEbGTnpLLc8gbiDK6_-l0","lore_tm_v1_vOT_Ne3umcznoMso6h_hdxq_W6KmfURwsOy6LGcCq30","lore_tm_v1_bLHF0wPlYr7hHVR9JHYDcq_KVZHeo_pBeEaXhIjqnNQ","lore_tm_v1_HKDgGmR0UHmJqHvhN2IeW0xOrtObT9B-FU2U-LNgR5s"]
Date: Sep 9, 2026
applySectionTruncation() in packages/cli/src/lib/release-notes.ts mutates the sections array in place, “replacing markdown with truncated versions” when the total item count exceeds maxItems.maybeCheckForUpdateInBackground should check for an update when no previous check exists.packages/cli/src/lib/release-notes.ts, a 739-line release-note parser and aggregator using marked.lexer() to retain only three categories in exact display order: 1. "features" from ### New Features/feat:, 2. "fixes" from ### Bug Fixes/fix:, 3. "performance" from ### Performance/perf:.ChangeSection contains category and raw markdown; ChangelogSummary contains fromVersion, toVersion, sections, totalItems, truncated, and originalCount.buildChangelogSummary(): include releases newer than the exclusive fromVersion and no newer than the inclusive toVersion, merge sections by category, strip list-item suffixes matching by @author in [#123](url) or by @author in #123, and optionally truncate to maxItems.truncateSectionMarkdown() and applySectionTruncation(): count only top-level list items, preserve kept items through each item.raw, distribute the budget proportionally using Math.floor for non-final sections, give the final section the remaining budget, and set truncated when the resulting count is less than originalCount.extractNightlyTimestamp() accepts X.Y.Z-dev.<unix-seconds>-style versions; parseCommitMessages() keeps only first-line conventional commits with feat, fix, or perf, supports optional scopes, and excludes any commit whose message contains #skip-changelog.fromTs because since is inclusive, add 1 second to toTs because until is exclusive, and request https://api.github.com/repos/getsentry/cli/commits?sha=main&since=${sinceDate}&until=${untilDate}&per_page=100.CHANGELOG_MAX_RELEASES = 30, compared with the delta-upgrade cap of 12; GitHub’s maximum per_page is 100, and 30 is intended to cover approximately 6+ months of weekly releases.fetchChangelog() as best-effort: dispatch by channel: "stable" | "nightly", return null on failure, allow stable callers to pass prefetchedReleases to avoid a redundant API call, and support execution in parallel with binary download so changelog fetching adds zero latency.packages/cli/test/lib/version-check.test.ts, packages/cli/test/lib/release-notes.test.ts, and packages/cli/test/lib/release-notes.property.test.ts.