mirror of
https://github.com/SerTimBerrners-Lee/talkis.git
synced 2026-10-02 20:29:19 +00:00
release: prepare v0.4.10 window settings
This commit is contained in:
parent
d3ccff0a6a
commit
048f9d2096
9 changed files with 31 additions and 39 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -47,6 +47,12 @@ Talkis сделан для повседневной работы: IDE, чаты,
|
|||
|
||||
## Последние изменения
|
||||
|
||||
### v0.4.10
|
||||
|
||||
- В настройках можно скрыть плавающий виджет на рабочем столе, сохранив диктовку по горячим клавишам. Выбор сохраняется после перезапуска и учитывается при автоматическом восстановлении виджета, действиях из трея и повторном запуске программы.
|
||||
- Добавлена опция **«Сворачивать при запуске»** (по умолчанию выключена): со следующего запуска основное окно остаётся скрытым, а значок в строке меню или трее и горячие клавиши продолжают работать. Первоначальная настройка, восстановление обязательных разрешений и ошибка запуска показывают окно.
|
||||
- У обеих новых настроек оставлены компактные строки с переключателями без поясняющих описаний. При ошибке сохранения остаётся прежний выбор; изменение настроек моделей сохраняет параметры отображения окон.
|
||||
|
||||
### v0.4.9
|
||||
|
||||
- Запуск микрофона ограничен тремя секундами, а начало и завершение нативной диктовки вынесены из потока интерфейса: зависший аудиодрайвер после простоя или сна больше не должен блокировать управление Talkis. Для диктовки и созвонов сохранён резервный способ записи через WebView; синхронный перевод сообщает о превышении времени запуска.
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
4
src-tauri/Cargo.lock
generated
4
src-tauri/Cargo.lock
generated
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
},
|
||||
"dialog:default",
|
||||
"store:allow-load",
|
||||
"store:allow-reload",
|
||||
"store:allow-get",
|
||||
"store:allow-set",
|
||||
"store:allow-save",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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": {
|
||||
|
|
|
|||
|
|
@ -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")}
|
||||
</div>
|
||||
<div
|
||||
id="widget-visibility-description"
|
||||
style={{
|
||||
fontSize: 12,
|
||||
color: "var(--text-low)",
|
||||
lineHeight: 1.5,
|
||||
marginTop: 4,
|
||||
}}
|
||||
>
|
||||
{t("settings.widgetVisibility.desc")}
|
||||
</div>
|
||||
</div>
|
||||
<SettingsToggleControl
|
||||
enabled={settings.widgetVisible}
|
||||
|
|
@ -1167,7 +1167,6 @@ export function SettingsTab(): ReactElement | null {
|
|||
: "settings.widgetVisibility.off",
|
||||
)}
|
||||
ariaLabel={t("settings.widgetVisibility.title")}
|
||||
describedBy="widget-visibility-description"
|
||||
onToggle={() => {
|
||||
void toggleWidgetVisibility();
|
||||
}}
|
||||
|
|
@ -1306,17 +1305,6 @@ export function SettingsTab(): ReactElement | null {
|
|||
>
|
||||
{t("settings.startMinimized.title")}
|
||||
</div>
|
||||
<div
|
||||
id="start-minimized-description"
|
||||
style={{
|
||||
marginTop: 4,
|
||||
color: "var(--text-low)",
|
||||
fontSize: 11,
|
||||
lineHeight: 1.35,
|
||||
}}
|
||||
>
|
||||
{t("settings.startMinimized.desc")}
|
||||
</div>
|
||||
</div>
|
||||
<SettingsToggleControl
|
||||
enabled={settings.startMinimized}
|
||||
|
|
@ -1327,14 +1315,13 @@ export function SettingsTab(): ReactElement | null {
|
|||
: "settings.startMinimized.off",
|
||||
)}
|
||||
ariaLabel={t("settings.startMinimized.title")}
|
||||
describedBy="start-minimized-description"
|
||||
onToggle={() => {
|
||||
void toggleStartMinimized();
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{startMinimizedError && (
|
||||
<div role="alert" style={{ color: "var(--error)", fontSize: 11 }}>
|
||||
<div role="alert" style={{ color: "var(--danger)", fontSize: 11 }}>
|
||||
{startMinimizedError}
|
||||
</div>
|
||||
)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue