Skip to content

Releases: hatsch/TranSlander

v1.2.4

07 Feb 20:16

Choose a tag to compare

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> with ShortArray chunks 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 isRunning flag 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

04 Feb 19:34

Choose a tag to compare

v1.2.3 — Code quality and stability

Threading fixes, deprecation cleanup, and improved robustness.

What's changed

  • Thread safety — Use AtomicBoolean for recording state flags, @Volatile for singleton instance, and CopyOnWriteArrayList for file observers
  • Deprecation fixes — Replace deprecated onBackPressed(), remove AccessibilityNodeInfo.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.postDelayed with 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

03 Feb 18:14

Choose a tag to compare

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 dataSync to specialUse foreground 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

03 Feb 09:04

Choose a tag to compare

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, and IllegalStateException when 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_NOTIFICATIONS permission on Android 13+ when enabling services

For the full feature list, see the v1.0.0 release.

v1.2.0

03 Feb 07:45

Choose a tag to compare

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

02 Feb 16:56

Choose a tag to compare

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 IllegalStateException on 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

01 Feb 10:20

Choose a tag to compare

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

31 Jan 17:39

Choose a tag to compare

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

30 Jan 20:12

Choose a tag to compare

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

27 Jan 20:37

Choose a tag to compare

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

  1. Install the APK
  2. Download the speech model (~600MB, one-time)
  3. Grant accessibility permission
  4. 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