// // SettingsView.swift // Zyquo Agent // // Author: Simon-Pierre Boucher // Mail: contact@spboucher.ai // // Settings window (760×560, native toolbar-style tabs): Providers & Keys, // Models, Safety, Agent, Appearance, Shortcuts, Advanced — same structure // and DNA as Zyquo Cloud's Settings, extended with the Agent tabs. // import AppKit import SwiftUI struct SettingsView: View { @EnvironmentObject private var appearance: AppearanceStore var body: some View { TabView { ProvidersSettingsTab() .tabItem { Label("Providers & Keys", systemImage: "key") } ModelsSettingsTab() .tabItem { Label("Models", systemImage: "cpu") } SafetySettingsTab() .tabItem { Label("Safety", systemImage: "shield.lefthalf.filled") } AgentSettingsTab() .tabItem { Label("Agent", systemImage: "gearshape.arrow.triangle.2.circlepath") } AppearanceSettingsTab() .tabItem { Label("Appearance", systemImage: "paintbrush") } ShortcutsSettingsTab() .tabItem { Label("Shortcuts", systemImage: "keyboard") } AdvancedSettingsTab() .tabItem { Label("Advanced", systemImage: "gearshape.2") } } .frame(width: ZyquoMetrics.settingsWidth, height: ZyquoMetrics.settingsHeight) .preferredColorScheme(appearance.themeMode.colorScheme) .tint(appearance.accentColor) .id(appearance.accent) } } /// Opens the SwiftUI Settings scene from anywhere (gear buttons, palette). /// macOS 14+ exposes `showSettingsWindow:`; macOS 13 kept the old /// `showPreferencesWindow:` selector — try both. @MainActor enum SettingsOpener { static func open() { NSApp.activate(ignoringOtherApps: true) let selectors = ["showSettingsWindow:", "showPreferencesWindow:"] for name in selectors { let selector = Selector(name) if NSApp.responds(to: selector) || NSApp.sendAction(selector, to: nil, from: nil) { NSApp.sendAction(selector, to: nil, from: nil) return } } } }