Skip to content

WLED TV v1.3.1

Choose a tag to compare

@leonida92 leonida92 released this 01 Nov 12:53
· 48 commits to main since this release

What's New in v1.3.1

Real-Time System Stats Overlay HUD

  • CPU, RAM & Disk Telemetry: When the floating sampling HUD overlay is enabled, a secondary minimalist glass mini-pill displays live TV CPU utilization (/proc/stat delta), RAM usage (ActivityManager.MemoryInfo), and internal storage free space (StatFs).
  • Throttled Sampling: System statistics are sampled at 1 Hz on the background capture thread with cached string formatting, having 0% impact on 60 FPS ambient capture.

Comprehensive Codebase Audit Fixes & Hardening

Critical Bug Fixes

  • Resilient Hardware Teardown: Fixed a race condition where stopping the capture service cancelled the coroutine scope before blackout frames and HTTP power-off commands reached WLED controllers. Teardown now runs in an asynchronous non-cancellable job before closing the UDP socket.
  • Widevine L1 DRM Detection & Throttling: Bypassed bilinear zone scanning and letterbox cropping during 100% black frames. When DRM is detected (>5s black frame with active audio), UDP streaming throttles from 60 PPS down to a 1.5s keepalive packet, eliminating network congestion during DRM playback.
  • Live Calibration Slider Refresh: Fixed an issue in CalibrationActivity where adjusting RGB gain or brightness sliders did not update solid calibration colors on physical LEDs until the color was clicked again.
  • State Synchronization: Added missing config reload in MainActivity.toggleDeviceEnabled() and fixed stale config overwrite when returning to SystemSettingsActivity.
  • Test Mode Overrides: CornerFinderActivity and EditDeviceActivity.identifyDevice() now properly set isTestingOverride = true, preventing 60Hz ambient frames from overwriting test LEDs.
  • Protocol Limits & Accurate Telemetry: Clamped DRGB to WLED's MTU limit of 490 LEDs (1472 bytes) and made frame dispatchers return the exact number of datagrams transmitted for 100% accurate PPS statistics.

Performance & Zero-Allocation Hot Path

  • Integer Color Ordering: Hoisted color order decoding outside loops in WledUdpSender, eliminating up to 24,000 per-LED string allocations per second.
  • Zero-Allocation Canvas Rendering: Cached LED zone layouts in ZoneCanvasView and pre-allocated HSV/RectF buffers in TvPerimeterPreviewView.
  • Shared OkHttpClient Pool: Consolidated all HTTP calls across Activities and the Service onto a single singleton OkHttpClient instance.

Security & Concurrency

  • Coroutines: Upgraded serviceScope to SupervisorJob() + Dispatchers.IO.
  • Thread Safety: Made mDNS device discovery thread-safe using CopyOnWriteArrayList in DeviceManagerActivity.
  • Android 13+ Hardening: Restricted system broadcast receivers to Context.RECEIVER_NOT_EXPORTED.
  • Build Security: Externalized keystore credentials in app/build.gradle.kts.