Skip to content

Releases: mglourido/PYREN

V0.2.0

Choose a tag to compare

@mglourido mglourido released this 18 Sep 04:17

0.2.0


Frontend

UI-exposed checks have been reorganized, more general checks added, and a fan RPM min/max calibration check added (the same calibration performed when installing the driver; this lets you know when the driver needs recalibrating)

Minor translation fixes

Minor UI/UX changes

Vital data refresh (CPU, GPU, RAM, disks, network, processes) now fully pauses when you're not looking at a screen that displays it (Home, Vital Data, Performance, Advanced, Network). Previously it kept polling the daemon every 2s regardless of screen (Settings, Lighting, Cleanup...), which on laptops with a dedicated GPU kept the Nvidia driver needlessly awake in the background. Refresh resumes instantly when returning to one of those screens.


Installer

Improved installer; the gtk4-layer-shell package is now handled by the installer in case the user doesn't have it

Fixed a possible bug at the end of installation where the generated .desktop file could fail to link correctly to the app's bin


GitHub

Improved the push GitHub workflow: more checks, code formatting, fixed outdated tests


Hardware safety

Added guards on fans, performance profiles, and lighting so nothing can run that could damage the hardware.

Fans: thermal safety checker (enabled by default): if it's hot and RPM isn't rising, switches to automatic mode; if that still doesn't raise it, switches to maximum until it cools down, then restores your previous mode. Maximum forced above 90°C. If the temperature sensor fails, fans switch to maximum or automatic depending on a new setting (maximum by default). When the daemon closes (or crashes), fans return to automatic control. Calibration and speed checks abort above 60°C. Curve validation (can't decrease speed as temperature rises). Stalled fan detection.

Performance profiles: power and turbo limits are not written unless the user has changed them. Power limits are validated for consistency before being applied. Detects if the firmware locks the limits (RAPL) and if another power manager is active (TLP, tuned...) to avoid conflicting with it. OS mode switching is disabled by default.

Lighting: in four-zone mode, writes only happen if the firmware's response matches the expected shape (option to allow truncated responses, enabled by default for compatibility). Only one process can write to the lighting hardware at a time.

Bugs

Fixed a thermal safety bug that caused the fan's automatic controller to trigger unexpectedly at high temperatures (3 simultaneous bugs fixed)

Debugging

Added a complete logging system for PYREN (tauri, daemons...). Logs are split between .cache/pyren and /var/cache/pyren/

Tests

Added tests for the pyren/app Tauri app

Full testing of function behavior (setting-by-setting testing still pending, not all are tested)

V0.1.3: fix(rgb): stop fabricating fourZone's fourth zone

Choose a tag to compare

@mglourido mglourido released this 12 Sep 16:59

V 0.1.3

This version introduces major improvements and adjustments for manual control of performance profiles.

Better support for performance profile controllers (Profiles daemon, tlp, auto-cpufreq, etc.).

Improved lighting section: configuration saving, effects mode (adds wave animations, etc.), new default palettes, new settings, and
lighting controller (daemon) improvements.

Reorganization of settings due to the number of new options.

RPMs for all fans can now be viewed, not just the main one (CPU).

UI/UX and responsiveness improvements.

Additional UI themes added.

Developer tool improvements.


The RGB daemon no longer shuts down if the user disables the automatic profile control daemon.

The RGB daemon now saves and restores the last RGB state; previously, a bug would leave the keyboard without RGB lighting until

it was reconfigured in Pyren.

The daemon now corrects RGB control bytes.

V 0.1.2

Choose a tag to compare

@mglourido mglourido released this 11 Sep 01:14

Fixes for incompatibilities and erroneous behaviors.

UI cleanup and text updates.

Added UI themes.

Permission revocation.

Widget improvements.

...

V 0.1.1

Choose a tag to compare

@mglourido mglourido released this 10 Sep 20:00
V0.1.1

new alpha

V0.1.0

Choose a tag to compare

@mglourido mglourido released this 11 Sep 01:09

First public release. Everything below is built, wired end to end
(daemon ↔ app ↔ pyren-ctl) and confirmed against the development
laptop; TEST.md is the feature-by-feature record of what has actually
been exercised on hardware and what has not.

Added

  • Daemon (pyren-daemon): a privileged Rust host process that loads
    the hardware modules and serves them over a 0660, pyren-group Unix
    socket — a local user outside the group cannot reach a root daemon.
    Installs its own systemd unit with pyren-daemon --install-service.
  • Desktop app (pyren): the full OMEN Gaming Hub-style surface —
    dashboard, system vitals (basic + advanced), performance control, GPU
    overclocking, fan cleaning, lighting, graphics switcher, network
    booster, key mapping, settings, drivers and help. Bilingual (en/es),
    settings persisted to disk, live progress overlay for driver actions,
    simulated readings when no daemon is reachable.
  • On-screen display (pyren-osd): a GTK4 layer-shell widget the
    performance key puts on screen; started by the app, or as a user
    service.
  • pyren-ctl: shell client for a running daemon — status,
    power set|tune|auto|os-profile, fan set|curve|diagnose|calibrate,
    rgb, gpu, network, keymap, oc, --json on anything.
  • pyren-check: standalone compatibility probe (no daemon, socket or
    GUI), with a dependency-free shell twin in tools/pyren-check.sh.
  • Monitoring: CPU per core, memory, hwmon temperatures and fans,
    disks, network, GPU (NVIDIA via nvidia-smi, DRM sysfs), top
    processes. Generic Linux — works on any machine.
  • Machine identification and a compatibility verdict derived from
    what the hardware modules actually accept, never from a board list.
  • Power profiles: Eco / Balanced / Performance / Unlimited as the
    firmware profile and the OS profile (via power-profiles-daemon) as
    separate switches, plus a package power envelope that ships untouched
    until someone measures their machine. Auto-switch supervisor for
    battery / load / heat.
  • Fan control: auto / max / manual / curve, a curve followed
    on the daemon's thread with hysteresis, calibration, and a self-test
    with three front ends kept in step by a parity test. The reverse-spin
    fan cleaner is ported (never yet run against firmware that has it).
  • Driver installer: vendors the patched hp-wmi tree, works out what
    an install needs (board id, driver table, measured fan ceiling), and
    drives DKMS or the distribution's kernel hook — inspect → plan → apply.
  • Lighting: the 4-zone ACPI lightbar, both dialects (fourZone,
    kernelZones), auto-picked or pinned.
  • GPU switching: gpu_mux_mode (hybrid ↔ discrete), written and
    read back.
  • GPU overclocking: core and memory offsets and a clock lock through
    NVML (no X, no Coolbits), behind a consent gate and a
    revert-on-lapse timer; reverts on a reported GPU fault.
  • Network booster: system-wide cake / fq_codel on the default
    route.
  • Key mapping: an evdev-level remapper over /dev/uinput (built and
    wired, not yet run against real hardware).
  • Packaging: tools/release.sh builds an optimized, self-contained
    pyren-<version>-x86_64-linux.tar.gz; install/install.sh installs it
    system-wide, sets up both systemd units and the pyren group. See
    install/INSTALL.md.

Known limitations

See dev/TODO.md and TEST.md. In brief: key mapping and the GPU MUX
reboot swap have not been watched on hardware; the fan cleaner and the
per-key USB RGB path are unproven / unported; no power profile raises a
limit above what the firmware shipped.