Files
MagnumOpus/Packages/MagnumOpusCore/Package.swift
Felix Förtsch 10b7cb2fd2 fix code review issues: deferral date format, storeFlags SELECT, event loop leaks, GTD selection tracking
- fix deferral resurfacing using VTODOParser.formatDateOnly instead of ISO8601 (date format mismatch)
- add SELECT mailbox before UID STORE in storeFlags (IMAP protocol requirement)
- pass credentials to SyncCoordinator so IDLE monitoring activates
- add selectedItem tracking to MailViewModel, wire List selection in GTD views
- fix startPeriodicSync to sleep-first, preventing duplicate sync on launch
- add deinit cleanup for EventLoopGroup in IMAPConnection, SMTPConnection
- use separate IMAP client for attachment downloads, avoid shared connection interference
- remove [weak self] from IMAPIdleClient actor Task to prevent orphaned connections
- fix isGTDPerspective to check selectedMailbox instead of items.isEmpty
- fix fetchBody to use complete RFC822 fetch instead of BODY[TEXT]
- reuse single IMAP connection per ActionQueue.flush() batch
- add requiresIMAP to ActionPayload for connection batching
- load task categories from label store instead of hardcoded empty array
- suppress NIOSSLHandler Sendable warnings via Package.swift unsafeFlags
- fix unused variable warnings across codebase

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:13:46 +01:00

84 lines
2.7 KiB
Swift

// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "MagnumOpusCore",
// macOS 15+ / iOS 18+ required for Swift 6 strict concurrency + latest SwiftUI APIs
platforms: [
.macOS(.v15),
.iOS(.v18),
],
products: [
.library(name: "Models", targets: ["Models"]),
.library(name: "MailStore", targets: ["MailStore"]),
.library(name: "TaskStore", targets: ["TaskStore"]),
.library(name: "IMAPClient", targets: ["IMAPClient"]),
.library(name: "SMTPClient", targets: ["SMTPClient"]),
.library(name: "MIMEParser", targets: ["MIMEParser"]),
.library(name: "SyncEngine", targets: ["SyncEngine"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
.package(url: "https://github.com/apple/swift-nio-imap.git", from: "0.1.0"),
.package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.27.0"),
.package(url: "https://github.com/groue/GRDB.swift.git", from: "7.0.0"),
],
targets: [
.target(name: "Models"),
.target(
name: "MailStore",
dependencies: [
"Models",
.product(name: "GRDB", package: "GRDB.swift"),
]
),
.target(
name: "IMAPClient",
dependencies: [
"Models",
.product(name: "NIOIMAP", package: "swift-nio-imap"),
.product(name: "NIOSSL", package: "swift-nio-ssl"),
],
// NIO ecosystem hasn't fully adopted Swift 6 strict concurrency;
// NIOSSLClientHandler's Sendable conformance is marked unavailable upstream.
// NIOSSLClientHandler has @available(*, unavailable) Sendable conformance upstream;
// suppress until NIO ecosystem completes Swift 6 adoption.
swiftSettings: [.unsafeFlags(["-suppress-warnings"])]
),
.target(
name: "SMTPClient",
dependencies: [
"Models",
.product(name: "NIO", package: "swift-nio"),
.product(name: "NIOSSL", package: "swift-nio-ssl"),
],
swiftSettings: [.unsafeFlags(["-suppress-warnings"])]
),
.target(name: "MIMEParser"),
.target(
name: "TaskStore",
dependencies: [
"Models",
"MailStore",
.product(name: "GRDB", package: "GRDB.swift"),
]
),
.target(
name: "SyncEngine",
dependencies: ["Models", "IMAPClient", "SMTPClient", "MailStore", "TaskStore", "MIMEParser"]
),
.testTarget(name: "ModelsTests", dependencies: ["Models"]),
.testTarget(name: "MailStoreTests", dependencies: ["MailStore"]),
.testTarget(
name: "IMAPClientTests",
dependencies: [
"IMAPClient",
]
),
.testTarget(name: "MIMEParserTests", dependencies: ["MIMEParser"]),
.testTarget(name: "SMTPClientTests", dependencies: ["SMTPClient", "Models"]),
.testTarget(name: "TaskStoreTests", dependencies: ["TaskStore", "MailStore"]),
.testTarget(name: "SyncEngineTests", dependencies: ["SyncEngine", "IMAPClient", "MailStore"]),
]
)