fm-cli 0.3.5: Pick your From, and calendar that finds you
fm-cli already lived in the terminal. Two small releases today, 0.3.4 and 0.3.5, fix the kind of sharp edges you only notice once you use a tool every day — and both came in with help from outside the house.
Send as the address you mean
Fastmail’s web UI has a default identity, but Identity/get does not reorder itself around that choice. fm-cli always composed from identities[0]. That is fine if you have one address. It is wrong the moment you have a few.
You can now set the default yourself:
# or for a one-off / script:
The address is matched case-insensitively against your identities. The environment wins over the stored setting; unset or unmatched falls back to the first identity. New composes in the TUI, drafts and sends with an empty From, and offline sends replayed by fm-cli sync all respect it. Tab still cycles the list in the order Fastmail returned.
Ask the server who you are on CalDAV
Calendar and contacts setup guessed the principal path as /dav/principals/user/<login email>/. Cyrus folds dots in the local part to underscores (noah.hopping → noah_hopping), so those accounts got 404 “Mailbox does not exist” and never discovered a calendar home.
0.3.5 roots both CalDAV and CardDAV clients at the DAV context URL and reads current-user-principal with a PROPFIND (RFC 6764 bootstrapping). The href the server returns drives home-set discovery. The PROPFIND is issued directly so the trailing slash on /dav/ survives — go-webdav’s helper collapses it and Cyrus answers 405.
If your login has a dot and calendar never came up, upgrade and try fm-cli auth dav again.
Thanks
Both fixes started with reports and patches from Noah Hopping (@fsnoah). The From-identity work landed in #3; the principal discovery in #4. That is the kind of contribution that turns a personal tool into something other people can trust.
Grab it
# Omarchy
# mise
# autonomix-cli
Or take a .pkg.tar.zst, .deb, .rpm, or tarball from the v0.3.5 release.