Four more example decks, and move piper setup out of the README - #23
Merged
Conversation
Groundwork before v0.3.0, in three parts. EXAMPLE DECKS http-status.csv (18 codes, tagged by class), elements.csv (19 symbols, weighted towards the ones from Latin names, which are the only ones worth a flashcard), and nato-phonetic.csv (all 26). general-knowledge.csv grew from 5 cards to 12 real ones; "What's 2 + 2 - 1?" was filler next to every other deck here and is gone. nato-phonetic.csv turns out to be the first shipped deck that exercises the single-key guard. Reviewed reversed its answers are single letters, so a card answered "Q" would collide with quit and one answered "A" with audio. Checked against the real binary rather than assumed: reversed, the Q card's legend withholds "[q] end session" and the A card's withholds "[a] play audio", and both answer correctly. NO PICTURES ON THE EXISTING LANGUAGE DECKS, deliberately. spanish.csv and japanese.csv run foreign to English, so a picture would show the meaning, which on those cards is the answer. That is the rule colores.csv exists to demonstrate, and following it here means not doing the obvious thing. NO SHIPPED AUDIO either, for the reason --generate-audio exists: recordings are rendered locally, not committed. What was missing was the command, so the README now carries it, with voice names taken from voices that actually exist rather than guessed -- ja_JA-hi_fi_captain-medium is not the ja_JP the naming convention suggests. README The piper install-and-troubleshoot material moves to docs/audio.md. It was the one section that was reference rather than tour: how to install a text-to-speech engine, where its voices live, and the extra package Japanese needs. The README did not get shorter -- 653 lines to 657. The setup appendix left and a deck table and the audio recipe arrived. That is a better balance rather than a smaller file, and the bigger split (Syncing and Development out too, roughly halving it) is still available if it is ever wanted. A TEST FOR CONTENT The example decks were entirely uncovered: they are data, so a missing comma does not fail to build, it quietly drops a card -- or ships one whose answer is empty and can therefore never be got right. Every examples/*.csv is now loaded and checked: every non-blank line became a card, no question or answer is blank or normalises to nothing, and every picture a deck names is actually present. Verified the check can fail, rather than trusting that it passes: a card with no answer trips the line count, and a repointed image path trips the picture check. 1184 unit checks and 47 golden cases, green on gcc and clang, optimised and sanitised, and clean in an env -i clean room.
Aduneer
added a commit
that referenced
this pull request
Aug 19, 2026
Pictures on cards, sync that puts two machines' reviews back together, and a CI matrix that checks what used to be checked by hand. PRs #20-#23. The CHANGELOG entries gained their PR numbers, which the file's own preamble promises and these four had been written without. No transcript changed for the version bump, which is what the <VERSION> placeholder in normalise.awk exists for: releasing does not touch 47 expected files. The demo GIF is already current -- it was re-rendered in #22, and doing so is what caught the two terminal-detection bugs that release fixes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Groundwork before v0.3.0, in three parts.
Example decks
http-status.csvelements.csvnato-phonetic.csvgeneral-knowledge.csvWhat's 2 + 2 - 1?was filler next to every other deck here and is gone.nato-phonetic.csvturns out to be the first shipped deck that exercises the single-key guard. Reviewed reversed its answers are single letters, so a card answeredQcollides with quit and one answeredAwith audio. Checked against the real binary rather than assumed:Both withheld exactly when the card could accept them, and both answer correctly.
Two things I deliberately did not do
No pictures on the existing language decks.
spanish.csvandjapanese.csvrun foreign → English, so a picture shows the meaning, which on those cards is the answer. That is the rulecolores.csvexists to demonstrate, and following it here means not doing the obvious thing.No shipped audio, for the reason
--generate-audioexists: recordings are rendered locally, not committed. What was actually missing was the command, so the README now carries it — with voice names taken from voices that exist rather than guessed.ja_JA-hi_fi_captain-mediumis not theja_JPthe naming convention suggests.README
The piper install-and-troubleshoot material moves to
docs/audio.md. It was the one section that was reference rather than tour: how to install a TTS engine, where its voices live, the extra package Japanese needs.Being straight about the result: the README did not get shorter — 653 lines to 657. The setup appendix left; a deck table and the audio recipe arrived. That is a better balance rather than a smaller file. The bigger split (Syncing and Development out too, roughly halving it) is still available if it is ever wanted.
A test for content
The example decks were entirely uncovered. They are data, so a missing comma does not fail to build — it quietly drops a card, or ships one whose answer is empty and can therefore never be got right.
Every
examples/*.csvis now loaded and checked: every non-blank line became a card, no question or answer is blank or normalises to nothing, and every picture a deck names is actually present.Verified the check can fail rather than trusting that it passes:
Testing
1184 unit checks (up from 680 — the deck validation checks every card) and 47 golden cases, green on gcc and clang, optimised and sanitised, clean in an
env -iclean room, and verified from a fresh clone.