From d39bb4b65a7c7d658df237a52af9803fa7a1e37b Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 10 Nov 2026 13:27:30 +0100 Subject: [PATCH 1/2] docs: drop a pronoun from the handheld section 12daa6698 wrote "the file for your system" on the installer page, and test_site_pronouns failed Validation on it. The line above already names the file for the system: "Download that file". --- wiki/installer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/installer.md b/wiki/installer.md index 7dcd94386..c89f56d8d 100644 --- a/wiki/installer.md +++ b/wiki/installer.md @@ -1506,7 +1506,7 @@ RetroBIOS also runs on the handheld itself, in the Copy the file for the system to the SD card, then start RetroBIOS from the menu. -Download the file for your system from the +Download that file from the [latest release](https://github.com/Abdess/retrobios/releases/latest). | System | File | Copy it to | Start it from | From 4d376e9727118696d8a2108bd7cdbdc38198cdd7 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 10 Nov 2026 13:34:05 +0100 Subject: [PATCH 2/2] docs: write the release notes without pronouns The release page is public text like the site. render() said "finds your setup", "file for your system" and "your BIOS folder". The pronoun test now renders the notes from release.json, once more with a pack in parts, and fails on any pronoun the script writes. --- scripts/release_notes.py | 6 +++--- tests/test_site_pronouns.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/scripts/release_notes.py b/scripts/release_notes.py index dff6f6f49..7308826a4 100644 --- a/scripts/release_notes.py +++ b/scripts/release_notes.py @@ -126,7 +126,7 @@ def render(record: dict, platforms_dir: str, whats_new: str) -> str: lines = [ "### Install in one command", "", - "It finds your setup and its BIOS folder, then downloads only what is missing.", + "It finds the setup and its BIOS folder, then downloads only what is missing.", "", "**Linux, macOS, Steam Deck**", "```sh", @@ -138,12 +138,12 @@ def render(record: dict, platforms_dir: str, whats_new: str) -> str: install_command("powershell"), "```", "", - (f"**On a handheld**: copy the `RetroBIOS` file for your system to the card" + (f"**On a handheld**: copy the `RetroBIOS` file for the system to the card" f" ([which one]({SITE}wiki/installer/#on-a-handheld-the-retrobios-port))."), "", "### Or download a pack", "", - "Extract it into your BIOS folder.", + "Extract it into the BIOS folder.", "", ] if any(len(pack["assets"]) > 1 for pack in packs.values()): diff --git a/tests/test_site_pronouns.py b/tests/test_site_pronouns.py index 7acc265a4..1914d30f8 100644 --- a/tests/test_site_pronouns.py +++ b/tests/test_site_pronouns.py @@ -186,6 +186,23 @@ class SitePronouns(unittest.TestCase): hits = _hits(files) self.assertEqual(hits, [], "\n".join(hits)) + def test_release_notes(self): + """The release page is public text too. Rendered from the committed + record, and once more with a pack in parts, its own paragraph.""" + sys.path.insert(0, str(ROOT / "scripts")) + import release_notes + import release_record + + record = release_record.load_record(ROOT / "release.json") + first = next(iter(record["packs"])) + parted = {**record, "packs": {**record["packs"], first: { + **record["packs"][first], "assets": ["a.part1of2.zip", "a.part2of2.zip"]}}} + platforms = str(ROOT / "platforms") + hits = [f"release notes:{number}: {line}" + for sample in (record, parted) + for number, line in pronouns(release_notes.render(sample, platforms, "x"))] + self.assertEqual(hits, [], "\n".join(hits)) + def test_every_allowed_quote_says_why(self): for quoted, reason in {**NAMES, **INSTALLER, **SOURCE}.items(): with self.subTest(quoted=quoted):