Skip to content

Releases: adeze/lg-hue-sync

LG Hue Sync v1.0.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 05:49

Changed

  • Rebuild the embedded dashboard with Svelte, Tailwind and selected shadcn-svelte components; keep the existing local HTTP API and single-file deployment.
  • Use consistent Item rows and touch-sized Switches for processing/device settings, with pressed Toggles for screen sync, display and light regions.
  • Make Colour, Response and Spatial preset groups independently combinable, automatically save selections, and restore the last saved choices.
  • Add bounded Off/Mild/Strong depth influence while preserving Hue channel centres and separate gradient-channel sampling.
  • Combine capture polling ceiling, measured light-update rate and sender connection status into one diagnostic gauge; distinguish paused, stale and unavailable readings.

Fixed

  • Add display-only on/off/toggle HTTP controls and pause screen synchronization while the display is off, independently of TV standby power.
  • Keep tuning preview capture explicit and frozen; remove live polling from colour tuning and avoid redundant settings updates.
  • Use practical fader/output-trim steps, place Strict black with Black gate, and group infrequent processing options separately.
  • Harden atomic configuration writes and preserve independent preset overrides and device credentials.

Validation

  • Host checks cover 127 Rust tests, 9 frontend tests, Svelte diagnostics, formatting, Clippy and release metadata. Native ARMv7 builds pass ELF32, soft-float, loader and glibc <= 2.28 checks.
  • The pre-version-bump UX build was deployed and its binary hash, service, dashboard, hardware capture and Hue/Nanoleaf connections verified. Physical colour accuracy and iPhone haptics were not measured.
  • HLS, native video encoding and audio interception are excluded. CI builds published daemon assets independently; launcher-only packages/manifests remain unpublished.

LG Hue Sync v1.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 13:58

Added

  • Add demand-driven HDMI frame capture and optional live thumbnails to Advanced tuning, using the existing capture pipeline with bounded 128×72 previews at up to one frame per second.
  • Preview static colour adjustments using the daemon's shared colour processing, with optional Hue device regions and Nanoleaf perimeter overlays. Explain unsupported spatial, temporal and physical-light effects in a preview information popup.
  • Save custom tuning per ambient style, retain the selected style, and restore factory defaults with Reset. Preserve legacy settings and keep pairing, device placement and output trims separate from preset overrides.
  • Add cached, read-only input/output diagnostics for HDMI, display output and internal-player information where the TV exposes it. Distinguish source properties from display output; unavailable fields remain unavailable.

Changed

  • Organize the dashboard into Tuning, Devices and Diagnostics tabs, with compact screen-sync and follow-TV-power controls.
  • Combine the adjusted colour preview and light layout, place ambient styles above it, and use horizontally scrolling vertical response faders with larger focus targets.
  • Place Save/Reset in Advanced tuning, remove preview pinning, and show contextual fader explanations without repetitive live-preview status announcements.

Validation

  • All 118 Rust tests, dashboard preview/preset checks, formatting, warnings-denied Clippy and embedded JavaScript syntax checks passed for 1.0.0. Launcher packaging and native-build safety tests passed. Native ARMv7 builds passed ELF/ABI, loader and glibc <= 2.28 checks.
  • The feature build passed on-TV binary hash, service/dashboard health and HDMI frame capture checks, with paired configuration preserved and a verified rollback binary. Built-in Netflix and HDMI observations distinguished internal-player properties from display output.
  • Published assets are built independently by Docker CI. The release binary is not the previously deployed feature binary; physical colour accuracy, touchscreen interaction and CPU impact were not measured. MAT/Atmos decoding and audio capture are not provided. Launcher-only IPKs and manifests remain unpublished.

LG Hue Sync v0.9.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 08:14

Fixed

  • Show one Hue preview box per physical device, combining the sampling bounds of its streaming channels. Keep different devices and legacy channels separate; use a representative average sampled colour for multichannel previews only.
  • Replace segment-range labels with the device name and retain channel details in the tooltip. Add large orientation glyphs when Hue supplies enough service layout points; the monitor end marks front toward the TV wall, not LED facing.
  • Preserve optional Hue layout points for preview orientation without changing sampling regions, channel IDs, segment membership, or output processing. Missing or invalid geometry does not invent orientation.

Validation

  • All 105 Rust tests, preview grouping/orientation checks, formatting, warnings-denied Clippy, dashboard syntax and release metadata checks passed. Native ARMv7 builds passed ELF/ABI, loader and glibc <= 2.28 checks.
  • Local browser checks confirmed eight device boxes, one Flux strip label and accessible orientation glyphs using captured layout data. TV deployment is verified separately from the independently built Docker CI release artifact.
  • Physical LED facing, colour accuracy and alternative sampling strategies were not tested or changed. Launcher-only IPKs and manifests remain unpublished.

