Add the changelog entry of the first release, 1.0.0 #81

Merged
Tirsvad merged 1 commits from mil-004-release-1-0-0 into main 2026-10-10 17:03:24 +02:00
3 changed files with 17 additions and 6 deletions
Showing only changes of commit 8b972b33e9 - Show all commits
+8 -6
View File
@@ -20,15 +20,17 @@ Each release lists its changes in these groups, in this order:
## [Unreleased] ## [Unreleased]
Everything below is what the first release, `1.0.0`, will contain. Until it is ## [1.0.0] - 2026-10-10
tagged the workflows are delivered from `main` and are not pinned.
First release. The reusable workflow can be pinned at `v1` or `v1.0.0`. The
scoped workflows are delivered by the instance from `main` and cannot be pinned.
### Added ### Added
- Workflow `release.yml`: started by hand with a version, it releases only the tip of - Workflow `release.yml`: started by hand with a version, it releases only the
`main` whose validation run is green and whose changelog entry exists, creates tip of `main` whose validation run is green and whose changelog entry exists,
the version tag, the release page and the major tag, and does nothing but creates the version tag, the release page and the major tag, and does nothing
check until `dry_run` is set to `false`. but check until `dry_run` is set to `false`.
- Scoped workflow `sync-github-metadata.yml`: copies the description and topics - Scoped workflow `sync-github-metadata.yml`: copies the description and topics
of a Gitea repository to its GitHub push mirror on every push to `main`, by of a Gitea repository to its GitHub push mirror on every push to `main`, by
hand and daily at 03:17 UTC. A repository without a GitHub mirror is skipped hand and daily at 03:17 UTC. A repository without a GitHub mirror is skipped
+6
View File
@@ -132,3 +132,9 @@ def test_the_changelog_of_this_repository_follows_the_convention():
text = (REPO_ROOT / "CHANGELOG.md").read_text(encoding="utf-8") text = (REPO_ROOT / "CHANGELOG.md").read_text(encoding="utf-8")
assert changelog.validate(text) == [] assert changelog.validate(text) == []
assert changelog.parse(text)[0].is_unreleased assert changelog.parse(text)[0].is_unreleased
def test_wrapped_item_is_one_item_in_the_notes():
text = "## [Unreleased]\n\n## [1.0.0] - 2026-10-10\n\n### Added\n\n- A long item that\n continues here.\n- Next.\n"
assert changelog.parse(text)[1].groups["Added"] == ["A long item that continues here.", "Next."]
assert "- A long item that continues here.\n" in changelog.notes(text, "1.0.0")
+3
View File
@@ -66,6 +66,9 @@ def parse(text: str) -> list[Release]:
continue continue
if group is not None and line.startswith("- "): if group is not None and line.startswith("- "):
releases[-1].groups[group].append(line[2:].strip()) releases[-1].groups[group].append(line[2:].strip())
elif group is not None and line.startswith(" ") and releases[-1].groups[group]:
# a wrapped item: the lines that continue it belong to the same item
releases[-1].groups[group][-1] += " " + line.strip()
return releases return releases