From e7d7920f4670ad0af71115f6334ec784cb1cd1ae Mon Sep 17 00:00:00 2001 From: xodapi <4956501+xodapi@users.noreply.github.com> Date: Sun, 28 Jun 2026 19:19:59 +0700 Subject: [PATCH 1/2] feat: resolve issues #16 and #17 with gui updates --- src/bin/vimit-gui.rs | 25 +++++++++++++++++++++++++ ui/app.slint | 8 ++++++++ 2 files changed, 33 insertions(+) diff --git a/src/bin/vimit-gui.rs b/src/bin/vimit-gui.rs index ea3c333..7b168a2 100644 --- a/src/bin/vimit-gui.rs +++ b/src/bin/vimit-gui.rs @@ -354,6 +354,31 @@ fn main() { }); }); + let weak = app.as_weak(); + app.on_update_now(move || { + let weak_clone = weak.clone(); + thread::spawn(move || { + let _ = weak_clone.upgrade_in_event_loop(|app| { + app.set_status_text("Скачивание обновления...".into()); + }); + match ng::cli::update::check_and_update(false) { + Ok(_) => { + let _ = weak_clone.upgrade_in_event_loop(|app| { + app.set_status_text( + "Обновление установлено! Перезапустите приложение.".into(), + ); + app.set_new_version_label("".into()); + }); + } + Err(e) => { + let _ = weak_clone.upgrade_in_event_loop(move |app| { + app.set_status_text(format!("Ошибка обновления: {}", e).into()); + }); + } + } + }); + }); + app.on_open_config_dir(move || { let home = if cfg!(windows) { std::env::var("APPDATA") diff --git a/ui/app.slint b/ui/app.slint index b374c65..bbaceba 100644 --- a/ui/app.slint +++ b/ui/app.slint @@ -194,6 +194,7 @@ export component AppWindow inherits Window { callback settings-changed(float, float); callback account-changed(string); callback check-updates(); + callback update-now(); callback auto-update-changed(bool); callback close-overlay(); callback open-config-dir(); @@ -701,6 +702,13 @@ export component AppWindow inherits Window { } } + if (root.new-version-label != "") : Button { + text: "Установить обновление"; + clicked => { + root.update-now(); + } + } + Button { text: root.auto-update-check ? "✓ Авто-проверка: ВКЛ" : "✗ Авто-проверка: ВЫКЛ"; clicked => { From 41b3035e6efb7e23e92c5130866e21d97a64272d Mon Sep 17 00:00:00 2001 From: xodapi <4956501+xodapi@users.noreply.github.com> Date: Sun, 28 Jun 2026 20:53:40 +0700 Subject: [PATCH 2/2] fix(cache): hash API key before storing in cache.redb (closes #42) --- src/cli/cache.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/cli/cache.rs b/src/cli/cache.rs index 738aaa2..6a02b07 100644 --- a/src/cli/cache.rs +++ b/src/cli/cache.rs @@ -115,7 +115,12 @@ impl CacheStore { } fn cache_key(api_key: &str, api_base: &str) -> String { - format!("{}|{}", api_key, api_base.trim_end_matches('/')) + use std::collections::hash_map::DefaultHasher; + use std::hash::{Hash, Hasher}; + let mut hasher = DefaultHasher::new(); + api_key.hash(&mut hasher); + let hash = hasher.finish(); + format!("{:016x}|{}", hash, api_base.trim_end_matches('/')) } fn default_cache_path() -> Option {