f625ecc263
Fixes: - Sandbox: add LaunchAgent temporary-exception entitlement - Mirror URL: fix broken buildMirrorURL (URLComponents with ; separator) - Cleanup: add bounds check to prevent crash on missing source - State safety: pass MirrorConfig instead of mutating global @State - KVC: remove misleading do-catch around setValue:forKey: - Log cap: limit in-memory log to 2000 lines - CLI: fix race with calendar loading - launchCtl: separate stdout/stderr pipes Features: - Cancel button for long-running mirrors - Progress indicator for multi-route runs (Route X of Y) - Target event cache across routes Code quality: - Extract BlockMath, MirrorUtils, EventFilters, MirrorConfig - Add 45 unit tests across 3 test files - Refactor mergeGapMin to computed property - Make log editor read-only Build: - Bump version to 1.4.0 (build 18) - Add LSMinimumSystemVersion 15.5
24 lines
602 B
Swift
24 lines
602 B
Swift
import Foundation
|
|
import EventKit
|
|
|
|
struct MirrorConfig {
|
|
let daysBack: Int
|
|
let daysForward: Int
|
|
let mergeGapMin: Int
|
|
let hideDetails: Bool
|
|
let copyDescription: Bool
|
|
let markPrivate: Bool
|
|
let mirrorAllDay: Bool
|
|
let overlapMode: OverlapMode
|
|
let titlePrefix: String
|
|
let placeholderTitle: String
|
|
let filterByWorkHours: Bool
|
|
let workHoursStart: Int
|
|
let workHoursEnd: Int
|
|
let excludedTitleFilterTerms: [String]
|
|
let excludedOrganizerFilterTerms: [String]
|
|
let mirrorAcceptedOnly: Bool
|
|
let autoDeleteMissing: Bool
|
|
let writeEnabled: Bool
|
|
}
|