Dashboard › craft › Distillation
2a6300bc-25a0-4e08-a6f5-f3b5db5156f4["lore_tm_v1_TWyB_BSRQN5y_cX0EP4DY2YlkG5XLhtAmZRpRWubAmc","lore_tm_v1_tFcjvW8QMVSNr-slrbWEs_3INVNOuJVzB5X8i5nf_Fo"]
Date: Aug 25, 2026
@-mentions with bold formatting, avoiding mass contributor notifications on regular-cadence releases; committed CHANGELOG.md entries retain original @-mentions because they do not notify users.src/commands/prepare.ts:875-963 obtains changelogPath from config.changelog (string or .filePath) and changelogPolicy from config.changelog.policy or legacy config.changelogPolicy; calls prepareChangelog(git, oldVersion, newVersion, argv.noChangelog ? ChangelogPolicy.None : changelogPolicy, changelogPath).src/commands/prepare.ts:892-914 explicitly stages a nonempty generated changelog via git.add(relative('', changelogPath || DEFAULT_CHANGELOG_PATH)), then runs runPreReleaseCommand() with {oldVersion, newVersion, preReleaseCommand: config.preReleaseCommand, targets: config.targets, rootDir: getConfigFileDir() || process.cwd()} and commits staged changelog/version-bump changes through commitChanges(git, newVersion, preReleaseCommandRan).src/commands/prepare.ts:921-961 emits GitHub Actions outputs branch, sha, and previous_tag; for a nonempty changelog, identifies CalVer when argv.newVersion === 'calver' or getVersioningPolicy() === VersioningPolicy.CalVer, then uses disableChangelogMentions(changelogBody) only for CalVer publish-issue content. It writes the full issue changelog with writeGitHubActionsFile('changelog', issueChangelog) to avoid the approximately 2 MB Linux ARG_MAX/E2BIG limit and sets a backward-compatible truncated changelog output using truncateForOutput(issueChangelog, changelogFileUrl).src/commands/prepare.ts:944-955 builds the changelog permalink as https://github.com/${githubConfig.owner}/${githubConfig.repo}/blob/${branchName}/${resolvedChangelogPath}${lineRange}, where lineRange comes from getChangelogLineRange(git, resolvedChangelogPath, newVersion), enabling inline rendering when included in a GitHub issue body.src/commands/prepare.ts:969-984 runs craft publish ${newVersion} through execPublish(argv.remote, newVersion, argv.noGitChecks) only when argv.publish is set and isolation is not dry-run; otherwise it logs the command to run manually. Dry-run logs [dry-run] Would run: craft publish ${newVersion}. After non-dry-run preparation without argv.rev, it switches back to the default branch via switchToDefaultBranch(git, defaultBranch).src/commands/targets.ts:1-21 defines the targets command (description: 'List defined targets as JSON array'): it reads getConfiguration().targets || [], expands workspace targets with await expandWorkspaceTargets(definedTargets), filters to targets whose .name occurs in getAllTargetNames(), maps them with BaseTarget.getId, and prints the allowed IDs as formatted JSON via console.log(formatJson(allowedTargetNames)).