07067ca6c5
- 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)
34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to OSGKeyboard will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
- Initial open-source release.
|
|
- Custom Keyboard Extension with push-to-talk UI.
|
|
- iOS 26 `SpeechAnalyzer` + `DictationTranscriber` on-device ASR.
|
|
- iOS 18 `SFSpeechRecognizer` fallback path (on-device only).
|
|
- OpenAI-compatible LLM client (BaseURL / API Key / Model / System Prompt user-editable).
|
|
- Built-in presets: OpenAI, DeepSeek, Qwen DashScope, Custom.
|
|
- Three-page onboarding (welcome → enable keyboard → API config).
|
|
- `ProviderConfig` persisted in App Group `group.com.osgkeyboard.ios`.
|
|
- 8-second LLM call timeout with graceful fallback to raw transcript.
|
|
- App Store privacy manifest (`PrivacyInfo.xcprivacy`) for both targets.
|
|
- SwiftLint config, XcodeGen project definition, GitHub Actions CI.
|
|
- Unit tests for `ProviderConfig` and `OpenAICompatibleClient`.
|
|
|
|
### Known limitations
|
|
- 2 failing tests stub state pollution was fixed in this release; regression coverage in place.
|
|
- The keyboard does not work in password fields (iOS limitation).
|
|
- Microphone requires "Allow Full Access" to be enabled in iOS Settings.
|
|
- Whisper.cpp / on-device LLM polish is intentionally out of scope for v1 (cloud-only).
|
|
|
|
## [0.1.0] - 2026-06-17
|
|
|
|
### Added
|
|
- First public pre-release.
|