fix(release): keep a changeset's markdown in the changelog
build_section piped every changeset body through `tr '\n' ' '`. A multi-line changeset came out as one paragraph, so nested bullets rendered as inline " - " runs and a whole release read as a single unbroken block — v0.3.0 was one ~4 KB bullet. The renderer is now Ludic rather than a shell one-liner. A section is grouped by conventional-commit type (Features, Fixes, Performance, ...), each changeset is one bullet, and continuation lines are indented two spaces so nested lists and paragraphs stay inside their item. Bullets are sorted within a group, so cutting the same release twice produces the same text. Also: - `x release --dry-run` renders the pending section to stdout and touches nothing, so a release can be read before it is cut. - `x changelog-render` re-renders a section from a directory of changesets, and `x changelog-section` prints one release's section back out of CHANGELOG.md. - The v0.1.0 and v0.3.0 sections are re-rendered with the former, from the changesets recovered at each tag's parent commit; the bullet counts (6 and 25) and word multisets are unchanged. v0.2.0 is left alone: it carries a hand-written summary and topical subheadings, and regenerating it would have replaced curation with raw changeset dumps. The file header now says that a section may carry such a summary, since it previously claimed released sections are never hand-edited. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
2f3833a295
commit
5c4c10a1d7
5 changed files with 400 additions and 56 deletions
|
|
@ -6,7 +6,7 @@
|
|||
# Bootstrap it once from a clean checkout (the only step Ludic cannot do for
|
||||
# itself, since compiling Ludic needs a compiler):
|
||||
#
|
||||
# clang selfhost/ludicc.seed.ll -o bin/ludicc && bin/ludicc tools/x/main.ludic -o bin/x
|
||||
# mkdir -p bin && clang selfhost/ludicc.seed.ll -o bin/ludicc && bin/ludicc tools/x/main.ludic -o bin/x
|
||||
#
|
||||
# Thereafter `bin/x build` rebuilds the whole toolchain — including bin/x itself.
|
||||
# Always run x from the repository root.
|
||||
|
|
@ -68,8 +68,12 @@ program X {
|
|||
print("")
|
||||
print("release:")
|
||||
print(" x version print the toolchain version (ludicc --version)")
|
||||
print(" x release [major|minor|patch] [--publish]")
|
||||
print(" x release [major|minor|patch] [--dry-run] [--publish]")
|
||||
print(" cut a release: CHANGELOG + VERSION bump + tag (+ Forgejo release)")
|
||||
print(" x publish [vX.Y.Z] publish an already-tagged release (artifacts + notes); what CI runs on a tag push")
|
||||
print(" x changelog-section <ver> print that release's CHANGELOG.md section")
|
||||
print(" x changelog-render <ver> <date> <dir>")
|
||||
print(" render a CHANGELOG section from a directory of changesets")
|
||||
print("")
|
||||
print("self-host internals:")
|
||||
print(" x selfhost-build [ludicc] [out] assemble + compile the self-host compiler")
|
||||
|
|
@ -132,6 +136,9 @@ program X {
|
|||
if (cmd == "test-pkg") { return cmd_test_pkg() }
|
||||
if (cmd == "version") or (cmd == "--version") or (cmd == "-v") { return cmd_version() }
|
||||
if (cmd == "release") { return cmd_release() }
|
||||
if (cmd == "changelog-render") { return cmd_changelog_render() }
|
||||
if (cmd == "changelog-section") { return cmd_changelog_section() }
|
||||
if (cmd == "publish") { return cmd_publish() }
|
||||
if (cmd == "help") or (cmd == "--help") or (cmd == "-h") { usage(); return 0 }
|
||||
|
||||
return -1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue