diff --git a/README.md b/README.md index 9590b82..abd87ce 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,12 @@ Enable **Start minimized** in Settings to keep the main Talkis window hidden on ## Latest Changes +### v0.4.10 + +- Settings can hide the floating desktop widget while keeping dictation hotkeys active. The choice survives restarts and is respected by the watchdog, tray actions and repeated launches. +- Added **Start minimized** (off by default): the main window stays hidden on the next launch, while the tray/menu bar and hotkeys remain available. Initial setup, required permission recovery and startup errors still reveal the window. +- Both new settings use compact switch rows without explanatory descriptions. Failed saves keep the previous choice; changing model settings preserves window preferences. + ### v0.4.9 - Microphone startup has a three-second budget and native dictation start/stop runs outside the interface thread, keeping Talkis responsive when an audio driver stalls after idle or sleep. Dictation and call recording retain their WebView fallback; live translation reports a startup timeout. diff --git a/README.ru.md b/README.ru.md index e67ac96..919137c 100644 --- a/README.ru.md +++ b/README.ru.md @@ -47,6 +47,12 @@ Talkis сделан для повседневной работы: IDE, чаты, ## Последние изменения +### v0.4.10 + +- В настройках можно скрыть плавающий виджет на рабочем столе, сохранив диктовку по горячим клавишам. Выбор сохраняется после перезапуска и учитывается при автоматическом восстановлении виджета, действиях из трея и повторном запуске программы. +- Добавлена опция **«Сворачивать при запуске»** (по умолчанию выключена): со следующего запуска основное окно остаётся скрытым, а значок в строке меню или трее и горячие клавиши продолжают работать. Первоначальная настройка, восстановление обязательных разрешений и ошибка запуска показывают окно. +- У обеих новых настроек оставлены компактные строки с переключателями без поясняющих описаний. При ошибке сохранения остаётся прежний выбор; изменение настроек моделей сохраняет параметры отображения окон. + ### v0.4.9 - Запуск микрофона ограничен тремя секундами, а начало и завершение нативной диктовки вынесены из потока интерфейса: зависший аудиодрайвер после простоя или сна больше не должен блокировать управление Talkis. Для диктовки и созвонов сохранён резервный способ записи через WebView; синхронный перевод сообщает о превышении времени запуска. diff --git a/package.json b/package.json index 0cf4150..f4c48ba 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "talkis", "private": true, - "version": "0.4.9", + "version": "0.4.10", "license": "AGPL-3.0-or-later", "type": "module", "packageManager": "bun@1.2.13", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index abf5b1a..ddaedb9 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -5725,7 +5725,7 @@ dependencies = [ [[package]] name = "talkis" -version = "0.4.9" +version = "0.4.10" dependencies = [ "base64 0.22.1", "block2 0.6.2", @@ -5774,7 +5774,7 @@ dependencies = [ [[package]] name = "talkis-llm" -version = "0.4.9" +version = "0.4.10" dependencies = [ "llama-cpp-2", "serde_json", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index b74ef8f..c0e644f 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "talkis" -version = "0.4.9" +version = "0.4.10" description = "Talkis - Voice to Text Desktop Widget" authors = ["trixter"] license = "AGPL-3.0-or-later" @@ -13,7 +13,7 @@ default-members = ["."] resolver = "2" [workspace.package] -version = "0.4.9" +version = "0.4.10" edition = "2021" license = "AGPL-3.0-or-later" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index f829813..88d6b24 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -25,6 +25,7 @@ }, "dialog:default", "store:allow-load", + "store:allow-reload", "store:allow-get", "store:allow-set", "store:allow-save", diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index f56dd9c..e09dabb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -2,7 +2,7 @@ "$schema": "https://schema.tauri.app/config/2", "productName": "Talkis", "mainBinaryName": "Talkis", - "version": "0.4.9", + "version": "0.4.10", "identifier": "com.trixter.talkis", "build": { "beforeDevCommand": "bun scripts/run-vite.mjs --talkis-check-dev-port && bun run dev", diff --git a/src/lib/i18n/dict/settingsGeneral.ts b/src/lib/i18n/dict/settingsGeneral.ts index c9b78eb..26d95b9 100644 --- a/src/lib/i18n/dict/settingsGeneral.ts +++ b/src/lib/i18n/dict/settingsGeneral.ts @@ -73,10 +73,6 @@ export const settingsGeneral = { ru: "Показывать виджет на рабочем столе", en: "Show the desktop widget", }, - "settings.widgetVisibility.desc": { - ru: "Когда виджет скрыт, Talkis продолжает работать по горячим клавишам. Вернуть виджет можно здесь; настройки доступны через значок Talkis в строке меню или трее.", - en: "With the widget hidden, Talkis keeps working via hotkeys. Restore it here; settings remain available from the Talkis menu bar or tray icon.", - }, "settings.widgetVisibility.on": { ru: "Показан", en: "Shown" }, "settings.widgetVisibility.off": { ru: "Скрыт", en: "Hidden" }, "settings.widgetVisibility.error": { @@ -109,10 +105,6 @@ export const settingsGeneral = { ru: "Сворачивать при запуске", en: "Start minimized", }, - "settings.startMinimized.desc": { - ru: "Со следующего запуска окно Talkis будет скрыто. Открыть его можно через значок в строке меню или трее. Показ виджета настраивается отдельно.", - en: "On the next launch, the Talkis window will stay hidden. Open it from the menu bar or tray icon. Widget visibility is configured separately.", - }, "settings.startMinimized.on": { ru: "Включено", en: "On" }, "settings.startMinimized.off": { ru: "Выключено", en: "Off" }, "settings.startMinimized.error": { diff --git a/src/windows/settings/tabs/SettingsTab.tsx b/src/windows/settings/tabs/SettingsTab.tsx index de26324..c30533f 100644 --- a/src/windows/settings/tabs/SettingsTab.tsx +++ b/src/windows/settings/tabs/SettingsTab.tsx @@ -372,6 +372,17 @@ export function SettingsTab(): ReactElement | null { "SETTINGS", `Failed to save startup setting: ${String(error)}`, ); + + try { + const latest = await getSettings({ reload: true }); + settingsRef.current = latest; + setSettings(latest); + } catch (reloadError) { + void logError( + "SETTINGS", + `Failed to reload startup setting: ${String(reloadError)}`, + ); + } } finally { startMinimizedPendingRef.current = false; setStartMinimizedPending(false); @@ -1146,17 +1157,6 @@ export function SettingsTab(): ReactElement | null { > {t("settings.widgetVisibility.title")} -