Lazyplanner v1.1.0
LazyPlanner v1.1.0 — Account Switching
LazyPlanner now supports multiple CalDAV accounts, switchable in-app without a restart.
⚠️ Breaking change: config schema
The single [server] section is removed. Accounts are now [[account]] blocks, each with a required unique name:
[[account]]
name = "personal"
url = "https://cloud.example.com/remote.php/dav"
username = "you"
password_command = "bw get password lazyplanner"Upgrading: rename your [server] section to [[account]] and add a name. A config still containing [server] refuses to start with a clear migration message — nothing is silently ignored. Your existing local cache is reused as-is; no data migration needed.
New: multi-account support
- Several configured accounts, one active at a time — no merged view; each account's data stays fully separate on disk.
:account <name>switches directly; bare:accountopens a picker listing your accounts with the active one marked.- Switching cleanly winds down the current account (pending edits are flushed to the server, best-effort and time-bounded) and reopens the new one — no restart, and no state can leak between accounts.
- The status bar shows the active account whenever more than one is configured.
- The last-active account is remembered across launches (in
global.jsonunder the data dir). A removed or renamed account falls back to the first configured block — you can never be stranded. :configreload picks up account changes live: an added or renamed account appears in the picker immediately (the active account's connection still can't be hot-swapped — use:accountor restart).- Zero configured accounts remains a valid fully-offline mode over the local cache.
Fixes & hardening
Hardening Pass 18 audited the new multi-account surface plus a deep re-sweep of the sync core; every finding is fixed with a regression test:
- A delete landing during an in-flight background push is no longer lost — previously the completing push could silently resurrect the just-deleted item, permanently undoing the deletion. Now the deletion is honored and propagates to the server on the next sync.
- Startup can no longer hang on a pathological config file — a deeply nested TOML structure caused quadratic decode time; nesting depth is now bounded with a clear error.
- The
:accountpicker highlight was illegible (white-on-white) on default-background terminals — now the same theme-adaptive reverse-video highlight as every other list.
Compatibility
- Full backward compatibility for all calendar data — the local cache format, sync behavior, and account-id derivation are unchanged.
- Prebuilt binaries: Linux amd64 and Raspberry Pi (arm64/armv7/armv6), plus a Windows build.
Full Changelog: v1.0.2...v1.1.0