feat: initial release v0.1.0
- Custom Keyboard Extension with push-to-talk UI - iOS 26 SpeechAnalyzer + DictationTranscriber (iOS 18 SF fallback) - OpenAI-compatible LLM client (4 built-in providers + custom) - 3-page onboarding flow + provider config UI - App Group shared storage for cross-process config - 8s LLM timeout with raw-transcript fallback - App Store privacy manifests for both targets - SwiftLint + XcodeGen + GitHub Actions CI - Unit tests (4/4 passing)
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
// AppGroup.swift
|
||||
// OSGKeyboard · Shared
|
||||
//
|
||||
// App Group identifier shared between main app and keyboard extension.
|
||||
// UserDefaults(suiteName:) and file containers use this.
|
||||
|
||||
import Foundation
|
||||
|
||||
public enum AppGroup {
|
||||
/// App Group container identifier (must match entitlements in both targets)
|
||||
public static let identifier = "group.com.osgkeyboard.ios"
|
||||
|
||||
/// Shared UserDefaults instance for cross-process config
|
||||
public static var defaults: UserDefaults {
|
||||
guard let d = UserDefaults(suiteName: identifier) else {
|
||||
assertionFailure("App Group \(identifier) not configured in entitlements")
|
||||
return .standard
|
||||
}
|
||||
return d
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user