Correct a dead reference in the Speculos README, and propose changelog entries - #161
Merged
aido merged 2 commits intoAug 13, 2026
Merged
Conversation
The "Adapting to stax/apex" section named `tests/functional/genericlayout.py` and said it carried the equivalent stax/apex touch positions. Neither half is true any more: the file was renamed to `choicelist.py` when the four "choose among N" screens became one SDK `BARS_LIST`, and the table went with the rename, because ragger's own `ChoiceList` knows where the rows of that component are. Say what is there today. `keypad.py` still carries `STAX`, `FLEX` and `APEX_P` tables and is still worth borrowing from; `choicelist.py` is row names only, so extending these scripts past flex means measuring, not copying.
The 1.9.0 section was last touched on 28 June, before the whole interface pass: the four-way menu, the explanations and warnings, the pre-generate review, PIN derivation, the separate result screens, the list component, and two erasure fixes on the Nano entry paths. Thirteen lines, chosen for what someone using the application would notice rather than for what changed in the tree — no test, build or CI work is listed. Written under the existing `[1.9.0]` header; the header's date is deliberately left alone. Each line follows the shape the file already uses: an imperative verb, one clause, under 112 characters, on-screen text in single quotes, backticks kept for code identifiers, and the file's own words — `flow` and `screen`, not `journey` or `verdict`. `Changed` is reopened under this version for the three lines that alter behaviour rather than repair it, which is what Keep a Changelog reserves each category for, and what this file already did in 1.5.1, 1.7.0 and 1.7.1. It sits between `Added` and `Fixed`, in the order the format lists them.
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.
Two documentation changes. The first is a plain correction and needs no
decision; the second is a proposal, and the file it touches is yours. If the
second opens a discussion, say so and I will split it out — the README fix
should not wait on it.
1. A dead reference in
tests/speculos/README.mdThis one is a regression of mine. #160 renamed
tests/functional/genericlayout.pyto
choicelist.pyand dropped its touch-coordinate table, since the four"choose among N" screens became one SDK
BARS_LISTand ragger's ownChoiceListknows where its rows are. The "Adapting to stax/apex" sectionstill said:
Wrong twice over: the file does not exist, and the positions are gone with it.
The search for references to the removed module was run over
src/andtests/as code, not over the README.What the section says now was read out of the files rather than deduced:
keypad.pystill has three tables —STAX,FLEXandAPEX_P, twelvekeys each — so it is still worth borrowing from, and the section still
points at it.
choicelist.pyis names only (MENU_CHECK,WORDS_12, …). No coordinatesat all. Extending these scripts past flex means measuring the rows on the
device, not copying a table.
2. Changelog entries for the interface work — proposed, not imposed
The
[1.9.0]section was last touched on 28 June, in "Port to Ledger NanoGen5". Everything since — the four-way menu, the explanations and warnings,
the pre-generate review, PIN derivation, the separate result screens, the list
component — is absent from it.
Four things I deliberately did not do, because the file's own history says
they are yours:
[1.9.0] - 2026-06-28is exactly as youleft it. Redating it is your gesture, in your release commit — it is what
3710295did, andRELEASE_POLICY.mdputs the changelog update inside therelease procedure.
Unreleasedsection. The word has never appeared in this file, andadding one would impose a convention you have not chosen.
journey,verdictandsecretnever appear inthis changelog;
flowandscreendo. Entries use those, keep on-screentext in single quotes as 1.7.3 and 1.7.4 do, reserve backticks for code
identifiers, and stay under 112 characters — the longest line the file has.
its category, so dropping one is a single-line deletion.
Changedis reopened, not invented. Three of the twelve lines alterbehaviour rather than repair it — the list component and the menu entries, the
button labels, and the values the two SSKR screens announce. Keep a Changelog
reserves
Fixedfor defects, and this file already carried### Changedin1.3.0, 1.3.2, 1.5.1, 1.5.2, 1.5.4, 1.6.1, 1.7.0 and 1.7.1; it goes between
AddedandFixed, the order the format lists. If you would rather 1.9.0 keepthe three sections it has, say so and the three lines go back under
Fixed.Twelve lines, not a hundred. 108 merges landed in this window. The filter
was what would someone upgrading from 1.8.0 notice — not what changed in the
tree. Nothing test-side, build-side or CI-side is listed, which is most of it.
Each line maps to a merged PR:
Ten of the twelve were read off a running device —
flexunder Speculos, thebinary rebuilt from this branch, driven through all four flows.
'SSKR Share 1 of 3',Check length, order and spelling,(1 - 16),(2 - 3),CancelandCloseare quoted from the screen, not from a diff. The twoSecuritylinescannot be: they are memory facts, which is what the GDB checks in
tests/speculos/exist for.Wording is a proposal — change any of it. Three choices worth naming so you can
overrule them knowingly:
ships in 1.9.0, so its index screen, its password-length screen and its
secret list have never been in a release: to someone upgrading from 1.8.0
they are simply part of the feature, not modifications of it. For the same
reason the DICE truncation (bip85: compute dice bits_per_roll as ceil(log2(sides)) (#60) #66, bip85: fix DICE roll truncation with bounded DRNG re-extension #71), the unterminated base64 password
(bip85: NUL-terminate the base64 password before %s #70) and the Nano S deferred work (fix: run the work Nano S defers, so its seed check can finish #111) are absent — they fix code nobody
has run. If you would rather the section record the work than the
user-visible delta, they belong in.
stack. The existing lines say "on Flex and Stax", but since "Port to Ledger
Nano Gen5" that would now understate the reach; 59 of the file's 89 entries
name no device at all.
Securitylines are not user-visible, unlike the other ten —they follow the precedent of "Wipe text buffers on Stax and Flex as early as
possible", which already sits in that section.
Not fixed here, and worth its own change
tests/speculos/verify_sskr_share_cancel_clears_buffer.pycarries the samestale reference in a comment (lines 85-86), and the problem there is not the
comment. It hardcodes a three-entry tool-select screen at
(240, 540)/(240, 430)/(240, 320), counted bottom-up, and taps(240, 430)expecting "SSKR Check" to lead straight to the keyboard. After #157, #158 and
#160 that screen has four entries, is drawn top-down by the SDK, and the flow
now passes an explanation screen first. The script needs re-driving, not a
comment edit — that is code, and this PR touches no code.