FRE-4680: Implement Milestone 2 advanced features

- Draft auto-save with configurable interval, status, and manual trigger
- Email template system (save, list, use, delete templates)
- Export messages to JSON, MBOX, or EML format
- Import messages from JSON files
- Register new commands (thread, bulk, export, import, autosave, template)
- Update README.md with documentation for all new commands

Build and tests pass clean.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-05-13 03:19:53 -04:00
parent bf26cd3ed6
commit 2cffa1ead7
4 changed files with 1153 additions and 6 deletions

View File

@@ -12,6 +12,10 @@ A ProtonMail CLI tool written in Go, similar to gog.
- **Webhook Management**: Real-time notifications via webhook subscriptions
- **External PGP Key Management**: Import, export, encrypt, decrypt, sign, and verify with external PGP keys
- **CLI Plugin System**: Extend Pop functionality with external plugins
- **Email Threading**: View and reply to conversation threads
- **Bulk Operations**: Delete, trash, star, and mark read/unread multiple messages at once
- **Export/Import**: Export messages to JSON, MBOX, or EML format; import from JSON
- **Draft Auto-Save**: Automatic draft saving with configurable interval and email templates
## Installation
@@ -119,6 +123,85 @@ pop plugin enable myplugin
pop plugin disable myplugin
```
### Email Threading
```bash
# List conversation threads
pop thread list
# View a full conversation thread
pop thread show <conversation-id>
# Reply to a conversation
pop thread reply <conversation-id> --body "Your reply here"
pop thread reply <conversation-id> --body-file reply.txt
```
### Bulk Operations
```bash
# Delete multiple messages
pop bulk delete --ids "id1,id2,id3"
pop bulk delete --ids-file ids.txt
# Move multiple messages to trash
pop bulk trash --ids "id1,id2,id3"
# Star multiple messages
pop bulk star --ids "id1,id2,id3"
pop bulk unstar --ids "id1,id2,id3"
# Mark messages as read/unread
pop bulk mark-read --ids "id1,id2,id3"
pop bulk mark-unread --ids "id1,id2,id3"
```
### Export and Import
```bash
# Export specific messages
pop export messages --ids "id1,id2,id3" --output messages.json
pop export messages --ids-file ids.txt --output messages.json
# Export messages by search
pop export messages --search "important" --output search-results.json
# Export all messages from a folder
pop export folder --folder inbox --output inbox-backup.json
pop export folder --folder sent --format mbox --output sent.mbox
# Export a conversation
pop export conversation <conversation-id> --output conversation.json
# Import messages from JSON
pop import --file messages.json
```
### Draft Auto-Save
```bash
# Enable auto-save with default 30-second interval
pop draft autosave enable
# Enable with custom interval
pop draft autosave enable --interval 60
# Disable auto-save
pop draft autosave disable
# Check auto-save status
pop draft autosave status
# Manually trigger auto-save
pop draft autosave run
# Manage email templates
pop draft template save newsletter --subject "Monthly Update" --body "Hello..."
pop draft template list
pop draft template use newsletter --to recipient@example.com
pop draft template delete newsletter
```
## Project Structure
```
@@ -135,8 +218,11 @@ pop/
│ ├── accounts.go # Multi-account support
│ ├── webhook.go # Webhook management
│ ├── pgp.go # PGP key management
│ ├── plugin.go # Plugin management
── thread.go # Thread management
│ ├── plugin.go # Plugin management
── thread.go # Conversation threading
│ ├── bulk.go # Bulk operations
│ ├── export.go # Export/import functionality
│ └── draft_autosave.go # Draft auto-save and templates
├── internal/
│ ├── auth/ # Session management
│ │ └── session.go