Skip to content

v6.2.0

Choose a tag to compare

@sms1sis sms1sis released this 01 Jun 04:11
· 7 commits to main since this release

What's Changed

This release focuses entirely on correctness and reliability — no new features except one important boot-time behavior fix. Several of these were silent bugs that could corrupt your Wi-Fi config under the right conditions.


🐛 Bug Fixes

Backend

  • apply_patch could silently corrupt config values — values containing & expanded to the matched text in sed's replacement pattern. Values containing | broke the s|...| delimiter entirely. Neither caused an error — the config was just written wrong. Rewritten with awk; keys and values are passed as variables and never touch a regex.

  • apply_patch wrote literal \n instead of a newline on Android — when inserting a new key before the END marker, the old sed -i "s|^END|key=val\nEND|" produced the two characters \n on Android's toybox sed (which doesn't support \n in replacements). The inserted line and END were merged into one malformed line. Fixed in the awk rewrite.

  • apply_patch rewrote the config file N times — one sed -i per key meant a 23-key patch (sm6125) rewrote the file 23 times. Now a single awk pass regardless of patch size.

  • apply_patch and write_config were not atomic — both wrote directly to the live config file. An OOM kill or force-stop mid-write left a truncated file the Wi-Fi driver couldn't parse. Both now write to a .wcs_tmp sibling and mv into place — atomic on the same filesystem.

  • get_mode could return malformed JSON — cat mode_status.txt was written raw into a JSON string with no validation. A corrupt or manually edited file would break the dashboard on next open. Now validated against the three known values; anything else returns stock.

  • detect_driver_type ran twice in apply_mode — once inside the stock-restore branch, again after applying a patch. Each call triggers a full sysfs scan. Now runs once at the top, result shared by both paths.

  • Duplicate willow alias in customize.sh — two identical willow) ALIAS="ginkgo" entries in the device alias table. Dead code, but a trap for anyone adding a willow-specific override later.

WebUI

  • Theme flash on open (FOUC) — every time the UI opened, it briefly flashed Sci-Fi before switching to your saved theme. The saved theme was applied by JS after the page had already rendered. Fixed with a blocking inline <script> in <head> that reads localStorage and sets data-theme before the first pixel is painted. A visibility: hidden guard covers the remaining gap while the JS module loads.

  • Deprecated escape()/unescape() in WebView — three decodeURIComponent(escape(atob(...))) and one btoa(unescape(encodeURIComponent(...))) were logging deprecation warnings in modern WebViews. Replaced with TextDecoder / TextEncoder.

  • Settings checkmarks showed wrong state on open — check-scifi and check-interval-5 had ✔ hardcoded in the HTML. If you'd changed those settings, reopening the Settings page briefly showed the wrong active option. All checkmarks are now blank in HTML; JS always writes the correct one.

  • Theme checkmarks stale after in-session theme change — navigate('settings') only synced the interval checkmarks, not the theme ones. Changing theme then visiting Settings showed the old checkmark until the page was re-visited. Fixed.

  • Stats interval timer leaked on WebView destroy — the setInterval for stats polling had no cleanup. Added a pagehide listener to clearInterval when the WebView is destroyed.

  • Dead .theme-toggle CSS — three rule blocks for a button removed several versions ago were still in the stylesheet. Removed.


✨ New Behavior

  • Profile survives module reflash — after flashing a module update, customize.sh copies a fresh unpatched config from /vendor into the overlay, silently reverting your tuning even though the saved mode still said perf or balanced. service.sh now re-applies the saved mode automatically on every boot. If you're on stock, nothing happens. Boot restore output is logged to /data/adb/wcs/boot_restore.log.

📋 Full Changelog

See changelog.md for the complete version history.