From c9f30e09d73b251e06e7d10d868ebc4de1db7572 Mon Sep 17 00:00:00 2001 From: Tarasov Aleksandr <55220741+arabianq@users.noreply.github.com> Date: Thu, 30 Jul 2026 10:30:31 +0300 Subject: [PATCH] feat(lib, daemon, gui): daemon version in fullstate and gui (#180) * add daemon_version field to the FullState * add daemon version to the pwsp-gui settings page --- pwsp-gui/locales/app.toml | 11 +++++++++++ pwsp-gui/src/gui/views/settings.rs | 14 ++++++++++---- pwsp-lib/src/types/audio_player.rs | 1 + pwsp-lib/src/types/commands.rs | 1 + pwsp-lib/src/types/gui.rs | 1 + pwsp-lib/src/utils/gui.rs | 1 + 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/pwsp-gui/locales/app.toml b/pwsp-gui/locales/app.toml index e11c2fb..027a395 100644 --- a/pwsp-gui/locales/app.toml +++ b/pwsp-gui/locales/app.toml @@ -283,6 +283,17 @@ kz = "GUI нұсқасы: %{version}" he = "גרסת ממשק משתמש: %{version}" pt-BR = "Versão da GUI: %{version}" +[gui.settings.daemon_version] +en = "Daemon version: %{version}" +ru = "Версия демона: %{version}" +es = "Versión del demonio: %{version}" +fr = "Version du démon: %{version}" +zh = "守护进程版本: %{version}" +ar = "إصدار démon: %{version}" +kz = "Демон нұсқасы: %{version}" +he = "גרסת השרת: %{version}" +pt-BR = "Versão do daemon: %{version}" + [gui.settings.theme.label] en = "Color Scheme" ru = "Цветовая схема" diff --git a/pwsp-gui/src/gui/views/settings.rs b/pwsp-gui/src/gui/views/settings.rs index 600df40..f1f144d 100644 --- a/pwsp-gui/src/gui/views/settings.rs +++ b/pwsp-gui/src/gui/views/settings.rs @@ -120,10 +120,16 @@ impl SoundpadGui { // -------------------------------- ui.with_layout(Layout::bottom_up(Align::Min), |ui| { - ui.label(t!( - "gui.settings.version", - version = env!("CARGO_PKG_VERSION") - )); + ui.horizontal(|ui| { + ui.label(t!( + "gui.settings.version", + version = env!("CARGO_PKG_VERSION") + )); + ui.label(t!( + "gui.settings.daemon_version", + version = self.audio_player_state.daemon_version + )) + }); }); }); } diff --git a/pwsp-lib/src/types/audio_player.rs b/pwsp-lib/src/types/audio_player.rs index 36c9f91..9e9ad71 100644 --- a/pwsp-lib/src/types/audio_player.rs +++ b/pwsp-lib/src/types/audio_player.rs @@ -59,6 +59,7 @@ pub struct FullState { pub all_inputs: HashMap, pub current_output: String, pub all_outputs: HashMap, + pub daemon_version: String, } /// Which of the two independent output paths a volume applies to. diff --git a/pwsp-lib/src/types/commands.rs b/pwsp-lib/src/types/commands.rs index 3818a4c..f7c5adc 100644 --- a/pwsp-lib/src/types/commands.rs +++ b/pwsp-lib/src/types/commands.rs @@ -684,6 +684,7 @@ impl Executable for GetFullStateCommand { all_inputs, current_output: audio_player.output_device_name.clone().unwrap_or_default(), all_outputs, + daemon_version: env!("CARGO_PKG_VERSION").into(), }; match serde_json::to_string(&full_state) { diff --git a/pwsp-lib/src/types/gui.rs b/pwsp-lib/src/types/gui.rs index 25c827b..8ea8fdd 100644 --- a/pwsp-lib/src/types/gui.rs +++ b/pwsp-lib/src/types/gui.rs @@ -130,6 +130,7 @@ pub struct AudioPlayerState { pub all_outputs_sorted: Vec<(String, String)>, pub is_daemon_running: bool, + pub daemon_version: String, pub hotkey_config: Option, } diff --git a/pwsp-lib/src/utils/gui.rs b/pwsp-lib/src/utils/gui.rs index 4919a8f..e510a0e 100644 --- a/pwsp-lib/src/utils/gui.rs +++ b/pwsp-lib/src/utils/gui.rs @@ -148,6 +148,7 @@ pub fn start_app_state_thread(audio_player_state_shared: Arc