swift-apple-intelligence-grpc/Sources/AppleIntelligenceApp/Models/AppSettings.swift
Mathias Beaulieu-Duncan 638656e7ca Add vision support, gRPC reflection toggle, and chat improvements
- Add Vision framework integration for image analysis (OCR, classification)
- Add image attachment support in chat UI with drag & drop
- Add recent images sidebar from Downloads/Desktop
- Add copy to clipboard button for assistant responses
- Add gRPC reflection service with toggle in settings
- Create proper .proto file and generate Swift code
- Add server restart when toggling reflection setting
- Fix port number formatting in settings (remove comma grouping)
- Update gRPC dependencies to v2.x

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 16:18:06 -05:00

64 lines
1.9 KiB
Swift

import Foundation
import ServiceManagement
@Observable
final class AppSettings {
var host: String {
didSet { UserDefaults.standard.set(host, forKey: "grpc_host") }
}
var port: Int {
didSet { UserDefaults.standard.set(port, forKey: "grpc_port") }
}
var apiKey: String {
didSet { UserDefaults.standard.set(apiKey, forKey: "api_key") }
}
var autoStartServer: Bool {
didSet { UserDefaults.standard.set(autoStartServer, forKey: "auto_start_server") }
}
var enableReflection: Bool {
didSet { UserDefaults.standard.set(enableReflection, forKey: "enable_reflection") }
}
var launchAtLogin: Bool {
didSet {
do {
if launchAtLogin {
try SMAppService.mainApp.register()
} else {
try SMAppService.mainApp.unregister()
}
} catch {
print("Failed to update launch at login: \(error)")
}
}
}
init() {
self.host = UserDefaults.standard.string(forKey: "grpc_host") ?? "0.0.0.0"
let savedPort = UserDefaults.standard.integer(forKey: "grpc_port")
self.port = savedPort == 0 ? 50051 : savedPort
self.apiKey = UserDefaults.standard.string(forKey: "api_key") ?? ""
self.autoStartServer = UserDefaults.standard.bool(forKey: "auto_start_server")
// Default to true if not set
if UserDefaults.standard.object(forKey: "enable_reflection") == nil {
self.enableReflection = true
} else {
self.enableReflection = UserDefaults.standard.bool(forKey: "enable_reflection")
}
self.launchAtLogin = SMAppService.mainApp.status == .enabled
}
func resetToDefaults() {
host = "0.0.0.0"
port = 50051
apiKey = ""
autoStartServer = false
enableReflection = true
launchAtLogin = false
}
}