fix(release): name Release once in a changelog entry's tags (#4567)

* fix(release): name Release once in a changelog entry's tags

* fix(release): the release tag appears once in any case; four past entries lose the duplicate
This commit is contained in:
Miguel Ángel
2026-09-28 04:04:00 +00:00
committed by GitHub
parent a380036903
commit b41ef425cc
3 changed files with 34 additions and 6 deletions
+4 -4
View File
@@ -2897,7 +2897,7 @@ BeginFrame timing.
<Update
label="HyperFrames v0.7.92"
description="Released - 2026-08-04"
tags={["Release", "Release", "Studio", "Core"]}
tags={["Release", "Studio", "Core"]}
>
Percentage-based canary rollouts land, so a change can ship to a stable slice of
installs instead of all-or-nothing — decided locally and offline, with two inert
@@ -4218,7 +4218,7 @@ HyperFrames now uses a 0–10 recommendation scale for feedback, keeps canvas z-
<Update
label="HyperFrames v0.7.57"
description="Released - 2026-07-14"
tags={["Release", "Producer", "Release", "CLI"]}
tags={["Release", "Producer", "CLI"]}
>
`hyperframes publish` now returns a stable public URL: re-publishing updates the same link in place, and a `--space` flag plus a committable project file let a whole team publish to one shared URL. This release also keeps preview review sessions alive across reloads and tags HeyGen API calls with an `X-HeyGen-Client-Source` header.
@@ -6054,7 +6054,7 @@ Adds slideshow support end-to-end: a player-side controller state machine and `<
<Update
label="HyperFrames v0.6.113"
description="Released - 2026-06-19"
tags={["Release", "Release", "Core", "Sdk"]}
tags={["Release", "Core", "Sdk"]}
>
Brings the AI Studio (Pacific) SDK integration surface online — object-valued font/image variables, elastic timing with word-alignment, element insertion, and keyframe animation ops — all on the acorn GSAP writer, now gated behind the cutover flag with recast kept as the default. Also adds a slideshow schema/parser/lint rule and phase-1 image-alpha hit-testing, so clicks on transparent image pixels fall through to the layer behind.
@@ -6815,7 +6815,7 @@ Completes the playbackRate fix across all media duration resolution sites — vi
<Update
label="HyperFrames v0.6.83"
description="Released - 2026-06-09"
tags={["Release", "Core", "Producer", "Release"]}
tags={["Release", "Core", "Producer"]}
>
Fixes media elements with custom playback rates being clipped to the raw source duration instead of the rate-adjusted timeline duration. Also adds a release tag monotonicity guard.
+23
View File
@@ -7,6 +7,7 @@ import {
parseCommit,
renderCommitBullet,
renderMdxCommitBullet,
renderTags,
shouldSkipCommit,
type RawCommit,
} from "./draft-changelog.ts";
@@ -149,3 +150,25 @@ describe("skipped release tags", () => {
assert.deepEqual(findSkippedReleaseTags(TAGS, "0.8.50", "0.8.52"), ["0.8.51"]);
});
});
describe("release tags", () => {
it("names Release once, even when a commit is scoped to the release itself", () => {
const commits = [
"fix(studio-server): inject page tags (#1)",
"docs(release): list the changes v1.2.3 also shipped (#2)",
"fix(core): wait for a loading video (#3)",
"fix(studio): open at Fit (#4)",
].map((subject) => parseCommit(commit(subject)));
assert.deepEqual(renderTags(commits), ["Release", "Studio Server", "Core", "Studio"]);
});
it("names Release once whatever the case of the release scope", () => {
const commits = [
"chore(RELEASE): cut v1.2.3 (#5)",
"fix(core): wait for a loading video (#6)",
].map((subject) => parseCommit(commit(subject)));
assert.deepEqual(renderTags(commits), ["Release", "Core"]);
});
});
+7 -2
View File
@@ -447,8 +447,13 @@ export function renderMdxCommitBullet(commit: ParsedCommit) {
return `- ${scope}${escapeForMdx(capitalize(commit.summary))} (${links.join(", ")}).`;
}
function renderTags(commits: ParsedCommit[]) {
return ["Release", ...uniqueScopeTags(commits).slice(0, 3)];
export function renderTags(commits: ParsedCommit[]) {
return [
"Release",
...uniqueScopeTags(commits)
.filter((tag) => tag.toLowerCase() !== "release")
.slice(0, 3),
];
}
function uniqueScopeTags(commits: ParsedCommit[]) {