Skip to content

LockHTML v2.0.1

Choose a tag to compare

@drsamonline drsamonline released this 20 Oct 17:16
· 22 commits to main since this release

LockHTML v2.0.1

A post-release audit pass. Every fix here was found by running the code, not reading it.

Fixed

  • gui.sh did not work at all. It exec'd lockhtml.sh, which has no executable bit, so it died with Permission denied. It now runs the launcher through sh.
  • 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.bat broke on any Python path containing a space (C:\Program Files\…) — %PY% was used unquoted.
  • unlock()/decrypt() on a streaming payload raised a bare KeyError; they now say the sidecar is needed.

Changed

  • --auto-kdf now says so instead of silently doing nothing when --kdf pbkdf2 is also given; mismatched --hidden-pin/--hidden-file counts print a note.
  • make minify is now an alias for make build. Minifying an already-minified index.html is 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) and gui.sh, instead of only syntax-checking them — a syntax check is exactly what missed the gui.sh bug.
  • 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.