update-prompt.component.html:12 already renders update.notes, and .update-notes-body (update-prompt.component.scss:45) is already bounded and scrolling, with a comment saying exactly why. None of it has ever been on screen.
latest.json is assembled by hand in release.yml (step "Assembler latest.json") and the manifest it writes is { version, pub_date, platforms } — no notes key. So update.body is always undefined, AvailableUpdate.notes with it, and the @if never opens. The markup is dead code that looks like a shipped feature.
Two changes, and the front-end half is the smaller one.
The manifest has to carry the notes
The text already exists at that point in the job: the step above runs scripts/release-notes.mjs extract into $RUNNER_TEMP/release-notes.md, for the GitHub release body. Reading the same file into the manifest's notes is a few lines in the same inline script.
generate_release_notes: true appends the raw PR list, the new contributors and the compare link — but that happens inside action-gh-release and does not touch the extracted file. The manifest would carry the hand-written section alone, which is what we want.
It should not be behind a disclosure
A <details> closed by default means the user installs without reading. Worse, opening it changes the dialog's height: the notes body is bounded at 160 px but the collapsed <details> is a single summary line, so the panel grows under the cursor and moves "Install now" out from under the mouse.
Show it open, at a height that does not depend on the release. The prompt is a fitted dialog (--dialog-width: 460px, no --dialog-height), so it is sized by its content — a fixed-height notes block is precisely what makes the geometry independent of a two-line release versus a forty-line one. The block keeps its overflow-y: auto.
It stays untranslated, and that is consistent
CHANGELOG.md is deliberately untranslated, and so is the "Nouveautés" panel that reads it. A release note in one language beats no release note.
Raw or rendered, to decide
The section is Markdown (## , ### , - ). The <pre> shows it as written, bullets and all — readable, plain, and already there. changelog/model.rs parses that same grammar on the Rust side and "Nouveautés" renders it properly, so reusing that path is possible. The <pre> is the cheap answer and not a wrong one; picking one is part of the ticket.
Done when: the prompt shows the version's notes without a click, a long section scrolls inside a block whose height does not move, and the dialog is the same size whatever the release contains.
update-prompt.component.html:12already rendersupdate.notes, and.update-notes-body(update-prompt.component.scss:45) is already bounded and scrolling, with a comment saying exactly why. None of it has ever been on screen.latest.jsonis assembled by hand inrelease.yml(step "Assembler latest.json") and the manifest it writes is{ version, pub_date, platforms }— nonoteskey. Soupdate.bodyis alwaysundefined,AvailableUpdate.noteswith it, and the@ifnever opens. The markup is dead code that looks like a shipped feature.Two changes, and the front-end half is the smaller one.
The manifest has to carry the notes
The text already exists at that point in the job: the step above runs
scripts/release-notes.mjs extractinto$RUNNER_TEMP/release-notes.md, for the GitHub release body. Reading the same file into the manifest'snotesis a few lines in the same inline script.generate_release_notes: trueappends the raw PR list, the new contributors and the compare link — but that happens insideaction-gh-releaseand does not touch the extracted file. The manifest would carry the hand-written section alone, which is what we want.It should not be behind a disclosure
A
<details>closed by default means the user installs without reading. Worse, opening it changes the dialog's height: the notes body is bounded at 160 px but the collapsed<details>is a single summary line, so the panel grows under the cursor and moves "Install now" out from under the mouse.Show it open, at a height that does not depend on the release. The prompt is a
fitteddialog (--dialog-width: 460px, no--dialog-height), so it is sized by its content — a fixed-height notes block is precisely what makes the geometry independent of a two-line release versus a forty-line one. The block keeps itsoverflow-y: auto.It stays untranslated, and that is consistent
CHANGELOG.mdis deliberately untranslated, and so is the "Nouveautés" panel that reads it. A release note in one language beats no release note.Raw or rendered, to decide
The section is Markdown (
##,###,-). The<pre>shows it as written, bullets and all — readable, plain, and already there.changelog/model.rsparses that same grammar on the Rust side and "Nouveautés" renders it properly, so reusing that path is possible. The<pre>is the cheap answer and not a wrong one; picking one is part of the ticket.Done when: the prompt shows the version's notes without a click, a long section scrolls inside a block whose height does not move, and the dialog is the same size whatever the release contains.