Repository navigation
LockHTML v2.0.1
LockHTML v2.0.1
A post-release audit pass. Every fix here was found by running the code, not reading it.
Fixed
gui.shdid not work at all. Itexec'dlockhtml.sh, which has no executable bit, so it died withPermission denied. It now runs the launcher throughsh.- The GUI's Lock button stayed disabled when you used a recipient public key or a share split instead of a PIN — only the PIN field had an input listener, so the button never re-evaluated.
- The GUI silently ignored a hidden volume combined with recipient or split mode, which could leave you believing a hidden payload existed when it did not. It is now an explicit error, matching the CLI.
lockhtml.batbroke on any Python path containing a space (C:\Program Files\…) —%PY%was used unquoted.unlock()/decrypt()on a streaming payload raised a bareKeyError; they now say the sidecar is needed.
Changed
--auto-kdfnow says so instead of silently doing nothing when--kdf pbkdf2is also given; mismatched--hidden-pin/--hidden-filecounts print a note.make minifyis now an alias formake build. Minifying an already-minifiedindex.htmlis not idempotent, so the old target could leave an asset CI rejects with a confusing diff.
Test suite
- The launcher test now executes
lockhtml.sh(locking and unlocking a real file) andgui.sh, instead of only syntax-checking them — a syntax check is exactly what missed thegui.shbug. - The browser suite no longer waits the full 25 s stage timeout on checks that expect a rejection; ten of them were burning ~250 s between them. It now finishes in about 40 s, down from over 290 s.
- Browser fixtures use cheap-but-real Argon2id parameters; production strength stays covered by the Python unit tests.
Verification
87 unit tests, 35/35 headless-Chrome checks, 9/9 browser→Python cross-implementation checks.
Note
v2.0.0 is left exactly as published — this is a patch on top, not a rewrite.