From 09b9ec746ab9fa1b6b112e64b5acc06e842893c1 Mon Sep 17 00:00:00 2001 From: Aduneer <249940941+Aduneer@users.noreply.github.com> Date: Thu, 20 Aug 2026 10:56:59 +0200 Subject: [PATCH] Release 0.3.1 Two fixes and a second platform. PRs #24-#25. The CHANGELOG's Unreleased section becomes 0.3.1 and its entries gain their PR numbers, which the file's own preamble promises. The macOS entry also gains the two golden-harness fixes that came with it, which were worth recording where someone looking up "why did that case change" will find them. No transcript changed for the version bump, which is what the placeholder in normalise.awk exists for: releasing does not touch 47 expected files. The demo GIF is current -- nothing in this release changes what any screen looks like. --- CHANGELOG.md | 21 ++++++++++++++++++--- src/cli.h | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38a98cd..3813d75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,11 @@ Notable changes per release. Dates are the release date; the PR numbers link the detail, which is where the reasoning lives. -## Unreleased +## 0.3.1 — 2026-08-20 + +Two fixes and a second platform. Nothing here changes what FlashTerm does or +what a deck can hold; both fixes are things that were quietly already wrong, +and one of them only a second standard library could show. ### Fixed @@ -34,7 +38,7 @@ detail, which is where the reasoning lives. Nothing about what a deck can contain has changed, and every deck written by an earlier version still loads and still saves identically once a card in it - has been reviewed. + has been reviewed. (#25) - **`FLASHTERM_SEED` now fixes the review order on every platform, not just the one you built on.** The shuffle went through `std::shuffle`, whose output the @@ -48,7 +52,7 @@ detail, which is where the reasoning lives. because a scripted session answers cards in the order it expects to meet them and the transcripts were recorded against libstdc++. Nothing was wrong with the shuffle's randomness, and no real session is affected — the bug was - in what the seed promised. + in what the seed promised. (#24) ### Changed @@ -66,6 +70,17 @@ detail, which is where the reasoning lives. GCC, so that pair is excluded rather than run as a second clang under another name — six jobs, not eight. + Two golden cases turned out to be able to observe the machine, which is the + same class as the bug that made `run.sh` pin the environment for every case + rather than per case. `wc` pads its count with leading spaces on a BSD + userland, so a binary fixture was described with the padding baked in. And + `review-audio-unplayable` reached the "no audio available" path by naming + `/bin/false`, which does not exist on macOS — `false` is in `/usr/bin` there + — so FlashTerm rejected an override it could not execute, fell back to the + built-in candidate list, and was answered by macOS's own `say`. The case had + stopped testing a failed playback at all; `fake-audio.sh` now fails on demand + via `FAKE_AUDIO_FAIL`. (#24) + ## 0.3.0 — 2026-08-19 Pictures on cards, sync that puts two machines' reviews back together, and a CI diff --git a/src/cli.h b/src/cli.h index 3760365..cc5eb20 100644 --- a/src/cli.h +++ b/src/cli.h @@ -4,7 +4,7 @@ namespace FlashTerm { // Pre-1.0 on purpose: the deck format and review flow are still gaining // features, and 1.0.0 would promise a stability that is not being offered yet. -inline constexpr char kVersion[] = "0.3.0"; +inline constexpr char kVersion[] = "0.3.1"; // What the command line asked for. Anything that is not RunDeck is handled and // exited on immediately, before a deck is touched.