import SwiftUI @main struct MarksApp: App { @State private var serverConfig: ServerConfig? = ServerConfig.load() var body: some Scene { WindowGroup { if let config = serverConfig { MainContainer(config: config) { config.delete() serverConfig = nil } } else { OnboardingView { newConfig in newConfig.save() serverConfig = newConfig } } } } } // Holds the API + ViewModel so they survive re-renders struct MainContainer: View { let config: ServerConfig let onDisconnect: () -> Void @State private var viewModel: BookmarksViewModel init(config: ServerConfig, onDisconnect: @escaping () -> Void) { self.config = config self.onDisconnect = onDisconnect let api = LinkdingAPI(config: config) let claude = ClaudeService.load() _viewModel = State(wrappedValue: BookmarksViewModel(api: api, claude: claude)) } var body: some View { TabView { Tab("Bookmarks", systemImage: "bookmark") { BookmarksView(viewModel: viewModel, onDisconnect: onDisconnect) } Tab("Tags", systemImage: "tag") { TagsView(viewModel: viewModel) } Tab(role: .search) { SearchView(viewModel: viewModel) } } } }