Releases: hatsch/TranSlander
v1.2.4
v1.2.4 — Notification UX, thread safety, and memory fixes
Notification improvements, thread safety hardening, and memory optimizations.
What's changed
- Boot notification UX — Tap the "start services" notification to start them instantly (invisible trampoline activity), no app screen opens. Auto-cancels on tap, lowered to IMPORTANCE_LOW
- Service notification — Now swipeable (IMPORTANCE_MIN, no stop button). Service keeps running in the background as intended
- Thread safety — ReadWriteLock protects native sherpa-onnx resources from concurrent transcribe/release. ConcurrentHashMap for FileObserver debounce jobs
- Memory — Replace boxed
MutableList<Short>withShortArraychunks in AudioRecorder and AudioDecoder, avoiding ~8x heap waste during recording - Text injection fix — Remove aggressive fallback that could inject text into wrong field
- Service state tracking — AudioMonitorService uses static
isRunningflag instead of optimistic local boolean - Dark/light mode — Recording overlay adapts background and text colors to system theme
- Lazy OkHttpClient — Only created when model download is triggered
- i18n — Extract remaining hardcoded English strings to resources
For the full feature list, see the v1.0.0 release.
v1.2.3
v1.2.3 — Code quality and stability
Threading fixes, deprecation cleanup, and improved robustness.
What's changed
- Thread safety — Use
AtomicBooleanfor recording state flags,@Volatilefor singleton instance, andCopyOnWriteArrayListfor file observers - Deprecation fixes — Replace deprecated
onBackPressed(), removeAccessibilityNodeInfo.recycle()/obtain()calls (auto-managed since API 26), add explicit foreground service type for Android 14+ - Resource management — Fix mutex scoping, properly cancel debounce jobs, use
response.use{}for HTTP streams - Async handling — Replace
Handler.postDelayedwith coroutines, fix race conditions in recognizer initialization - Cleanup — Remove non-functional language setting, dismiss audio notification when closing transcription
For the full feature list, see the v1.0.0 release.
v1.2.2
v1.2.2 — Android 15 folder monitor fix
Fixes the 6-hour timeout for folder monitoring on Android 15+.
What's changed
- Fix folder monitor timeout — Switch from
dataSynctospecialUseforeground service type, which has no time limit on Android 15+ - Code cleanup — Remove dead code branches for API levels below minSdk 26
- Documentation — Add Android 14/15/16 FGS restrictions reference to BootCompatHelper
Android version support
| Android | Behavior |
|---|---|
| 8.0–13 | Services start directly at boot |
| 14+ | Notification prompts user to open app |
| 15+ | Folder monitor now runs indefinitely (was limited to 6 hours) |
For the full feature list, see the v1.0.0 release.
v1.2.1
v1.2.1 — Android 14+ boot fix
Fixes service startup on Android 14+ (API 34+) where foreground services are blocked from starting at boot.
What's changed
- Harden service startup — Catch
ForegroundServiceStartNotAllowedException,SecurityException, andIllegalStateExceptionwhen starting foreground services - Restart notification — When floating mic or folder monitor fails to start at boot, a notification prompts you to open the app (which restarts the service automatically)
- Notification permission — Request
POST_NOTIFICATIONSpermission on Android 13+ when enabling services
For the full feature list, see the v1.0.0 release.
v1.2.0
v1.2.0 — Local model import
Load the speech model from a local folder instead of downloading it over the internet. Useful for users on metered connections or devices without internet access.
What's new
- Import from folder — Pick a folder containing the model files and copy them directly into the app
- Separate download and import — Clear UI with "Download model" (from HuggingFace) and "Import from folder" options
- Copy progress indicator — Shows "Copying to app storage" with progress during local import
- User-friendly error messages — Checksum mismatches, missing files, and network errors now show localized messages instead of raw exceptions
- Model file validation — App re-checks model files on resume and before loading, recovering gracefully if files were deleted externally
- NVIDIA attribution — Added CC-BY-4.0 attribution for Parakeet TDT model
Bug fixes
- Wrap browser intent in try-catch for devices without a browser app
- Prevent UI from getting stuck if model files are deleted outside the app
For the full feature list, see the v1.0.0 release.
v1.1.1
v1.1.1 — Boot stability fix
Harden boot-time code paths to prevent crash after system update.
Changes
- Catch
UnsatisfiedLinkError(JNI native library loading) in speech recognizer initialization - Guard foreground service startup in audio monitor against
IllegalStateExceptionon Android 12+ - Prevent
Application.onCreate()crash if background services fail to start at boot
For the full feature list, see the v1.0.0 release.
v1.1.0
v1.1.0 — Localization
UI localization for 23 languages. All hardcoded English strings have been extracted to Android resources and translated.
What's new
- 23 language translations — Bulgarian, Croatian, Czech, Danish, Dutch, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish, Ukrainian
- Store listings in German, French, Spanish, Italian, and Portuguese
- Localization note in README inviting translation contributions
- Fixed language count in descriptions (25, not 26+)
Notes
- Translations were machine-generated. Pull requests to improve phrasing are welcome.
- German uses neutral/passive language; French, Italian, and Spanish use informal "tu" form (standard for mobile apps).
- The app language follows your Android system language setting.
For the full feature list, see the v1.0.0 release.
v1.0.2
What's Changed
- Fix floating button crash when overlay permission is missing
- Overlay permission setting now always visible with tap-to-manage shortcut
- Folder monitor automatically restarts when adding or removing watched folders
See v1.0.0 release notes for full feature list.
v1.0.1
What's Changed
- Add accessibility service disclosure dialog for Google Play compliance
- Fix model download source in privacy policy (HuggingFace, not GitHub)
See v1.0.0 release notes for full feature list.
v1.0.0
TranSlander v1.0.0
Offline voice typing for Android — your voice never leaves your device.
Speak into your phone and text appears in any app. No internet required, no cloud processing, no tracking.
Highlights
- Fully offline — Uses Parakeet neural model running locally via sherpa-onnx
- Works everywhere — Injects text into any app via Accessibility API
- Multiple input methods — Floating mic, accessibility button, or keyboard integration
- Voice message transcription — Share audio files or monitor folders for automatic transcription
- 25 languages — With auto-detection
- Privacy first — Zero telemetry, zero analytics, zero cloud
Getting Started
- Install the APK
- Download the speech model (~600MB, one-time)
- Grant accessibility permission
- Tap the mic and speak
Downloads
| File | Description |
|---|---|
translander-v1.0.0.apk |
Install directly on your device |
Notes
- First launch requires downloading the ~600MB speech model
- After download, you can revoke network permission for complete offline operation
- Requires Android 8.0+ (API 26)
This is the first public release. Feedback and bug reports welcome!
Full Changelog: v1.0.0-alpha3...v1.0.0