Kern v0.0.20
Pre-release
Pre-release
Added
- BIP138 descriptor backups. After a descriptor loads, it can be kept for the session or registered on flash or SD card under a name. Backups are encrypted to the descriptor's own public keys with a seed-derived approval mark, and only approved backups that pass keyed validation are restored. Built on a new pure-C bip138 submodule using PSA crypto
- Animated QR exports stream their frames instead of caching up to 100, so exports are no longer capped at 100 parts. Non-UR sequences get playback controls (pause, step, jump) and a frame counter with a progress grid
- A Nix dev shell for host tools (formatting, native tests, simulator)
- Opt-in scan pipeline profiling:
just scan-prof <board>logs camera, PPA and decoder timing once a second
Changed
- Faster, more reliable QR scanning. The decoder reads its own YUV420 frame cropped to 800 px, no longer limited by the preview size; a frame stays queued for it during the PPA pass, and the preview rate halves while a sequence comes in. On wave_43 the share of captures read rose from 46% to 59%
- Updated k_quirc: decoding is faster on the ESP32-P4, and dense codes under uneven light read far more reliably
- Signed PSBT QR exports leave out previous transactions, which coordinators now attach to every input and made the signed QR as heavy as the unsigned one. v2 PSBTs are trimmed too. The SD card export stays whole
- clang-format is pinned to major 21 on every host, and unused static functions now warn; functions the firmware never calls were removed
Fixed
- PIN verification did not abort when the failure count could not be read or persisted, so a failed write left the power-cut free attempt open and a failed read restarted the count from zero
- Secret buffers left behind: the manual-input mnemonic after handoff to the editor, the compact SeedQR entropy on the stack, and the per-word buffer in
mnemonic_to_seedqr - A BBQr sequence too large to store was only rejected once enough parts had arrived to exceed the cap; its first frame now gives it away, and duplicate parts are skipped
- Scan progress was not shown for sequences over 100 parts
- A degenerate grid could hang the QR decoder for about two minutes
- White dots in the centre of dark modules on the CrowPanel preview, from the SC2336's photographic sharpen stage; it and the Bayer denoise are dropped
- Slider tracks were invisible on panels, only the knob showed
- The replace-key prompt stacks the two fingerprints, so the line never wraps mid-fingerprint
- The address checker opened on the last used source instead of the descriptor the addresses page was showing
- Scrollbars were drawn over their container's content instead of in its right gutter
Kern is a research and development project, any mainnet use is entirely at your own risk.