IndieBackup comes out whole: the package, the Backup directory, the Settings section, the .kanbanbackup document type and its onOpenURL restore path. Settings is now the About section alone. The Files-app keys stay — they serve local-board visibility, not backups. Board sharing as a zipped archive is the planned replacement and is deliberately not started here. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
34 lines
994 B
Swift
34 lines
994 B
Swift
import SwiftUI
|
|
|
|
/// The iPhone app's entry point. Two tabs, per the mobile MVP charter: Boards (the whole
|
|
/// board → lane → card navigation stack) and Settings.
|
|
@main
|
|
struct MobileApp: App {
|
|
|
|
/// **The app's root model, owned here and nowhere else** — the container home, the one
|
|
/// `NSMetadataQuery` the process runs, and the per-board session cache. `@State` because the
|
|
/// scene owns its lifetime; every screen reaches it through `.environment`, never by
|
|
/// constructing one.
|
|
@State private var boardIndex = BoardIndexStore()
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
RootTabView()
|
|
.environment(boardIndex)
|
|
}
|
|
}
|
|
}
|
|
|
|
struct RootTabView: View {
|
|
var body: some View {
|
|
TabView {
|
|
Tab("Boards", systemImage: "rectangle.stack") {
|
|
BoardsTabView()
|
|
}
|
|
Tab("Settings", systemImage: "gearshape") {
|
|
SettingsTabView()
|
|
}
|
|
}
|
|
}
|
|
}
|