Commit Graph

20 Commits

Author SHA1 Message Date
0b9bbe1255 add multipart/mixed formatting, base64 line-wrapped encoding to MessageFormatter 2026-03-14 13:32:23 +01:00
968dd91f80 add fetchFullMessage, fetchSection to IMAPClient for MIME attachment retrieval 2026-03-14 13:31:38 +01:00
17d47cfddd add v4_attachment migration: sectionPath on attachment, hasAttachments on message 2026-03-14 13:29:29 +01:00
aac7c7c0af add MIMEParser: multipart parsing, content decoding, boundary generation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 12:09:10 +01:00
cd7d39de9e add RFC 2047 encoded word decoder for MIME filenames
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 12:07:17 +01:00
8095000a56 add MIMEParser module target to Package.swift
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 12:06:10 +01:00
39c0fd40bf add VTODO parser, formatter, TaskStore file I/O with cache rebuild
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 10:31:00 +01:00
a4f0761f25 add v0.4 models, schema, query extensions for GTD tasks, labels, deferrals
New model types: TaskStatus, TaskSummary, LabelInfo, ItemSummary.
GRDB records: TaskRecord, LabelRecord, ItemLabelRecord, DeferralRecord.
Database migrations v3_task, v3_label, v3_deferral with indexes.
MailStore query extensions for labels, item-labels, deferrals, task cache.
TaskStore module wrapping MailStore. Tests for all v3 tables and records.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 10:31:00 +01:00
cf2b463fd3 add ActionQueue: two-phase enqueue, FIFO flush, retry with max 5 attempts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 05:29:56 +01:00
54ce92e280 add SMTPClient module: connection layer, message formatter, public API, tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 05:25:03 +01:00
427f197bb3 add IMAP write operations, special folder role detection
Extend IMAPClientProtocol with storeFlags, moveMessage, copyMessage,
expunge, appendMessage, capabilities methods. Implement all six in
IMAPClient actor using NIOIMAPCore typed commands. Add multi-part
command support to IMAPConnection/IMAPCommandRunner for APPEND.
MockIMAPClient tracks all write calls for testing. SyncCoordinator
detects mailbox roles from LIST attributes with name-based fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 05:13:39 +01:00
d659ed67de add v0.3 schema: smtp fields, mailbox roles, drafts, pending actions, mailstore queries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 05:01:17 +01:00
21227b3c78 add real IMAPClient actor with NIO connection, command pipeline, envelope parsing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 21:12:39 +01:00
300b583695 add sync coordinator: imap → mailstore pipeline with delta sync
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:32:38 +01:00
ce5c985272 add imap client protocol, types, mock for testing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:27:20 +01:00
4670612e75 add FTS5 search, thread summaries, reactive observation streams
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:25:18 +01:00
ca3817c683 add thread reconstruction: simplified JWZ with merge support
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:21:15 +01:00
abee491cec add mailstore CRUD: accounts, mailboxes, messages, threads, flags, body
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:18:59 +01:00
f37b287f5e add models module: shared types for accounts, messages, threads, sync
fix Package.swift: remove NIOIMAPCore product reference (only NIOIMAP is exported by swift-nio-imap)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:11:24 +01:00
9c3d02ae45 scaffold MagnumOpusCore swift package with four modules
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:05:02 +01:00