Dashboard › cli › Distillation
145e5a73-8438-4f1c-84ba-88eeacea7c66["lore_tm_v1_G45VNkMRn0E2omr6DoSmnuQ9TYJSiImNRwiDdNYvWEw","lore_tm_v1_FZhNIcmkZalpAVGEUm1MXJ-dHWQTDOaDpm7Q3eKerrs","lore_tm_v1_SLeVCpLzmiTC9wjNz4d3T-OV2OdzppUysaIId5hRNaY","lore_tm_v1_3gnpgwyNPvtOSQKWi9COzcRAdaGdelpEmTY2haqIvzI"]
unscoped_token=no; unauthenticated requests to getsentry/toolkit, getsentry/doesnotexist123456789, and getsentry/cli each returned HTTP 401, so unscoped-token results were n/a; a subsequent curl request failed with HTTP 403.packages/cli/src/lib/binary.ts:426-447 defines fetchWithUpgradeError(url, init, serviceName): it calls customFetch(url, init), rethrows AbortError unchanged, maps TLS certificate errors detected by isTlsCertError() to UpgradeError("network_error", buildTlsErrorDetail(error)), and maps other connection failures to UpgradeError("network_error", \Failed to connect to ${serviceName}: ${msg}`)`.packages/cli/src/lib/binary.ts:464-474 begins replaceBinarySync(tempPath, installPath), intentionally synchronous so the multi-step replacement cannot be interrupted. Unix relies on atomic rename over the target; Windows renames the running executable to ${installPath}.old before moving the temporary binary into place, with cleanupOldBinary() handling the old file on the next startup.packages/cli/src/lib/release-notes.ts parses and aggregates user-facing release notes from GitHub Release bodies for stable builds and conventional commit messages for nightly builds, using marked.lexer() for AST-based section extraction and re-serializing filtered markdown for renderMarkdown().✨, from ### New Features or feat: commits), Bug Fixes (🐛, from ### Bug Fixes or fix: commits), and Performance (⚡, from ### Performance or perf: commits).packages/cli/src/lib/release-notes.ts:35 defines EMOJI_RE = /[\u{2000}-\u{2BFF}\u{FE00}-\u{FE0F}\u{1F000}-\u{1FFFF}]/gu to strip emoji, symbols, variation selectors, and supplemental pictographs from headings before category matching.