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:
@@ -1,8 +1,11 @@
|
||||
import IndieAbout
|
||||
import IndieBackup
|
||||
import SwiftUI
|
||||
|
||||
struct SettingsView: View {
|
||||
@Environment(SyncEngine.self) private var syncEngine
|
||||
@Environment(ContextService.self) private var contextService
|
||||
@EnvironmentObject private var backupController: BackupController
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
@@ -48,6 +51,17 @@ struct SettingsView: View {
|
||||
}
|
||||
.disabled(contextService.isRefreshing)
|
||||
}
|
||||
|
||||
BackupsSectionView(controller: backupController)
|
||||
|
||||
Section {
|
||||
IndieAbout(configuration: .init(
|
||||
documents: [
|
||||
.license(filename: "LICENSE", extension: "md"),
|
||||
.custom(title: "Changelog", filename: "CHANGELOG", extension: "md")
|
||||
]
|
||||
))
|
||||
}
|
||||
}
|
||||
.formStyle(.grouped)
|
||||
.navigationTitle("Settings")
|
||||
|
||||
Reference in New Issue
Block a user