You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #2 with more findings after a deeper look. Same format — pick what's useful!
🐛 Bugs / Edge Cases
Mic permission revoked while app is running — If a user revokes microphone permission mid-session (via Android settings or quick settings), does AudioRecorder crash or handle it gracefully? The app should detect the missing permission and show a clear re-permission prompt instead of crashing.
No request timeout or cancel option — If the Groq API takes >30 seconds to respond (slow connection, server overload), the user is stuck with an orange mic button and no way to abort. There should be a configurable timeout (e.g. 15s) and tapping the mic again during processing should cancel the request.
Custom dictionary size limit not enforced — The Whisper API accepts a prompt for word hints. If a user adds thousands of words to their custom dictionary, the prompt could exceed Whisper's token limit, causing silent failures or degraded accuracy. Add a word count limit with a warning.
Floating bubble conflicts with other overlays — Facebook Messenger chat heads, picture-in-picture video, banking app overlays, etc. can overlap with the GroqAndroid bubble. No collision detection or smart positioning is mentioned. The bubble could end up hidden behind another overlay.
✨ Enhancements
Dark mode / Material You theming — The keyboard likely has a static light theme. On devices with dark mode enabled, it will look jarring and out of place. Support isSystemInDarkTheme() or Material You dynamic colors to match the user's system theme.
Haptic feedback on mic tap — Most keyboards vibrate briefly on key press. The mic button should do the same — a short haptic pulse on start and a different one on stop. This gives tactile confirmation, especially useful when not looking at the screen.
Undo last transcription — If Whisper returns garbage (hallucination, wrong language, background noise interpreted as speech), there's no quick way to undo. A simple "undo" button that removes the last inserted text would save a lot of frustration.
First-run onboarding flow — Currently the setup requires: read README → open app → paste API key → go to Android settings → enable keyboard → switch to keyboard. That's a lot of steps. A guided setup wizard (step 1: API key, step 2: auto-open keyboard settings, step 3: test recording) would reduce drop-off.
Android Auto / Wear OS support — Speech-to-text is arguably most useful in hands-free contexts. Even basic Android Auto integration (voice input while driving) or a Wear OS tile would significantly expand the app's usefulness.
🔒 Security / Privacy
Verify HTTPS enforcement for API calls — The README doesn't explicitly mention TLS. While the Groq API endpoint is presumably HTTPS, it's worth verifying that OkHttp is configured to reject plaintext HTTP and that no HTTP fallback exists. Raw voice audio over unencrypted HTTP would be a serious privacy issue.
EncryptedSharedPreferences on work profiles / MDM — On managed devices (corporate MDM, work profiles), the Android Keystore can behave differently. EncryptedSharedPreferences might fail silently or throw exceptions. The app should catch these failures and offer a fallback or clear error message.
🏗️ Platform Compatibility
Android 12+ restricted settings behavior — The README documents workarounds for Xiaomi/MIUI and Samsung, but Android 12+ introduced stricter rules for accessibility services and sideloaded apps across all manufacturers. The "Allow restricted settings" flow differs per Android version (12, 13, 14, 15) and should be documented or detected programmatically with version-specific guidance.
Follow-up to #2 with more findings after a deeper look. Same format — pick what's useful!
🐛 Bugs / Edge Cases
Mic permission revoked while app is running — If a user revokes microphone permission mid-session (via Android settings or quick settings), does AudioRecorder crash or handle it gracefully? The app should detect the missing permission and show a clear re-permission prompt instead of crashing.
No request timeout or cancel option — If the Groq API takes >30 seconds to respond (slow connection, server overload), the user is stuck with an orange mic button and no way to abort. There should be a configurable timeout (e.g. 15s) and tapping the mic again during processing should cancel the request.
Custom dictionary size limit not enforced — The Whisper API accepts a prompt for word hints. If a user adds thousands of words to their custom dictionary, the prompt could exceed Whisper's token limit, causing silent failures or degraded accuracy. Add a word count limit with a warning.
Floating bubble conflicts with other overlays — Facebook Messenger chat heads, picture-in-picture video, banking app overlays, etc. can overlap with the GroqAndroid bubble. No collision detection or smart positioning is mentioned. The bubble could end up hidden behind another overlay.
✨ Enhancements
Dark mode / Material You theming — The keyboard likely has a static light theme. On devices with dark mode enabled, it will look jarring and out of place. Support
isSystemInDarkTheme()or Material You dynamic colors to match the user's system theme.Haptic feedback on mic tap — Most keyboards vibrate briefly on key press. The mic button should do the same — a short haptic pulse on start and a different one on stop. This gives tactile confirmation, especially useful when not looking at the screen.
Undo last transcription — If Whisper returns garbage (hallucination, wrong language, background noise interpreted as speech), there's no quick way to undo. A simple "undo" button that removes the last inserted text would save a lot of frustration.
First-run onboarding flow — Currently the setup requires: read README → open app → paste API key → go to Android settings → enable keyboard → switch to keyboard. That's a lot of steps. A guided setup wizard (step 1: API key, step 2: auto-open keyboard settings, step 3: test recording) would reduce drop-off.
Android Auto / Wear OS support — Speech-to-text is arguably most useful in hands-free contexts. Even basic Android Auto integration (voice input while driving) or a Wear OS tile would significantly expand the app's usefulness.
🔒 Security / Privacy
Verify HTTPS enforcement for API calls — The README doesn't explicitly mention TLS. While the Groq API endpoint is presumably HTTPS, it's worth verifying that OkHttp is configured to reject plaintext HTTP and that no HTTP fallback exists. Raw voice audio over unencrypted HTTP would be a serious privacy issue.
EncryptedSharedPreferences on work profiles / MDM — On managed devices (corporate MDM, work profiles), the Android Keystore can behave differently. EncryptedSharedPreferences might fail silently or throw exceptions. The app should catch these failures and offer a fallback or clear error message.
🏗️ Platform Compatibility