Skip to content

#17 feat(contacts): add create/update/delete via CardDAV#22

Merged
radiosilence merged 1 commit into
mainfrom
17-contact-crud
Apr 18, 2026
Merged

#17 feat(contacts): add create/update/delete via CardDAV#22
radiosilence merged 1 commit into
mainfrom
17-contact-crud

Conversation

@radiosilence
Copy link
Copy Markdown
Owner

Summary

  • CardDAV write operations: create_contact, update_contact, delete_contact on CardDavClient using HTTP PUT/DELETE with vCard 3.0 payloads
  • CLI commands: contacts create --name "..." --email "..." [--phone/--organization/--title/--notes], contacts update ID [--fields], contacts delete ID -y
  • GraphQL mutations: createContact, updateContact, deleteContact for MCP server
  • vCard builder: generates proper vCard 3.0 with UID, FN, N, EMAIL, TEL, ORG, TITLE, NOTE
  • Merge updates: update_contact fetches existing vCard, merges only provided fields
  • 4 new unit tests (vCard building, roundtrip, UID generation)

Closes #17

Test plan

  • cargo test -- 59/59 pass
  • cargo clippy -- -D warnings -- clean
  • cargo fmt --check -- clean
  • Manual: contacts create --name "Test" --email "test@example.com"
  • Manual: contacts update <id> --organization "Acme"
  • Manual: contacts delete <id> -y
  • MCP: createContact / updateContact / deleteContact mutations

🤖 Generated with Claude Code

CardDAV write operations for contacts: create new contacts, update
existing ones (field-level merge), and delete by ID. Exposed as CLI
subcommands and GraphQL mutations for MCP server.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@radiosilence radiosilence merged commit 13f9ff7 into main Apr 18, 2026
3 checks passed
@radiosilence radiosilence deleted the 17-contact-crud branch April 18, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Add contact create/update/delete via CardDAV

1 participant