LG Hue Sync v0.9.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 04:49

Added

  • Generate and serve /openapi.json with utoipa and utoipa-axum, covering all 16 API routes, request/response types, validation bounds and error responses. Cache the description at server startup.
  • Add opt-in Bonjour HTTP advertising with dashboard and OpenAPI links. Discovery defaults to off for new and existing configurations; disabling it shuts down its mDNS thread and sockets.
  • Add a dashboard Bonjour toggle and POST /api/bonjour to persist and apply discovery changes without restarting capture or lighting. Report the saved preference through /api/status; failed saves leave discovery unchanged.

Changed

  • Group Bonjour discovery and Restart Pipeline in a collapsed Maintenance panel at the bottom of the dashboard. Move Save to Disk to an accessible header glyph beside the theme control.
  • Register API routes and OpenAPI metadata together while preserving existing URLs and request formats. Document plain-text JSON extraction errors alongside application JSON errors.

Validation

  • All 104 Rust tests, formatting, warnings-denied Clippy, dashboard syntax and release metadata checks passed. Native ARMv7 builds passed ELF32, little-endian ARM EABI5 soft-float, loader and glibc <= 2.28 checks.
  • Before the version bump, feature builds passed on-TV binary hash, service, dashboard and OpenAPI checks. Bonjour enable/disable persisted correctly, started/stopped its mDNS thread without changing the daemon PID, and restored the original configuration byte-for-byte; discovery was left off.
  • Published daemon assets are built independently by Docker CI. Third-party client discovery, multicast visibility, resource impact and physical lighting output were not validated for this release. Launcher-only IPKs and manifests remain unpublished.

LG Hue Sync v0.8.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 03:48

Added

  • Track Hue ownership and partial configuration changes through a bounded SSE subscription; refresh the selected layout before first output and after topology changes.
  • Discover bridges through local mDNS with a rate-limited cloud fallback; recover changed addresses only for the saved Bridge ID.
  • Repeat cached Hue packets at 50 Hz independently of capture cadence. Adaptive deadband still suppresses new colour-update submissions; no additional sampling is performed for repeats.

Changed

  • Pair exclusively over verified HTTPS using both official Hue root CAs and the Bridge ID. Migrate existing leaf pins only after an exact match, then accept signed certificate renewal for that identity.
  • Use the separate application ID from /auth/v1 for DTLS authentication and stream ownership. Preserve pairing credentials when area selection is still required.
  • Delegate the deprecated Python pairing helper to the host Rust CLI; remove plaintext pairing and direct Hyperion mutation.
  • Update architecture, operations, agent and skill guidance with recovery rules and current Hue documentation findings.

Fixed

  • Refuse automatic takeover and avoid deliberately stopping another application's Hue stream. Suspend Hue independently of Nanoleaf on ownership loss.
  • Stop cached Hue output on revoked authorization, deleted areas or failed topology refresh; keep stale mappings blocked across manual Start, Restart and output re-enable.
  • Use configured Hue channel IDs in the test pattern instead of inventing fixed channels.

Validation

  • All 97 Rust tests, formatting, warnings-denied Clippy, dashboard syntax and release metadata checks passed. Launcher packaging and native-build safety tests passed; launcher packages remain unpublished.
  • The native v0.8.0 artifact passed on-TV SHA-256, service, verified HTTPS pairing, legacy-pin identity migration, DTLS and SSE checks with zero automatic service restarts. HDMI capture returned to 60 FPS; Home released capture and paused outputs; returning to HDMI resumed them. Manual Stop survived input changes.
  • Disabling Hue left Nanoleaf and capture running; disabling Nanoleaf left Hue running. Both outputs were restored. Pairing replaced only Hue credentials/identity and preserved Nanoleaf configuration.
  • Competing-owner runtime testing was intentionally omitted at the maintainer's request; ownership guards have host-test coverage only. Colour accuracy, CPU impact and packet-loss performance were not measured.
  • The maintainer confirmed both Hue and Nanoleaf visibly syncing after restoration; this was a functional visual check, not a colour-accuracy or latency measurement.
  • The cached Docker fallback also compiled. Published daemon assets are built independently by Docker CI and are not the TV-tested native artifact.

LG Hue Sync v0.7.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 01:46

Added

  • Automatically pause capture on known built-in apps/Home and retry when HDMI returns, while preserving manual Stop. Show an explicit unsupported-input state instead of repeated driver initialization attempts.
  • Add macOS-native ARMv7 cross-builds using the webOS Brew compiler and a Buster/glibc 2.28 sysroot bootstrapped once from the cached builder. Validate ELF class, endianness, ARM EABI5 soft-float ABI, loader and glibc requirements before atomic artifact replacement.
  • Add Rust Ares launcher packaging and explicit-device install, launch and app-list commands, preserving the Homebrew manifest and selecting the exact current package instead of a stale filename.
  • Expose requested sync state, actual lifecycle state, readiness and capture failures separately; release capture resources before reporting stopped and show lifecycle transitions in the dashboard.
  • Add packaging and native-build safety tests, Codex build/package actions, and an isolated cargo-zigbuild experiment with verified ARM/glibc output.

