1.4.6.4
--------
**New: Options → Check for updates now**
- If startup update checks are turned off, you can still check GitHub manually from Options; a newer release uses the same confirm flow as the startup prompt.
- Announces when you are already up to date, or if the check fails.
**Improvement / fix: Windows packaged builds use a standalone update window (with progress)**
- **Issues**: downloading inside the game UI caused “Not Responding”; an early external updater that imported full ``auto_update`` (and thus ``config`` / ``resource``) could hang on “Loading updater…”; ``tasklist | find "pid"`` in the apply script could be hijacked by Git’s GNU ``find``, spamming ``find "xxxxx"`` and stalling install.
- **Approach**: after confirm, the game exits and ``soundrts.exe --soundrts-update`` opens a standalone **SoundRTS Update** window for download/extract with a progress bar. Download/apply helpers live in stdlib-only ``update_core.py`` (no game config/resource imports). ``apply.bat`` waits via ``tasklist`` only (**no** ``find``), then ``robocopy`` overwrites the install (skipping ``user``) and relaunches. Staging remains under ``user/tmp/`` (or ``%APPDATA%\\SoundRTS\\tmp/``).
- **Code**: ``update_window.py``, ``update_core.py``, ``auto_update.py``, ``clientversion.py``, ``clientmain.py``, ``soundrts.py``, ``msgparts.py``, per-language ``tts.txt`` (``5794``–``5798``).
- **Tests**: ``test_auto_update.py``.
- **Docs**: player manuals, getting started, release notes.
**Fix: lag when browsing the Voice libraries menu with arrow keys**
- **Symptom**: Options → Voice libraries felt sluggish on up/down even when a short row was selected, as long as a long help line stayed visible.
- **Cause**: every redraw truncated long visible lines with a linear ``font.size`` loop; a ~hundreds-of-characters help line was expensive.
- **Fix**: menu text fitting now uses binary search plus a cache, so arrow navigation stays responsive.
- **Code**: ``lib/pygame_ui.py`` (``_fit_menu_text``).
- **Tests**: ``test_voice_libs_menu_arrow_profile.py``.
**Improvement: voice-library / update-check copy moved to multilingual TTS ids**
- Some strings lived only as Chinese literals in ``msgparts.py`` (e.g. “voice libraries”, primary/secondary labels, secondary toggle, help text, “check for updates when starting the game”), so they did not follow the UI language via ``tts.txt``.
- They are now numeric ids (about ``5760``–``5793``) in ``res/ui`` and each ``ui-*`` ``tts.txt`` (full zh/en; other languages translate short labels, with English fallback for long help where needed).
- **Code**: ``msgparts.py``, per-language ``tts.txt``.
code:
https://github.com/tuohai/soundrts-ultimate-versiongame:
https://github.com/tuohai/soundrts-ultimate-version/releases/download/1.4.6.4/soundrts-1.4.6.4-ultimate.version-windows.zip