Skip to content

Lazyplanner v1.1.0

Choose a tag to compare

@littekge littekge released this 22 Jul 15:30

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 :account opens 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.json under the data dir). A removed or renamed account falls back to the first configured block — you can never be stranded.
  • :config reload 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 :account or 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 :account picker 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