Skip to content

Conversation

@i11v
Copy link
Owner

@i11v i11v commented Jan 23, 2026

Implement permanent email deletion following the JMAP RFC 8621 specification:

  • Add destroy method to EmailService interface for permanent email removal
  • Add destroyEmails convenience operation in EmailOperations
  • Add unit tests for the new destroy method
  • Add functional tests for email deletion against real JMAP server

The destroy operation permanently removes emails from the server, unlike
the existing deleteEmails which moves emails to trash.

https://claude.ai/code/session_01CGSojY6eQvSvpBWFMxtBcU

Implement permanent email deletion following the JMAP RFC 8621 specification:

- Add `destroy` method to EmailService interface for permanent email removal
- Add `destroyEmails` convenience operation in EmailOperations
- Add unit tests for the new destroy method
- Add functional tests for email deletion against real JMAP server

The destroy operation permanently removes emails from the server, unlike
the existing deleteEmails which moves emails to trash.

https://claude.ai/code/session_01CGSojY6eQvSvpBWFMxtBcU
The spec tests already cover Email/set destroy functionality.
Functional tests were unnecessary duplication.

https://claude.ai/code/session_01CGSojY6eQvSvpBWFMxtBcU
@github-actions
Copy link

JMAP Spec Coverage

effect-jmap@0.7.0 coverage:spec /home/runner/work/effect-jmap/effect-jmap
tsx scripts/spec-coverage.ts --markdown

Overall: 15/31 methods (48.4%)

Blob (0/4)

Method Status
copy
get
lookup
upload

Core (0/1)

Method Status
echo

Email (6/8)

Method Status
get
set
query
queryChanges
changes
copy
import
parse

EmailSubmission (5/5)

Method Status
get
set
query
queryChanges
changes

Identity (0/3)

Method Status
get
set
changes

Mailbox (4/5)

Method Status
get
set
query
queryChanges
changes

SearchSnippet (0/1)

Method Status
get

Thread (0/2)

Method Status
get
changes

VacationResponse (0/2)

Method Status
get
set

Add checklist for implementing JMAP methods:
- Check capabilities.ts before starting
- Search spec tests for existing coverage
- Document testing structure (spec/unit/functional)
- Note that create/update/destroy are /set parameters

https://claude.ai/code/session_01CGSojY6eQvSvpBWFMxtBcU
@github-actions
Copy link

JMAP Spec Coverage

effect-jmap@0.7.0 coverage:spec /home/runner/work/effect-jmap/effect-jmap
tsx scripts/spec-coverage.ts --markdown

Overall: 15/31 methods (48.4%)

Blob (0/4)

Method Status
copy
get
lookup
upload

Core (0/1)

Method Status
echo

Email (6/8)

Method Status
get
set
query
queryChanges
changes
copy
import
parse

EmailSubmission (5/5)

Method Status
get
set
query
queryChanges
changes

Identity (0/3)

Method Status
get
set
changes

Mailbox (4/5)

Method Status
get
set
query
queryChanges
changes

SearchSnippet (0/1)

Method Status
get

Thread (0/2)

Method Status
get
changes

VacationResponse (0/2)

Method Status
get
set

- Create docs/implementing-jmap-methods.md with full checklist
- Update AGENTS.md to reference the new guide
- Document testing structure and common pitfalls

https://claude.ai/code/session_01CGSojY6eQvSvpBWFMxtBcU
@github-actions
Copy link

JMAP Spec Coverage

effect-jmap@0.7.0 coverage:spec /home/runner/work/effect-jmap/effect-jmap
tsx scripts/spec-coverage.ts --markdown

Overall: 15/31 methods (48.4%)

Blob (0/4)

Method Status
copy
get
lookup
upload

Core (0/1)

Method Status
echo

Email (6/8)

Method Status
get
set
query
queryChanges
changes
copy
import
parse

EmailSubmission (5/5)

Method Status
get
set
query
queryChanges
changes

Identity (0/3)

Method Status
get
set
changes

Mailbox (4/5)

Method Status
get
set
query
queryChanges
changes

SearchSnippet (0/1)

Method Status
get

Thread (0/2)

Method Status
get
changes

VacationResponse (0/2)

Method Status
get
set

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.

3 participants