Commit Graph
1176 Commits
Author SHA1 Message Date
Ilya Zlobintsev 4124989919 chore: prepare for new release 2026-06-25 23:10:23 +03:00
Roman Makarov 45f962b56c fix: nvidia displayport2 bandwidth calculation (#1090)
* fix: nvidia displayport2 bandwidth calculation fix

* move vendor specific heuristics to relevant controllers

* handle case where linkBW and dp2LinkBW are 0

* Revert "handle case where linkBW and dp2LinkBW are 0"

This reverts commit 7c805f6ebf.
2026-06-25 22:50:20 +03:00
Roman MakarovandIlya Zlobintsev 36e273fc90 feat: de-couple nvidia target temp from amd pmfw target temp (#1086)
* migrate schema/config

* gui: de-couple nvidia and amd target temp

* de-couple reset

* fix tests

* feat: rework target temperature setting

* chore: revert unnecessary rename

* chore: avoid adding new option to SetFanControl call

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-06-24 22:43:27 +03:00
Ilya Zlobintsev 1e9ed8b81f fix: raise main window on errors 2026-06-24 16:25:34 +03:00
Roman MakarovandIlya Zlobintsev b5087f29c2 fix: derive V/F curve bounds from offset limits (#1083)
* fix: use offset limits for V/F curve range

* small cleanup

* use dymamic y_sec range

* chore: add clarifying comment

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-06-24 15:56:09 +03:00
Ilya Zlobintsev 6260ae670d feat: add option to flatten VF curve selection (#1084) 2026-06-24 10:40:47 +03:00
Ilya Zlobintsev a486fb88bb chore: supress clippy warning 2026-06-23 12:10:03 +03:00
Ilya Zlobintsev 8b5523db4e feat: QOL for displays info (#1085)
* feat: show message when no displays are detected

* feat: avoid showing 0 when dp info cannot be read
2026-06-23 12:08:44 +03:00
Ilya Zlobintsev 1fe2f52fb2 feat: handle VF curve without vf_tuple_base (Turing) (#1066)
* feat: handle VF curve without vf_tuple_base (Turing) (WIP)

* feat: handle both paths

* fix: use saved base VF curve instead of calculating from offsets when base is unsupported

* chore: force reset curve before saving it as base
2026-06-23 11:24:35 +03:00
Ilya Zlobintsev 0052c47ce3 fix: automatically clamp power cap to the allowed range on AMD (#1080) 2026-06-22 17:53:58 +03:00
Ilya Zlobintsev 14c0973823 fix: raise main window for apply confirmation (#1078) 2026-06-21 18:47:16 +03:00
Ilya Zlobintsev a8bf6cba04 fix: libdisplay-info dependency on debian-based systems (#1077) 2026-06-21 18:14:10 +03:00
Ilya Zlobintsev e18ad6e5c9 fix: make UI tolerate power cap being reported as 0 (#1072) 2026-06-20 22:38:11 +03:00
Ilya Zlobintsev d4c2025c99 fix: use host PATH variable when enabling AMD OD from inside flatpak (#1070) 2026-06-20 22:00:43 +03:00
Ilya Zlobintsev e2caa24ca8 feat: add displays info (#1052)
* test

* feat: dp info on amd

* chore: add other display types

* feat: use libdisplay-info, add screen size

* feat: add GUI

* feat: WIP nvidia

* feat: reuse display handle

* chore: clippy fixes

* chore: cleanup

* chore: make display-info an optional feature, add build dependency

* fix: ci

* fix ui imports

* fix: add new dependency to flatpak

* fix: add hwdata flatpak module
2026-06-19 22:22:03 +03:00
vepvlo 6c4e27d1d8 fix: correct nvidia fan curve pwm to percent conversion (#1055)
The curve control loop converted PWM (0-255) to the percentage NVML
expects with `/ 2.5`, mapping a 255 PWM to 102% - outside the valid
0-100 range. A curve top point of 1.0 was therefore rejected with
INVALID_ARGUMENT, after which the daemon disabled fan control for the
GPU. Static mode was unaffected because it computes the percentage
directly as `static_speed * 100`.

The divisor should be 2.55 - the inverse of the `* 2.55` percent-to-pwm
conversion already used in this file (255 / 2.55 = 100).
2026-06-08 07:15:49 +02:00
Roman Makarov 4560297377 refactor: improve gui folder structure (#1047)
* refactor: move reusable components

* move css

* refactor: move GUI modules

* use features/ and refactor pages structure

* make pwfw private again

* rollback "features"

* clean up
2026-06-06 17:44:21 +03:00
Ilya Zlobintsev efb488ceaa chore: use tokio local runtime instead of LocalSet (#1050) 2026-05-30 15:58:30 +03:00
Christopher SnowhillandIlya Zlobintsev 9391747869 chore: add another GIGABYTE 9070 XT to device_ids.json (#1049)
* Add new GPU model to device_ids.json

Add new GPU model 'Gigabyte Gaming OC ICE RX 9070 XT' to device IDs.

* fix: use existing section

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-05-30 15:14:30 +03:00
Nicolas OchsnerandIlya Zlobintsev c70ef77607 feat: add range selection feature for VF curve editor (#1032)
* Add range selection for vf curve editor

* Add shaded area and modified cursor

* Disable moving selection endpoint when editing is disabled

* Check if any points are included before setting

* Remove selection when editing is disabled

* chore: unselect vf curve when disabling editing faster

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-05-29 23:59:59 +03:00
Ilya Zlobintsev 5972c098c0 fix: gracefully handle missing get_device_api_info in daemon 2026-05-28 09:31:01 +03:00
Ilya Zlobintsev b017b9ee20 fix: gracefully handle missing get_device_api_info in daemon 2026-05-28 09:30:26 +03:00
Ilya Zlobintsev 8864b6284b perf: fetch Vulkan/OpenCL info asynchronously after startup (#1046) 2026-05-28 09:14:47 +03:00
Ilya Zlobintsev 8d2536da65 chore: bump libdrm-amdgpu 2026-05-28 09:11:27 +03:00
Ilya Zlobintsev e5c5822f3b feat: use banner instead of dialog to signal daemon reconnection (#1044) 2026-05-26 22:16:19 +03:00
Ilya Zlobintsev 60e81fdb30 refactor: use helper methods for component launch (#1041) 2026-05-25 23:13:13 +03:00
Ilya Zlobintsev b3b007e2da perf: avoid unnecessary ui config rewrite on startup (#1040) 2026-05-25 22:51:13 +03:00
Ilya Zlobintsev ddfadbb048 fix: wrap flatpak service startup with bash (#1039) 2026-05-25 10:21:16 +03:00
Ilya Zlobintsev e60b162e3f chore: make clippy warnings fail CI, fix them (#1038)
* chore: make clippy warnings fail CI, fix them

* chore: pin docker cache action
2026-05-24 21:25:23 +03:00
Ilya Zlobintsev 8d23a31fff chore: move gpu test data to a shared directory (#1037) 2026-05-24 19:27:26 +03:00
Roman Makarov 35f548bc25 feat: support amd deep sleep state (#1035)
* upd deps

* migrate to PowerLevelId

* update snapshot

* cleanup

* fix fmt
2026-05-24 00:24:12 +03:00
Roman Makarov 877f550d37 feat: add custom loader (#1031)
* feat: add custom loader

* remove min_init duration for loader

* slowdown animation
2026-05-22 21:55:18 +03:00
Ilya Zlobintsev df7c61e4cd Revert "WIP UI snapshot tests"
This reverts commit 3027d72bd5.
2026-05-22 21:47:50 +03:00
Ilya Zlobintsev 3027d72bd5 WIP UI snapshot tests 2026-05-22 21:47:42 +03:00
Ilya Zlobintsev 7548f1d032 fix: missing fan curve options on nvidia (#1034) 2026-05-22 19:20:28 +03:00
Gabriele MuscoandGabriele Musco 33d7941aef feat: use revealer for graphs window edit mode toolbar (#1029)
Co-authored-by: Gabriele Musco <gabmus@disroot.org>
2026-05-20 09:56:02 +03:00
Gabriele MuscoandGabriele Musco 07b080b803 feat: rework app menu using actions; add keyboard shortcuts for preferences and quit (#1028)
Co-authored-by: Gabriele Musco <gabmus@disroot.org>
2026-05-20 09:52:49 +03:00
Roman MakarovandIlya Zlobintsev a36039ff98 fix: fix regression with dirty init state (#1027)
* fix: prevent SettingsChanged event during fan_curve_frame init

* use blocking instead

* chore: slightly nicer workaround

---------

Co-authored-by: Ilya Zlobintsev <ilya.zl@protonmail.com>
2026-05-19 21:44:49 +03:00
Arimil 76d2ea6008 chore: add Gigabyte RTX 4070 Ti Super WindForce Max OC to device ids (#1026) 2026-05-18 21:00:04 +03:00
Roman Makarov 05094b12fe perf: optimize gui bootstrap (#1023)
* feat: optimize gui bootstrap

* prefer dedicated gpu

* refactor profiles init

* upd

* make loader bigger

* fix imports
2026-05-15 23:20:41 +03:00
Roman Makarov 965f9ced2d feat: remember window size (#1022) 2026-05-14 22:09:32 +03:00
e-tho dc0af6d1ff feat: add hold/release cookie mechanism for profile state management (#995)
* feat: add hold/release cookie mechanism for profile state management

Clients that need to temporarily activate a profile had no safe
way to restore the previous state on cleanup, and concurrent clients
would silently overwrite each other's profile choice.

Introduce HoldProfile/ReleaseProfile commands modelled after
power-profiles-daemon's HoldProfile/ReleaseProfile API. Acquiring a
hold activates the requested profile and returns an opaque cookie; the
previous state is saved automatically. Releasing the cookie restores
it. Multiple concurrent holds are supported with last-write-wins
semantics — releasing the active hold falls back to the next most
recent one, and releasing the last hold restores the original state.
If the client connection drops without releasing, the hold is released
automatically.

* fix: extract type aliases for profile hold fields

* refactor: remove requester field from HoldProfile request

* refactor: improve hold lifecycle signalling
2026-05-14 10:09:29 +03:00
Ilya Zlobintsev 4b050d46e5 chore: update vulkan schema to 1.4.351 2026-05-14 10:03:08 +03:00
Ilya Zlobintsev 34bdd1919b fix: bump flatpak sources 2026-05-14 00:39:18 +03:00
Ilya Zlobintsev bc4770bbe1 fix: bump amdgpu-sysfs with deep sleep pstate handling (#1021) 2026-05-14 00:04:45 +03:00
Roman Makarov 79f9532d72 chore: improve p-state reads logs (#1019)
* chore: improve p-state reads logs

* add more logs

* fmt

* use inspects
2026-05-12 20:35:55 +03:00
Ilya Zlobintsev 84ea62f8df fix: avoid leaking amdgpu device descriptors on reload (#1020) 2026-05-12 20:13:20 +03:00
Ilya Zlobintsev eee2b3a41f fix: bump libdrm_amdgpu_sys to 0.8.14 (#1018) 2026-05-12 19:11:37 +03:00
Ilya Zlobintsev 756953f62a doc: mention nvidia VF curve in README 2026-05-11 00:07:56 +03:00
Tunahan Yardımcı f31d862060 chore: add Turkish translations (#1011) 2026-05-09 18:19:09 +03:00