Contributions¶
Pull requests recorded during and after the audit¶
Contribution PR statuses were rechecked against GitHub on September 7, 2026.
| PR | Title | Status | Week | Relationship to audit |
|---|---|---|---|---|
| #853 | flash_success() method |
Merged | Week 0 | Pre-program contribution, not an audit finding |
| #879 | Improve default theme contrast | Merged | Week 5 | Direct contrast finding |
| #894 | Add Home Settings shortcut | Closed | Week 7 | Review evidence for navigation finding N2 |
| #811 | Add QR scanning to text keypads | Open Draft | Week 10 | Separate keypad-design collaboration, not an audit finding |
| #909 | Simplify generated mnemonic actions | Integrated; PR closed | Week 10 | Selected implementation for navigation finding N3 |
| #911 | Show units and ranges for numeric settings | Merged | Week 11 | Second audit-derived implementation direction |
| #922 | Make mnemonic loading format-first | Merged | Week 12 | Third audit-derived implementation direction |
| #944 | Reject empty numeric setting input | Open; checks passed | Post-program | Numeric-input maintenance following the audit work |
PR #879¶
PR #879 is the direct implementation result from the contrast audit. It fixed the clean Light-theme, network-label, and CypherPink frame cases. It also added tests for text, status, frame, and network-colour contrast.
The final patch preserved the Amigo info-panel override after a device test showed that simply removing it made visibility worse. Amigo info-panel contrast therefore remains a hardware-gated audit finding rather than a fix claimed by the merged PR.
PR #894 and issue #790¶
PR #894 tested a narrow Home Settings entry exposing Printer and Encryption. Review identified an important product cost: both settings are already available before wallet loading, while a Home row would consume attention on every wallet visit.
The PR is closed and issue #790 remains open. The audit uses this review as evidence that screen fit alone does not justify a permanent choice.
PR #909 and issue #829¶
Maintainer review selected the wallet-summary hierarchy as the smallest useful
implementation from the corrected navigation audit. PR #909 changed the
summary after generating a mnemonic to show Continue and Wallet Options.
Passphrase and Customize move into the nested options menu. Loading an
existing mnemonic keeps the current action menu.
The work addressed issue #829, which GitHub closed on August 2. Code, translation, simulator, CI, and TZT checks passed. Review prompted a cleaner separation of feature, test, translation, and documentation commits, followed by a dedicated generated-mnemonic sequence and new documentation captures.
Review then questioned whether familiar wallet wording should be retained and
whether both flows should share the same hierarchy. The generated flow remains
Continue and Wallet Options; loading an existing mnemonic keeps its current
menu.
Maintainers integrated the work after rebasing it onto develop on July 27.
The GitHub PR record is closed rather than marked as merged because of that
route. A maintainer
follow-up commit
then extracted the duplicated wallet-information menu code into a shared
helper.
PR #911 numeric-setting context¶
PR #911 implements the second audit-derived direction. Screensaver Time, Shutdown Time, and Buttons Debounce show units and accepted ranges in the existing numeric editor. A review follow-up also adds range-only context to Touch Threshold.
The header keeps the full context when it fits, then falls back to the value and unit or the raw value before long input can wrap into the M5StickV keypad. Stored values, validation, defaults, input behaviour, and keypad geometry are unchanged.
The first review round also led to simpler focused test assertions. Simulator
checks covered M5StickV, TZT, and Amigo, and the physical TZT smoke test passed.
qlrd gave the change an informal LGTM on the first re-review, then requested a
rebase onto current develop before further checks. The branch was rebased on
August 12 without changing its feature, test, and documentation scope.
The implementation merged on August 22 at 2c22b989 after a second rebase onto
current develop. The feature, tests, and documentation remained split into
three focused commits, and all replacement checks passed.
PR #922 format-first mnemonic loading¶
PR #922 implements the
third audit-derived direction. Load Mnemonic starts with QR Code, Words,
From Storage, and Other Formats. The six specialist formats remain
available in one flat submenu with the existing two-level Back behaviour.
The change reuses the current handlers and does not alter decoders, storage, keypads, validation, cryptographic behaviour, public APIs, or the settings schema. The common QR Code and Words paths are shorter, while specialist formats move one level deeper. The PR was opened as a Draft so maintainers could review that information-architecture trade-off. The design reference records the proposed hierarchy and device layouts.
Simulator acceptance covered TZT, M5StickV, and Amigo, and physical TZT touch
and button checks passed. All 11 translations were checked against the
M5StickV's wrapping rules. Four locales wrap cleanly without clipping or
paging: es-MX, ko-KR, pt-BR, and tr-TR.
Translation review exposed a hard-coded Other Formats label. The follow-up
restored its existing translation key, added regression coverage, and refreshed
the locale captures. A later documentation review restored the guide's
existing paragraph style and fixed two punctuation details. After a final
rebase, the PR merged on August 30 at c8f9a87f; all replacement checks passed.
PR #944 numeric-input validation¶
After the programme, I opened PR
#944 for issue
#943. Submitting an empty
numeric setting with Go had behaved like Back. The change now shows the
existing localised Empty message and reopens the editor, while Back remains
a silent cancellation.
Review found a related gap in the shared number editor. The initial regression
used an integer setting, so it did not exercise malformed float input such as
multiple decimal points. The follow-up catches that conversion error, shows the
existing Failed to convert message, and preserves the entered value so it can
be corrected. A malformed-then-valid float regression now covers the path.
As of September 7, the PR is open, non-Draft, and mergeable at 0592df24. All
12 GitHub and Codecov checks pass. Local verification covered 31 settings-page
tests and the full suite with 1,186 passed, one expected xfail, and 98%
coverage. Physical hardware was not tested for this change.
Draft PR #811 design collaboration¶
PR #811 is separate from the audit-derived directions. The collaboration moved QR scanning out of a separate Type/Scan choice and into the shared text keypad. The action sits on the final special-character page, preserving the 5x6 grid and key size. It asks before replacing existing text, returns scanned content to the editable buffer, and restores the old value after cancellation or failure.
All four implementation commits credit Naman Gupta as a co-author for the layout, interaction, and QR-glyph design. The PR is Draft and remains under review, so it is not counted as a completed audit implementation.
On August 11, the PR author reported follow-up fixes that reject binary
payloads across the keypad scan paths, generate the QR glyph from the BDF font
sources, and prevent the Overwrite prompt from drawing over the keypad. The
author also reported building and flashing the latest branch on a TZT. The
corresponding baked-font update still needs a decision in the separate MaixPy
repository, so the integration remains under review. The September 7 live
record is an open Draft at 140a4ed4.
Overlapping work¶
These open items overlap areas recorded by the navigation audit.
| Item | State | Audit relevance |
|---|---|---|
| #771 | Open PR; conflicting | Menu context and visual overlap |
| #797 | Open PR; mergeable | Touch and swipe behaviour |
| #806 | Open PR; mergeable | Exit-prompt context overlaps N4 |
| #829 | Closed issue; PR #909 work integrated | Wallet-summary wording overlaps N3 |
| #839 | Open Draft; conflicting | Stackbit camera format overlaps N5 |
| #862 | Open PR; approved | Stackbit vertical input overlaps N5 |