- Add SwiftWhisper integration for real whisper.cpp support with Metal acceleration - Implement complete WhisperCPPEngine with audio transcription and text normalization - Build ModelManager with curated catalog, downloads, and Core ML encoder support - Create preferences window with model management UI (download, select, delete) - Add NSStatusItem menu bar with model status display - Integrate STT pipeline: hotkey → audio capture → whisper transcription - Add model setup alerts when no model is loaded - Support offline operation with performance targets met (<4s for 10s audio) - Store models in ~/Library/Application Support/MenuWhisper/Models/ Phase 2 TECHSPEC requirements fully implemented and tested.
26 lines
648 B
Swift
26 lines
648 B
Swift
import SwiftUI
|
|
import CoreUtils
|
|
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
private let appController = AppController()
|
|
|
|
func applicationDidFinishLaunching(_ notification: Notification) {
|
|
appController.start()
|
|
}
|
|
}
|
|
|
|
@main
|
|
struct MenuWhisperApp: App {
|
|
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
|
|
|
|
var body: some Scene {
|
|
// Use a hidden window scene since we're using NSStatusItem for the menu bar
|
|
WindowGroup {
|
|
EmptyView()
|
|
}
|
|
.windowStyle(.hiddenTitleBar)
|
|
.windowResizability(.contentSize)
|
|
.defaultSize(width: 0, height: 0)
|
|
}
|
|
}
|
|
|