Skip to content
Release history

Changelog

7 releases shipped — every feature, fix, and security improvement on the record. Latest: v0.6.0 on 2026-10-22.

Showing 7 releases matching any change

  1. v0.6.0

    2026-10-22

    Latest7 changes
    • addedKeyboard backlight on the m16/m18 family. Lighting there turned out to be two USB devices and Cryo only drove one: the AW-ELC controller (187c:0551 on the m18 R2) runs the rear rings, the lid logo and the power button, while the per-key keyboard is a separate Darfon HID device (0d62:aab1, "DELL Technologies Keyboard"). Cryo now talks to the keyboard over hidraw with 64-byte feature reports (the protocol alienfx-tools calls API V5): color, brightness and the firmware's own breathe, wave and night-rider effects.
    • addedQuantum, Spectrum and Rainbow animate the keys for real. The keyboard firmware has no smooth multi-color mode, so cryod streams per-key frames at 8 fps (34 ms a frame on the m18 R2): Quantum morphs cyan to violet in step with the chassis, Spectrum cycles the rainbow on every key, and Rainbow spreads the rainbow across the key columns and scrolls it.
    • changedThe power button follows the effect. It is zone 4 on the controller and runs through the power-state animation slots (rings and lid in the user animation, the button in all four active slots, dark in the two sleep slots), so it is smooth on AC and on battery and the chassis goes dark in sleep. This replaces the stock blue-on-AC button color, which lives in the controller until AWCC on Windows reprograms it.
    • addedcryoctl doctor lists the per-key keyboard's hidraw node and report size, and its verdict tells "no lighting at all" from "chassis lighting missing".
    • fixedClicking a color swatch in the desktop app applies it with the current effect straight away, and the keyboard preview keeps one size instead of stretching with the window.
    • addedThe Alienware 16X Aurora AC16251 (Core Ultra 9 275HX + RTX 5060 Laptop) is the first community SUPPORTED report (#21), with the reporter's fan-latency data point in docs/COMPATIBILITY.md.
    • changedNo em dashes anywhere in copy or code. Dependency floor raised: PySide6 6.12.
  2. v0.5.0

    2026-10-13

    6 changes
    • changedA visual pass on the desktop app: CPU and GPU temperatures are 270° ring gauges that run cyan → violet → amber → red with a session-peak tick, fan icons spin with the real RPM, the active mode, gauges and logo glow, and the GAMING and GUARD badges pulse. All power modes sit on one compact row, and the app now uses Outfit and JetBrains Mono with fixed-width digits so live numbers stop jittering. Animations run only while the window is focused; open but in the background it uses less CPU than 0.4.0 did.
    • addedA 4-zone keyboard in the Lighting panel previews the selected effect in the chosen color and brightness before the keyboard shows it.
    • addedVRAM session peak and share of the card on cryoctl status and watch. cryoctl status shows the running daemon's version and flags one that hasn't been restarted onto the installed code; cryoctl --version prints the CLI's.
    • fixedcryoctl reapply no longer aborts on limited-mode machines before re-initialising NVML and the CPU cap; cryoctl cap off lifts the cap to 100% instead of leaving the last value in force until reboot; a failing profile write on an AC/battery switch no longer skips the Thermal Guard; cryoctl exits 1 when the daemon rejects a command; status no longer says "turbo off" on machines without turbo control.
    • fixedOpening the curve editor no longer pushes the Fan control panel past the window edge, and the live-temperature label on the curve chart no longer covers the guard label.
    • changedThe installer finds uv in ~/.cargo/bin too, stops with a clear message when it is missing, and warns when ~/.local/bin isn't on PATH. Dependency floor raised: nvidia-ml-py 13.615.71.
  3. v0.4.0

    2026-09-26

    5 changes
    • addedCPU power cap — a per-power-mode ceiling on the CPU's performance state (intel_pstate max_perf_pct), written on every mode switch and re-asserted after resume. cryoctl cap 90, cryoctl cap gmode 95, cryoctl cap off, a GUI card with a per-mode slider, and a cap readout in cryoctl status. Measured on the m18 R2 in-game: 90% ≈ 5.2 GHz took the CPU from 56 W and a 96 °C peak to 44 W and 87 °C while the GPU got more headroom.
    • addedFan curve editor — CPU and GPU curves drawn as charts with the live temperature marked, per-point editing, add/remove, revert/apply, plus hysteresis, minimum step and Thermal Guard trip/release thresholds, all inside the GUI's Fan control panel. From the shell: cryoctl curve cpu 45:0 60:15 70:35 80:60 95:100, cryoctl guard cpu 90. Every change is validated by the daemon (2–8 rising points, bounded thresholds) before it touches sysfs or the config file.
    • addedLimited mode — a machine whose alienware-wmi driver exposes no hwmon and/or no platform profiles no longer stops cryod: fans, curves, the guard and power modes are out, but GPU telemetry, game detection, the turbo toggle, the CPU cap and lighting still run, and every client hides the rest with a notice.
    • addedcryoctl doctor ends with a SUPPORTED / PARTIAL / LIMITED / UNSUPPORTED verdict with the reasons, reports the CPU cap control, and exits 2 when unsupported. On a machine with nothing at all to drive, cryod logs one plain-language reason and exits 78 without a restart loop.
    • changed/etc/cryo/config.json is rewritten only when you change a setting from the GUI or cryoctl curve/guard/cap — validated first, and keys you never touched keep tracking new defaults. Tests 37 → 67.
  4. v0.3.1

    2026-09-16

    2 changes
    • fixedRe-running the installer now actually restarts cryod, so pulling and re-running install.sh — the documented update path — puts the new code live instead of leaving the old daemon running.
    • changedDependency floors raised: PySide6 6.11.2, pyusb 1.3.1, nvidia-ml-py 13.610.43 (CI on setup-uv 10.1).
  5. v0.3.0

    2026-09-15

    9 changes
    • addeddGPU power draw, graphics clock, VRAM used/total, and a top-5 per-process VRAM breakdown on every tick — in a new GUI VRAM panel (sparkline, session peak, per-process rows), the tray tooltip, and the CLI.
    • addedcryoctl status prints a human summary (--json for the raw frame); cryoctl watch --log FILE.csv appends a CSV stream for long leak-hunt sessions.
    • changedProcess names come from /proc argv0 with NVML as fallback, so Chromium-style command lines and Wine/Proton Windows paths reduce to a clean binary name; game detection uses the same list, and one NVML pass per tick feeds both.
    • changed/etc/cryo/config.json is overrides-only and the daemon never rewrites it. Runtime state (last lighting, the curves-off latch a manual boost sets) lives in /var/lib/cryo/state.json; flipping the curves switch clears the latch.
    • fixedA broken config or state file logs and falls back to defaults instead of keeping the daemon — and the Thermal Guard — down.
    • fixedNVML is retried every 30 s while unavailable, so starting before the NVIDIA driver loads no longer disables game detection for the session; the lighting controller is reopened once on a USB error.
    • addedcryoctl reapply (and the reapply socket op) re-asserts lighting, platform profile and NVML; cryod-resume.service runs it after suspend and hibernate.
    • fixedTelemetry subscribers that are closing or stop reading are dropped instead of buffered forever. The installer restarts the daemon on re-run (the update path) and refuses to run without a sudo caller.
    • addedpytest suite (37 tests: engine, game sense, config/state, server) wired into CI.