Releases: William9923/folderlock.koplugin
Releases · William9923/folderlock.koplugin
Release list
0.5.1
[0.5.1] - 2026-07-04
Fixed
- Updater asset matching for pre-release tags — swapped Lua pattern matching (
:match) for exact string comparison so tags with hyphens (-alpha,-rc1) are found correctly; previously-was interpreted as a Lua pattern quantifier, causing always-false matches package_release.shversion injection path — writes toutil/folderlock_version.luainstead of the stalelib/path left from the 0.5.0 refactor
0.5.0-alpha
Changed
- Major simplification: core folder-lock logic consolidated from scattered
lib/modules intomain.lua; onlyutil/folderlock_hasher,util/folderlock_updater, andutil/folderlock_versionremain as helpers - Long-press menu labels simplified: unlocked folder → Lock folder, locked folder → Remove Lock
- Lock/unlock flow is now available only through the long-press context menu; the main Folder Lock menu shows About and updater/version entries
Removed
- Cover Cache Isolation feature and
lib/folderlock_cache_isolationmodule folderlock_guardmodule; folder navigation and file-open interception now live directly inmain.lua- Main-menu Lock current folder / Unlock current folder entries
Fixed
- Updated unit and end-to-end tests to match the simplified architecture
0.3.0
[0.3.0] - 2026-06-25
Added
- Long-press folder lock/unlock — lock or unlock a folder directly from FileManager's long-press context menu. Button adapts to folder state: "Lock folder" (unlocked), "Unlock folder" (locked), hidden (parent locked). Full password flow with confirmation and verification, auto-refresh after action.
Changed
- Internal refactoring of dialog construction to eliminate duplication between menu and long-press flows (no user-facing impact)
0.2.1
Changed
- CI: use
leafo/gh-actions-lua@v13for unit tests — replaces manualapt-get lua5.4
setup with a dedicated GitHub Action, avoiding Lua 5.1 version conflicts from transitive apt
dependencies - Vendored
tests/dkjson.lua— removes external LuaRocks dependency from CI; the test
JSON library is now included in-repo (MIT, pure Lua)
Fixed
- Unit tests in CI — switched from system
lua(which resolves to Lua 5.1 via apt's
alternatives system) toleafo/gh-actions-luawith Lua 5.4, fixingtable.packand other
5.2+ API availability in the test runner
Assets
folderlock.koplugin-0.2.1.zip— plugin archivefolderlock.koplugin-0.2.1.zip.sha256— SHA-256 checksum (verified automatically during
in-app update)
Full Changelog: https://github.com/William9923/folderlock.koplugin/commits/0.2.1
Full Changelog: 0.2.0...0.2.1
Full Changelog: 0.2.0...0.2.1
0.2.0
Added
- Auto-update system — check for and install new versions directly from inside KOReader
via Folder Lock → Check for updates- Fetches latest release metadata from GitHub Releases API
- Downloads release zip and verifies SHA-256 checksum before touching the live plugin
- Safe swap with rollback: renames live plugin →
.bak, extracts new version in its
place, restores.bakon any failure - Startup recovery: cleans up stale
.bakafter a successful boot, restores.bakif
the live plugin is missing - Override URL for testing with a local dummy server
- Runtime version source —
folderlock_version.luaembedded at package time so the
updater knows what's installed - Checksum sidecar in releases —
.sha256file published alongside each release zip
Changed
scripts/package_release.shnow injects the release version into the packaged plugin and
generates the.sha256checksum file
Assets
folderlock.koplugin-0.2.0.zip— plugin archivefolderlock.koplugin-0.2.0.zip.sha256— SHA-256 checksum (verified automatically during
in-app update)
Full Changelog: https://github.com/William9923/folderlock.koplugin/commits/0.2.0
0.1.0
Added
- Folder lock/unlock UI — lock or unlock the current folder via KOReader's main menu, with password confirmation before setting a new lock
- Password prompt on navigation — a patch on
FileChooser.changeToPathintercepts folder entries and shows a password dialog when the target folder (or any ancestor) is locked - Ancestor cascade — locking a parent folder automatically protects all subfolders; child folders are not individually locked but inherit protection
- djb2 password hashing — passwords are stored as djb2 hashes in an on-device registry file (
folderlock_registry.lua); plaintext passwords are never persisted - Fail-safe design — no file encryption or modification; removing the plugin or deleting the registry restores full access with zero risk of data loss
Documentation
- Project overview, philosophy and scope, installation guide, usage walkthrough with screenshots
- Upcoming features documented: automatic updater, file-based lock, cover cache isolation
CI & Testing
- Unit tests — Lua unit tests for core logic (hashing, path normalization, ancestor traversal, registry operations)
- End-to-end tests — KOReader simulator-based tests that exercise the full plugin lifecycle: loading, menu interaction, folder locking/unlocking, and password verification
- GitHub Actions workflows — test workflow (unit + e2e) on push/PR, and a release workflow that runs tests, packages the plugin, and publishes a GitHub Release on version tags
- Test runner scripts —
run_unit.shandrun_e2e.shfor local development
Build & Packaging
make package-release VERSION=...produces a compressed.ziparchive (dist/folderlock.koplugin-<version>.zip) using 9x compressionmake run-koreadersymlinks the plugin into a local koreader checkout for rapid iteration
Infrastructure
- Continuous integration against KOReader
v2026.03via git submodule - Dependencies installed for SDL3-based simulator builds (libdbus, libdecor, libibus, Wayland, X11, etc.)
Fixed
- Use absolute path for
LD_LIBRARY_PATHin CI for try_run reliability - Revert submodule pointer back to official koreader repo
- Remove stray comments in docs
Full Changelog: https://github.com/William9923/folderlock.koplugin/commits/0.1.0