From 8181ad75f9ae7e8fa60580663b93d175d9241e96 Mon Sep 17 00:00:00 2001 From: mARTin-B78 Date: Wed, 10 Jun 2026 14:54:19 +0200 Subject: [PATCH] feat(2.03.36): split STT Engines / LLM Engines into separate sidebar pages Co-Authored-By: Claude Sonnet 4.6 --- linux/CHANGELOG.md | 9 +++++++++ linux/blitztext/__init__.py | 2 +- linux/blitztext/gtksettings.py | 23 +++++++++++++++-------- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/linux/CHANGELOG.md b/linux/CHANGELOG.md index 0af7d88..2e5beab 100644 --- a/linux/CHANGELOG.md +++ b/linux/CHANGELOG.md @@ -9,6 +9,15 @@ The version is defined in [`blitztext/__init__.py`](blitztext/__init__.py). ## [Unreleased] +## [2.03.36] - 2026-06-10 + +### Changed +- **STT Engines split from LLM Engines.** The single "STT Engines" sidebar + page is now two pages — "STT Engines" (speech-to-text configuration) and + "LLM Engines" (language model / rewrite configuration) — each with its + own infobox. The underlying `_stt_section()` and `_llm_section()` methods + are unchanged. + ## [2.03.35] - 2026-06-10 ### Fixed diff --git a/linux/blitztext/__init__.py b/linux/blitztext/__init__.py index 0cef831..91ab668 100644 --- a/linux/blitztext/__init__.py +++ b/linux/blitztext/__init__.py @@ -6,4 +6,4 @@ counterpart to the macOS Blitztext menu bar app: it runs natively on the host (not in a container) so it can type into any application via xdotool. """ -__version__ = "2.03.35" +__version__ = "2.03.36" diff --git a/linux/blitztext/gtksettings.py b/linux/blitztext/gtksettings.py index ea98dc4..32df5de 100644 --- a/linux/blitztext/gtksettings.py +++ b/linux/blitztext/gtksettings.py @@ -912,7 +912,8 @@ class SettingsDialog: _reg("General", "General", "preferences-system-symbolic", self._build_general) _reg("Input", "Keyboard", "input-keyboard-symbolic", self._build_keyboard) _reg(None, "Wakeword", "audio-input-microphone-symbolic", self._build_wakeword) - _reg("Engines", "STT Engines", "network-server-symbolic", self._build_engines) + _reg("Engines", "STT Engines", "network-server-symbolic", self._build_stt_engines) + _reg(None, "LLM Engines", "applications-science-symbolic", self._build_llm_engines) _reg("Benchmark", "Benchmark — STT", "utilities-system-monitor-symbolic", self._build_benchmark_stt) _reg(None, "Benchmark — Wakeword", "audio-input-microphone-symbolic", self._build_benchmark_ww) _reg("System", "Log", "text-x-generic-symbolic", self._build_log) @@ -1259,14 +1260,20 @@ class SettingsDialog: pop.show_all() search_sw.set_visible(False) # hide search results until user types - # ===== Engines ========================================================== - def _build_engines(self, page: Gtk.Box) -> None: - _infobox(page, "Engines do the work. The speech-to-text engine turns your voice into " - "text; the language model rewrites it. Each can run locally or on " - "a server you enter. A green dot means it is reachable, red means offline.") - _section_title(page, "Speech-to-text engine", margin_top=4, icon="audio-input-microphone-symbolic") + # ===== STT Engines ====================================================== + def _build_stt_engines(self, page: Gtk.Box) -> None: + _infobox(page, "The speech-to-text engine transcribes your voice. It can run locally " + "(faster-whisper, built-in) or connect to a remote OpenAI-compatible API " + "or NVIDIA Riva stream. A green dot means the server is reachable.") page.pack_start(self._stt_section(), False, False, 0) - _section_title(page, "Language model (rewrite)", icon="applications-science-symbolic") + self._refresh_status() + + # ===== LLM Engines ====================================================== + def _build_llm_engines(self, page: Gtk.Box) -> None: + _infobox(page, "The language model rewrites your transcribed text — for example into a " + "polished email or a code comment. It is optional: leave it disabled if " + "you just want plain transcription. Connect to any OpenAI-compatible LAN " + "server or cloud service.") page.pack_start(self._llm_section(), False, False, 0) self._refresh_status()