Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## [2.2.0] - 2026-04-11

### Added

- **Contact CRUD** ([#17](https://github.com/radiosilence/fastmail-cli/issues/17)): `contacts create`, `contacts update`, `contacts delete` CLI commands for managing contacts via CardDAV.
- **GraphQL contact mutations**: `createContact`, `updateContact`, `deleteContact` mutations in the MCP server, so AI assistants can manage contacts too.
- **`ContactFields` struct**: Replaces positional args for contact write operations, keeping clippy happy and the API clean.
- **vCard builder**: `build_vcard()` generates vCard 3.0 strings with proper `N`/`FN`/`EMAIL`/`TEL`/`ORG`/`TITLE`/`NOTE` properties.
- **4 new tests**: vCard building, roundtrip parsing, UID generation.

### Changed

- `contacts` CLI subcommand now has `create`, `update`, `delete` subcommands alongside existing `list` and `search`.
- Update merges fields: only provided fields are overwritten, existing fields are preserved.
- Delete requires `-y` confirmation flag (consistent with `masked delete` and `spam`).

## [2.1.0] - 2026-04-11

### Added
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "fastmail-cli"
version = "2.1.0"
version = "2.2.0"
edition = "2024"
description = "CLI for Fastmail's JMAP API"
repository = "https://github.com/radiosilence/fastmail-cli"
Expand Down
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ CLI for Fastmail's JMAP API. Read, search, send, and manage emails from your ter
| --------------------- | ---------------------------------------------------------------------- |
| **Email** | List, search, read, send, reply, forward, threads, identity selection, HTML bodies, file attachments |
| **Mailboxes** | List folders, move emails, mark spam/read |
| **Contacts** | Search contacts via CardDAV |
| **Contacts** | Search, create, update, delete contacts via CardDAV |
| **Attachments** | Download files, extract text, resize images |
| **Text Extraction** | 56 formats via [kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) |
| **Image Resizing** | `--max-size` to resize images on download |
Expand Down Expand Up @@ -280,7 +280,7 @@ fastmail-cli completions fish > ~/.config/fish/completions/fastmail-cli.fish

### Contacts

Search your Fastmail contacts via CardDAV. Requires an app password (API tokens don't work for CardDAV).
CRUD operations for Fastmail contacts via CardDAV. Requires an app password (API tokens don't work for CardDAV).

```bash
# Set credentials
Expand All @@ -292,6 +292,15 @@ fastmail-cli contacts list

# Search by name, email, or organization
fastmail-cli contacts search "alice"

# Create a new contact
fastmail-cli contacts create --name "Jane Doe" --email "jane@example.com" --organization "Acme Corp"

# Update an existing contact (only provided fields are changed)
fastmail-cli contacts update CONTACT_ID --organization "New Corp" --title "CEO"

# Delete a contact (requires -y confirmation)
fastmail-cli contacts delete CONTACT_ID -y
```

Generate an app password at [Fastmail Settings > Privacy & Security > Integrations > App passwords](https://app.fastmail.com/settings/security/devicekeys).
Expand Down
Loading
Loading