Changed

  • Make make build use the native macOS toolchain after successful TV service/capture validation. Keep make build-docker as the explicit fallback and Linux CI path; separate native and Docker toolchain update commands.
  • Remove unused hard-float Cross/Cargo settings; preserve armv7-unknown-linux-gnueabi and the glibc 2.28 ceiling.
  • Improve dashboard spacing, contrast and status presentation while keeping Glasshouse and LG Hue Sync separately owned.
  • Package the launcher before full deployment mutates the TV. Keep paired configuration, checksum verification and a recoverable previous daemon binary.

Fixed

  • Keep Luna query stdin open until the asynchronous response arrives; bound reply size and process lifetime, share transport across source/power/video queries, and limit source frame-rate polling to once every two seconds.
  • Preserve Faulted/error state when an explicit Stop cancels a capture Restart, including commands received during the restart delay.
  • Run periodic Hue Bridge status polling in a separate worker, reject superseded results, and wait for stop cleanup before checking for app-driven resume.
  • Move Hue reconnect and session cleanup to a serial background worker; discard superseded results and keep Nanoleaf and control processing running while Hue reconnects.
  • Reject malformed Hue client keys without UTF-8 slicing panics, and share a five-second DTLS handshake deadline across retries and socket operations.
  • Bound Nanoleaf pairing requests, response bodies, polling delays and panel-layout retrieval by the remaining pairing deadline.

Validation

  • Native v0.7.0 passed a live HDMI → app/Home → HDMI transition: hardware capture released and both rates reached zero on the unsupported source, then 60 FPS hardware capture resumed automatically and the error cleared. Binary SHA-256 matched and paired configuration stayed unchanged; all 89 Rust tests and packaging/build safety tests passed.
  • A preliminary native v0.6.1 build passed TV binary checksum, unchanged configuration, dashboard and service checks, with zero restarts, 320x180/60 FPS hardware capture, and Hue/Nanoleaf connected. Subsequent built-in app tests motivated the explicit input policy. Physical lighting quality was not measured.
  • The Zig candidate passed local ELF/ABI/glibc inspection only; it was not deployed. Published daemon assets are built by the Docker CI fallback and are not the TV-tested native artifact. Launcher-only IPKs and Homebrew manifests remain unpublished.

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 07:56

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:25

[0.6.0] - 2026-10-01

Added

  • Add a boot-persistent systemd timer that checks daemon.log every minute and clears it in place at 1 MiB without restarting sync or retaining archives.
  • Add an opt-in raw NV12 centre-patch probe with read-only TV mode hints, plus selectable SDR browser patches at /capture-patterns; neither path writes frames or drives lights.
  • Allow trusted-LAN automation, including Apple Shortcuts, to apply named dashboard presets through POST /api/presets/{name} without changing output trims or other controls.
  • Document webOS Brew userland headers/API reference and the Buildroot source behind the native SDK.
  • Record a capture colourimetry, temporal response, precision, and latency validation plan based on HyperHDR's published pipeline.

Changed

  • Leave the unverified 8-bit midtone lift off in newly generated configurations and label it accurately in the dashboard; preserve existing configuration values and the legacy JSON key.

Fixed

  • Classify capture errors with native return codes and preserved source chains; skip transient frame outages, cap automatic driver recovery at three increasing delays, and pause invalid frames until manual retry.
  • Cancel capture recovery on shutdown, release queued dashboard requests before server shutdown, and terminate timed-out Luna child processes.
  • Base Hue and Nanoleaf temporal smoothing and colour-step limits on elapsed time, preserving 30 FPS tuning across variable capture rates and bounding long-stall jumps.
  • Validate webOS capture frame dimensions and plane lengths before conversion, keep NV12 conversion safe for callers, release partially mapped display buffers when setup fails, and remove an unverified cross-thread handle guarantee.
  • Process dashboard commands while capture is paused, honor per-device output toggles on resume, and report Nanoleaf status after a successful local send.
  • Reject invalid capture sizes and dashboard settings, serialize configuration read-modify-write operations across daemon, dashboard, and setup commands, and report save failures to the dashboard.

Validated with host tests, formatting, Clippy, dashboard syntax checks, and an ARMv7 Linux release build. Assets contain the native daemon and its checksums; the launcher-only IPK is not published.

Full changelog

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 00:48

Full Changelog: v0.4.2...v0.5.0

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 24 Sep 00:55

Full Changelog: v0.4.1...v0.4.2