feat: harden Flow cold-start/force-quit and polish macOS dictation UX

Fix cold-start overlay recursion that overflowed the main-thread stack when
recording began while the ready overlay was still up; also remove temporary
on-screen Flow DEBUG panels after the orange-mic investigation, and land the
macOS overlay/catalog/layout polish plus related Flow recovery hardening.
This commit is contained in:
Rocky
2026-07-10 12:39:41 +08:00
parent dcb66a9849
commit cdf833935a
104 changed files with 5794 additions and 853 deletions
+13 -9
View File
@@ -50,10 +50,12 @@
OSGKeyboard is a free, open-source custom keyboard for iOS 26 that turns
your voice into clean, AI-polished text — in any app.
Hold the mic key, speak naturally, release. The keyboard transcribes
your voice entirely on-device (Apple's iOS 26 SpeechAnalyzer +
DictationTranscriber), and only the final text is sent to the AI you
choose to polish it. Your audio never leaves your iPhone.
Hold the mic key, speak naturally, release. By default the keyboard
transcribes your voice entirely on-device (Apple's iOS 26
SpeechAnalyzer + DictationTranscriber), and only the final text is
sent to the AI you choose to polish it — your audio never leaves your
device unless you explicitly opt into the cloud ASR engine, which
uploads recordings to the provider you configure.
WHY OSGKEYBOARD
@@ -62,8 +64,9 @@ WHY OSGKEYBOARD
types for you.
• Push-to-talk, the way voice should work. No more "Hey Siri" mode that
listens to the whole room.
• On-device speech recognition. Powered by Apple's iOS 26 speech
pipeline — no cloud ASR, no audio upload.
• On-device speech recognition by default. Powered by Apple's iOS 26
speech pipeline — no audio upload unless you explicitly enable the
optional cloud ASR engine (confirmation required).
• Bring-your-own AI. Connect any OpenAI-compatible endpoint (OpenAI,
DeepSeek, Qwen DashScope, Moonshot, Zhipu, your own self-hosted
server). Your API key stays in the iOS Keychain.
@@ -76,12 +79,13 @@ WHY OSGKEYBOARD
• Zero dependencies. No trackers, no analytics, no crash reporters.
The whole project is ~8,700 lines of Swift you can audit in an
afternoon.
• Privacy first. PrivacyInfo.xcprivacy declares zero collected data;
we don't run a server.
• Privacy first. PrivacyInfo.xcprivacy declares exactly what the app
touches (voice audio + transcripts, on-device by default, never
linked or tracked); we don't run a server.
BUILT FOR
• iOS 26 and later, iPhone only.
• iOS 26 and later, iPhone and iPad.
• Anyone who types more than 100 words a day on their phone.
• Developers, writers, students, and translators who want voice input
that respects their privacy.