Skip to content

v1.13.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 17:57
· 20 commits to main since this release
e99b6ab

Note: the .dxt in this release has a configuration bug — CalDAV/WebDAV credentials entered at install are not passed to the server. Desktop-extension users should install v1.13.1 instead.

v1.13.0 — Feature release: contacts write, attachments on send, WebDAV cloud save

Three new capability areas, taking the tool surface from 48 to 52. Verified with 443 unit tests and a 65-check non-destructive live integration pass (account restored to byte-identical state afterward).

Contacts are no longer read-only

  • create_contact / update_contact / delete_contact (#96) — full contact CRUD via JMAP ContactCard/set (RFC 9610), using your existing API token (read-write contacts scope required; no app password needed). Flat, caller-friendly inputs map onto RFC 9610 shapes. Update semantics are deliberate JMAP PatchObject: each provided field wholly replaces the stored value (emails: [] clears), unspecified fields are untouched, with an optional expectState precondition.

Attachments, finally

  • Attach files on send (#94) — send_email, create_draft, edit_draft, and reply_email accept an attachments array with three sources: a local file (confined to the download directory with symlink-escape protection), an existing email's attachment (zero-copy — same-account blobIds are reused directly, so forwarding an attachment transfers no bytes), or a raw blobId. Uses RFC 8621 convenience properties, so the server assembles the multipart structure.
  • Bug fix riding along: edit_draft used to silently strip a draft's attachments on every edit — they now carry over.
  • save_attachment_to_webdav (#95) — save an attachment straight to cloud storage (Fastmail Files at https://myfiles.fastmail.com/, Nextcloud, or any WebDAV server) without touching local disk. The storage URL and credentials are server config only — tools can only pick a relative path beneath the configured base, so a misbehaving caller can't redirect uploads. Paths are validated segment-by-segment before encoding (no traversal, no smuggling).

Notes for operators

  • New optional env/DXT config: FASTMAIL_WEBDAV_URL / _USERNAME / _PASSWORD; CalDAV and WebDAV credentials are now configurable in the DXT user_config (marked sensitive).
  • Live-testing finding worth knowing: Fastmail Files ignores the WebDAV If-None-Match: * precondition on PUT — the tool therefore does an explicit existence check before non-overwrite uploads.
  • Fastmail's backend does not resolve JMAP #creationId references in destroy arrays; the contact tools account for this.

This is an unofficial community project, not affiliated with, endorsed by, or supported by Fastmail.

Full Changelog: v1.12.0...v1.13.0