MikeMail local archive, format 1

Location: Application Support/MikeMail/Archive inside the macOS app sandbox.
Mail.sqlite is the SwiftData index, with a versioned schema/migration plan.
Objects/<SHA-256>.eml contains immutable original RFC 5322/MIME bytes, including
all attachments. Paths are relative and content-addressed; user attachment
filenames are never used as filesystem paths. Identical messages share an object.
format.json identifies the archive format.

Account settings, folder trees and recipient history are stored in the database.
Existing UserDefaults settings migrate on first archive creation. Passwords stay
in Keychain and are never included in snapshots. A restore to another Mac needs
passwords entered again.

Refresh inventories all selectable folders and compares UIDVALIDITY/UID/FLAGS.
Only missing message bodies download. Removed messages and old UID generations
are hidden from the current folder but retained in the archive. New bodies are
staged before a complete inventory is reconciled. Failed downloads can resume.
Offline folder selection performs no network access. Server-side read flags are
stored; this change does not add local read/delete/move editing operations.
Initial synchronization downloads all messages, subject to the transport's 40 MB
per-message limit; failed folders are reported and remain incomplete.

Future backup UI should call MailArchive.exportSnapshot(to:) after synchronization
finishes, rather than copying the live SQLite file (which may have a WAL).
The logical snapshot includes manifest.json with formatVersion, date, complete
configuration, every message record (including hidden ones), and its EML objects.
Export serializes with archive mutations, verifies SHA-256, writes a staging
directory, then renames it. No absolute paths or credentials are exported.
Unreferenced orphan objects from interrupted writes are not exported.

MailArchive.restoreSnapshot(from:to:) validates version, unique record IDs, file
references and hashes, then reconstructs a NEW database. It refuses an existing
destination. A future restore UI must first stage/validate, stop all sync and
close the current archive, then switch archives while retaining the previous one
for rollback. Do not replace an open SQLite store. Restore is local only and
does not upload or delete server mail.

Backup/restore engine is implemented and tested; user-facing backup/restore
buttons, scheduling, compression and encryption are intentionally not yet added.
A backup contains only mail already downloaded, not inaccessible server mail.

App icon: generated using built-in image_gen, resized with macOS sips.
Asset: MikeMail/Assets.xcassets/AppIcon.appiconset/MikeMail-1024.png
Generation prompt:
Use case: stylized-concept. Asset: production macOS application icon for MikeMail,
square 1024x1024. Create a beautiful premium blue 3D mail app icon: a sculpted
pearly white envelope with crisp folded triangular flap, softly rounded edges,
hovering subtly above a rich cobalt-to-azure blue rounded-square tile, depth and
bevel, restrained luminous cyan rim highlights, soft studio reflections and
ambient occlusion. Straight-on view, balanced centered composition, clear simple
silhouette readable at 16px. Blue tile occupies about 88% of canvas, transparent
outside rounded tile with soft small shadow. No text, letters, badges, watermark,
extra objects or presentation mockup. Actual standalone icon artwork.
