Outcome
A macOS app can add a polished Seda settings surface and a working push-to-talk reference panel without rebuilding model management UI.
Public API
import SedaKit
import SedaUI
@State private var shortcut = SedaShortcut.shift
Settings {
SedaSettingsView(runtime: seda, shortcut: $shortcut)
}
For a menu-bar or overlay experience:
SedaPushToTalkPanel(
runtime: seda,
shortcut: shortcut,
onRevision: editor.replaceTranscript
)
Surface
- model profile, language, installed state, size, install progress, retry, and remove
- microphone permission and selected input device
- configurable hold shortcut, including the requested Shift-to-talk behavior
- compact recording state, live revision text, elapsed time, cancel, and commit
- actionable offline, permission, storage, and model errors
- accessible keyboard navigation, VoiceOver labels, reduced motion, light/dark mode
Architecture
- Keep
SedaUI an optional target; SedaKit must have no SwiftUI dependency.
- Use a
@MainActor observable controller over the SedaKit actor.
- The panel consumes revision events; it does not duplicate recognition logic.
- Provide shortcut and insertion protocols so host apps can use their own global-hotkey and editor integrations.
- Include a signed-off reference menu-bar app in the repository, but keep app policy out of the core library.
Acceptance criteria
Dependency
Blocked by #7 for the in-process Swift runtime and microphone session API.
Outcome
A macOS app can add a polished Seda settings surface and a working push-to-talk reference panel without rebuilding model management UI.
Public API
For a menu-bar or overlay experience:
Surface
Architecture
SedaUIan optional target;SedaKitmust have no SwiftUI dependency.@MainActorobservable controller over the SedaKit actor.Acceptance criteria
Dependency
Blocked by #7 for the in-process Swift runtime and microphone session API.