v1.2.0 — Press
The release that gets out of its own way: the KOReader plugin now updates itself, and a single command stands up a working instance. Less SSH, less ceremony.
Added
- TomeSync self-update — the KOReader plugin updates itself from the server (Check for updates + opt-in Auto-check on launch), replacing the SSH-into-every-device workflow. A frozen stable shim wraps the replaceable implementation and runs an anti-brick rollback state machine: syntax-broken updates roll back the same boot, init-crashing ones the next, and corrupt downloads are rejected before they're swapped in. Reading progress, book maps, and pending sessions are never touched.
- TomeSync gesture actions — Open menu and Browse series, bindable from KOReader's Gesture manager in both the reader and file manager.
- One-command installer (
curl | bash) — checks Docker, writes~/Tome, auto-picks a free port, pulls, starts, and waits until Tome answers. Re-running updates in place. Docker Compose stays the primary, homelab-first path.
Changed
- TomeSync plugin versioning — a hidden monotonic build integer drives update comparisons, with an independent human-facing semver (
1.0.1).GET /plugin/versionreturnsbuildandsemver;GET /plugin/main-impl.luaserves the config-baked implementation for self-update.
Fixed
- Series-browser crash (#6) — browsing series no longer crashes the plugin when a series' first book has no author. The server stopped sending JSON
nullfor the field and the plugin now type-checks it; the same hardening covers a null series index in the download paths.
Upgrade: pull the latest image and recreate the container. The series-browser fix applies server-side immediately — no plugin update required. The plugin will self-update to build 10 on next launch (or via TomeSync → Check for updates).