Bug-fix release.
Fixed
Live translation no longer errors out after the first turn. Starting a second turn failed with "Android error code 11" (ERROR_SERVER_DISCONNECTED). Two defects combined:
- The recognizer was destroyed and immediately rebound on every turn, so the unbind of the outgoing instance raced the bind of the new one and the recognition service rejected the new binding. The recognizer is now reused across turns and rebuilt only when the requested recognizer kind actually changes.
- Any recognition error ended live mode outright, so even a transient failure closed the conversation. Errors now carry a recoverable flag, and live mode reopens the microphone for recoverable ones — capped at three consecutive retries and reset by a successful transcript.
A silent pause mid-conversation (ERROR_NO_MATCH/ERROR_SPEECH_TIMEOUT) now re-listens instead of ending the session. ERROR_SERVER_DISCONNECTED, ERROR_TOO_MANY_REQUESTS and ERROR_CANNOT_CHECK_SUPPORT gained readable messages.
Also
- Added a Woodpecker CI pipeline running the unit tests and a debug APK build.
Debug build — versionCode 6, minSdk 26, targetSdk 35.