Commit Graph

28 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
0a564a05fd add attachment CRUD to MailStore, wire hasAttachments in Queries 2026-03-14 13:29:58 +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
a3a99e668f add MIME types: MIMEMessage, MIMEPart, MIMEAttachment, TransferEncoding
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 12:06:32 +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
f28b44d445 move v0.1 artifacts to DELETE/, fix xcode build, bump calver to 2026.03.14
- move backend/, clients/, scripts/ to DELETE/ (v0.1 era, replaced by on-device arch)
- delete feature/v0.1-backend-and-macos branch
- add TaskStore dependency to project.yml
- fix ComposeViewModel deinit concurrency, make toMessageSummary public
- regenerate Xcode project, verify macOS build succeeds

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 10:40:41 +01:00
ac824cd72e add deferral resurfacing to SyncCoordinator (task 7)
Import TaskStore, add optional taskStore property, add resurfaceDeferrals()
that clears expired email deferrals and deferred task deferUntil on each sync.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 10:31:00 +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
c38c31bf4d add dot-stuffing for SMTP DATA command (RFC 5321 §4.5.2)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 05:25:55 +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
a75738a79d add background body prefetch for recent messages (last 30 days)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 21:34:38 +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
ec820b2785 add nio connection layer: tls bootstrap, response handler, command runner
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 21:05:44 +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
0927d9827d add mailstore schema: accounts, mailboxes, messages, threads, FTS5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:16:23 +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