Add IndieAbout + IndieBackup, TestFlight release pipeline
IndieAbout: About section in iOS Settings and macOS About window; LICENSE
switched to the portfolio-standard ISC text (reflowed for in-app rendering).
IndieBackup: files-only backup/restore of the iCloud container documents
('.notesbackup' document type on both platforms), SwiftData cache rebuilt
via SyncEngine.rebuildCache() after restore, monitors suspended during the
file swap, onOpenURL import with pre-launch queueing.
Release pipeline: Scripts/release.sh (ios|mac|all) archives and uploads via
xcodebuild + ASC API key; platform-partitioned build numbers (iOS even,
macOS odd) since both targets share one bundle ID and build sequence.
This commit is contained in:
@@ -398,6 +398,21 @@ final class SyncEngine {
|
||||
.sorted()
|
||||
}
|
||||
|
||||
// MARK: - Restore support
|
||||
|
||||
/// Stops the metadata observers so a backup restore's bulk file
|
||||
/// replacement isn't observed as live sync events.
|
||||
func suspendForRestore() {
|
||||
stopMonitoring()
|
||||
}
|
||||
|
||||
/// Restarts fresh observers after a restore. The new NSMetadataQuery
|
||||
/// re-baselines its known files on gather, so the restored tree does not
|
||||
/// replay as a flood of add/remove events.
|
||||
func resumeAfterRestore() {
|
||||
startMonitoring()
|
||||
}
|
||||
|
||||
// MARK: - Maintenance
|
||||
|
||||
private func performLaunchMaintenance() {
|
||||
|
||||
Reference in New Issue
Block a user