Shevery v13.7.0 r15 Hotfix
Shevery v13.7.0 r15 Hotfix Release
This hotfix release resolves several critical bugs in both the frontend (UI) and backend components of Shevery.
Bug Fixes
- WebView Command Queueing & Concurrency:
- Fixed a race condition in ModuleWebViewActivity where concurrent commands sent from WebView JS would overwrite the activity's single pending command fields, causing previous commands to hang indefinitely in
unBlocking and leaking coroutine resources. Added a reactive Compose-backed mutableStateListOf queue.
- Fixed a race condition in ModuleWebViewActivity where concurrent commands sent from WebView JS would overwrite the activity's single pending command fields, causing previous commands to hang indefinitely in
- Logcat Leak & Output Spam:
- Removed device-wide logcat streaming from AdbModuleManager.runModuleScriptStreaming to prevent leakage of private system-wide logs from other applications and reduce output spam.
- WebView Network Policy Enforcement:
- Fixed a bypass where untrusted modules could make arbitrary web network calls via Shizuku.download(url, path) regardless of the WebView's blocked network status. Now explicitly enforces canUseWebNetwork policy check before allowing downloads.
- UTF-8 Multi-byte Stream Chunk Parsing:
- Fixed multi-byte character corruption at buffer chunk boundaries in ModuleJsBridge.readStreamTail by reading using a proper InputStreamReader into a CharArray buffer instead of decoding arbitrary byte-chunks directly.
- Dhizuku Service Binding Connection Leak:
- Resolved a memory leak in WatchdogManager and StarterActivity where the Dhizuku ServiceConnection was never unbound after starting the service. Added a 10-second timeout and clean up unbinding in invokeOnCancellation and inally blocks.
- NSD Discovery Background Leak:
- Fixed AdbMdns background discovery scan leak when stop() is called quickly after start(), before the async onDiscoveryStarted confirms state. Now stops discovery unconditionally.
- Windows ZIP Path Verification Compatibility:
- Fixed ZIP path validation in AdbModuleManager.ensureInside to use Java NIO Path.startsWith instead of hardcoded forward slash checks (childPath.startsWith("/")), fixing "Unsafe module path" failures when compiling or testing on Windows.