Repository navigation
v6.2.0
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_patchcould silently corrupt config values — values containing&expanded to the matched text in sed's replacement pattern. Values containing|broke thes|...|delimiter entirely. Neither caused an error — the config was just written wrong. Rewritten withawk; keys and values are passed as variables and never touch a regex. -
apply_patchwrote literal\ninstead of a newline on Android — when inserting a new key before theENDmarker, the oldsed -i "s|^END|key=val\nEND|"produced the two characters\non Android's toybox sed (which doesn't support\nin replacements). The inserted line andENDwere merged into one malformed line. Fixed in the awk rewrite. -
apply_patchrewrote the config file N times — onesed -iper key meant a 23-key patch (sm6125) rewrote the file 23 times. Now a single awk pass regardless of patch size. -
apply_patchandwrite_configwere 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_tmpsibling andmvinto place — atomic on the same filesystem. -
get_modecould return malformed JSON —cat mode_status.txtwas 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 returnsstock. -
detect_driver_typeran twice inapply_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
willowalias incustomize.sh— two identicalwillow) 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 readslocalStorageand setsdata-themebefore the first pixel is painted. Avisibility: hiddenguard covers the remaining gap while the JS module loads. -
Deprecated
escape()/unescape()in WebView — threedecodeURIComponent(escape(atob(...)))and onebtoa(unescape(encodeURIComponent(...)))were logging deprecation warnings in modern WebViews. Replaced withTextDecoder/TextEncoder. -
Settings checkmarks showed wrong state on open —
check-scifiandcheck-interval-5had✔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
setIntervalfor stats polling had no cleanup. Added apagehidelistener toclearIntervalwhen the WebView is destroyed. -
Dead
.theme-toggleCSS — 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.shcopies a fresh unpatched config from/vendorinto the overlay, silently reverting your tuning even though the saved mode still saidperforbalanced.service.shnow 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.