Changes in version 1.4.2
Features
-
WebGL Fluid animation (PR #85 — author: @frenzydrive)
- Added a new login background option based on Pavel Dobryakov's WebGL Fluid Simulation (MIT license)
- Available alongside the existing Canvas 2D particle modes; selectable in the theme settings
- Lazy-loads
login-fluid.jsonly when Fluid is chosen, so other modes pay no runtime cost - Falls back to the static background image if WebGL is unavailable or fails to initialize
- Integrated with the smoothness fix so Fluid runs at full frame rate on capable devices
-
Configurable temperature thresholds (PR #82 — author: @DoubleThePsycho)
- Warm / Hot / Critical thresholds are now tunable instead of hardcoded 50 / 70 / 85 °C (defaults unchanged)
- Stored in
proton2025.settings, validated as whole numbers with0 <= warm < hot < critical <= 150 - Compact controls at the bottom of Status → Realtime → Temperature with dirty-state Save and Reset-to-defaults
- Badges, chart threshold lines and summaries update live after saving, no reload needed
- Exposed via
luci.proton-tempgetThresholds/setThresholdsas a shared source for the future dashboard widget
Fixes
-
Login animation smoothness
-
Restored smoother motion after the previous optimization had reduced the login background animation to a less fluid, overly throttled state
-
Kept a reduced-frame fallback for low-power devices, but raised the target frame rate for modern hardware to recover visual smoothness
-
Preserved the lightweight performance profile so weaker routers and older browsers still remain stable
-
Adjusted the animation timing logic to balance responsiveness with the original fluid visual feel
-
-
White flash on login page and on submit
-
Added inline critical
background-colorstyle in<head>ofsysauth.utso the browser paints the correct dark/light background immediately, before external CSS loads -
Eliminates the intermittent white flash of the login card when the Fluid animation is active and the user clicks login
-
Uses server-side
serverThemevalue so the inline style matches the resolved theme without waiting for JavaScript -
On form submit the login page now dispatches a
proton-login-freezeevent that stops both Canvas 2D particles and WebGL Fluid loops, keeping the last frame and freeing the GPU for the next page paint -
Covers keyboard/Enter/button submits plus a click backup for programmatic
form.submit()(e.g. password-manager autofill), which skips thesubmitevent
-
-
Port status cards with multiple networks (fixes #81, #83)
-
Constrained multi-network zone color segments to the narrow status stripe instead of allowing them to overflow the port card
-
Stacked segments within the stripe on desktop hover and mobile layouts
-
-
Settings synchronization without HTTP ubus (fixes #70 — reported and diagnosed by @ang3el7z)
-
Added
uhttpd-mod-ubusas a runtime dependency and configure the standard/ubusendpoint during installation only when it is missing -
Settings sync now checks HTTP status and response content type before parsing JSON, reporting a clear error instead of a misleading
Unexpected token "<"message when a router returns an HTML 404 page
-
Build
- Theme asset versioning
- Increased the cache-busting asset version so updated UI scripts are reloaded by browsers after the animation adjustment
Authors
-
@ChesterGoodiny — smoothness restore, white flash fix, asset versioning
-
@frenzydrive — WebGL Fluid animation (PR #85)
-
@DoubleThePsycho — configurable temperature thresholds (PR #82)
-
@ang3el7z — HTTP ubus gateway diagnosis and fix for settings synchronization (issue #70)
Pull Requests
Installation
One command over root SSH. The script detects the package manager
(apk or opkg), picks the matching asset from this release,
installs it and switches LuCI over to the theme.
wget -qO- https://raw.githubusercontent.com/ChesterGoodiny/luci-theme-proton2025/main/install.sh | shRemoval
wget -qO- https://raw.githubusercontent.com/ChesterGoodiny/luci-theme-proton2025/main/uninstall.sh | shTo install by hand, take the exact file name from the assets below:
.apk if command -v apk prints a path, .ipk otherwise.