From eff35f831c5aaa047dad98ee615f4a8266cc56ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=3D=3DTIM=2E=C2=A9=2EB=20=20=3D=3D?= Date: Tue, 15 Sep 2026 04:59:50 +0200 Subject: [PATCH 1/3] feat: compact single-panel widget with logo bolt Merge the main window into one frameless dark surface: title and window controls, gold microphone with recording waves and processing ring, status/timer and the tool row (editor, history, TTS, settings, overflow menu). Workflows, collect dictation and discard stay in the transient popup. - Frameless window, moved via QWindow.startSystemMove (Wayland) - Close button hides to tray, minimize minimizes the real window - Tray restores a minimized window with showNormal() - Compact geometry: 242x213 px on GNOME/Wayland - Official Blitztext bolt read locally from app/assets/logo-mark-dark.svg and cut out of the microphone capsule as a vector path - Fix PyQt6 QPoint/QPointF TypeError that aborted RecordButton.paintEvent - Neumorphic restyling of compose, history and TTS windows Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01QpE6yNpSWEnYfvJd4hyJK3 --- README.de.md | 16 + README.md | 16 + app/blitztext_linux.py | 125 ++++-- app/compose_window.py | 163 ++++++-- app/history_panel.py | 78 ++-- app/i18n.py | 114 ++++-- app/main_window.py | 678 +++++++++++++++++++------------ app/theme.py | 548 +++++++++++++++++++++---- app/tts_window.py | 107 +++-- scripts/_make_screenshots.py | 4 +- tests/test_compose_window.py | 68 +++- tests/test_features.py | 2 +- tests/test_i18n.py | 8 +- tests/test_main_window_widget.py | 670 ++++++++++++++++++++++++++++++ tests/test_settings_dialog.py | 8 +- tests/test_smoke_launch.py | 19 +- tests/test_state_machine.py | 70 +++- tests/test_tray_preset_menu.py | 19 +- 18 files changed, 2122 insertions(+), 591 deletions(-) create mode 100644 tests/test_main_window_widget.py diff --git a/README.de.md b/README.de.md index 26336fd..0998368 100644 --- a/README.de.md +++ b/README.de.md @@ -109,6 +109,22 @@ Für OpenRouter `base_url` auf `https://openrouter.ai/api/v1` setzen und Modell ### Compose-Fenster +**Kompakte Bedienung:** Unter **Text bearbeiten** wählst du eine Text-Aktion: +Text verbessern, Kürzen, Ausformulieren, Tonfall ändern oder Eigene Anweisung. +Der Tonfall erscheint nur bei „Tonfall ändern“; eine zusätzliche Workflow-Auswahl entfällt. +Entwurf und Ergebnis stehen nebeneinander (Startgröße 620 × 400). + +**Deinen Prompt eingeben:** Klicke **Eigene Anweisung …** und beschreibe im Feld +**Wie soll dein Text klingen?** die gewünschte Ausgabe. Mit **Verbessern** wird +diese Anweisung für den aktuellen Text verwendet. **Speichern & für Diktate verwenden** +speichert sie für kommende Sitzungen und wählt „Eigene Anweisung“ für +„Diktieren & verbessern“ aus. Ohne Speichern bleibt die Änderung nur im geöffneten Textfenster. +**Prompt prüfen** zeigt den vollständigen Prompt für einen einzelnen Aufruf. + +Das Hauptfenster bietet **Diktieren** und **Diktieren & verbessern**. +Die speziellen bisherigen Workflows bleiben über Tray und Tastenkürzel erreichbar. +Die älteren Abbildungen unten zeigen noch die vorherige Oberfläche. + Das **Compose-Fenster** (`✍ Compose…` im Tray-Kontextmenü) ermöglicht das Umschreiben beliebiger Texte mit der KI — ganz ohne Sprachaufnahme. Es eignet sich ideal zum Überarbeiten fertiger Entwürfe, E-Mails oder Notizen.
diff --git a/README.md b/README.md index 4ceaa6e..7726364 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,22 @@ For OpenRouter, set `base_url` to `https://openrouter.ai/api/v1` and choose your ### Compose window +**Compact controls:** **Edit text** now has one action selector: Improve text, +Shorten, Expand, Change tone, or Custom instruction. The tone selector appears +only for Change tone; the separate workflow selector is removed. Draft and result +are side by side (initial size 620 × 400). + +**Enter your prompt:** Click **Custom instruction …**, then describe the desired +output under **How should your text sound?**. **Improve** uses this instruction +for the current text. **Save & use for dictation** persists it for future +sessions and selects Custom instruction for Dictate & improve. Unsaved changes +remain in the open editor only. **Inspect prompt** shows the full prompt for a +single request. + +The main window offers **Dictate** and **Dictate & improve**. Existing specialized +workflows remain available through the tray and hotkeys. The older screenshots +below still show the previous interface. + The **Compose window** (`✍ Compose…` in the tray menu) lets you rewrite any text using the AI — without recording your voice. It is ideal for editing existing drafts, emails, or notes.
diff --git a/app/blitztext_linux.py b/app/blitztext_linux.py index 5499319..7b3a898 100644 --- a/app/blitztext_linux.py +++ b/app/blitztext_linux.py @@ -53,6 +53,7 @@ from app.main_window import MainWindow from app.i18n import LANGUAGES, LANGUAGE_DISPLAY_NAMES, set_language, t from app import notify as notify_service +from app import theme from app import __version__ as APP_VERSION # Set up module logger @@ -155,12 +156,9 @@ def resizeEvent(self, event) -> None: # type: ignore[override] def create_help_label(text: str) -> QLabel: """Create a styled small help label for config fields.""" - from app import theme - label = QLabel(text) - label.setStyleSheet( - f"color: {theme.APP_TEXT_DIM}; font-size: 11px; padding: 1px 0 8px 2px;" - ) + label.setProperty("fieldHelp", True) + label.setProperty("role", "secondary") label.setWordWrap(True) return label @@ -170,9 +168,10 @@ class SettingsDialog(QDialog): def __init__(self, config: Config, parent: Optional[QWidget] = None) -> None: super().__init__(parent) + self.setObjectName("appDialog") self.config = config self.setWindowTitle(t("settings.window_title")) - self.resize(580, 560) + self.resize(520, 430) self.init_ui() @staticmethod @@ -187,8 +186,8 @@ def _scrollable(content: QWidget) -> QScrollArea: def init_ui(self) -> None: layout = QVBoxLayout(self) - layout.setContentsMargins(15, 15, 15, 15) - layout.setSpacing(15) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(12) # Tabs self.tabs = QTabWidget() @@ -265,7 +264,7 @@ def init_ui(self) -> None: t("settings.api_key.legacy_notice") ) self.lbl_legacy_api_key_notice.setWordWrap(True) - self.lbl_legacy_api_key_notice.setStyleSheet("color: #b26a00; font-size: 10px;") + self.lbl_legacy_api_key_notice.setProperty("status", "warning") api_key_layout.addWidget(self.lbl_legacy_api_key_notice) else: self.lbl_legacy_api_key_notice = None @@ -291,7 +290,7 @@ def init_ui(self) -> None: t("settings.base_url.unsafe_legacy_notice") ) self.lbl_unsafe_llm_base_url_notice.setWordWrap(True) - self.lbl_unsafe_llm_base_url_notice.setStyleSheet("color: #b26a00; font-size: 10px;") + self.lbl_unsafe_llm_base_url_notice.setProperty("status", "warning") base_url_layout.addWidget(self.lbl_unsafe_llm_base_url_notice) else: self.lbl_unsafe_llm_base_url_notice = None @@ -373,16 +372,19 @@ def init_ui(self) -> None: form_llm.addRow(create_help_label(t("settings.llm_model.help"))) form_llm.addRow(t("settings.tone.label"), self.combo_tone) + self._llm_form = form_llm + self.combo_writing_preset.currentIndexChanged.connect(self._update_settings_tone) form_llm.addRow(t("settings.writing_preset.label"), self.combo_writing_preset) form_llm.addRow(create_help_label(t("settings.writing_preset.help"))) - form_llm.addRow(t("settings.compose_custom_preset.label"), self.edit_compose_custom_preset) - form_llm.addRow(create_help_label(t("settings.compose_custom_preset.help"))) + form_llm.insertRow(0, t("compose.custom.label"), self.edit_compose_custom_preset) + form_llm.insertRow(1, create_help_label(t("compose.custom.settings_help"))) form_llm.addRow(t("settings.emoji_density.label"), self.combo_emoji) form_llm.addRow(t("settings.dampf_prompt.label"), self.edit_dampf_prompt) form_llm.addRow(create_help_label(t("settings.dampf_prompt.help"))) form_llm.addRow(t("settings.custom_terms.label"), custom_terms_widget) form_llm.addRow(create_help_label(t("settings.custom_terms.help"))) + self._update_settings_tone() self.tabs.addTab(self._scrollable(tab_llm), t("settings.tab.workflows")) @@ -433,7 +435,7 @@ def init_ui(self) -> None: # Dezente Versionsanzeige ganz unten auf der letzten Einstellungsseite version_label = QLabel(t("settings.version").format(version=APP_VERSION)) - version_label.setStyleSheet("color: gray; font-size: 9px;") + version_label.setProperty("role", "muted") version_label.setAlignment(Qt.AlignmentFlag.AlignRight) form_general.addRow(version_label) @@ -441,11 +443,31 @@ def init_ui(self) -> None: layout.addWidget(self.tabs) + # Put supplemental explanations on their fields, keeping forms short. + # Security notices and the direct prompt-editor link remain visible. + for form in (form_whisper, form_llm, form_general): + form.setVerticalSpacing(8) + for row in range(form.rowCount()): + item = form.itemAt(row, QFormLayout.ItemRole.SpanningRole) + help_label = item.widget() if item is not None else None + if not isinstance(help_label, QLabel) or not help_label.property("fieldHelp"): + continue + if help_label.text() in (t("compose.custom.settings_help"), t("settings.api_key_env.help")): + continue + for role in (QFormLayout.ItemRole.LabelRole, QFormLayout.ItemRole.FieldRole): + previous = form.itemAt(row - 1, role) if row else None + widget = previous.widget() if previous is not None else None + if widget is not None: + widget.setToolTip(help_label.text()) + widget.setAccessibleDescription(help_label.text()) + form.setRowVisible(row, False) + # Dialog Button Box button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Save | QDialogButtonBox.StandardButton.Cancel) button_save = button_box.button(QDialogButtonBox.StandardButton.Save) if button_save is not None: button_save.setText(t("button.save")) + button_save.setObjectName("primaryAction") button_cancel = button_box.button(QDialogButtonBox.StandardButton.Cancel) if button_cancel is not None: button_cancel.setText(t("button.cancel")) @@ -453,6 +475,12 @@ def init_ui(self) -> None: button_box.rejected.connect(self.reject) layout.addWidget(button_box) + def _update_settings_tone(self) -> None: + """Expose the tone control only when the selected action needs it.""" + self._llm_form.setRowVisible( + self.combo_tone, self.combo_writing_preset.currentData() == "change_tone" + ) + def _refresh_api_key_status(self) -> None: env_name = self.edit_api_key_env.text().strip() or self.config.openai_api_key_env env_value = os.environ.get(env_name, "").strip() @@ -460,6 +488,9 @@ def _refresh_api_key_status(self) -> None: self.lbl_api_key_status.setText( t("settings.api_key.status").format(status=status, env_name=env_name) ) + theme.set_status_role( + self.lbl_api_key_status, "success" if env_value else "warning" + ) def _on_llm_provider_changed(self) -> None: provider = self.combo_llm_provider.currentData() @@ -740,11 +771,11 @@ def _rebuild_llm_service(self) -> None: def setup_tray(self) -> None: self.tray_icon = QSystemTrayIcon(self) self._tray_icons = { - "IDLE": self._create_microphone_icon(QColor("#2e7d32")), - "RECORDING": self._create_microphone_icon(QColor("#c62828")), - "TRANSCRIBING": self._create_microphone_icon(QColor("#ef6c00")), - "LLM_REWRITING": self._create_microphone_icon(QColor("#ef6c00")), - "ERROR": self._create_microphone_icon(QColor("#757575")), + "IDLE": self._create_microphone_icon(QColor(theme.STATE_IDLE)), + "RECORDING": self._create_microphone_icon(QColor(theme.STATE_RECORDING)), + "TRANSCRIBING": self._create_microphone_icon(QColor(theme.STATE_PROCESSING)), + "LLM_REWRITING": self._create_microphone_icon(QColor(theme.STATE_PROCESSING)), + "ERROR": self._create_microphone_icon(QColor(theme.STATE_ERROR)), } # Load standard icon fallback @@ -761,14 +792,21 @@ def setup_tray(self) -> None: # Create menu self.menu = QMenu() + self.menu.setObjectName("trayMenu") # Fenster anzeigen (grafischer Fallback) - self.action_show_window = QAction(f"🪟 {t('tray.show_window')}", self) + self.action_show_window = QAction(t("tray.show_window"), self) + self.action_show_window.setIcon(theme.create_app_icon()) self.action_show_window.triggered.connect(self.show_main_window) self.menu.addAction(self.action_show_window) - self.action_compose = QAction(f"✍ {t('tray.compose')}", self) + self.action_compose = QAction(t("tray.compose"), self) + self.action_compose.setIcon(theme.create_ui_icon("edit")) self.action_compose.triggered.connect(lambda _checked=False: self.show_compose_window()) self.menu.addAction(self.action_compose) + self.action_custom_prompt = QAction(t("compose.custom.edit"), self) + self.action_custom_prompt.setIcon(theme.create_ui_icon("edit", theme.BLITZ_400)) + self.action_custom_prompt.triggered.connect(self.show_custom_prompt) + self.menu.addAction(self.action_custom_prompt) self.menu.addSeparator() # Actions für die fünf Workflows @@ -797,7 +835,7 @@ def setup_tray(self) -> None: # Submenu: Schreibstil-Vorlage für Blitztext+ (Text-Verbesserer). # Exklusive, abhakbare Auswahl gespeist aus dem Preset-Katalog; die # Vorauswahl spiegelt die persistierte config.writing_preset wider. - self.menu_preset = self.menu.addMenu(f"✨ {t('tray.writing_preset')}") + self.menu_preset = self.menu.addMenu(t("tray.writing_preset")) self.preset_action_group = QActionGroup(self) self.preset_action_group.setExclusive(True) self.preset_actions: dict[str, QAction] = {} @@ -824,23 +862,26 @@ def setup_tray(self) -> None: # Verlauf anzeigen self.action_history = QAction(t("tray.history"), self) + self.action_history.setIcon(theme.create_ui_icon("history")) self.action_history.triggered.connect(self.show_history_panel) self.menu.addAction(self.action_history) # Vorlesen (TTS) self.action_tts = QAction(t("tray.tts"), self) + self.action_tts.setIcon(theme.create_ui_icon("speaker")) self.action_tts.triggered.connect(self.show_tts_window) self.menu.addAction(self.action_tts) self.menu.addSeparator() # Settings action - self.action_settings = QAction(f"⚙ {t('tray.settings')}...", self) + self.action_settings = QAction(f"{t('tray.settings')}…", self) + self.action_settings.setIcon(theme.create_ui_icon("settings")) self.action_settings.triggered.connect(self.show_settings_dialog) self.menu.addAction(self.action_settings) # Quit action - self.action_quit = QAction(f"✕ {t('tray.quit')}", self) + self.action_quit = QAction(t("tray.quit"), self) self.action_quit.triggered.connect(self.quit_app) self.menu.addAction(self.action_quit) @@ -883,9 +924,11 @@ def _refresh_i18n_texts(self) -> None: """Aktualisiert Texte, die nach Settings-Save bereits existieren.""" self.app.setApplicationName(t("app.name")) if hasattr(self, "action_show_window"): - self.action_show_window.setText(f"🪟 {t('tray.show_window')}") + self.action_show_window.setText(t("tray.show_window")) if hasattr(self, "action_compose"): - self.action_compose.setText(f"✍ {t('tray.compose')}") + self.action_compose.setText(t("tray.compose")) + if hasattr(self, "action_custom_prompt"): + self.action_custom_prompt.setText(t("compose.custom.edit")) if hasattr(self, "action_transcription"): self.action_transcription.setText( f"{t('workflow.transcription.name')}\t{hotkey_display_name(self.config.transcription_hotkey)}" @@ -899,9 +942,9 @@ def _refresh_i18n_texts(self) -> None: if hasattr(self, "action_emoji"): self.action_emoji.setText(f"{t('workflow.emoji_text.name')}\tMeta+Shift+E") if hasattr(self, "menu_preset"): - self.menu_preset.setTitle(f"✨ {t('tray.writing_preset')}") - self.action_settings.setText(f"⚙ {t('tray.settings')}...") - self.action_quit.setText(f"✕ {t('tray.quit')}") + self.menu_preset.setTitle(t("tray.writing_preset")) + self.action_settings.setText(f"{t('tray.settings')}…") + self.action_quit.setText(t("tray.quit")) if hasattr(self, "preset_actions"): self._refresh_preset_menu() if self._main_window is not None: @@ -1224,7 +1267,7 @@ def _ensure_history_panel(self) -> HistoryPanel: notes_folder=self.config.notes_folder, ) panel.setWindowTitle(t("history.window_title")) - panel.resize(320, 440) + panel.resize(420, 500) panel.merged.connect(self._on_dictation_merged) panel.count_changed.connect(self._on_history_count_changed) self._history_panel = panel @@ -1285,8 +1328,8 @@ def show_tts_window(self) -> None: def _ensure_compose_window(self) -> ComposeWindow: if self._compose_window is None: window = ComposeWindow(self.llm_service, self.paste_service, self.config) + window.prompt_saved.connect(self._on_custom_prompt_saved) try: - from app import theme window.setWindowIcon(theme.create_app_icon()) except Exception: # pragma: no cover - rein kosmetisch pass @@ -1301,6 +1344,18 @@ def show_compose_window(self, text: str = "") -> None: window.raise_() window.activateWindow() + def show_custom_prompt(self) -> None: + """Open the one shared instruction editor from the window or tray.""" + self.show_compose_window() + self._ensure_compose_window().edit_custom_prompt() + + def _on_custom_prompt_saved(self) -> None: + self._rebuild_llm_service() + self._refresh_preset_menu() + self.update_menu_availability() + if self._main_window is not None: + self._main_window.set_preset(CUSTOM_PRESET_KEY) + def _compose_voice_routing_enabled(self) -> bool: window = self._compose_window return bool( @@ -1324,7 +1379,6 @@ def _ensure_main_window(self) -> MainWindow: if self._main_window is None: window = MainWindow(self) try: - from app import theme window.setWindowIcon(theme.create_app_icon()) except Exception: # pragma: no cover - rein kosmetisch pass @@ -1338,7 +1392,11 @@ def _ensure_main_window(self) -> MainWindow: def show_main_window(self) -> None: window = self._ensure_main_window() - window.show() + # The frameless panel can be minimized; show() alone would keep it iconified. + if window.isMinimized(): + window.showNormal() + else: + window.show() window.raise_() window.activateWindow() @@ -1454,9 +1512,8 @@ def main() -> int: app.setApplicationName(t("app.name")) app.setQuitOnLastWindowClosed(False) - # Design-System: Glass-Theme + Marken-App-Icon (Mikrofon + Blitz) + # Central design system and branded application icon. try: - from app import theme theme.apply_theme(app) app.setWindowIcon(theme.create_app_icon()) except Exception as exc: # pragma: no cover - rein kosmetisch diff --git a/app/compose_window.py b/app/compose_window.py index 23b7c9f..c931919 100644 --- a/app/compose_window.py +++ b/app/compose_window.py @@ -12,6 +12,7 @@ QCheckBox, QComboBox, QDialog, + QFrame, QGridLayout, QHBoxLayout, QLabel, @@ -23,8 +24,9 @@ ) from app.i18n import t +from app import theme from app.llm_service import LLMService -from app.config import Config, VALID_TONES +from app.config import Config, ConfigError, VALID_TONES from app.paste_service import PasteService, PasteServiceError from app.workflows import WorkflowType from app.writing_presets import ( @@ -82,12 +84,14 @@ def __init__( parent: Optional[QWidget] = None, ) -> None: super().__init__(parent) + self.setObjectName("appDialog") self.setWindowTitle(t("compose.prompt_preview.title")) self.setModal(True) self.resize(640, 500) layout = QVBoxLayout(self) - layout.setSpacing(8) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(10) layout.addWidget(QLabel(t("compose.prompt_preview.system_label"))) self._system_edit = QPlainTextEdit(system_prompt) @@ -102,6 +106,7 @@ def __init__( btn_row = QHBoxLayout() btn_row.addStretch(1) btn_send = QPushButton(t("compose.prompt_preview.send_btn")) + btn_send.setObjectName("primaryAction") btn_send.setDefault(True) btn_send.clicked.connect(self.accept) btn_row.addWidget(btn_send) @@ -177,6 +182,8 @@ def run(self) -> None: class ComposeWindow(QDialog): """Modeless dialog for composing text through existing LLM workflows.""" + prompt_saved = pyqtSignal() + def __init__( self, llm_service: LLMService, @@ -185,9 +192,11 @@ def __init__( parent: Optional[QWidget] = None, ) -> None: super().__init__(parent) + self.setObjectName("appDialog") self._llm_service = llm_service self._paste_service = paste_service self._config = config + self._saved_custom_prompt = config.compose_custom_preset_text self._worker_thread: Optional[QThread] = None self._worker: Optional[_ComposeWorker] = None self._detached_threads: list[QThread] = [] @@ -198,8 +207,8 @@ def __init__( self._variant_index: int = -1 self.setWindowTitle(t("compose.window_title")) - self.setMinimumSize(600, 500) - self.resize(760, 600) + self.setMinimumSize(560, 360) + self.resize(620, 400) self._setup_ui() self.retranslate_ui() @@ -207,25 +216,29 @@ def __init__( def _setup_ui(self) -> None: layout = QVBoxLayout(self) - layout.setContentsMargins(14, 14, 14, 14) - layout.setSpacing(10) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(12) header_grid = QGridLayout() header_grid.setSpacing(8) - self.lblWorkflow = QLabel() - header_grid.addWidget(self.lblWorkflow, 0, 0) + # Keep workflow routing compatible; the editor exposes one action list. + self.lblWorkflow = QLabel(self) + self.lblWorkflow.hide() - self.cmbWorkflow = QComboBox() - self.cmbWorkflow.setMinimumWidth(160) - header_grid.addWidget(self.cmbWorkflow, 0, 1) + self.cmbWorkflow = QComboBox(self) + self.cmbWorkflow.hide() self.lblPreset = QLabel() - header_grid.addWidget(self.lblPreset, 0, 2) + header_grid.addWidget(self.lblPreset, 0, 0) self.cmbPreset = QComboBox() - self.cmbPreset.setMinimumWidth(180) - header_grid.addWidget(self.cmbPreset, 0, 3) + self.cmbPreset.setMinimumWidth(150) + header_grid.addWidget(self.cmbPreset, 0, 1) + + self.btnOwnPrompt = QPushButton() + self.btnOwnPrompt.clicked.connect(self.edit_custom_prompt) + header_grid.addWidget(self.btnOwnPrompt, 0, 2, 1, 2) self.lblTone = QLabel() header_grid.addWidget(self.lblTone, 1, 0) @@ -237,19 +250,36 @@ def _setup_ui(self) -> None: self.chkVoiceRouting = QCheckBox() self.chkVoiceRouting.setFocusPolicy(Qt.FocusPolicy.StrongFocus) self.chkVoiceRouting.setToolTip(t("compose.voice_routing.help")) - header_grid.addWidget(self.chkVoiceRouting, 1, 2, 1, 2) + header_grid.addWidget(self.chkVoiceRouting, 2, 0, 1, 4) header_grid.setColumnStretch(1, 1) header_grid.setColumnStretch(3, 1) layout.addLayout(header_grid) - self.splitMain = QSplitter(Qt.Orientation.Vertical) + self.promptPanel = QFrame() + self.promptPanel.setObjectName("sectionSurface") + prompt_layout = QVBoxLayout(self.promptPanel) + prompt_layout.setContentsMargins(12, 10, 12, 12) + prompt_layout.setSpacing(7) + self.lblOwnPrompt = QLabel() + prompt_layout.addWidget(self.lblOwnPrompt) + self.txtOwnPrompt = QPlainTextEdit() + self.txtOwnPrompt.setPlainText(self._config.compose_custom_preset_text) + self.txtOwnPrompt.setFixedHeight(64) + prompt_layout.addWidget(self.txtOwnPrompt) + self.btnSavePrompt = QPushButton() + self.btnSavePrompt.clicked.connect(self._save_custom_prompt) + prompt_layout.addWidget(self.btnSavePrompt, 0, Qt.AlignmentFlag.AlignRight) + layout.addWidget(self.promptPanel) + + self.splitMain = QSplitter(Qt.Orientation.Horizontal) self.splitMain.setChildrenCollapsible(False) - input_panel = QWidget() + input_panel = QFrame() + input_panel.setObjectName("sectionSurface") input_layout = QVBoxLayout(input_panel) - input_layout.setContentsMargins(0, 0, 0, 0) - input_layout.setSpacing(6) + input_layout.setContentsMargins(12, 10, 12, 12) + input_layout.setSpacing(8) self.lblInput = QLabel() input_layout.addWidget(self.lblInput) @@ -262,6 +292,7 @@ def _setup_ui(self) -> None: action_row.setSpacing(8) self.btnAction = QPushButton() + self.btnAction.setObjectName("primaryAction") self.btnAction.setMinimumWidth(140) self.btnAction.clicked.connect(self._on_improve_clicked) action_row.addWidget(self.btnAction) @@ -276,10 +307,11 @@ def _setup_ui(self) -> None: action_row.addWidget(self.lblStatus, 1) input_layout.addLayout(action_row) - output_panel = QWidget() + output_panel = QFrame() + output_panel.setObjectName("sectionSurface") output_layout = QVBoxLayout(output_panel) - output_layout.setContentsMargins(0, 0, 0, 0) - output_layout.setSpacing(6) + output_layout.setContentsMargins(12, 10, 12, 12) + output_layout.setSpacing(8) output_header = QHBoxLayout() output_header.setSpacing(8) @@ -289,7 +321,10 @@ def _setup_ui(self) -> None: output_header.addStretch(1) - self.btnPrev = QPushButton("◀") + self.btnPrev = QPushButton() + self.btnPrev.setObjectName("iconButton") + self.btnPrev.setIcon(theme.create_ui_icon("previous")) + self.btnPrev.setToolTip(t("compose.variant.prev")) self.btnPrev.setMaximumWidth(40) self.btnPrev.clicked.connect(self._on_prev_variant) output_header.addWidget(self.btnPrev) @@ -297,7 +332,10 @@ def _setup_ui(self) -> None: self.lblVariantCounter = QLabel() output_header.addWidget(self.lblVariantCounter) - self.btnNext = QPushButton("▶") + self.btnNext = QPushButton() + self.btnNext.setObjectName("iconButton") + self.btnNext.setIcon(theme.create_ui_icon("next")) + self.btnNext.setToolTip(t("compose.variant.next")) self.btnNext.setMaximumWidth(40) self.btnNext.clicked.connect(self._on_next_variant) output_header.addWidget(self.btnNext) @@ -326,16 +364,18 @@ def _setup_ui(self) -> None: self.btnClose = QPushButton() self.btnClose.clicked.connect(self.close) - footer_row.addWidget(self.btnClose) + # The native close control already closes this modeless window. + self.btnClose.setParent(self) + self.btnClose.hide() - output_layout.addLayout(footer_row) self.splitMain.addWidget(input_panel) self.splitMain.addWidget(output_panel) self.splitMain.setStretchFactor(0, 3) self.splitMain.setStretchFactor(1, 2) - self.splitMain.setSizes([330, 240]) + self.splitMain.setSizes([290, 290]) layout.addWidget(self.splitMain, 1) + layout.addLayout(footer_row) self._install_shortcuts() self._populate_workflow_combo() @@ -422,16 +462,14 @@ def _on_selectors_changed(self) -> None: self._update_tone_state() def _update_tone_state(self) -> None: - """Sichtbarkeit/Aktivierung des Tonfall-Selektors je nach Workflow+Vorlage. - - Tonfall ist im Text-Verbesserer (Blitztext+) für „Standard“ und - „Tonfall ändern“ aktiv. Bei allen anderen Aktionen bleibt der Selektor - sichtbar, aber ausgegraut. Bei Dampf/Emoji entfällt er. - """ + """Show only controls needed for the selected action.""" workflow = self._selected_workflow() is_text_improver = workflow == WorkflowType.TEXT_IMPROVER - self.lblTone.setVisible(is_text_improver) - self.cmbTone.setVisible(is_text_improver) + uses_tone = is_text_improver and self._selected_preset() == "change_tone" + self.lblTone.setVisible(uses_tone) + self.cmbTone.setVisible(uses_tone) + self.promptPanel.setVisible(is_text_improver and self._selected_preset() == CUSTOM_PRESET_KEY) + self.btnOwnPrompt.setVisible(self._selected_preset() != CUSTOM_PRESET_KEY) if not is_text_improver: return uses_tone = self._selected_preset() in { @@ -454,18 +492,18 @@ def _has_output(self) -> bool: def _show_status(self, text: str, *, error: bool = False) -> None: self.lblStatus.setText(text) self.lblStatus.setVisible(bool(text)) - if error: - self.lblStatus.setStyleSheet("color: #f44336;") - else: - self.lblStatus.setStyleSheet("") + theme.set_status_role(self.lblStatus, "error" if error else None) def _hide_status(self) -> None: self.lblStatus.clear() self.lblStatus.setVisible(False) - self.lblStatus.setStyleSheet("") + theme.set_status_role(self.lblStatus, None) def _set_busy(self, busy: bool, *, keep_status: bool = False) -> None: self._busy = busy + for control in (self.cmbPreset, self.cmbTone, self.btnOwnPrompt, self.btnSavePrompt): + control.setEnabled(not busy) + self.txtOwnPrompt.setReadOnly(busy) self.txtInput.setReadOnly(busy) if busy: self.btnAction.setEnabled(False) @@ -603,6 +641,9 @@ def _on_append_signature_clicked(self) -> None: def set_llm_service(self, llm_service: LLMService) -> None: """Verwendet bei der nächsten Aktion den aktuellen Controller-Service.""" self._llm_service = llm_service + if self.txtOwnPrompt.toPlainText() == self._saved_custom_prompt: + self.txtOwnPrompt.setPlainText(self._config.compose_custom_preset_text) + self._saved_custom_prompt = self._config.compose_custom_preset_text def set_input_text(self, text: str) -> None: self.txtInput.setPlainText(text) @@ -635,6 +676,11 @@ def retranslate_ui(self) -> None: self.setWindowTitle(t("compose.window_title")) self.lblWorkflow.setText(t("compose.workflow.label")) self.lblPreset.setText(t("compose.preset.label")) + self.btnOwnPrompt.setText(t("compose.custom.edit")) + self.lblOwnPrompt.setText(t("compose.custom.label")) + self.txtOwnPrompt.setAccessibleName(t("compose.custom.label")) + self.txtOwnPrompt.setPlaceholderText(t("compose.custom.placeholder")) + self.btnSavePrompt.setText(t("compose.custom.save")) self.lblTone.setText(t("compose.tone.label")) self.chkVoiceRouting.setText(t("compose.voice_routing.label")) self.chkVoiceRouting.setToolTip(t("compose.voice_routing.help")) @@ -666,15 +712,47 @@ def retranslate_ui(self) -> None: def _start_worker(self, text: str) -> None: workflow = self._selected_workflow() tone = self._selected_tone() + custom = self.txtOwnPrompt.toPlainText().strip() if self._selected_preset() == CUSTOM_PRESET_KEY else None + if custom == "": + self._show_status(t("compose.custom.empty"), error=True) + self.txtOwnPrompt.setFocus() + return worker = _ComposeWorker( self._llm_service, workflow, text, self._selected_preset(), tone=tone, + custom_prompt=custom, ) self._launch_worker(worker) + def edit_custom_prompt(self) -> None: + """Open the instruction field without requiring a draft or an API call.""" + self.cmbWorkflow.setCurrentIndex(self.cmbWorkflow.findData(WorkflowType.TEXT_IMPROVER)) + self.cmbPreset.setCurrentIndex(self.cmbPreset.findData(CUSTOM_PRESET_KEY)) + self.txtOwnPrompt.setFocus() + + def _save_custom_prompt(self) -> None: + prompt = self.txtOwnPrompt.toPlainText().strip() + if not prompt: + self._show_status(t("compose.custom.empty"), error=True) + return + previous = self._config.compose_custom_preset_text + previous_preset = self._config.writing_preset + self._config.compose_custom_preset_text = prompt + self._config.writing_preset = CUSTOM_PRESET_KEY + try: + self._config.save() + except ConfigError: + self._config.compose_custom_preset_text = previous + self._config.writing_preset = previous_preset + self._show_status(t("compose.custom.save_error"), error=True) + return + self._saved_custom_prompt = prompt + self.prompt_saved.emit() + self._show_status(t("compose.custom.saved")) + def _launch_worker(self, worker: _ComposeWorker) -> None: """Gemeinsames Thread-Wiring für Standard- und Raw-Prompt-Worker.""" thread = QThread(self) @@ -739,10 +817,15 @@ def _on_show_prompt_clicked(self) -> None: workflow = self._selected_workflow() tone = self._selected_tone() + if self._selected_preset() == CUSTOM_PRESET_KEY and not self.txtOwnPrompt.toPlainText().strip(): + self._show_status(t("compose.custom.empty"), error=True) + self.txtOwnPrompt.setFocus() + return system_prompt = self._llm_service.build_system_prompt( workflow, writing_preset=self._selected_preset(), tone=tone, + custom_prompt=self.txtOwnPrompt.toPlainText().strip() if self._selected_preset() == CUSTOM_PRESET_KEY else None, ) dialog = PromptEditorDialog(system_prompt, text.strip(), parent=self) if dialog.exec() == QDialog.DialogCode.Accepted: diff --git a/app/history_panel.py b/app/history_panel.py index d54837f..c272bbf 100644 --- a/app/history_panel.py +++ b/app/history_panel.py @@ -24,6 +24,7 @@ ) from app.i18n import t +from app import theme logger = logging.getLogger("blitztext.history") @@ -159,11 +160,8 @@ class HistoryEntryWidget(QFrame): def __init__(self, entry: HistoryEntry, parent: Optional[QWidget] = None) -> None: super().__init__(parent) self.entry = entry + self.setObjectName("historyEntry") self.setFrameShape(QFrame.Shape.StyledPanel) - self.setStyleSheet( - "HistoryEntryWidget { background: palette(base); border-radius: 4px; " - "border: 1px solid palette(mid); margin: 1px 0; }" - ) # Diese Timer muessen dem Widget gehoeren. Ein statischer # QTimer.singleShot mit Lambda kann nach deleteLater() noch feuern und @@ -182,20 +180,25 @@ def __init__(self, entry: HistoryEntry, parent: Optional[QWidget] = None) -> Non top_row = QHBoxLayout() meta_text = t("history.entry.meta").format(timestamp=entry.timestamp, count=entry.word_count) if entry.is_dictation: - meta_text = f"\U0001f3a4 {meta_text}" + meta_text = t("history.entry.dictation").format(meta=meta_text) meta_label = QLabel(meta_text) - meta_label.setStyleSheet("color: palette(mid); font-size: 11px;") + meta_label.setProperty("role", "muted") top_row.addWidget(meta_label, 1) - self._btn_copy = QPushButton("\U0001f4cb") + self._btn_copy = QPushButton() + self._btn_copy.setObjectName("iconButton") + self._btn_copy.setIcon(theme.create_ui_icon("copy")) self._btn_copy.setToolTip(t("history.tooltip.copy")) - self._btn_copy.setFixedSize(28, 24) + self._btn_copy.setFixedSize(32, 30) self._btn_copy.clicked.connect(self._copy_to_clipboard) top_row.addWidget(self._btn_copy) - btn_delete = QPushButton("✕") + btn_delete = QPushButton() + btn_delete.setObjectName("iconButton") + btn_delete.setProperty("danger", True) + btn_delete.setIcon(theme.create_ui_icon("delete", theme.STATE_ERROR)) btn_delete.setToolTip(t("history.tooltip.delete")) - btn_delete.setFixedSize(28, 24) + btn_delete.setFixedSize(32, 30) btn_delete.clicked.connect(lambda: self.deleted.emit(self.entry)) top_row.addWidget(btn_delete) @@ -203,31 +206,28 @@ def __init__(self, entry: HistoryEntry, parent: Optional[QWidget] = None) -> Non preview_label = QLabel(entry.preview) preview_label.setWordWrap(True) - preview_label.setStyleSheet("font-size: 12px;") layout.addWidget(preview_label) def _copy_to_clipboard(self) -> None: _clipboard_write(self.entry.text) - self._btn_copy.setText("✓") - self._btn_copy.setStyleSheet("color: #4caf50; font-weight: bold;") + self._btn_copy.setIcon(theme.create_ui_icon("check", theme.STATE_IDLE)) + self._btn_copy.setProperty("success", True) + theme.repolish(self._btn_copy) self._copy_reset_timer.start(1500) def _reset_copy_button(self) -> None: - self._btn_copy.setText("\U0001f4cb") - self._btn_copy.setStyleSheet("") + self._btn_copy.setIcon(theme.create_ui_icon("copy")) + self._btn_copy.setProperty("success", False) + theme.repolish(self._btn_copy) def highlight(self) -> None: - self.setStyleSheet( - "HistoryEntryWidget { background: #fff3cd; border-radius: 4px; " - "border: 1px solid #ffc107; margin: 1px 0; }" - ) + self.setProperty("highlighted", True) + theme.repolish(self) self._highlight_reset_timer.start(800) def _reset_highlight(self) -> None: - self.setStyleSheet( - "HistoryEntryWidget { background: palette(base); border-radius: 4px; " - "border: 1px solid palette(mid); margin: 1px 0; }" - ) + self.setProperty("highlighted", False) + theme.repolish(self) class HistoryPanel(QWidget): @@ -243,6 +243,7 @@ def __init__( parent: Optional[QWidget] = None, ) -> None: super().__init__(parent) + self.setObjectName("appWindow") self._max_entries = max(10, min(100, max_entries)) self.notes_folder = notes_folder self._entries: List[HistoryEntry] = [] @@ -263,12 +264,12 @@ def __init__( def _setup_ui(self) -> None: layout = QVBoxLayout(self) - layout.setContentsMargins(8, 8, 8, 8) - layout.setSpacing(4) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(12) header_row = QHBoxLayout() self._header_label = QLabel(t("history.header").format(count=0)) - self._header_label.setStyleSheet("font-size: 13px; font-weight: bold;") + self._header_label.setProperty("role", "title") header_row.addWidget(self._header_label, 1) self._btn_merge = QPushButton(t("history.button.merge")) @@ -297,6 +298,12 @@ def _setup_ui(self) -> None: self._scroll.setWidget(self._list_container) layout.addWidget(self._scroll) + self._empty_label = QLabel(t("history.empty"), self._list_container) + self._empty_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + self._empty_label.setWordWrap(True) + self._empty_label.setProperty("role", "muted") + self._list_layout.insertWidget(0, self._empty_label, 1) + def add_entry(self, text: str, is_dictation: bool = False, source: Optional[str] = None) -> None: if not text or not text.strip(): return @@ -306,6 +313,7 @@ def add_entry(self, text: str, is_dictation: bool = False, source: Optional[str] if source == "dictation": save_dictation_note(self.notes_folder, entry.text) self._entries.insert(0, entry) + self._empty_label.hide() while len(self._entries) > self._max_entries: removed = self._entries.pop() @@ -321,6 +329,7 @@ def add_entry(self, text: str, is_dictation: bool = False, source: Optional[str] self._update_header() self._update_merge_button() + self._empty_label.setVisible(not self._entries) def _on_entry_deleted(self, entry: HistoryEntry) -> None: try: @@ -330,6 +339,7 @@ def _on_entry_deleted(self, entry: HistoryEntry) -> None: self._remove_widget_for_entry(entry) self._update_header() self._update_merge_button() + self._empty_label.setVisible(not self._entries) def _remove_widget_for_entry(self, entry: HistoryEntry) -> None: for widget in self._entry_widgets: @@ -343,7 +353,8 @@ def _on_clear_clicked(self) -> None: if not self._clear_armed: self._clear_armed = True self._btn_clear.setText(t("history.button.confirm_clear")) - self._btn_clear.setStyleSheet("color: #f44336; font-weight: bold;") + self._btn_clear.setProperty("danger", True) + theme.repolish(self._btn_clear) self._clear_disarm_timer.start(3000) else: self.clear_all() @@ -351,7 +362,8 @@ def _on_clear_clicked(self) -> None: def _disarm_clear(self) -> None: self._clear_armed = False self._btn_clear.setText(t("history.button.clear_all")) - self._btn_clear.setStyleSheet("") + self._btn_clear.setProperty("danger", False) + theme.repolish(self._btn_clear) def clear_all(self) -> None: self._entries.clear() @@ -361,9 +373,11 @@ def clear_all(self) -> None: self._entry_widgets.clear() self._clear_armed = False self._btn_clear.setText(t("history.button.clear_all")) - self._btn_clear.setStyleSheet("") + self._btn_clear.setProperty("danger", False) + theme.repolish(self._btn_clear) self._update_header() self._update_merge_button() + self._empty_label.show() def _merge_dictation(self) -> None: dictation_texts = [e.text for e in reversed(self._entries) if e.is_dictation] @@ -376,12 +390,14 @@ def _merge_dictation(self) -> None: self.merged.emit(path) self._btn_merge.setText(t("history.status.saved") if path else t("history.status.copied")) - self._btn_merge.setStyleSheet("color: #4caf50; font-weight: bold;") + self._btn_merge.setProperty("success", True) + theme.repolish(self._btn_merge) self._merge_reset_timer.start(2500) def _reset_merge_button(self) -> None: self._btn_merge.setText(t("history.button.merge")) - self._btn_merge.setStyleSheet("") + self._btn_merge.setProperty("success", False) + theme.repolish(self._btn_merge) def _update_header(self) -> None: count = len(self._entries) diff --git a/app/i18n.py b/app/i18n.py index 0461d2e..bcd6ab2 100644 --- a/app/i18n.py +++ b/app/i18n.py @@ -22,7 +22,7 @@ "settings.window_title": "Blitztext Einstellungen", "settings.tab.general": "Allgemein", "settings.tab.speech": "Spracherkennung", - "settings.tab.workflows": "KI-Workflows", + "settings.tab.workflows": "Text & KI", "settings.whisper_model.label": "Whisper-Modell:", "settings.whisper_model.help": "Wählen Sie die Modellgröße. Größere Modelle sind genauer, benötigen aber mehr Ressourcen.", "settings.transcription_backend.label": "Transkription-Backend:", @@ -135,16 +135,26 @@ "history.status.saved": "✓ Gespeichert", "history.status.copied": "✓ Kopiert", "history.entry.meta": "{timestamp} · {count} Wörter", + "history.entry.dictation": "Diktat · {meta}", + "history.empty": "Noch keine Transkriptionen.\nDein nächstes Diktat erscheint hier.", "history.note.heading": "Diktat {heading}", "history.note.merged_heading": "Diktat (zusammengeführt) {heading}", "history.note.merged_filename_prefix": "Diktat-zusammengeführt_", "tray.show_window": "Fenster anzeigen", - "tray.compose": "Text verfassen…", + "tray.compose": "Text bearbeiten…", "tray.writing_preset": "Text-Aktion", - "tray.dictation_mode": "🎤 Diktat-Modus", - "tray.history": "📋 Verlauf…", - "tray.tts": "🔊 Vorlesen…", - "compose.window_title": "Text verfassen", + "tray.dictation_mode": "Diktate sammeln", + "tray.history": "Verlauf…", + "tray.tts": "Vorlesen…", + "compose.window_title": "Text bearbeiten", + "compose.custom.edit": "Eigene Anweisung …", + "compose.custom.label": "Wie soll dein Text klingen?", + "compose.custom.placeholder": "Zum Beispiel: Schreibe kurz und freundlich. Keine Einleitung, keine Emojis. Behalte alle Fakten bei.", + "compose.custom.save": "Speichern & für Diktate verwenden", + "compose.custom.saved": "Gespeichert und für „Diktieren & verbessern“ ausgewählt.", + "compose.custom.empty": "Bitte deine Anweisung in das Feld oben eingeben.", + "compose.custom.save_error": "Anweisung konnte nicht gespeichert werden. Dein Entwurf bleibt erhalten.", + "compose.custom.settings_help": "Diesen Prompt kannst du auch direkt unter „Text bearbeiten → Eigene Anweisung“ eingeben und testen.", "compose.workflow.label": "Workflow:", "compose.preset.label": "Text-Aktion:", "compose.tone.label": "Ziel-Tonfall:", @@ -170,23 +180,27 @@ "compose.variant.prev": "Vorherige Variante", "compose.variant.next": "Nächste Variante", "compose.variant.none": "Keine Varianten", - "compose.btn.show_prompt": "Schreibstil / Prompt bearbeiten", + "compose.btn.show_prompt": "Prompt prüfen", "compose.prompt_preview.title": "Prompt-Vorschau", "compose.prompt_preview.system_label": "System-Prompt:", "compose.prompt_preview.user_label": "Nutzernachricht:", "compose.prompt_preview.send_btn": "Senden", "compose.prompt_preview.cancel_btn": "Abbrechen", "compose.prompt_preview.tooltip": "Prompt vor dem Senden anzeigen & bearbeiten", - "mainwindow.button.discard": "↺ Verwerfen", - "mainwindow.button.dictation": "✎ Diktat", - "mainwindow.button.history": "≡ Verlauf ({count})", - "mainwindow.button.edit_text": "✍ Text bearbeiten", + "mainwindow.button.discard": "Verwerfen", + "mainwindow.button.dictation": "Sammel-Diktat", + "mainwindow.button.dictation_active": "Sammel-Diktat (Aktiv)", + "mainwindow.button.history": "Verlauf ({count} Transkriptionen)", + "mainwindow.button.edit_text": "Text bearbeiten", "mainwindow.tooltip.edit_text": "Text eingeben und mit Schreibstilen oder Prompts bearbeiten (Strg+E)", - "mainwindow.tooltip.tts": "Vorlesen", + "mainwindow.tooltip.tts": "Text vorlesen", "mainwindow.tooltip.settings": "Einstellungen", - "mainwindow.status.ready": "Bereit", - "mainwindow.status.error": "Fehler", - "mainwindow.status.recording": "Aufnahme läuft…", + "mainwindow.tooltip.more": "Weitere Aktionen", + "mainwindow.tooltip.minimize": "Minimieren", + "mainwindow.tooltip.close": "Schließen (läuft im Tray weiter)", + "mainwindow.status.ready": "Bereit:", + "mainwindow.status.error": "Fehler:", + "mainwindow.status.recording": "Aufnahme läuft:", "mainwindow.status.transcribing": "Transkribiere…", "mainwindow.status.processing": "Verarbeite mit KI…", "history.window_title": "Blitztext – Verlauf", @@ -201,16 +215,16 @@ "error.recording.title": "Aufnahme-Fehler", "error.recording.start_failed": "Aufnahme konnte nicht gestartet werden: {error}", "error.recording.stop_failed": "Aufnahme konnte nicht sauber gestoppt werden: {error}", - "workflow.transcription.name": "🎙 Blitztext", - "workflow.local.name": "🔒 Blitztext Lokal", - "workflow.text_improver.name": "✨ Blitztext+", - "workflow.dampf_ablassen.name": "🔥 Blitztext $%&!", - "workflow.emoji_text.name": "😊 Blitztext :)", - "preset.standard.name": "Standard / Text verbessern", + "workflow.transcription.name": "Diktieren", + "workflow.local.name": "Diktieren · lokal", + "workflow.text_improver.name": "Diktieren & verbessern", + "workflow.dampf_ablassen.name": "Sachlich formulieren", + "workflow.emoji_text.name": "Emojis ergänzen", + "preset.standard.name": "Text verbessern", "preset.shorten.name": "Kürzen", "preset.expand.name": "Ausformulieren", "preset.change_tone.name": "Tonfall ändern", - "preset.custom.name": "Eigener Prompt", + "preset.custom.name": "Eigene Anweisung", }, "en": { "app.name": "Blitztext", @@ -221,7 +235,7 @@ "settings.window_title": "Blitztext Settings", "settings.tab.general": "General", "settings.tab.speech": "Speech Recognition", - "settings.tab.workflows": "AI Workflows", + "settings.tab.workflows": "Text & AI", "settings.whisper_model.label": "Whisper model:", "settings.whisper_model.help": "Choose the model size. Larger models are more accurate but require more resources.", "settings.transcription_backend.label": "Transcription backend:", @@ -334,16 +348,26 @@ "history.status.saved": "✓ Saved", "history.status.copied": "✓ Copied", "history.entry.meta": "{timestamp} · {count} words", + "history.entry.dictation": "Dictation · {meta}", + "history.empty": "No transcripts yet.\nYour next dictation will appear here.", "history.note.heading": "Dictation {heading}", "history.note.merged_heading": "Dictation (merged) {heading}", "history.note.merged_filename_prefix": "Dictation-merged_", "tray.show_window": "Show window", - "tray.compose": "Compose text…", + "tray.compose": "Edit text…", "tray.writing_preset": "Text action", - "tray.dictation_mode": "🎤 Dictation mode", - "tray.history": "📋 History…", - "tray.tts": "🔊 Read aloud…", - "compose.window_title": "Compose Text", + "tray.dictation_mode": "Collect dictations", + "tray.history": "History…", + "tray.tts": "Read aloud…", + "compose.window_title": "Edit text", + "compose.custom.edit": "Custom instruction …", + "compose.custom.label": "How should your text sound?", + "compose.custom.placeholder": "For example: Write briefly and warmly. No introduction, no emojis. Keep every fact.", + "compose.custom.save": "Save & use for dictation", + "compose.custom.saved": "Saved and selected for 'Dictate & improve'.", + "compose.custom.empty": "Enter your instruction in the field above first.", + "compose.custom.save_error": "Could not save the instruction. Your draft is still here.", + "compose.custom.settings_help": "You can also enter and test this prompt directly in Edit text → Custom instruction.", "compose.workflow.label": "Workflow:", "compose.preset.label": "Text action:", "compose.tone.label": "Target tone:", @@ -369,23 +393,27 @@ "compose.variant.prev": "Previous variant", "compose.variant.next": "Next variant", "compose.variant.none": "No variants", - "compose.btn.show_prompt": "Edit style / prompt", + "compose.btn.show_prompt": "Inspect prompt", "compose.prompt_preview.title": "Prompt Preview", "compose.prompt_preview.system_label": "System Prompt:", "compose.prompt_preview.user_label": "User Message:", "compose.prompt_preview.send_btn": "Send", "compose.prompt_preview.cancel_btn": "Cancel", "compose.prompt_preview.tooltip": "Preview & edit prompt before sending", - "mainwindow.button.discard": "↺ Discard", - "mainwindow.button.dictation": "✎ Dictation", - "mainwindow.button.history": "≡ History ({count})", - "mainwindow.button.edit_text": "✍ Edit text", + "mainwindow.button.discard": "Discard", + "mainwindow.button.dictation": "Collect dictation", + "mainwindow.button.dictation_active": "Collect dictation (active)", + "mainwindow.button.history": "History ({count} transcripts)", + "mainwindow.button.edit_text": "Edit text", "mainwindow.tooltip.edit_text": "Enter text and edit it with writing styles or prompts (Ctrl+E)", "mainwindow.tooltip.tts": "Read aloud", "mainwindow.tooltip.settings": "Settings", - "mainwindow.status.ready": "Ready", - "mainwindow.status.error": "Error", - "mainwindow.status.recording": "Recording…", + "mainwindow.tooltip.more": "More actions", + "mainwindow.tooltip.minimize": "Minimize", + "mainwindow.tooltip.close": "Close (keeps running in the tray)", + "mainwindow.status.ready": "Ready:", + "mainwindow.status.error": "Error:", + "mainwindow.status.recording": "Recording:", "mainwindow.status.transcribing": "Transcribing…", "mainwindow.status.processing": "Processing with AI…", "history.window_title": "Blitztext – History", @@ -400,16 +428,16 @@ "error.recording.title": "Recording error", "error.recording.start_failed": "Recording could not be started: {error}", "error.recording.stop_failed": "Recording could not be stopped cleanly: {error}", - "workflow.transcription.name": "🎙 Blitztext", - "workflow.local.name": "🔒 Blitztext Local", - "workflow.text_improver.name": "✨ Blitztext+", - "workflow.dampf_ablassen.name": "🔥 Blitztext $%&!", - "workflow.emoji_text.name": "😊 Blitztext :)", - "preset.standard.name": "Standard / Improve text", + "workflow.transcription.name": "Dictate", + "workflow.local.name": "Dictate · local", + "workflow.text_improver.name": "Dictate & improve", + "workflow.dampf_ablassen.name": "Make it factual", + "workflow.emoji_text.name": "Add emojis", + "preset.standard.name": "Improve text", "preset.shorten.name": "Shorten", "preset.expand.name": "Expand", "preset.change_tone.name": "Change tone", - "preset.custom.name": "Custom prompt", + "preset.custom.name": "Custom instruction", }, } diff --git a/app/main_window.py b/app/main_window.py index 5406633..6be4e60 100644 --- a/app/main_window.py +++ b/app/main_window.py @@ -1,39 +1,24 @@ -"""Hauptfenster fuer BlitztextLinux (Glass-Redesign). - -Grafischer Fallback zum globalen Hotkey: Start/Stopp per Maus-Klick, -Workflow-Auswahl, Verwerfen, Diktat, Textbearbeitung, Verlauf, Vorlesen und Einstellungen. - -Das Design folgt dem Blitztext Design System (Glass-Idiom): runder Amber- -Record-„Shutter" als Hero, Status-Punkt + Timer, weiche Pill-Buttons fuer -Verwerfen/Diktat, eine klare Textbearbeitungs-Aktion und runde Icon-Buttons -fuer Vorlesen/Einstellungen. - -Das Fenster ist rein praesentational — die gesamte Aufnahme-/State-Logik -bleibt im Controller (`BlitztextApp`). Beim Schliessen wird es nur versteckt, -die App laeuft im Tray weiter. -""" +"""Neumorphic Blitztext desktop widget with transient secondary controls.""" from __future__ import annotations +import math import time from typing import Optional -from PyQt6.QtCore import Qt, QTimer, pyqtSlot, QRectF -from PyQt6.QtGui import QBrush, QCloseEvent, QColor, QKeySequence, QPainter, QPen, QRadialGradient -from PyQt6.QtWidgets import ( - QComboBox, - QHBoxLayout, - QLabel, - QPushButton, - QVBoxLayout, - QWidget, -) - -from app.llm_service import WorkflowType, LLM_WORKFLOWS -from app.i18n import t +from PyQt6.QtCore import QPoint, QPointF, QRectF, QSize, Qt, QTimer, pyqtSlot +from PyQt6.QtGui import (QBrush, QCloseEvent, QColor, QConicalGradient, + QEnterEvent, QKeySequence, QLinearGradient, + QMouseEvent, QPainter, QPainterPath, QPen, + QRadialGradient) +from PyQt6.QtWidgets import (QApplication, QComboBox, QFrame, + QGraphicsDropShadowEffect, QHBoxLayout, QLabel, + QLayout, QPushButton, QVBoxLayout, QWidget) + from app import theme +from app.i18n import t +from app.llm_service import WorkflowType from app.writing_presets import CUSTOM_PRESET_KEY, WRITING_PRESET_KEYS -# Reihenfolge der Workflows in der Auswahl _WORKFLOW_ORDER = [ WorkflowType.TRANSCRIPTION, WorkflowType.LOCAL, @@ -42,32 +27,73 @@ WorkflowType.EMOJI_TEXT, ] +# RecordButton geometry, relative to the widget center. Face and microphone +# artwork keep their design coordinates and are scaled to _FACE_DIAMETER. +_ART_DIAMETER = 98 +_FACE_DIAMETER = 80 +_ART_SCALE = _FACE_DIAMETER / _ART_DIAMETER +_RING_DIAMETER = 92 +_RING_PEN = 4 +_WAVE_BARS = 5 +_WAVE_PITCH = 6 +_WAVE_WIDTH = 3.0 +_WAVE_CLEARANCE = 52 # first bar sits just outside the processing ring +_WAVE_MAX_HEIGHT = 28 -class RecordButton(QPushButton): - """Runder Aufnahme-„Shutter" im Glass-Idiom. +# Microphone capsule in design coordinates. The official logo bolt is cut out +# of it, so the dark face shows through as part of the microphone. +_MIC_CAPSULE = QRectF(-11, -31, 22, 49) - Zeichnet einen Mikrofon-/Stop-/Spinner-Glyph auf einer amberfarbenen - bzw. roten Kreisflaeche. Der Text (`Start`/`Stopp`) bleibt gesetzt, wird - aber nicht gemalt — so bleibt `text()` fuer Tests/Logik nutzbar. - """ + +def _mic_body_path() -> QPainterPath: + body = QPainterPath() + body.addRoundedRect(_MIC_CAPSULE, 11, 11) + return body.subtracted(theme.brand_bolt_path(_MIC_CAPSULE)) + + +_MIC_BODY = _mic_body_path() + +# Main window: a single frameless surface holds header, microphone, status and +# tools. The window margins only reserve the measured reach of its shadow. +_SHADOW_MARGINS = (10, 6, 10, 14) # left, top, right, bottom +_PANEL_PADDING = (10, 6, 10, 10) # plus the 1 px QSS border +_TOOL_GAP = 6 +_TOOLBAR_TOP_GAP = 8 +_HISTORY_BUTTON_WIDTH = 48 + + +def _shadow(widget: QWidget, blur: float, y: float, alpha: int) -> None: + effect = QGraphicsDropShadowEffect(widget) + effect.setBlurRadius(blur) + effect.setOffset(0, y) + effect.setColor(QColor(5, 6, 8, alpha)) + widget.setGraphicsEffect(effect) + + +class RecordButton(QPushButton): + """Gold microphone button with recording waves and a processing ring.""" def __init__(self, parent: Optional[QWidget] = None) -> None: super().__init__(parent) - self._mode = "IDLE" # IDLE | RECORDING | PROCESSING + self._mode = "IDLE" self._phase = 0.0 - self.setFixedSize(68, 68) + self._hovered = False + self._pressed = False + self.setObjectName("recordButton") + self.setFixedSize(theme.RECORD_BUTTON_WIDTH, theme.RECORD_BUTTON_HEIGHT) self.setCursor(Qt.CursorShape.PointingHandCursor) self.setFlat(True) - self._anim = QTimer(self) - self._anim.setInterval(60) + self._anim.setInterval(40) self._anim.timeout.connect(self._tick) + @property + def mode(self) -> str: + return self._mode + def set_mode(self, mode: str) -> None: - if mode not in ("IDLE", "RECORDING", "PROCESSING"): - mode = "IDLE" - self._mode = mode - if mode in ("RECORDING", "PROCESSING"): + self._mode = mode if mode in ("IDLE", "RECORDING", "PROCESSING") else "IDLE" + if self._mode in ("RECORDING", "PROCESSING"): if not self._anim.isActive(): self._anim.start() else: @@ -76,226 +102,340 @@ def set_mode(self, mode: str) -> None: self.update() def _tick(self) -> None: - self._phase = (self._phase + 0.08) % 1.0 + # 0.03 per 40 ms: one calm cycle every ~1.3 s. + self._phase = (self._phase + 0.03) % 1.0 self.update() - def paintEvent(self, _event) -> None: # noqa: N802 (Qt naming) - p = QPainter(self) - p.setRenderHint(QPainter.RenderHint.Antialiasing) - size = min(self.width(), self.height()) - margin = 6 - d = size - 2 * margin - rect = QRectF(margin, margin, d, d) - cx, cy = self.width() / 2, self.height() / 2 + def _center(self) -> QPointF: + return QPointF(self.width() / 2, self.height() / 2) - if self._mode == "RECORDING": - base, hi = QColor("#c62828"), QColor("#e04545") - elif self._mode == "PROCESSING": - base, hi = QColor("#262a31"), QColor("#383e46") - else: - base, hi = QColor(theme.BLITZ_500), QColor("#edbe35") + def hitButton(self, pos: QPoint) -> bool: # noqa: N802 + """Only the round microphone toggles; the wave areas are decoration.""" + center = self._center() + return math.hypot(pos.x() - center.x(), pos.y() - center.y()) <= _RING_DIAMETER / 2 - grad = QRadialGradient(cx, margin + d * 0.32, d) - grad.setColorAt(0.0, hi) - grad.setColorAt(1.0, base) - p.setPen(Qt.PenStyle.NoPen) - p.setBrush(QBrush(grad)) - p.drawEllipse(rect) + def enterEvent(self, event: QEnterEvent) -> None: # noqa: N802 + self._hovered = True + self.update() + super().enterEvent(event) - # Feiner innerer Highlight-Ring statt grossflaechigem Glanz - p.setPen(QPen(QColor(255, 255, 255, 36), 1)) - p.setBrush(Qt.BrushStyle.NoBrush) - p.drawEllipse(rect.adjusted(1, 1, -1, -1)) + def leaveEvent(self, event) -> None: # noqa: N802 + self._hovered = False + self._pressed = False + self.update() + super().leaveEvent(event) - # Pulsierender Ring waehrend der Aufnahme (die eine bewusste Animation) - if self._mode == "RECORDING": - spread = margin * self._phase - ring = QRectF(margin - spread, margin - spread, - d + 2 * spread, d + 2 * spread) - alpha = int(150 * (1.0 - self._phase)) - p.setPen(QPen(QColor(229, 72, 72, alpha), 2)) - p.setBrush(Qt.BrushStyle.NoBrush) - p.drawEllipse(ring) - - p.translate(cx, cy) + def mousePressEvent(self, event) -> None: # noqa: N802 + # Presses beside the microphone are ignored by Qt and move the window. + self._pressed = self.hitButton(event.position().toPoint()) + self.update() + super().mousePressEvent(event) + + def mouseReleaseEvent(self, event) -> None: # noqa: N802 + self._pressed = False + self.update() + super().mouseReleaseEvent(event) + + def paintEvent(self, _event) -> None: # noqa: N802 + painter = QPainter(self) + painter.setRenderHint(QPainter.RenderHint.Antialiasing) + # PyQt6 only accepts QPointF here; a TypeError in paintEvent aborts the app. + center = self._center() if self._mode == "RECORDING": - self._draw_stop(p) - elif self._mode == "PROCESSING": - self._draw_spinner(p) - else: - self._draw_mic(p, QColor("#3a2a04")) - p.end() - - def _draw_mic(self, p: QPainter, color: QColor) -> None: - p.setPen(QPen(color, 2.2, Qt.PenStyle.SolidLine, - Qt.PenCapStyle.RoundCap, Qt.PenJoinStyle.RoundJoin)) - p.setBrush(QBrush(color)) - p.drawRoundedRect(QRectF(-4.5, -11.5, 9, 15), 4.5, 4.5) - p.setBrush(Qt.BrushStyle.NoBrush) - p.drawArc(QRectF(-8, -6, 16, 15).toRect(), 200 * 16, 140 * 16) - p.drawLine(0, 7, 0, 12) - p.drawLine(-5, 12, 5, 12) - - def _draw_stop(self, p: QPainter) -> None: - p.setPen(Qt.PenStyle.NoPen) - p.setBrush(QBrush(QColor("#ffffff"))) - p.drawRoundedRect(QRectF(-8.5, -8.5, 17, 17), 5, 5) - - def _draw_spinner(self, p: QPainter) -> None: - p.setPen(QPen(QColor(255, 255, 255, 60), 3, Qt.PenStyle.SolidLine, - Qt.PenCapStyle.RoundCap)) - p.setBrush(Qt.BrushStyle.NoBrush) - p.drawEllipse(QRectF(-12, -12, 24, 24)) - p.setPen(QPen(QColor("#ffffff"), 3, Qt.PenStyle.SolidLine, - Qt.PenCapStyle.RoundCap)) - start = int(-self._phase * 360 * 16) - p.drawArc(QRectF(-12, -12, 24, 24).toRect(), start, 90 * 16) + self._draw_waves(painter, center) + + radius = _FACE_DIAMETER / 2 + circle = QRectF(center.x() - radius, center.y() - radius, _FACE_DIAMETER, _FACE_DIAMETER) + shadow_offset = 2 if self._pressed else 5 + painter.setPen(QPen(QColor(4, 5, 6, 165), 5)) + painter.setBrush(Qt.BrushStyle.NoBrush) + painter.drawEllipse(circle.translated(2, shadow_offset)) + rim = QLinearGradient(circle.topLeft(), circle.bottomRight()) + for stop, color in ((0, "#fff0bd"), (.24, "#c8aa68"), (.62, "#625337"), (1, "#e0c17e")): + rim.setColorAt(stop, QColor(color)) + painter.setPen(QPen(QBrush(rim), 2)) + face = QRadialGradient(center.x() - 13 * _ART_SCALE, center.y() - 25 * _ART_SCALE, + 83 * _ART_SCALE) + face_colors = ( + ((0, "#474a4e"), (.52, "#303338"), (1, "#1a1c1f")) + if self._hovered + else ((0, "#3b3e43"), (.52, "#282b2f"), (1, "#17191b")) + ) + for stop, color in face_colors: + face.setColorAt(stop, QColor(color)) + painter.setBrush(QBrush(face)) + painter.drawEllipse(circle) + painter.setPen(QPen(QColor(255, 255, 255, 20), 1)) + painter.drawEllipse(circle.adjusted(3, 3, -3, -3)) + + if self._mode == "PROCESSING": + progress = QConicalGradient(center, -90 - self._phase * 360) + progress.setColorAt(0, QColor("#ffe6a1")) + progress.setColorAt(.70, QColor("#b28b43")) + progress.setColorAt(.71, QColor(178, 139, 67, 20)) + progress.setColorAt(1, QColor(178, 139, 67, 20)) + painter.setPen(QPen(QBrush(progress), _RING_PEN, Qt.PenStyle.SolidLine, + Qt.PenCapStyle.RoundCap)) + painter.setBrush(Qt.BrushStyle.NoBrush) + ring_radius = _RING_DIAMETER / 2 + painter.drawArc(QRectF(center.x() - ring_radius, center.y() - ring_radius, + _RING_DIAMETER, _RING_DIAMETER), 0, 360 * 16) + self._draw_mic(painter, center) + + def _draw_waves(self, painter: QPainter, center: QPointF) -> None: + """Mirrored gold level bars rippling outward beside the microphone.""" + painter.save() + painter.setPen(Qt.PenStyle.NoPen) + for index in range(_WAVE_BARS): + offset = _WAVE_CLEARANCE + index * _WAVE_PITCH + envelope = 1.0 - index / _WAVE_BARS + swing = 0.5 + 0.5 * math.sin(self._phase * math.tau - index * 0.85) + height = 4 + (_WAVE_MAX_HEIGHT - 4) * envelope * (0.35 + 0.65 * swing) + painter.setBrush(QColor(240, 199, 105, 235 - index * 18)) + for x in (center.x() - offset, center.x() + offset): + painter.drawRoundedRect( + QRectF(x - _WAVE_WIDTH / 2, center.y() - height / 2, _WAVE_WIDTH, height), + _WAVE_WIDTH / 2, _WAVE_WIDTH / 2, + ) + painter.restore() + + def _draw_mic(self, painter: QPainter, center: QPointF) -> None: + painter.save() + painter.translate(center) + painter.scale(_ART_SCALE, _ART_SCALE) + gold =QLinearGradient(-12, -30, 16, 41) + for stop, color in ((0, "#fff1ba"), (.28, "#f2d68d"), (.53, "#a98240"), + (.76, "#f7dc91"), (1, "#8d6934")): + gold.setColorAt(stop, QColor(color)) + brush = QBrush(gold) + painter.setPen(QPen(QColor("#fce8ae"), 1.1)) + painter.setBrush(brush) + painter.drawPath(_MIC_BODY) + painter.setBrush(Qt.BrushStyle.NoBrush) + painter.setPen(QPen(brush, 5.2, Qt.PenStyle.SolidLine, Qt.PenCapStyle.RoundCap)) + painter.drawArc(QRectF(-20, -8, 40, 40), 180 * 16, 180 * 16) + painter.drawLine(0, 31, 0, 41) + painter.drawLine(-12, 41, 12, 41) + painter.restore() + + +class DictationPopup(QFrame): + def __init__(self, owner: "MainWindow") -> None: + super().__init__(owner, Qt.WindowType.Popup | Qt.WindowType.FramelessWindowHint) + self.setObjectName("dictationPopup") + self.setFixedWidth(248) + self.setAttribute(Qt.WidgetAttribute.WA_StyledBackground, True) + self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) class MainWindow(QWidget): - """Klickbare Oberflaeche fuer Aufnahme-Steuerung und Komfort-Funktionen.""" + """One frameless surface with header, microphone, status and tools. + + Secondary options stay in a transient popup and never enlarge the surface. + """ def __init__(self, controller, parent: Optional[QWidget] = None) -> None: super().__init__(parent) self._controller = controller self._state = "IDLE" self._rec_start: Optional[float] = None - self.setWindowTitle(t("app.name")) - self.setFixedWidth(256) - self.resize(256, 232) - + # The panel draws its own title and window controls. + self.setWindowFlags(Qt.WindowType.Window | Qt.WindowType.FramelessWindowHint) + self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) + self.setObjectName("mainWidgetWindow") + self.setStyleSheet(self._qss()) self._timer = QTimer(self) self._timer.setInterval(1000) self._timer.timeout.connect(self._update_timer_label) - self._setup_ui() self.update_state("IDLE", None, None) - def _setup_ui(self) -> None: - layout = QVBoxLayout(self) - layout.setContentsMargins(12, 10, 12, 12) - layout.setSpacing(8) - - # Workflow-Auswahl (Karten-Pill) - self._workflow_combo = QComboBox() - self._workflow_combo.setMinimumHeight(28) - for wf in _WORKFLOW_ORDER: - self._workflow_combo.addItem(t(f"workflow.{wf.value}.name"), userData=wf) - self._workflow_combo.currentIndexChanged.connect(self._on_workflow_changed) - layout.addWidget(self._workflow_combo) + @staticmethod + def _qss() -> str: + return theme.MAIN_WINDOW_QSS - # Schreibstil-Preset-Auswahl (nur sichtbar bei Blitztext+) - self._preset_combo = QComboBox() - self._preset_combo.setMinimumHeight(28) - for key in WRITING_PRESET_KEYS: - if key == CUSTOM_PRESET_KEY: - self._preset_combo.insertSeparator(self._preset_combo.count()) - self._preset_combo.addItem(t(f"preset.{key}.name"), userData=key) - self._preset_combo.currentIndexChanged.connect(self._on_preset_changed) - self._preset_combo.setVisible(False) - layout.addWidget(self._preset_combo) + def _setup_ui(self) -> None: + root = QVBoxLayout(self) + root.setContentsMargins(*_SHADOW_MARGINS) + root.setSpacing(0) + # Size the native window from its visible surface instead of a fixed guess. + root.setSizeConstraint(QLayout.SizeConstraint.SetFixedSize) + self._main_panel = QFrame(self) + self._main_panel.setObjectName("mainPanel") + _shadow(self._main_panel, 14, 4, 150) + panel = QVBoxLayout(self._main_panel) + panel.setContentsMargins(*_PANEL_PADDING) + panel.setSpacing(0) + + header = QHBoxLayout() + header.setSpacing(2) + self._title_label = QLabel(self.windowTitle(), self._main_panel) + self._title_label.setObjectName("panelTitle") + self.windowTitleChanged.connect(self._title_label.setText) + header.addWidget(self._title_label) + header.addStretch(1) + self._btn_minimize = self._window_button( + "minimize", t("mainwindow.tooltip.minimize"), self.showMinimized + ) + header.addWidget(self._btn_minimize) + self._btn_close = self._window_button( + "close", t("mainwindow.tooltip.close"), self.close + ) + self._btn_close.setProperty("role", "close") + header.addWidget(self._btn_close) + panel.addLayout(header) - # Hero: runder Record-Shutter - self._btn_toggle = RecordButton() + self._btn_toggle = RecordButton(self._main_panel) self._btn_toggle.clicked.connect(self._on_toggle_clicked) - hero_row = QHBoxLayout() - hero_row.addStretch() - hero_row.addWidget(self._btn_toggle) - hero_row.addStretch() - layout.addLayout(hero_row) - - # Statuszeile: Punkt + Text + Timer in einer kompakten Zeile - status_row = QHBoxLayout() - status_row.setSpacing(6) - status_row.addStretch() + panel.addWidget(self._btn_toggle, 0, Qt.AlignmentFlag.AlignHCenter) + status = QHBoxLayout() + status.setSpacing(6) + status.setAlignment(Qt.AlignmentFlag.AlignCenter) self._rec_indicator = QLabel("●") - self._rec_indicator.setStyleSheet(f"color: {theme.STATE_IDLE}; font-size: 10px;") - status_row.addWidget(self._rec_indicator) + status.addWidget(self._rec_indicator) self._status_label = QLabel(t("mainwindow.status.ready")) - self._status_label.setStyleSheet("font-size: 12px; font-weight: 600;") - status_row.addWidget(self._status_label) + self._status_label.setObjectName("statusLabel") + status.addWidget(self._status_label) self._timer_label = QLabel("00:00") - self._timer_label.setStyleSheet( - "font-size: 12px; font-family: monospace; font-weight: 600; " - f"color: {theme.APP_TEXT_FAINT};" + self._timer_label.setObjectName("timerLabel") + status.addWidget(self._timer_label) + panel.addLayout(status) + panel.addSpacing(_TOOLBAR_TOP_GAP) + + # The tool row is part of the same surface; its width sets the panel width. + tools = QHBoxLayout() + tools.setSpacing(_TOOL_GAP) + self._btn_edit_text = self._toolbar_button( + "edit", t("mainwindow.tooltip.edit_text"), + self._controller.show_compose_window, accent=True, ) - status_row.addWidget(self._timer_label) - status_row.addStretch() - layout.addLayout(status_row) - - # Sekundaerzeile: Verwerfen + Diktat (Pills) - sec_row = QHBoxLayout() - sec_row.setSpacing(6) - self._btn_discard = QPushButton(t("mainwindow.button.discard")) - self._btn_discard.setMinimumHeight(28) - self._btn_discard.setStyleSheet("border-radius: 14px; font-weight: 600;") - self._btn_discard.setEnabled(False) - self._btn_discard.clicked.connect(self._on_discard_clicked) - sec_row.addWidget(self._btn_discard) - - self._btn_dictation = QPushButton(t("mainwindow.button.dictation")) - self._btn_dictation.setMinimumHeight(28) - self._btn_dictation.setStyleSheet("border-radius: 14px; font-weight: 600;") - self._btn_dictation.setCheckable(True) - self._btn_dictation.clicked.connect(self._on_dictation_clicked) - sec_row.addWidget(self._btn_dictation) - layout.addLayout(sec_row) - - # Eigene Zeile: zentrale manuelle Textbearbeitung bleibt auch bei der - # kompakten Fensterbreite vollständig beschriftet. - self._btn_edit_text = QPushButton(t("mainwindow.button.edit_text")) - self._btn_edit_text.setMinimumHeight(30) - self._btn_edit_text.setStyleSheet("border-radius: 15px; font-weight: 600;") - self._btn_edit_text.setToolTip(t("mainwindow.tooltip.edit_text")) - self._btn_edit_text.setFocusPolicy(Qt.FocusPolicy.StrongFocus) + self._btn_edit_text.setAccessibleName(t("mainwindow.button.edit_text")) self._btn_edit_text.setShortcut(QKeySequence("Ctrl+E")) - self._btn_edit_text.clicked.connect( - lambda _checked=False: self._controller.show_compose_window() + self._btn_history = self._toolbar_button( + "history", t("mainwindow.button.history").format(count=0), + self._controller.show_history_panel, width=_HISTORY_BUTTON_WIDTH, + text="0", ) - layout.addWidget(self._btn_edit_text) - - # Unterzeile: Verlauf (mit Zaehler), Vorlesen, Einstellungen - bottom_row = QHBoxLayout() - bottom_row.setSpacing(6) - self._btn_history = QPushButton(t("mainwindow.button.history").format(count=0)) - self._btn_history.setMinimumHeight(28) - self._btn_history.setStyleSheet(f"border-radius: 14px; color: {theme.APP_TEXT_DIM};") - self._btn_history.clicked.connect(self._controller.show_history_panel) - bottom_row.addWidget(self._btn_history, 1) - - self._btn_tts = QPushButton("♪") - self._btn_tts.setFixedSize(28, 28) - self._btn_tts.setStyleSheet( - f"border-radius: 14px; font-size: 13px; color: {theme.APP_TEXT_DIM}; padding: 0;" + self._btn_tts = self._toolbar_button( + "speaker", t("mainwindow.tooltip.tts"), self._controller.show_tts_window ) - self._btn_tts.setToolTip(t("mainwindow.tooltip.tts")) - self._btn_tts.clicked.connect(self._controller.show_tts_window) - bottom_row.addWidget(self._btn_tts) - - self._btn_settings = QPushButton("⚙︎") - self._btn_settings.setFixedSize(28, 28) - self._btn_settings.setStyleSheet( - f"border-radius: 14px; font-size: 13px; color: {theme.APP_TEXT_DIM}; padding: 0;" + self._btn_settings = self._toolbar_button( + "settings", t("mainwindow.tooltip.settings"), + self._controller.show_settings_dialog ) - self._btn_settings.setToolTip(t("mainwindow.tooltip.settings")) - self._btn_settings.clicked.connect(self._controller.show_settings_dialog) - bottom_row.addWidget(self._btn_settings) - layout.addLayout(bottom_row) - - # ------------------------------------------------------------------ - # Aktionen - # ------------------------------------------------------------------ + self._btn_options = self._toolbar_button( + "more", t("mainwindow.tooltip.more"), self._show_options_popup + ) + self._btn_options.setObjectName("panelTrigger") + for button in ( + self._btn_edit_text, self._btn_history, self._btn_tts, + self._btn_settings, self._btn_options, + ): + tools.addWidget(button) + panel.addLayout(tools) + root.addWidget(self._main_panel) + self._setup_options_popup() + + def _toolbar_button( + self, icon_name: str, tooltip: str, callback, *, width: int = theme.TOOL_BUTTON_SIZE, + accent: bool = False, text: str = "", + ) -> QPushButton: + button = QPushButton(text, self._main_panel) + button.setObjectName("goldAction" if accent else "toolbarButton") + icon_color = "#2b210e" if accent else theme.APP_TEXT_DIM + button.setIcon(theme.create_ui_icon(icon_name, icon_color, theme.TOOL_ICON_SIZE)) + button.setIconSize(QSize(theme.TOOL_ICON_SIZE, theme.TOOL_ICON_SIZE)) + button.setFixedSize(width, theme.TOOL_BUTTON_SIZE) + button.setToolTip(tooltip) + button.setAccessibleName(tooltip) + button.setFocusPolicy(Qt.FocusPolicy.StrongFocus) + button.clicked.connect(callback) + return button + + def _window_button(self, icon_name: str, tooltip: str, callback) -> QPushButton: + button = QPushButton(self._main_panel) + button.setObjectName("windowControl") + button.setIcon(theme.create_ui_icon(icon_name, theme.APP_TEXT_DIM, 14)) + button.setIconSize(QSize(14, 14)) + button.setFixedSize(theme.WINDOW_BUTTON_SIZE, theme.WINDOW_BUTTON_SIZE) + button.setToolTip(tooltip) + button.setAccessibleName(tooltip) + button.setFocusPolicy(Qt.FocusPolicy.TabFocus) + button.clicked.connect(lambda _checked=False: callback()) + return button + + def _setup_options_popup(self) -> None: + self._options_popup = DictationPopup(self) + outer = QVBoxLayout(self._options_popup) + outer.setContentsMargins(16, 16, 16, 20) + self._popup_surface = QFrame(self._options_popup) + self._popup_surface.setObjectName("popupSurface") + _shadow(self._popup_surface, 30, 8, 185) + outer.addWidget(self._popup_surface) + popup = QVBoxLayout(self._popup_surface) + popup.setContentsMargins(12, 12, 12, 12) + popup.setSpacing(8) + self._workflow_combo = QComboBox(self._popup_surface) + self._workflow_combo.setObjectName("popupCombo") + for workflow in _WORKFLOW_ORDER: + self._workflow_combo.addItem(t(f"workflow.{workflow.value}.name"), userData=workflow) + self._workflow_combo.currentIndexChanged.connect(self._on_workflow_changed) + popup.addWidget(self._workflow_combo) + self._preset_combo = QComboBox(self._popup_surface) + self._preset_combo.setObjectName("popupCombo") + for key in WRITING_PRESET_KEYS: + if key == CUSTOM_PRESET_KEY: + self._preset_combo.insertSeparator(self._preset_combo.count()) + self._preset_combo.addItem(t(f"preset.{key}.name"), userData=key) + self._preset_combo.currentIndexChanged.connect(self._on_preset_changed) + self._preset_combo.hide() + popup.addWidget(self._preset_combo) + self._btn_prompt = QPushButton(t("compose.custom.edit"), self._popup_surface) + self._btn_prompt.setObjectName("promptButton") + self._btn_prompt.clicked.connect(self._edit_prompt) + self._btn_prompt.hide() + popup.addWidget(self._btn_prompt) + self._btn_dictation = QPushButton(t("mainwindow.button.dictation"), self._popup_surface) + self._btn_dictation.setObjectName("dictationToggle") + self._btn_dictation.setCheckable(True) + self._btn_dictation.clicked.connect(self._on_dictation_clicked) + popup.addWidget(self._btn_dictation) + self._btn_discard = QPushButton(t("mainwindow.button.discard"), self._popup_surface) + self._btn_discard.setObjectName("discardButton") + self._btn_discard.setEnabled(False) + self._btn_discard.clicked.connect(self._on_discard_clicked) + popup.addWidget(self._btn_discard) + self._options_popup.adjustSize() + self._options_popup.hide() + + def _show_options_popup(self) -> None: + self._options_popup.adjustSize() + anchor = self._btn_options.mapToGlobal(QPoint(self._btn_options.width(), 0)) + position = QPoint(anchor.x() - self._options_popup.width(), anchor.y() - self._options_popup.height() - 4) + screen = QApplication.screenAt(anchor) or QApplication.primaryScreen() + if screen: + area = screen.availableGeometry() + position.setX(max(area.left() + 6, min(position.x(), area.right() - self._options_popup.width() - 6))) + position.setY(max(area.top() + 6, min(position.y(), area.bottom() - self._options_popup.height() - 6))) + self._options_popup.move(position) + self._options_popup.show() + self._options_popup.raise_() def _selected_workflow(self) -> WorkflowType: - wf = self._workflow_combo.currentData() - return wf if isinstance(wf, WorkflowType) else WorkflowType.TRANSCRIPTION + workflow = self._workflow_combo.currentData() + return workflow if isinstance(workflow, WorkflowType) else WorkflowType.TRANSCRIPTION @pyqtSlot() def _on_workflow_changed(self) -> None: - is_text_improver = self._selected_workflow() == WorkflowType.TEXT_IMPROVER - self._preset_combo.setVisible(is_text_improver) - self.adjustSize() + visible = self._selected_workflow() == WorkflowType.TEXT_IMPROVER + self._preset_combo.setVisible(visible) + self._btn_prompt.setVisible(visible) + self._options_popup.adjustSize() + + def _edit_prompt(self) -> None: + self._options_popup.hide() + self._controller.show_custom_prompt() @pyqtSlot() def _on_preset_changed(self) -> None: @@ -309,35 +449,27 @@ def _on_toggle_clicked(self) -> None: @pyqtSlot() def _on_discard_clicked(self) -> None: + self._options_popup.hide() self._controller.gui_discard() @pyqtSlot() def _on_dictation_clicked(self) -> None: + self._update_dictation_text() self._controller.set_dictation_mode(self._btn_dictation.isChecked()) - # ------------------------------------------------------------------ - # Vom Controller aufgerufen - # ------------------------------------------------------------------ - def update_state(self, state: str, workflow: Optional[WorkflowType], error: Optional[str]) -> None: self._state = state recording = state == "RECORDING" busy = state in ("TRANSCRIBING", "LLM_REWRITING") - - # Text bleibt fuer Tests/Logik gesetzt; der Shutter malt den Glyph. self._btn_toggle.setText("Stopp" if recording else "Start") self._btn_toggle.setEnabled(state in ("IDLE", "RECORDING")) - self._btn_toggle.set_mode( - "RECORDING" if recording else ("PROCESSING" if busy else "IDLE") - ) + self._btn_toggle.set_mode("RECORDING" if recording else "PROCESSING" if busy else "IDLE") self._btn_discard.setEnabled(recording) - self._workflow_combo.setEnabled(state == "IDLE") - self._preset_combo.setEnabled(state == "IDLE") - + for control in (self._workflow_combo, self._preset_combo, self._btn_prompt): + control.setEnabled(state == "IDLE") if error: self._set_status(t("mainwindow.status.error"), theme.STATE_ERROR) elif recording: - # Der Workflow steht bereits im Dropdown darueber — kein Suffix noetig. self._set_status(t("mainwindow.status.recording"), theme.STATE_RECORDING) elif state == "TRANSCRIBING": self._set_status(t("mainwindow.status.transcribing"), theme.STATE_PROCESSING) @@ -345,60 +477,76 @@ def update_state(self, state: str, workflow: Optional[WorkflowType], error: Opti self._set_status(t("mainwindow.status.processing"), theme.STATE_PROCESSING) else: self._set_status(t("mainwindow.status.ready"), theme.STATE_IDLE) - + self._timer_label.setVisible(not busy and not error) if recording: if self._rec_start is None: self._rec_start = time.monotonic() self._update_timer_label() self._timer.start() - self._timer_label.setStyleSheet( - "font-size: 12px; font-family: monospace; font-weight: 600; " - f"color: {theme.APP_TEXT};" - ) else: self._timer.stop() self._rec_start = None self._timer_label.setText("00:00") - self._timer_label.setStyleSheet( - "font-size: 12px; font-family: monospace; font-weight: 600; " - f"color: {theme.APP_TEXT_FAINT};" - ) - _ = busy + if workflow is not None: + self._select_workflow(workflow) + + def _select_workflow(self, workflow: WorkflowType) -> None: + for index in range(self._workflow_combo.count()): + if self._workflow_combo.itemData(index) == workflow: + self._workflow_combo.blockSignals(True) + self._workflow_combo.setCurrentIndex(index) + self._workflow_combo.blockSignals(False) + self._on_workflow_changed() + return def _set_status(self, text: str, color: str) -> None: - # Statuspunkt traegt die Statusfarbe; der Text bleibt neutral — - # ruhiger als eine voll eingefaerbte „Ampel"-Zeile. - text_color = theme.APP_TEXT_DIM if color == theme.STATE_IDLE else theme.APP_TEXT self._status_label.setText(text) - self._status_label.setStyleSheet( - f"font-size: 12px; font-weight: 600; color: {text_color};" - ) - self._rec_indicator.setStyleSheet(f"color: {color}; font-size: 10px;") + self._rec_indicator.setStyleSheet(f"color: {color}; font-size: 11px;") def set_history_count(self, count: int) -> None: - self._btn_history.setText(t("mainwindow.button.history").format(count=count)) + label = t("mainwindow.button.history").format(count=count) + self._btn_history.setText(str(count)) + self._btn_history.setToolTip(label) + self._btn_history.setAccessibleName(label) def set_dictation_checked(self, checked: bool) -> None: self._btn_dictation.blockSignals(True) self._btn_dictation.setChecked(checked) self._btn_dictation.blockSignals(False) + self._update_dictation_text() + + def _update_dictation_text(self) -> None: + key = ( + "mainwindow.button.dictation_active" + if self._btn_dictation.isChecked() + else "mainwindow.button.dictation" + ) + self._btn_dictation.setText(t(key)) def set_preset(self, key: str) -> None: - """Setzt den Preset-Combo auf ``key`` ohne Signal auszulösen.""" self._preset_combo.blockSignals(True) - for i in range(self._preset_combo.count()): - if self._preset_combo.itemData(i) == key: - self._preset_combo.setCurrentIndex(i) + for index in range(self._preset_combo.count()): + if self._preset_combo.itemData(index) == key: + self._preset_combo.setCurrentIndex(index) break self._preset_combo.blockSignals(False) def _update_timer_label(self) -> None: - if self._rec_start is None: - return - elapsed = int(time.monotonic() - self._rec_start) - self._timer_label.setText(f"{elapsed // 60:02d}:{elapsed % 60:02d}") - - def closeEvent(self, event: QCloseEvent) -> None: - # Nicht beenden — nur verstecken; App laeuft im Tray weiter. + if self._rec_start is not None: + elapsed = int(time.monotonic() - self._rec_start) + self._timer_label.setText(f"{elapsed // 60:02d}:{elapsed % 60:02d}") + + def mousePressEvent(self, event: QMouseEvent) -> None: # noqa: N802 + """Move the frameless window from any non-interactive part of the panel.""" + if event.button() == Qt.MouseButton.LeftButton: + handle = self.windowHandle() + # The compositor performs the move; required on Wayland. + if handle is not None and handle.startSystemMove(): + event.accept() + return + super().mousePressEvent(event) + + def closeEvent(self, event: QCloseEvent) -> None: # noqa: N802 + self._options_popup.hide() event.ignore() self.hide() diff --git a/app/theme.py b/app/theme.py index ad6fd4c..7946175 100644 --- a/app/theme.py +++ b/app/theme.py @@ -1,113 +1,186 @@ -"""Design-System fuer BlitztextLinux (Breeze-Dark / Glass-Idiom). - -Uebersetzt das exportierte Blitztext Design System (Tokens, Glass-UI-Kit) in -PyQt6: ein globales QSS-Stylesheet plus das Marken-App-Icon (Mikrofon + Blitz). - -Farb- und Radius-Werte stammen 1:1 aus `tokens/colors.css` und -`tokens/spacing.css` des Design-Systems: - - Breeze-Dark-Flaechen (#1b1e20 / #2a2e32 / #31363b / #41464c) - - Brand-Amber --blitz-500 #e0a90f / --blitz-300 #f2cd4f - - Breeze-Blau #3daee9 (OS-Akzent, Fokus) - - Status: idle #2e7d32, recording #c62828, processing #ef6c00, error #757575 -""" +"""Central dark-neumorphic design system for the native Blitztext UI.""" from __future__ import annotations +import re +import xml.etree.ElementTree as ET +from functools import lru_cache from pathlib import Path -from PyQt6.QtCore import Qt -from PyQt6.QtGui import QBrush, QColor, QIcon, QPainter, QPen, QPixmap +from PyQt6.QtCore import QPointF, QRectF, Qt +from PyQt6.QtGui import ( + QBrush, + QColor, + QIcon, + QPainter, + QPainterPath, + QPen, + QPixmap, + QPolygonF, +) # --- Token-Konstanten (aus dem Design-System) ----------------------------- -BLITZ_500 = "#e0a90f" -BLITZ_400 = "#ecbb2a" -BLITZ_300 = "#f2cd4f" - -BREEZE_VIEW = "#1b1e20" -BREEZE_WINDOW = "#2a2e32" -BREEZE_BUTTON = "#31363b" -BREEZE_BUTTON_HOV = "#3b4045" -BREEZE_LINE = "#41464c" -BREEZE_BLUE = "#3daee9" - -APP_TEXT = "#f4f6f8" -APP_TEXT_DIM = "#9ba2ab" -APP_TEXT_FAINT = "#6e757e" - -# Feine Hairline-Borders statt voller Linienfarbe (dezenter Glass-Look) -HAIRLINE = "rgba(255, 255, 255, 0.08)" -HAIRLINE_STRONG = "rgba(255, 255, 255, 0.16)" - -STATE_IDLE = "#2e7d32" -STATE_RECORDING = "#c62828" -STATE_PROCESSING = "#ef6c00" -STATE_ERROR = "#757575" +BLITZ_500 = "#d6b260" +BLITZ_400 = "#e6c878" +BLITZ_300 = "#f4dda0" + +APP_BACKGROUND = "#151719" +APP_WINDOW = "#1b1d20" +APP_SURFACE = "#24272b" +APP_SURFACE_RAISED = "#2c3035" +APP_SURFACE_HOVER = "#353a40" +APP_SURFACE_SUNK = "#17191c" +APP_SURFACE_DISABLED = "#202327" +APP_LINE = "#3b4047" +APP_LINE_SOFT = "rgba(255, 255, 255, 0.07)" +APP_LINE_STRONG = "rgba(255, 255, 255, 0.14)" + +# Compatibility aliases used by older widgets while they share the new world. +BREEZE_VIEW = APP_SURFACE_SUNK +BREEZE_WINDOW = APP_WINDOW +BREEZE_BUTTON = APP_SURFACE_RAISED +BREEZE_BUTTON_HOV = APP_SURFACE_HOVER +BREEZE_LINE = APP_LINE +BREEZE_BLUE = BLITZ_500 + +APP_TEXT = "#f2f1ed" +APP_TEXT_DIM = "#bab8b1" +APP_TEXT_FAINT = "#8e8d88" + +HAIRLINE = APP_LINE_SOFT +HAIRLINE_STRONG = APP_LINE_STRONG + +STATE_IDLE = "#86c99a" +STATE_RECORDING = BLITZ_400 +STATE_PROCESSING = BLITZ_300 +STATE_ERROR = "#e88787" +STATE_WARNING = "#e7bd70" + +# Record button: round microphone plus room for the recording waves beside it. +RECORD_BUTTON_WIDTH = 160 +RECORD_BUTTON_HEIGHT = 98 +TOOL_BUTTON_SIZE = 32 +TOOL_ICON_SIZE = 18 +WINDOW_BUTTON_SIZE = 22 ASSETS_DIR = Path(__file__).resolve().parent / "assets" +# Official Blitztext mark (identical to blitztextweb/brand/logo-mark-dark.svg). +BRAND_MARK_SVG = ASSETS_DIR / "logo-mark-dark.svg" +_BRAND_BOLT_FILL = "#e0a90f" +# Same geometry as the asset; only used if the asset cannot be read. +_BRAND_CAPSULE_FALLBACK = (16.0, 6.0, 16.0, 26.0) +_BRAND_BOLT_FALLBACK = "M26 11l-6 9h4l-2 7 6-9.5h-4z" + -# --- Globales QSS-Stylesheet ---------------------------------------------- -# Modernes Breeze-Dark mit weichen Rundungen, dezenten Hairlines und einem -# Breeze-Blau-Fokusring. Bewusst zurueckhaltend, damit es im KDE-Tray sauber -# wirkt und Dialoge (Einstellungen, Verlauf) konsistent aussehen. APP_QSS = f""" * {{ color: {APP_TEXT}; font-size: 12px; + selection-background-color: {BLITZ_500}; + selection-color: #19150d; }} -QWidget {{ - background-color: {BREEZE_WINDOW}; +QWidget, QDialog {{ + background-color: {APP_WINDOW}; }} QLabel {{ background: transparent; }} +QLabel[role="secondary"] {{ color: {APP_TEXT_DIM}; }} +QLabel[role="muted"] {{ color: {APP_TEXT_FAINT}; }} +QLabel[role="title"] {{ font-size: 16px; font-weight: 650; }} +QLabel[status="success"] {{ color: {STATE_IDLE}; }} +QLabel[status="warning"] {{ color: {STATE_WARNING}; }} +QLabel[status="error"] {{ color: {STATE_ERROR}; }} + +QFrame#dialogSurface, QFrame#sectionSurface {{ + background: {APP_SURFACE}; + border: 1px solid {APP_LINE_SOFT}; + border-radius: 14px; +}} +QFrame#historyEntry {{ + background: {APP_SURFACE}; + border: 1px solid {APP_LINE_SOFT}; + border-radius: 11px; + margin: 2px; +}} +QFrame#historyEntry[highlighted="true"] {{ + background: #373123; + border-color: rgba(214, 178, 96, 0.50); +}} -/* Standard-Buttons: kompakt, Hairline-Border, klare Zustaende */ QPushButton {{ - background-color: {BREEZE_BUTTON}; - border: 1px solid {HAIRLINE}; - border-radius: 8px; - padding: 3px 8px; + background: qlineargradient(x1:0, y1:0, x2:1, y2:1, + stop:0 {APP_SURFACE_RAISED}, stop:1 {APP_SURFACE}); + border: 1px solid {APP_LINE_SOFT}; + border-radius: 9px; + padding: 7px 12px; color: {APP_TEXT}; + min-height: 18px; }} QPushButton:hover {{ - background-color: {BREEZE_BUTTON_HOV}; - border-color: {HAIRLINE_STRONG}; + background: {APP_SURFACE_HOVER}; + border-color: {APP_LINE_STRONG}; +}} +QPushButton#primaryAction {{ + background: qlineargradient(x1:0, y1:0, x2:1, y2:1, + stop:0 {BLITZ_300}, stop:0.48 {BLITZ_500}, stop:1 #a57c35); + color: #1b160c; + font-weight: 700; + border-color: rgba(255, 236, 177, 0.64); +}} +QPushButton#primaryAction:disabled {{ + background: {APP_SURFACE_DISABLED}; + color: {APP_TEXT_FAINT}; + border-color: {APP_LINE_SOFT}; }} QPushButton:pressed {{ - background-color: #272b2f; - border-color: {HAIRLINE}; + background: {APP_SURFACE_SUNK}; + border-color: rgba(214, 178, 96, 0.28); }} QPushButton:focus {{ - border-color: rgba(61, 174, 233, 0.65); + border-color: rgba(230, 200, 120, 0.78); outline: none; }} QPushButton:disabled {{ color: {APP_TEXT_FAINT}; - background-color: #2d3135; + background: {APP_SURFACE_DISABLED}; border-color: rgba(255, 255, 255, 0.04); }} QPushButton:checked {{ - background-color: rgba(224, 169, 15, 0.14); - border-color: rgba(224, 169, 15, 0.40); + background: #3b3424; + border-color: rgba(214, 178, 96, 0.48); color: {BLITZ_300}; }} +QPushButton#iconButton, QPushButton#toolbarButton, QPushButton#goldAction, +QPushButton#panelTrigger {{ padding: 0; min-height: 0; }} +QPushButton#recordButton {{ + background: transparent; + border: none; + padding: 0; + min-width: {RECORD_BUTTON_WIDTH}px; + max-width: {RECORD_BUTTON_WIDTH}px; + min-height: {RECORD_BUTTON_HEIGHT}px; + max-height: {RECORD_BUTTON_HEIGHT}px; +}} +QPushButton#iconButton {{ border-radius: 8px; }} +QPushButton[danger="true"] {{ color: {STATE_ERROR}; }} +QPushButton[success="true"] {{ color: {STATE_IDLE}; }} -/* Eingaben & Auswahl */ -QComboBox, QLineEdit, QSpinBox, QPlainTextEdit, QTextEdit {{ - background-color: {BREEZE_VIEW}; - border: 1px solid {HAIRLINE}; - border-radius: 8px; - padding: 4px 8px; - selection-background-color: {BREEZE_BLUE}; +QComboBox, QLineEdit, QSpinBox, QPlainTextEdit, QTextEdit, QListWidget {{ + background: {APP_SURFACE_SUNK}; + border: 1px solid {APP_LINE_SOFT}; + border-radius: 9px; + padding: 7px 9px; }} -QComboBox:hover, QLineEdit:hover {{ - border-color: {HAIRLINE_STRONG}; +QComboBox:hover, QLineEdit:hover, QPlainTextEdit:hover, QTextEdit:hover, +QListWidget:hover {{ + border-color: {APP_LINE_STRONG}; }} QComboBox:focus, QLineEdit:focus, QSpinBox:focus, -QPlainTextEdit:focus, QTextEdit:focus {{ - border-color: rgba(61, 174, 233, 0.55); +QPlainTextEdit:focus, QTextEdit:focus, QListWidget:focus {{ + border-color: rgba(230, 200, 120, 0.70); }} QComboBox::drop-down {{ border: none; @@ -119,32 +192,36 @@ height: 12px; }} QComboBox QAbstractItemView {{ - background-color: {BREEZE_VIEW}; - border: 1px solid {HAIRLINE_STRONG}; - border-radius: 8px; - selection-background-color: {BREEZE_BLUE}; + background: {APP_SURFACE}; + border: 1px solid {APP_LINE_STRONG}; + border-radius: 10px; + padding: 4px; + selection-background-color: #453b27; + selection-color: {BLITZ_300}; outline: none; }} -/* Tabs (Einstellungen) */ QTabWidget::pane {{ - border: 1px solid {HAIRLINE}; - border-radius: 10px; + background: {APP_SURFACE}; + border: 1px solid {APP_LINE_SOFT}; + border-radius: 12px; top: -1px; }} QTabBar::tab {{ - background: transparent; + background: {APP_SURFACE_SUNK}; color: {APP_TEXT_DIM}; - padding: 6px 12px; - border: none; + padding: 8px 14px; + border: 1px solid {APP_LINE_SOFT}; border-bottom: 2px solid transparent; }} QTabBar::tab:selected {{ - color: {APP_TEXT}; + background: {APP_SURFACE}; + color: {BLITZ_300}; border-bottom: 2px solid {BLITZ_500}; }} QTabBar::tab:hover:!selected {{ color: {APP_TEXT}; + background: {APP_SURFACE_RAISED}; }} QCheckBox {{ @@ -155,37 +232,332 @@ spacing: 8px; }} QCheckBox:focus {{ - border-color: {BLITZ_500}; + border-color: rgba(230, 200, 120, 0.70); +}} +QCheckBox::indicator {{ + width: 16px; + height: 16px; + background: {APP_SURFACE_SUNK}; + border: 1px solid {APP_LINE_STRONG}; + border-radius: 5px; +}} +QCheckBox::indicator:checked {{ + background: {BLITZ_500}; + border-color: {BLITZ_300}; }} QToolTip {{ - background-color: {BREEZE_VIEW}; + background: {APP_SURFACE_RAISED}; color: {APP_TEXT}; - border: 1px solid {HAIRLINE_STRONG}; - padding: 3px 6px; + border: 1px solid {APP_LINE_STRONG}; + border-radius: 7px; + padding: 5px 8px; }} -QScrollBar:vertical {{ +QMenu {{ + background: {APP_SURFACE}; + border: 1px solid {APP_LINE_STRONG}; + border-radius: 11px; + padding: 7px; +}} +QMenu::item {{ + background: transparent; + border-radius: 7px; + padding: 7px 26px 7px 12px; +}} +QMenu::item:selected {{ + background: {APP_SURFACE_HOVER}; + color: {BLITZ_300}; +}} +QMenu::item:disabled {{ color: {APP_TEXT_FAINT}; }} +QMenu::separator {{ + height: 1px; + background: {APP_LINE_SOFT}; + margin: 6px 9px; +}} +QMenu::indicator:checked {{ + background: {BLITZ_500}; + border-radius: 4px; +}} + +QAbstractScrollArea, QAbstractScrollArea::viewport {{ + background: {APP_SURFACE_SUNK}; + border: none; +}} +QScrollArea {{ + border: 1px solid {APP_LINE_SOFT}; + border-radius: 10px; +}} +QScrollBar:vertical, QScrollBar:horizontal {{ background: transparent; width: 8px; + height: 8px; margin: 0; }} -QScrollBar::handle:vertical {{ - background: #4b515a; +QScrollBar::handle:vertical, QScrollBar::handle:horizontal {{ + background: #555b62; border-radius: 4px; min-height: 28px; + min-width: 28px; }} -QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {{ +QScrollBar::add-line, QScrollBar::sub-line {{ + width: 0; height: 0; }} +QSplitter::handle {{ + background: {APP_LINE_SOFT}; + width: 2px; + margin: 8px 5px; +}} +QListWidget::item {{ + border-radius: 6px; + padding: 5px; +}} +QListWidget::item:selected {{ + background: #453b27; + color: {BLITZ_300}; +}} +QDialogButtonBox {{ + background: transparent; +}} +""" + + +MAIN_WINDOW_QSS = f""" +QWidget#mainWidgetWindow {{ background: transparent; }} +QFrame#mainPanel {{ + background: qradialgradient(cx:0.32, cy:0.20, radius:1.05, + stop:0 #30343a, stop:0.58 {APP_SURFACE}, stop:1 #1e2125); + border: 1px solid {APP_LINE_SOFT}; + border-radius: 18px; +}} +QFrame#dictationPopup {{ background: transparent; border: none; }} +QFrame#popupSurface {{ + background: {APP_SURFACE}; + border: 1px solid {APP_LINE_STRONG}; + border-radius: 14px; +}} +QLabel#panelTitle {{ color: {APP_TEXT_DIM}; font-size: 12px; font-weight: 600; padding-left: 2px; }} +QLabel#statusLabel {{ color: {APP_TEXT}; font-size: 12px; font-weight: 600; }} +QLabel#timerLabel {{ color: {APP_TEXT_DIM}; font-family: monospace; font-size: 12px; }} +QPushButton#windowControl {{ + background: transparent; + border: 1px solid transparent; + border-radius: 7px; + padding: 0; + min-height: {WINDOW_BUTTON_SIZE - 2}px; + max-height: {WINDOW_BUTTON_SIZE - 2}px; +}} +QPushButton#windowControl:hover {{ background: {APP_SURFACE_HOVER}; border-color: {APP_LINE_SOFT}; }} +QPushButton#windowControl[role="close"]:hover {{ + background: rgba(232, 135, 135, 0.22); + border-color: rgba(232, 135, 135, 0.36); +}} +QPushButton#toolbarButton, QPushButton#panelTrigger, QPushButton#goldAction {{ + /* QSS min-height would otherwise reset the fixed Python size to 0. */ + min-height: {TOOL_BUTTON_SIZE - 2}px; + max-height: {TOOL_BUTTON_SIZE - 2}px; +}} +QPushButton#toolbarButton, QPushButton#panelTrigger {{ + background: transparent; + border: 1px solid transparent; + border-radius: 9px; + color: {APP_TEXT_DIM}; +}} +QPushButton#toolbarButton:hover, QPushButton#panelTrigger:hover {{ + background: {APP_SURFACE_HOVER}; + border-color: {APP_LINE_SOFT}; +}} +QPushButton#goldAction {{ + background: qlineargradient(x1:0, y1:0, x2:1, y2:1, + stop:0 {BLITZ_300}, stop:0.50 {BLITZ_500}, stop:1 #a57c35); + border: 1px solid rgba(255, 236, 177, 0.62); + border-radius: 9px; +}} +QPushButton#goldAction:hover {{ + background: qlineargradient(x1:0, y1:0, x2:1, y2:1, + stop:0 #fff0bd, stop:0.50 {BLITZ_400}, stop:1 #bb9145); +}} +QComboBox#popupCombo {{ min-height: 22px; }} +QPushButton#dictationToggle {{ color: {BLITZ_300}; }} +QPushButton#discardButton {{ color: {STATE_ERROR}; }} """ def apply_theme(app) -> None: - """Wendet das Blitztext-Glass-Theme global auf die QApplication an.""" + """Apply the shared dark-neumorphic theme to the QApplication.""" app.setStyleSheet(APP_QSS) +def repolish(widget) -> None: + """Re-evaluate QSS after a dynamic property changes.""" + style = widget.style() + style.unpolish(widget) + style.polish(widget) + widget.update() + + +def set_status_role(label, role: str | None) -> None: + """Apply a semantic status role without embedding colors in feature code.""" + label.setProperty("status", role or "") + repolish(label) + + +def create_ui_icon(name: str, color: str = APP_TEXT_DIM, size: int = 22) -> QIcon: + """Draw a consistent, dependency-free line icon for native controls.""" + scale = 2 + pixmap = QPixmap(size * scale, size * scale) + pixmap.fill(Qt.GlobalColor.transparent) + painter = QPainter(pixmap) + painter.setRenderHint(QPainter.RenderHint.Antialiasing) + painter.scale(scale, scale) + pen = QPen(QColor(color), 1.8, Qt.PenStyle.SolidLine, + Qt.PenCapStyle.RoundCap, Qt.PenJoinStyle.RoundJoin) + painter.setPen(pen) + painter.setBrush(Qt.BrushStyle.NoBrush) + center = size / 2 + + if name == "edit": + painter.drawLine(QPointF(5, 16.5), QPointF(15.8, 5.7)) + painter.drawLine(QPointF(14.2, 4.8), QPointF(17.2, 7.8)) + painter.drawLine(QPointF(4.5, 17.5), QPointF(8, 16.7)) + elif name == "history": + painter.drawArc(QRectF(4, 4, 14, 14), 35 * 16, 292 * 16) + painter.drawLine(QPointF(4.3, 5.2), QPointF(4.3, 9)) + painter.drawLine(QPointF(4.3, 5.2), QPointF(8, 5.2)) + painter.drawLine(QPointF(center, 7), QPointF(center, center + .5)) + painter.drawLine(QPointF(center, center + .5), QPointF(14.5, 13)) + elif name == "speaker": + path = QPainterPath(QPointF(4, 9)) + path.lineTo(8, 9) + path.lineTo(12, 5.5) + path.lineTo(12, 16.5) + path.lineTo(8, 13) + path.lineTo(4, 13) + path.closeSubpath() + painter.drawPath(path) + painter.drawArc(QRectF(11, 7, 7, 8), -55 * 16, 110 * 16) + painter.drawArc(QRectF(10, 4.5, 11, 13), -52 * 16, 104 * 16) + elif name == "settings": + painter.drawEllipse(QRectF(center - 2.4, center - 2.4, 4.8, 4.8)) + painter.drawEllipse(QRectF(center - 6, center - 6, 12, 12)) + for dx, dy in ((0, -8), (0, 8), (-8, 0), (8, 0), + (-5.7, -5.7), (5.7, 5.7), (-5.7, 5.7), (5.7, -5.7)): + start = QPointF(center + dx * .73, center + dy * .73) + end = QPointF(center + dx, center + dy) + painter.drawLine(start, end) + elif name == "more": + painter.setBrush(QColor(color)) + painter.setPen(Qt.PenStyle.NoPen) + for x in (6, center, size - 6): + painter.drawEllipse(QPointF(x, center), 1.4, 1.4) + elif name == "minimize": + painter.drawLine(QPointF(size * .28, center), QPointF(size * .72, center)) + elif name == "close": + near, far = size * .3, size * .7 + painter.drawLine(QPointF(near, near), QPointF(far, far)) + painter.drawLine(QPointF(near, far), QPointF(far, near)) + elif name == "copy": + painter.drawRoundedRect(QRectF(7, 5, 10, 12), 2, 2) + painter.drawRoundedRect(QRectF(4, 8, 10, 11), 2, 2) + elif name == "delete": + painter.drawLine(QPointF(6, 7), QPointF(16, 7)) + painter.drawLine(QPointF(9, 4.5), QPointF(13, 4.5)) + painter.drawRoundedRect(QRectF(7, 7, 8, 11), 1.5, 1.5) + painter.drawLine(QPointF(10, 10), QPointF(10, 15)) + painter.drawLine(QPointF(12.5, 10), QPointF(12.5, 15)) + elif name == "check": + painter.drawLine(QPointF(5, 11), QPointF(9, 15)) + painter.drawLine(QPointF(9, 15), QPointF(17, 7)) + elif name in {"previous", "next"}: + direction = -1 if name == "previous" else 1 + painter.drawLine( + QPointF(center + direction * 3, 6), + QPointF(center - direction * 3, center), + ) + painter.drawLine( + QPointF(center - direction * 3, center), + QPointF(center + direction * 3, size - 6), + ) + + painter.end() + pixmap.setDevicePixelRatio(scale) + return QIcon(pixmap) + + +def _svg_path_points(d: str) -> list[tuple[float, float]]: + """Parse a single straight-line SVG subpath (M/L/H/V/Z, absolute or relative).""" + tokens = re.findall(r"[A-Za-z]|-?(?:\d+\.?\d*|\.\d+)", d) + points: list[tuple[float, float]] = [] + x = y = 0.0 + command = "" + index = 0 + while index < len(tokens): + token = tokens[index] + if token.isalpha(): + command = token + index += 1 + if command in "Zz": + break + continue + relative = command.islower() + kind = command.upper() + if kind in ("M", "L"): + dx, dy = float(tokens[index]), float(tokens[index + 1]) + index += 2 + x, y = (x + dx, y + dy) if relative else (dx, dy) + if kind == "M": + # Further coordinate pairs after a moveto are implicit linetos. + command = "l" if relative else "L" + elif kind in ("H", "V"): + value = float(tokens[index]) + index += 1 + if kind == "H": + x = x + value if relative else value + else: + y = y + value if relative else value + else: + raise ValueError(f"unsupported SVG path command: {command!r}") + points.append((x, y)) + return points + + +@lru_cache(maxsize=1) +def _brand_bolt_geometry() -> tuple[tuple[float, ...], tuple[tuple[float, float], ...]]: + """Capsule rect and bolt polygon of the official mark, in SVG units.""" + try: + ns = "{http://www.w3.org/2000/svg}" + root = ET.parse(BRAND_MARK_SVG).getroot() + rect = root.find(f"{ns}rect") + bolt = next(path for path in root.iter(f"{ns}path") + if path.get("fill", "").lower() == _BRAND_BOLT_FILL) + capsule = tuple(float(rect.get(key)) for key in ("x", "y", "width", "height")) + points = _svg_path_points(bolt.get("d")) + except (OSError, ET.ParseError, StopIteration, AttributeError, + TypeError, ValueError, IndexError): + capsule, points = _BRAND_CAPSULE_FALLBACK, _svg_path_points(_BRAND_BOLT_FALLBACK) + return capsule, tuple(points) + + +def brand_bolt_path(capsule: QRectF) -> QPainterPath: + """Official Blitztext bolt placed in ``capsule`` like in the logo's microphone. + + One uniform scale (capsule width to logo capsule width) keeps the original + angles and the bolt-to-capsule proportion; the bolt stays centered. + """ + (logo_x, logo_y, logo_w, logo_h), points = _brand_bolt_geometry() + scale = capsule.width() / logo_w + origin_x, origin_y = logo_x + logo_w / 2, logo_y + logo_h / 2 + center = capsule.center() + path = QPainterPath() + path.addPolygon(QPolygonF([ + QPointF(center.x() + (x - origin_x) * scale, center.y() + (y - origin_y) * scale) + for x, y in points + ])) + path.closeSubpath() + return path + + def create_app_icon() -> QIcon: """Marken-App-Icon: Mikrofon (hell) + Blitz (amber) auf dunklem Grund. @@ -201,7 +573,7 @@ def create_app_icon() -> QIcon: def _painted_app_icon() -> QIcon: - """Fallback-Icon im Code gezeichnet (Mikrofon + Blitz, Breeze-Dark).""" + """Fallback icon drawn in the shared dark-neumorphic palette.""" pixmap = QPixmap(64, 64) pixmap.fill(Qt.GlobalColor.transparent) diff --git a/app/tts_window.py b/app/tts_window.py index 845b5a3..0add820 100644 --- a/app/tts_window.py +++ b/app/tts_window.py @@ -16,6 +16,7 @@ QComboBox, QDialog, QFileDialog, + QFrame, QHBoxLayout, QLabel, QLineEdit, @@ -27,6 +28,7 @@ ) from app.i18n import t +from app import theme PIPER_VENV_PATH = str(Path(__file__).resolve().parents[1] / ".venv" / "bin" / "piper") VOICES_DIR = Path.home() / ".local" / "share" / "piper-voices" @@ -75,6 +77,12 @@ def _scrub_secret(text: str, secret: str) -> str: return text +def _set_status(label: QLabel, text: str, role: Optional[str] = None) -> None: + """Set status copy and its shared semantic theme role together.""" + label.setText(text) + theme.set_status_role(label, role) + + def _find_piper() -> Optional[str]: if os.path.isfile(PIPER_VENV_PATH) and os.access(PIPER_VENV_PATH, os.X_OK): return PIPER_VENV_PATH @@ -296,6 +304,7 @@ class TtsWindow(QDialog): def __init__(self, config, parent: Optional[QWidget] = None) -> None: super().__init__(parent) + self.setObjectName("appDialog") self._config = config self.setWindowTitle(t("tts.window_title")) self.resize(430, 340) @@ -320,13 +329,19 @@ def __init__(self, config, parent: Optional[QWidget] = None) -> None: def _setup_ui(self) -> None: layout = QVBoxLayout(self) - layout.setContentsMargins(10, 8, 10, 8) - layout.setSpacing(6) + layout.setContentsMargins(16, 16, 16, 16) + layout.setSpacing(12) self._text_edit = QTextEdit() self._text_edit.setPlaceholderText(t("tts.text.placeholder")) layout.addWidget(self._text_edit, 1) + controls = QFrame(self) + controls.setObjectName("sectionSurface") + controls_layout = QVBoxLayout(controls) + controls_layout.setContentsMargins(12, 12, 12, 12) + controls_layout.setSpacing(8) + provider_row = QHBoxLayout() provider_row.setSpacing(6) provider_row.addWidget(QLabel(t("tts.provider.label"))) @@ -335,7 +350,7 @@ def _setup_ui(self) -> None: self._provider_combo.addItem(t("tts.provider.openai_cloud"), "openai") self._provider_combo.currentIndexChanged.connect(self._on_provider_changed) provider_row.addWidget(self._provider_combo, 1) - layout.addLayout(provider_row) + controls_layout.addLayout(provider_row) voice_row = QHBoxLayout() voice_row.setSpacing(6) @@ -343,7 +358,7 @@ def _setup_ui(self) -> None: self._voice_combo = QComboBox() self._voice_combo.currentIndexChanged.connect(self._on_voice_changed) voice_row.addWidget(self._voice_combo, 1) - layout.addLayout(voice_row) + controls_layout.addLayout(voice_row) model_row = QHBoxLayout() model_row.setSpacing(6) @@ -352,7 +367,7 @@ def _setup_ui(self) -> None: self._model_edit.setPlaceholderText(OPENAI_TTS_MODEL_DEFAULT) self._model_edit.editingFinished.connect(self._on_model_changed) model_row.addWidget(self._model_edit, 1) - layout.addLayout(model_row) + controls_layout.addLayout(model_row) speed_row = QHBoxLayout() speed_row.setSpacing(6) @@ -368,7 +383,8 @@ def _setup_ui(self) -> None: self._speed_combo.setCurrentIndex(idx if idx >= 0 else 2) self._speed_combo.currentIndexChanged.connect(self._on_speed_changed) speed_row.addWidget(self._speed_combo) - layout.addLayout(speed_row) + controls_layout.addLayout(speed_row) + layout.addWidget(controls) self._status_label = QLabel("") self._status_label.setWordWrap(True) @@ -396,6 +412,7 @@ def _setup_ui(self) -> None: btn_row.addWidget(self._btn_pause) self._btn_speak = QPushButton(t("tts.button.speak")) + self._btn_speak.setObjectName("primaryAction") self._btn_speak.clicked.connect(self._on_speak_clicked) btn_row.addWidget(self._btn_speak) @@ -441,18 +458,14 @@ def _refresh_status_hint(self) -> None: if provider == "openai": service = CloudTtsService(self._config) if service.is_available(): - self._status_label.setText(t("tts.status.openai_ready")) - self._status_label.setStyleSheet("color: #4caf50;") + _set_status(self._status_label, t("tts.status.openai_ready"), "success") else: - self._status_label.setText(_openai_tts_install_hint()) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, _openai_tts_install_hint(), "error") else: if self._piper_path: - self._status_label.setText(t("tts.status.piper_ready")) - self._status_label.setStyleSheet("color: #4caf50;") + _set_status(self._status_label, t("tts.status.piper_ready"), "success") else: - self._status_label.setText(_piper_install_hint()) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, _piper_install_hint(), "error") self._update_speak_button_state() def _update_speak_button_state(self) -> None: @@ -518,8 +531,7 @@ def _abort_export(self, status_text: str) -> None: self._cleanup_export_temp() self._cleanup_active_wav() self._pending_export_path = None - self._status_label.setText(status_text) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, status_text, "error") self._btn_speak.setText(t("tts.button.speak")) self._btn_pause.setEnabled(False) self._is_paused = False @@ -654,13 +666,11 @@ def _on_export_clicked(self) -> None: text = self._current_tts_text() if not text: self._invalidate_status_clear() - self._status_label.setText(t("tts.status.no_text")) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.no_text"), "error") return if not _find_ffmpeg(): self._invalidate_status_clear() - self._status_label.setText(t("tts.status.export_ffmpeg_missing")) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.export_ffmpeg_missing"), "error") self._schedule_status_clear(2500) return default_name = t("tts.export.default_filename_prefix") + datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + ".ogg" @@ -702,8 +712,7 @@ def _start_tts(self, text: Optional[str] = None) -> None: text = self._current_tts_text() if not text: self._invalidate_status_clear() - self._status_label.setText(t("tts.status.no_text")) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.no_text"), "error") return self._last_tts_text = text self._btn_replay.setEnabled(True) @@ -717,15 +726,13 @@ def _start_tts(self, text: Optional[str] = None) -> None: def _start_piper_tts(self, text: str) -> None: if not self._piper_path: self._invalidate_status_clear() - self._status_label.setText(_piper_install_hint()) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, _piper_install_hint(), "error") return model_path = self._current_voice() if not model_path: self._invalidate_status_clear() - self._status_label.setText(t("tts.status.no_voice_path")) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.no_voice_path"), "error") return wav_path = self._prepare_new_tts_job() @@ -740,8 +747,7 @@ def _start_piper_tts(self, text: str) -> None: proc.errorOccurred.connect(self._on_tts_error) self._piper_proc = proc - self._status_label.setText(t("tts.status.synthesis")) - self._status_label.setStyleSheet("") + _set_status(self._status_label, t("tts.status.synthesis")) self._btn_speak.setText(t("tts.button.stop")) self._update_speak_button_state() @@ -752,15 +758,13 @@ def _start_piper_tts(self, text: str) -> None: def _start_cloud_tts(self, text: str) -> None: if not self._config.tts_openai_consent: self._invalidate_status_clear() - self._status_label.setText(t("tts.status.openai_not_confirmed")) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.openai_not_confirmed"), "error") self._update_speak_button_state() return service = CloudTtsService(self._config) if not service.is_available(): self._invalidate_status_clear() - self._status_label.setText(_openai_tts_install_hint()) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, _openai_tts_install_hint(), "error") self._update_speak_button_state() return @@ -779,8 +783,7 @@ def _start_cloud_tts(self, text: str) -> None: self._cloud_thread = thread self._cloud_worker = worker - self._status_label.setText(t("tts.status.cloud_synthesis")) - self._status_label.setStyleSheet("") + _set_status(self._status_label, t("tts.status.cloud_synthesis")) self._btn_speak.setText(t("tts.button.stop")) self._btn_pause.setEnabled(False) thread.start() @@ -815,8 +818,7 @@ def _start_export_process(self, input_wav: str) -> None: export_proc.errorOccurred.connect(self._on_tts_error) self._export_proc = export_proc - self._status_label.setText(t("tts.status.exporting")) - self._status_label.setStyleSheet("") + _set_status(self._status_label, t("tts.status.exporting")) self._btn_speak.setText(t("tts.button.stop")) self._btn_pause.setEnabled(False) self._is_paused = False @@ -860,8 +862,7 @@ def _stop_tts(self) -> None: self._btn_pause.setEnabled(False) self._is_paused = False self._btn_pause.setText(t("tts.button.pause")) - self._status_label.setText(t("tts.status.cancelled")) - self._status_label.setStyleSheet("color: #ff9800;") + _set_status(self._status_label, t("tts.status.cancelled"), "warning") self._update_speak_button_state() self._schedule_status_clear(2000) @@ -938,8 +939,7 @@ def _on_cloud_error(self, message: str) -> None: self._cleanup_export_temp() self._cleanup_active_wav() self._invalidate_status_clear() - self._status_label.setText(t("tts.status.error").format(message=message)) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.error").format(message=message), "error") self._btn_speak.setText(t("tts.button.speak")) self._btn_pause.setEnabled(False) self._is_paused = False @@ -966,8 +966,7 @@ def _on_piper_finished(self, exit_code: int, exit_status: QProcess.ExitStatus) - self._cleanup_active_wav() msg = stderr or f"Exit {exit_code}" self._invalidate_status_clear() - self._status_label.setText(t("tts.status.error").format(message=msg)) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.error").format(message=msg), "error") self._btn_speak.setText(t("tts.button.speak")) self._update_speak_button_state() self._schedule_status_clear(2500) @@ -981,8 +980,11 @@ def _on_piper_finished(self, exit_code: int, exit_status: QProcess.ExitStatus) - if not wav_path: self._invalidate_status_clear() - self._status_label.setText(t("tts.status.error").format(message=t("tts.status.missing_wav_output"))) - self._status_label.setStyleSheet("color: #f44336;") + _set_status( + self._status_label, + t("tts.status.error").format(message=t("tts.status.missing_wav_output")), + "error", + ) self._btn_speak.setText(t("tts.button.speak")) self._update_speak_button_state() self._schedule_status_clear(2500) @@ -1010,16 +1012,14 @@ def _on_aplay_finished(self, exit_code: int, exit_status: QProcess.ExitStatus) - self._is_paused = False self._btn_pause.setText(t("tts.button.pause")) if exit_status == QProcess.ExitStatus.NormalExit and exit_code == 0: - self._status_label.setText(t("tts.status.done")) - self._status_label.setStyleSheet("color: #4caf50;") + _set_status(self._status_label, t("tts.status.done"), "success") else: stderr = "" if proc is not None: stderr = bytes(proc.readAllStandardError()).decode("utf-8", "replace").strip() msg = stderr or f"Exit {exit_code}" self._invalidate_status_clear() - self._status_label.setText(t("tts.status.error").format(message=msg)) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.error").format(message=msg), "error") if proc is not None: proc.deleteLater() self._cleanup_export_temp() @@ -1043,14 +1043,12 @@ def _on_export_finished(self, exit_code: int, exit_status: QProcess.ExitStatus) if exit_status == QProcess.ExitStatus.NormalExit and exit_code == 0 and export_temp_path and output_path: try: os.replace(export_temp_path, output_path) - self._status_label.setText(t("tts.status.export_done")) - self._status_label.setStyleSheet("color: #4caf50;") + _set_status(self._status_label, t("tts.status.export_done"), "success") self._export_temp_path = None clear_status_later = True except OSError as exc: self._invalidate_status_clear() - self._status_label.setText(t("tts.status.error").format(message=str(exc))) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.error").format(message=str(exc)), "error") self._cleanup_export_temp() else: stderr = "" @@ -1058,8 +1056,7 @@ def _on_export_finished(self, exit_code: int, exit_status: QProcess.ExitStatus) stderr = bytes(proc.readAllStandardError()).decode("utf-8", "replace").strip() msg = stderr or f"Exit {exit_code}" self._invalidate_status_clear() - self._status_label.setText(t("tts.status.error").format(message=msg)) - self._status_label.setStyleSheet("color: #f44336;") + _set_status(self._status_label, t("tts.status.error").format(message=msg), "error") self._cleanup_export_temp() if proc is not None: proc.deleteLater() @@ -1078,7 +1075,7 @@ def _on_tts_error(self, error: QProcess.ProcessError) -> None: self._status_label.setText(_piper_install_hint() if self._current_provider() == "piper" else _openai_tts_install_hint()) else: self._status_label.setText(t("tts.status.error").format(message=error.name)) - self._status_label.setStyleSheet("color: #f44336;") + theme.set_status_role(self._status_label, "error") self._btn_speak.setText(t("tts.button.speak")) self._btn_pause.setEnabled(False) self._is_paused = False diff --git a/scripts/_make_screenshots.py b/scripts/_make_screenshots.py index 49e10bf..c993ad6 100644 --- a/scripts/_make_screenshots.py +++ b/scripts/_make_screenshots.py @@ -371,6 +371,8 @@ def _render_language_set(out_dir: Path, lang: str) -> None: gui_toggle_recording=lambda *a, **k: None, gui_discard=lambda *a, **k: None, set_dictation_mode=lambda *a, **k: None, + show_compose_window=lambda *a, **k: None, + show_custom_prompt=lambda *a, **k: None, show_history_panel=lambda *a, **k: None, show_settings_dialog=lambda *a, **k: None, show_tts_window=lambda *a, **k: None, @@ -429,7 +431,7 @@ def main() -> int: out_dir.mkdir(parents=True, exist_ok=True) os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") app = QApplication(sys.argv) - # Wie im echten App-Start (blitztext_linux.main): Breeze-Dark-Glass-Theme, + # Wie im echten App-Start (blitztext_linux.main): zentrales App-Theme, # damit die Screenshots die tatsaechliche Produkt-Optik zeigen. theme.apply_theme(app) for lang in ("en", "de"): diff --git a/tests/test_compose_window.py b/tests/test_compose_window.py index 172455e..ed770cf 100644 --- a/tests/test_compose_window.py +++ b/tests/test_compose_window.py @@ -139,8 +139,8 @@ def _wait_until(qapp, predicate, timeout_ms: int = 2500) -> None: @pytest.mark.parametrize( ("language", "title", "prompt_label"), [ - ("de", "Text verfassen", "Schreibstil / Prompt bearbeiten"), - ("en", "Compose Text", "Edit style / prompt"), + ("de", "Text bearbeiten", "Prompt prüfen"), + ("en", "Edit text", "Inspect prompt"), ], ) def test_window_texts_follow_language(qapp, language, title, prompt_label): @@ -832,7 +832,7 @@ def _select_preset(window, preset_key: str) -> None: @gui_only -def test_tone_selector_visible_and_enabled_for_standard(qapp): +def test_tone_selector_hidden_for_standard(qapp): window = ComposeWindow(_FakeLLMService(), _FakePasteService(), Config()) window.show() qapp.processEvents() @@ -841,7 +841,7 @@ def test_tone_selector_visible_and_enabled_for_standard(qapp): _select_preset(window, "shorten") _select_preset(window, "standard") qapp.processEvents() - assert window.cmbTone.isVisible() is True + assert window.cmbTone.isVisible() is False assert window.cmbTone.isEnabled() is True assert window.cmbTone.toolTip() == t("compose.tone.tooltip_active") finally: @@ -858,7 +858,7 @@ def test_tone_selector_disabled_for_nonstandard_preset(qapp): _select_workflow(window, WorkflowType.TEXT_IMPROVER) _select_preset(window, "shorten") qapp.processEvents() - assert window.cmbTone.isVisible() is True + assert window.cmbTone.isVisible() is False assert window.cmbTone.isEnabled() is False assert window.cmbTone.toolTip() == t("compose.tone.tooltip_preset_overrides") finally: @@ -875,7 +875,7 @@ def test_tone_selector_disabled_for_custom_preset(qapp): _select_workflow(window, WorkflowType.TEXT_IMPROVER) _select_preset(window, CUSTOM_PRESET_KEY) qapp.processEvents() - assert window.cmbTone.isVisible() is True + assert window.cmbTone.isVisible() is False assert window.cmbTone.isEnabled() is False finally: window.close() @@ -946,7 +946,7 @@ def test_selected_tone_is_passed_to_worker(qapp): @gui_only -def test_custom_action_is_resolved_centrally_by_llm_service(qapp): +def test_custom_action_passes_visible_instruction_to_llm_service(qapp): config = Config() config.compose_custom_preset_text = "FREITEXT-PROMPT" llm = _FakeLLMService() @@ -960,7 +960,7 @@ def test_custom_action_is_resolved_centrally_by_llm_service(qapp): window.btnAction.click() _wait_until(qapp, lambda: not window._busy and window._worker_thread is None and llm.calls) assert llm.calls[-1][2] == "custom" - assert llm.last_custom_prompt is None + assert llm.last_custom_prompt == "FREITEXT-PROMPT" finally: window.close() qapp.processEvents() @@ -1004,6 +1004,58 @@ def test_tone_i18n_keys_present_and_complete(qapp, language): GOAL_VISIBLE_PRESET_KEYS = ("standard", "shorten", "expand", "change_tone", "custom") +@gui_only +def test_instruction_editor_is_available_without_draft(compose_window, qapp): + window, llm, _ = compose_window + assert not window.cmbWorkflow.isVisible() + window.btnOwnPrompt.click() + qapp.processEvents() + assert window.txtOwnPrompt.isVisible() + assert window._selected_preset() == "custom" + assert llm.calls == [] + + +@gui_only +def test_empty_instruction_blocks_request(compose_window): + window, llm, _ = compose_window + window.btnOwnPrompt.click() + window.txtInput.setPlainText("A draft") + window.btnAction.click() + assert llm.calls == [] + assert window.lblStatus.text() == t("compose.custom.empty") + + +@gui_only +def test_edited_instruction_is_used_and_saved_explicitly(compose_window, qapp): + window, llm, _ = compose_window + window.btnOwnPrompt.click() + window.txtOwnPrompt.setPlainText("Write a friendly reply.") + assert window._config.compose_custom_preset_text == "" + window.txtInput.setPlainText("My draft") + window.btnAction.click() + _wait_until(qapp, lambda: not window._busy and window._worker_thread is None and llm.calls) + assert llm.last_custom_prompt == "Write a friendly reply." + window.btnSavePrompt.click() + assert Config().compose_custom_preset_text == "Write a friendly reply." + + +@gui_only +def test_instruction_save_failure_preserves_draft_and_config(compose_window, monkeypatch): + from app.config import ConfigError + window, _, _ = compose_window + window._config.writing_preset = "shorten" + window.btnOwnPrompt.click() + window.txtOwnPrompt.setPlainText("Keep this draft") + def fail(): + raise ConfigError("disk full") + monkeypatch.setattr(window._config, "save", fail) + window.btnSavePrompt.click() + assert window.txtOwnPrompt.toPlainText() == "Keep this draft" + assert window._config.compose_custom_preset_text == "" + assert window._config.writing_preset == "shorten" + assert window.lblStatus.text() == t("compose.custom.save_error") + + def _selectable_preset_values(combo): return tuple( combo.itemData(index) diff --git a/tests/test_features.py b/tests/test_features.py index fb2e232..3629a18 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -672,7 +672,7 @@ def test_abort_export_resets_cleanup_and_ui_state(self): fake._cleanup_active_wav.assert_called_once() assert fake._pending_export_path is None fake._status_label.setText.assert_called_once_with("Export fehlgeschlagen") - fake._status_label.setStyleSheet.assert_called_once_with("color: #f44336;") + fake._status_label.setProperty.assert_called_once_with("status", "error") fake._btn_speak.setText.assert_called_once_with(tts_window.t("tts.button.speak")) fake._btn_pause.setEnabled.assert_called_once_with(False) assert fake._is_paused is False diff --git a/tests/test_i18n.py b/tests/test_i18n.py index bae9be7..13ad527 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -225,21 +225,21 @@ def test_set_language_case_sensitive(self): ( "de", ( - "Standard / Text verbessern", + "Text verbessern", "Kürzen", "Ausformulieren", "Tonfall ändern", - "Eigener Prompt", + "Eigene Anweisung", ), ), ( "en", ( - "Standard / Improve text", + "Improve text", "Shorten", "Expand", "Change tone", - "Custom prompt", + "Custom instruction", ), ), ], diff --git a/tests/test_main_window_widget.py b/tests/test_main_window_widget.py new file mode 100644 index 0000000..3bdea94 --- /dev/null +++ b/tests/test_main_window_widget.py @@ -0,0 +1,670 @@ +"""Behavioral checks for the compact neumorphic main widget.""" +from __future__ import annotations + +import os + +import pytest + + +_GUI = os.environ.get("WHISPER_GUI_TESTS") == "1" +gui_only = pytest.mark.skipif(not _GUI, reason="benötigt WHISPER_GUI_TESTS=1") + + +@pytest.fixture +def qapp(): + from PyQt6.QtWidgets import QApplication + + return QApplication.instance() or QApplication([]) + + +class _Controller: + def __init__(self) -> None: + self.calls: list[object] = [] + + def gui_toggle_recording(self, workflow) -> None: + self.calls.append(("toggle", workflow)) + + def gui_discard(self) -> None: + self.calls.append("discard") + + def set_dictation_mode(self, enabled: bool) -> None: + self.calls.append(("dictation", enabled)) + + def show_compose_window(self) -> None: + self.calls.append("compose") + + def show_custom_prompt(self) -> None: + self.calls.append("prompt") + + def main_window_preset_changed(self, key: str) -> None: + self.calls.append(("preset", key)) + + def show_history_panel(self) -> None: + self.calls.append("history") + + def show_tts_window(self) -> None: + self.calls.append("tts") + + def show_settings_dialog(self) -> None: + self.calls.append("settings") + + +@gui_only +def test_main_widget_keeps_only_core_controls_permanently_visible(qapp): + from app.main_window import MainWindow + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + assert window._main_panel.isVisible() + assert not hasattr(window, "_toolbar") + for control in (window._title_label, window._btn_minimize, window._btn_close, + window._btn_toggle, window._status_label, window._timer_label, + window._btn_edit_text, window._btn_history, window._btn_tts, + window._btn_settings, window._btn_options): + assert control.isVisible() + assert window._options_popup.isVisible() is False + assert window._workflow_combo.isVisible() is False + assert window._btn_discard.isVisible() is False + assert window._btn_dictation.isVisible() is False + assert not hasattr(window, "_presentation_header") + + +@gui_only +def test_host_window_is_frameless_and_panel_owns_title_and_window_controls(qapp): + from PyQt6.QtCore import Qt + from app.i18n import t + from app.main_window import MainWindow + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + assert window.testAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) + assert window.windowFlags() & Qt.WindowType.FramelessWindowHint + assert "QWidget#mainWidgetWindow { background: transparent; }" in window.styleSheet() + assert window._title_label.text() == t("app.name") + assert window._btn_minimize.toolTip() == t("mainwindow.tooltip.minimize") + assert window._btn_close.toolTip() == t("mainwindow.tooltip.close") + for control in (window._title_label, window._btn_minimize, window._btn_close): + assert control.parentWidget() is window._main_panel + + window.setWindowTitle("Blitztext Test") + assert window._title_label.text() == "Blitztext Test" + + +@gui_only +def test_panel_close_button_hides_to_tray_without_quitting(qapp): + from app.main_window import MainWindow + + controller = _Controller() + window = MainWindow(controller) + window.show() + window._btn_options.click() + qapp.processEvents() + + window._btn_close.click() + qapp.processEvents() + + assert not window.isVisible() + assert not window._options_popup.isVisible() + assert controller.calls == [] + window.show() + qapp.processEvents() + assert window.isVisible() + + +@gui_only +def test_panel_minimize_button_minimizes_the_real_window(qapp, monkeypatch): + from app.main_window import MainWindow + + minimized: list[bool] = [] + monkeypatch.setattr(MainWindow, "showMinimized", lambda self: minimized.append(True)) + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + window._btn_minimize.click() + + assert minimized == [True] + assert window.isVisible() + + +@gui_only +def test_non_interactive_panel_areas_start_native_system_move(qapp): + from PyQt6.QtCore import QPoint, Qt + from PyQt6.QtTest import QTest + from app.main_window import MainWindow + + controller = _Controller() + window = MainWindow(controller) + window.show() + qapp.processEvents() + moves: list[bool] = [] + + class _Handle: + def startSystemMove(self) -> bool: # noqa: N802 + moves.append(True) + return True + + window.windowHandle = lambda: _Handle() + button = window._btn_toggle + center = QPoint(button.width() // 2, button.height() // 2) + + QTest.mousePress(window._title_label, Qt.MouseButton.LeftButton) + QTest.mousePress(window._status_label, Qt.MouseButton.LeftButton) + QTest.mousePress(button, Qt.MouseButton.LeftButton, pos=QPoint(3, center.y())) + assert len(moves) == 3 + assert button._pressed is False + + QTest.mouseClick(button, Qt.MouseButton.LeftButton, pos=center) + QTest.mouseClick(window._btn_settings, Qt.MouseButton.LeftButton) + assert len(moves) == 3 + assert [call for call in controller.calls if call != "settings"][0][0] == "toggle" + assert "settings" in controller.calls + + +@gui_only +def test_options_are_shown_only_in_transient_popup(qapp): + from app.main_window import MainWindow + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + window._btn_options.click() + qapp.processEvents() + assert window._workflow_combo.isVisible() + assert window._btn_dictation.isVisible() + assert window._btn_discard.isVisible() + + window._options_popup.hide() + assert window._options_popup.isVisible() is False + + +@gui_only +def test_single_panel_owns_microphone_status_and_tools(qapp): + from app.main_window import MainWindow + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + for control in (window._btn_toggle, window._status_label, window._btn_edit_text, + window._btn_history, window._btn_tts, window._btn_settings, + window._btn_options): + assert control.parentWidget() is window._main_panel + + +@gui_only +def test_popup_preserves_all_existing_workflows(qapp): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + + assert [ + window._workflow_combo.itemData(index) + for index in range(window._workflow_combo.count()) + ] == [ + WorkflowType.TRANSCRIPTION, + WorkflowType.LOCAL, + WorkflowType.TEXT_IMPROVER, + WorkflowType.DAMPF_ABLASSEN, + WorkflowType.EMOJI_TEXT, + ] + + +@gui_only +def test_toolbar_actions_keep_existing_controller_contract(qapp): + from app.main_window import MainWindow + + controller = _Controller() + window = MainWindow(controller) + window.show() + qapp.processEvents() + + window._btn_edit_text.click() + window._btn_history.click() + window._btn_tts.click() + window._btn_settings.click() + + assert controller.calls == ["compose", "history", "tts", "settings"] + + +@gui_only +def test_dictation_popup_reflects_active_state(qapp): + from app.i18n import t + from app.main_window import MainWindow + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + window.set_dictation_checked(True) + + assert window._btn_dictation.isChecked() + assert window._btn_dictation.text() == t("mainwindow.button.dictation_active") + + +@gui_only +def test_recording_state_enables_discard_and_updates_gold_widget(qapp): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + window.update_state("RECORDING", WorkflowType.TRANSCRIPTION, None) + assert window._btn_toggle.mode == "RECORDING" + assert window._btn_toggle._anim.isActive() + assert window._btn_toggle.text() == "Stopp" + assert window._btn_discard.isEnabled() + + window.update_state("TRANSCRIBING", WorkflowType.TRANSCRIPTION, None) + assert window._btn_toggle.mode == "PROCESSING" + assert window._btn_toggle._anim.isActive() + assert window._btn_discard.isEnabled() is False + assert window._timer_label.isVisible() is False + + window.update_state("IDLE", WorkflowType.TRANSCRIPTION, None) + assert window._btn_toggle.mode == "IDLE" + assert not window._btn_toggle._anim.isActive() + + +@pytest.fixture +def paint_errors(monkeypatch): + """Collect exceptions raised inside Qt virtual overrides such as paintEvent. + + Without a custom sys.excepthook PyQt6 calls qFatal() and aborts the whole + process (SIGABRT), which is exactly the production crash this guards. + """ + import sys + + # Store text only: keeping the exception would keep its traceback frame and + # therefore an unfinished QPainter alive beyond its paint device. + errors: list[str] = [] + monkeypatch.setattr( + sys, "excepthook", + lambda exc_type, value, _tb: errors.append(f"{exc_type.__name__}: {value}"), + ) + return errors + + +@gui_only +@pytest.mark.parametrize("state", ["IDLE", "RECORDING", "TRANSCRIBING", "LLM_REWRITING"]) +def test_record_button_paints_every_state_without_exception(qapp, paint_errors, state): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + window.update_state(state, WorkflowType.TRANSCRIPTION, None) + window._btn_toggle._tick() + window._btn_toggle.grab() + window.grab() + + assert paint_errors == [] + + +@gui_only +def test_full_state_cycle_repaints_without_exception(qapp, paint_errors): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + for _cycle in range(3): + for state in ("IDLE", "RECORDING", "TRANSCRIBING", "LLM_REWRITING", "IDLE"): + window.update_state(state, WorkflowType.TRANSCRIPTION, None) + window._btn_toggle._tick() + window.grab() + + assert paint_errors == [] + assert window._btn_toggle.mode == "IDLE" + assert not window._btn_toggle._anim.isActive() + + +def _gold_pixels(button, zone) -> int: + """Count clearly gold pixels in a logical-coordinate zone of the button.""" + image = button.grab().toImage() + ratio = image.width() / button.width() + left, top, right, bottom = zone + count = 0 + for y in range(int(top * ratio), int(bottom * ratio)): + for x in range(int(left * ratio), int(right * ratio)): + color = image.pixelColor(x, y) + if color.red() > 150 and color.green() > 110 and color.red() - color.blue() > 60: + count += 1 + return count + + +def _side_zones(button): + """Left and right areas beside the processing ring, where waves belong.""" + from app.main_window import _RING_DIAMETER, _RING_PEN + + center_x = button.width() / 2 + clearance = _RING_DIAMETER / 2 + _RING_PEN / 2 + 1 + height = button.height() + return ((0, 0, center_x - clearance, height), + (center_x + clearance, 0, button.width(), height)) + + +def _ring_zone(button): + """Thin band above the mic face that only the processing ring paints.""" + from app.main_window import _RING_DIAMETER + + center_x = button.width() / 2 + ring_top = button.height() / 2 - _RING_DIAMETER / 2 + return (center_x - 20, ring_top - 1, center_x + 20, ring_top + 2) + + +@gui_only +def test_recording_waves_are_visible_beside_the_microphone(qapp, paint_errors): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + button = window._btn_toggle + left, right = _side_zones(button) + + assert _gold_pixels(button, left) == 0 + assert _gold_pixels(button, right) == 0 + + window.update_state("RECORDING", WorkflowType.TRANSCRIPTION, None) + for _ in range(5): + button._tick() + assert _gold_pixels(button, left) > 40 + assert _gold_pixels(button, right) > 40 + assert button._anim.isActive() + assert paint_errors == [] + + +@gui_only +def test_recording_waves_move_over_time(qapp): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + button = window._btn_toggle + window.update_state("RECORDING", WorkflowType.TRANSCRIPTION, None) + + first = button.grab().toImage() + for _ in range(4): + button._tick() + assert button.grab().toImage() != first + + +@gui_only +def test_processing_replaces_waves_with_gold_ring_and_idle_clears_both(qapp, paint_errors): + from app.main_window import MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + button = window._btn_toggle + left, right = _side_zones(button) + ring = _ring_zone(button) + idle_ring_pixels = _gold_pixels(button, ring) + + window.update_state("RECORDING", WorkflowType.TRANSCRIPTION, None) + button._tick() + window.update_state("TRANSCRIBING", WorkflowType.TRANSCRIPTION, None) + button._tick() + assert button._anim.isActive() + assert _gold_pixels(button, left) == 0 + assert _gold_pixels(button, right) == 0 + assert _gold_pixels(button, ring) > idle_ring_pixels + 20 + + window.update_state("IDLE", WorkflowType.TRANSCRIPTION, None) + assert not button._anim.isActive() + assert _gold_pixels(button, left) == 0 + assert _gold_pixels(button, right) == 0 + assert _gold_pixels(button, ring) == idle_ring_pixels + assert paint_errors == [] + + +@gui_only +def test_only_the_round_microphone_is_clickable(qapp): + from PyQt6.QtCore import QPoint + from app.main_window import MainWindow + + window = MainWindow(_Controller()) + button = window._btn_toggle + center = QPoint(button.width() // 2, button.height() // 2) + + assert button.hitButton(center) + assert not button.hitButton(QPoint(4, center.y())) + assert not button.hitButton(QPoint(button.width() - 4, center.y())) + + +def _shown_window(qapp): + from app import theme + from app.main_window import MainWindow + + theme.apply_theme(qapp) + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + return window + + +@gui_only +def test_root_layout_holds_exactly_one_surface(qapp): + from PyQt6.QtWidgets import QFrame + + window = _shown_window(qapp) + root = window.layout() + + widgets = [root.itemAt(index).widget() for index in range(root.count())] + assert widgets == [window._main_panel] + frames = [child for child in window.findChildren(QFrame) + if child.parentWidget() is window and not child.isWindow()] + assert frames == [window._main_panel] + # Transient options live in their own popup window, not in the layout. + assert window._options_popup.isWindow() + + +@gui_only +def test_header_microphone_status_and_tools_stack_inside_the_panel(qapp): + window = _shown_window(qapp) + inner = window._main_panel.contentsRect() + title = window._title_label.geometry() + close = window._btn_close.geometry() + record = window._btn_toggle.geometry() + status = window._status_label.geometry() + options = window._btn_options.geometry() + + for rect in (title, close, window._btn_minimize.geometry(), record, status, + window._btn_edit_text.geometry(), options): + assert inner.contains(rect) + assert title.bottom() <= record.top() + assert close.bottom() <= record.top() + assert record.bottom() <= status.top() + assert status.bottom() < options.top() + # Header controls and tool row share the panel's right edge. + assert close.right() == options.right() + assert window._btn_minimize.geometry().right() < close.left() + assert abs(record.center().x() - inner.center().x()) <= 1 + + +@gui_only +def test_toolbar_buttons_keep_full_size_after_stylesheet_polish(qapp): + from app import theme + + window = _shown_window(qapp) + buttons = (window._btn_edit_text, window._btn_history, window._btn_tts, + window._btn_settings, window._btn_options) + + for button in buttons: + assert button.height() == theme.TOOL_BUTTON_SIZE + assert button.width() >= theme.TOOL_BUTTON_SIZE + for control in (window._btn_minimize, window._btn_close): + assert control.size().width() == theme.WINDOW_BUTTON_SIZE + assert control.size().height() == theme.WINDOW_BUTTON_SIZE + # Outer buttons sit symmetrically inside the panel. + left_gap = buttons[0].geometry().left() + right_gap = window._main_panel.width() - buttons[-1].geometry().right() - 1 + assert abs(left_gap - right_gap) <= 1 + + +@gui_only +def test_window_size_follows_compact_content_with_small_shadow_margins(qapp): + window = _shown_window(qapp) + panel = window._main_panel.geometry() + + assert window.size() == window.layout().sizeHint() + assert 200 <= panel.width() <= 250 + assert 170 <= panel.height() <= 220 + assert panel.left() <= 12 + assert window.width() - panel.right() - 1 <= 12 + assert panel.top() <= 8 + assert window.height() - panel.bottom() - 1 <= 16 + assert window.width() <= 260 and window.height() <= 236 + # The panel has no dead filler around its content. + assert panel.size() == window._main_panel.sizeHint() + + +@gui_only +def test_shadows_fade_out_before_the_window_edge(qapp): + window = _shown_window(qapp) + image = window.grab().toImage() + width, height = image.width(), image.height() + + edge_alpha = [image.pixelColor(x, y).alpha() + for x in range(width) for y in (0, height - 1)] + edge_alpha += [image.pixelColor(x, y).alpha() + for y in range(height) for x in (0, width - 1)] + assert max(edge_alpha) <= 3 + + +@gui_only +def test_window_size_stays_stable_across_state_cycles(qapp, paint_errors): + from app.workflows import WorkflowType + + window = _shown_window(qapp) + size = window.size() + panel = window._main_panel.geometry() + for _cycle in range(3): + for state in ("RECORDING", "TRANSCRIBING", "LLM_REWRITING", "IDLE"): + window.update_state(state, WorkflowType.TRANSCRIPTION, None) + window.set_history_count(999) + qapp.processEvents() + assert window.size() == size + assert window._main_panel.geometry() == panel + window.update_state("IDLE", WorkflowType.TRANSCRIPTION, "boom") + qapp.processEvents() + assert window.size() == size + assert paint_errors == [] + + +@gui_only +def test_history_count_fits_inside_its_toolbar_button(qapp): + window = _shown_window(qapp) + window.set_history_count(999) + qapp.processEvents() + + button = window._btn_history + assert button.width() >= button.sizeHint().width() + + +@gui_only +def test_close_hides_window_to_tray_and_it_can_be_reopened(qapp): + window = _shown_window(qapp) + window._btn_options.click() + qapp.processEvents() + + assert window.close() is False + assert not window.isVisible() + assert not window._options_popup.isVisible() + + window.show() + qapp.processEvents() + assert window.isVisible() + + +@gui_only +def test_record_button_keeps_full_custom_paint_area_after_qss_polish(qapp): + from app.main_window import MainWindow + + from app import theme + + window = MainWindow(_Controller()) + window.show() + qapp.processEvents() + + from app.main_window import (_RING_DIAMETER, _RING_PEN, _WAVE_BARS, + _WAVE_CLEARANCE, _WAVE_PITCH, _WAVE_WIDTH) + + assert window._btn_toggle.size().width() == theme.RECORD_BUTTON_WIDTH + assert window._btn_toggle.size().height() == theme.RECORD_BUTTON_HEIGHT + # The waves need room beside the round microphone, the ring above and below. + wave_reach = _WAVE_CLEARANCE + (_WAVE_BARS - 1) * _WAVE_PITCH + _WAVE_WIDTH / 2 + assert theme.RECORD_BUTTON_WIDTH >= 2 * wave_reach + assert theme.RECORD_BUTTON_HEIGHT >= _RING_DIAMETER + _RING_PEN + + +def test_brand_bolt_is_read_from_the_official_logo_asset(): + from app import theme + + capsule, points = theme._brand_bolt_geometry() + + assert theme.BRAND_MARK_SVG.is_file() + assert capsule == (16.0, 6.0, 16.0, 26.0) + assert points == ((26, 11), (20, 20), (24, 20), (22, 27), (28, 17.5), (24, 17.5)) + # The fallback describes exactly the same bolt. + assert tuple(theme._svg_path_points(theme._BRAND_BOLT_FALLBACK)) == points + + +def test_brand_bolt_keeps_logo_proportions_inside_the_capsule(): + from PyQt6.QtCore import QRectF + from app import theme + + capsule = QRectF(-11, -31, 22, 49) + bolt = theme.brand_bolt_path(capsule).boundingRect() + + # Logo: bolt 8 x 16 inside a 16 px wide capsule, centered on it. + assert bolt.width() == pytest.approx(capsule.width() / 2) + assert bolt.height() == pytest.approx(capsule.width()) + assert bolt.center().x() == pytest.approx(capsule.center().x()) + assert bolt.center().y() == pytest.approx(capsule.center().y()) + assert capsule.contains(bolt) + + +@gui_only +@pytest.mark.parametrize("state", ["IDLE", "RECORDING", "TRANSCRIBING", "LLM_REWRITING"]) +def test_brand_bolt_stays_cut_into_the_gold_microphone_in_every_state( + qapp, paint_errors, state, +): + from PyQt6.QtCore import QPointF + from app import theme + from app.main_window import _ART_SCALE, _MIC_CAPSULE, MainWindow + from app.workflows import WorkflowType + + window = MainWindow(_Controller()) + window.show() + window.update_state(state, WorkflowType.TRANSCRIPTION, None) + button = window._btn_toggle + button._tick() + image = button.grab().toImage() + ratio = image.width() / button.width() + + def pixel(point: QPointF): + x = button.width() / 2 + point.x() * _ART_SCALE + y = button.height() / 2 + point.y() * _ART_SCALE + return image.pixelColor(int(x * ratio), int(y * ratio)) + + bolt = theme.brand_bolt_path(_MIC_CAPSULE) + # Middle of the bolt's widest band, between its two horizontal edges. + inner = (QPointF(bolt.elementAt(2).x, bolt.elementAt(2).y) + + QPointF(bolt.elementAt(5).x, bolt.elementAt(5).y)) / 2 + assert bolt.contains(inner) + cut = pixel(inner) + assert cut.lightness() < 90, cut.name() + gold = pixel(QPointF(inner.x(), bolt.boundingRect().top() - 4)) + assert gold.red() > 150 and gold.green() > 110 and gold.red() - gold.blue() > 60 + assert paint_errors == [] diff --git a/tests/test_settings_dialog.py b/tests/test_settings_dialog.py index 61589b4..43e7257 100644 --- a/tests/test_settings_dialog.py +++ b/tests/test_settings_dialog.py @@ -299,8 +299,8 @@ def test_refresh_i18n_texts_updates_existing_shell(): set_language("en") BlitztextApp._refresh_i18n_texts(fake) - fake.action_settings.setText.assert_called_once_with("⚙ Settings...") - fake.action_quit.setText.assert_called_once_with("✕ Quit") + fake.action_settings.setText.assert_called_once_with("Settings…") + fake.action_quit.setText.assert_called_once_with("Quit") fake._main_window.setWindowTitle.assert_called_once_with("Blitztext") fake.update_tray_state.assert_called_once() finally: @@ -467,11 +467,13 @@ def setText(self, value): lbl_api_key_status=FakeLabel(), ) - SettingsDialog._refresh_api_key_status(fake) + with patch("app.blitztext_linux.theme.set_status_role") as set_status_role: + SettingsDialog._refresh_api_key_status(fake) assert "CUSTOM_OPENAI_KEY" in fake.lbl_api_key_status.text assert "gesetzt" in fake.lbl_api_key_status.text assert secret_value not in fake.lbl_api_key_status.text + set_status_role.assert_called_once_with(fake.lbl_api_key_status, "success") # --- Goal 04: Settings nutzt dieselbe Auswahl und bestehende Prompt-Ablage -- diff --git a/tests/test_smoke_launch.py b/tests/test_smoke_launch.py index c22a38b..5aaae61 100644 --- a/tests/test_smoke_launch.py +++ b/tests/test_smoke_launch.py @@ -65,13 +65,15 @@ def test_app_boots_idles_and_exits_clean(ui_language, tmp_path): win = app._main_window assert win._btn_discard.text() == t("mainwindow.button.discard") assert win._btn_dictation.text() == t("mainwindow.button.dictation") - assert win._btn_history.text() == t("mainwindow.button.history").format(count=0) - assert win._btn_edit_text.text() == t("mainwindow.button.edit_text") + assert win._btn_history.accessibleName() == t("mainwindow.button.history").format(count=0) + # The compact gold trigger is icon-only; its accessible name carries + # the translated action text for screen readers and UI automation. + assert win._btn_edit_text.accessibleName() == t("mainwindow.button.edit_text") assert win._btn_edit_text.toolTip() == t("mainwindow.tooltip.edit_text") assert win._btn_tts.toolTip() == t("mainwindow.tooltip.tts") assert win._btn_settings.toolTip() == t("mainwindow.tooltip.settings") assert win._status_label.text() == t("mainwindow.status.ready") - assert app.action_compose.text() == f"✍ {t('tray.compose')}" + assert app.action_compose.text() == t("tray.compose") assert app.action_dictation.text() == t("tray.dictation_mode") assert app.action_history.text() == t("tray.history") assert app.action_tts.text() == t("tray.tts") @@ -112,16 +114,21 @@ def test_secondary_windows_instantiate(tmp_path): app.show_history_panel() qapp.processEvents() assert app._history_panel is not None + assert app._history_panel.objectName() == "appWindow" + assert app._history_panel._empty_label.isVisible() is True # TTS-Fenster: lazy-init via show_tts_window(). app.show_tts_window() qapp.processEvents() assert app._tts_window is not None + assert app._tts_window.objectName() == "appDialog" + assert app._tts_window._btn_speak.objectName() == "primaryAction" + assert app._tts_window._status_label.property("status") in {"success", "error"} # Settings-Dialog: direkt instanziieren, da show_settings_dialog() exec() aufruft. dlg = SettingsDialog(config) qapp.processEvents() - assert dlg is not None + assert dlg.objectName() == "appDialog" dlg.close() finally: @@ -164,13 +171,13 @@ def test_compose_dialog_lifecycle(tmp_path): set_language("de") w1.retranslate_ui() qapp.processEvents() - assert "verfassen" in w1.windowTitle().lower() + assert "bearbeiten" in w1.windowTitle().lower() # Nach Sprachenwechsel auf EN werden übersetzte Texte gezeigt. set_language("en") w1.retranslate_ui() qapp.processEvents() - assert "Compose" in w1.windowTitle() + assert "Edit text" == w1.windowTitle() finally: if app is not None: diff --git a/tests/test_state_machine.py b/tests/test_state_machine.py index 7681ec1..2260658 100644 --- a/tests/test_state_machine.py +++ b/tests/test_state_machine.py @@ -672,6 +672,53 @@ def test_stop_wires_routed_worker_result_into_compose(self, gui_app): @gui_only class TestMainWindowControl: + def test_editor_is_created_only_after_user_opens_it(self, gui_app): + win = gui_app._ensure_main_window() + + assert gui_app._compose_window is None + + win._btn_edit_text.click() + + assert gui_app._compose_window is not None + assert gui_app._compose_window.isVisible() is True + + def test_panel_close_button_hides_window_and_keeps_tray_running(self, gui_app): + from PyQt6.QtCore import Qt + + gui_app.app.setQuitOnLastWindowClosed(False) + win = gui_app._ensure_main_window() + win.show() + win._btn_options.click() + gui_app.app.processEvents() + + assert win.windowFlags() & Qt.WindowType.FramelessWindowHint + assert gui_app.tray_icon.isVisible() is True + + win._btn_close.click() + gui_app.app.processEvents() + + assert win.isVisible() is False + assert win._options_popup.isVisible() is False + assert gui_app.tray_icon.isVisible() is True + assert gui_app.app.quitOnLastWindowClosed() is False + + gui_app.show_main_window() + gui_app.app.processEvents() + assert win.isVisible() is True + + def test_show_main_window_restores_minimized_panel(self, gui_app): + win = gui_app._ensure_main_window() + win.show() + win.showMinimized() + gui_app.app.processEvents() + assert win.isMinimized() is True + + gui_app.show_main_window() + gui_app.app.processEvents() + + assert win.isMinimized() is False + assert win.isVisible() is True + def test_gui_toggle_starts_and_stops(self, gui_app): """Maus-Klick startet im IDLE eine Aufnahme und stoppt sie im RECORDING, unabhaengig vom Hotkey-Modus.""" @@ -752,22 +799,23 @@ def test_text_edit_action_is_keyboard_reachable(self, gui_app): assert gui_app._compose_window is not None assert gui_app._compose_window.isVisible() is True - def test_text_edit_action_fits_compact_main_window(self, gui_app): + def test_text_edit_trigger_and_toolbar_fit_neumorphic_widget(self, gui_app): + from app.i18n import t + win = gui_app._ensure_main_window() win.show() gui_app.app.processEvents() + panel = win._main_panel button_rect = win._btn_edit_text.geometry() - history_rect = win._btn_history.geometry() - text_width = win._btn_edit_text.fontMetrics().horizontalAdvance( - win._btn_edit_text.text() - ) - - assert win.width() == 256 - assert button_rect.left() >= win.contentsRect().left() - assert button_rect.right() <= win.contentsRect().right() - assert button_rect.bottom() < history_rect.top() - assert text_width < button_rect.width() + # The window follows its content instead of a fixed oversized client area. + assert win.size() == win.layout().sizeHint() + assert not hasattr(win, "_toolbar") + assert win._btn_edit_text.parentWidget() is panel + assert panel.contentsRect().contains(button_rect) + assert win._btn_toggle.geometry().bottom() < button_rect.top() + assert panel.geometry().right() <= win.contentsRect().right() + assert win._btn_edit_text.accessibleName() == t("mainwindow.button.edit_text") def test_history_reset_timers_are_owned_by_their_widgets(self, gui_app): from PyQt6.QtCore import QCoreApplication, QEvent diff --git a/tests/test_tray_preset_menu.py b/tests/test_tray_preset_menu.py index a88af31..a66f013 100644 --- a/tests/test_tray_preset_menu.py +++ b/tests/test_tray_preset_menu.py @@ -55,6 +55,21 @@ def _other_key(current: str) -> str: @gui_only class TestPresetMenu: + def test_saved_compose_instruction_rebuilds_shared_service(self, tray_app): + main = tray_app._ensure_main_window() + window = tray_app._ensure_compose_window() + window.edit_custom_prompt() + window.txtOwnPrompt.setPlainText("Keep every fact. Use short sentences.") + window.btnSavePrompt.click() + assert tray_app.llm_service.writing_custom_prompt == "Keep every fact. Use short sentences." + assert window._llm_service is tray_app.llm_service + assert tray_app.config.writing_preset == "custom" + assert tray_app.llm_service.writing_preset == "custom" + assert tray_app.preset_actions["custom"].isChecked() + assert main._preset_combo.currentData() == "custom" + assert BlitztextConfig(config_dir=tray_app.config.config_dir).compose_custom_preset_text == "Keep every fact. Use short sentences." + window.close() + def test_handler_persists_and_rebuilds_service(self, tray_app): """Auswahl im Tray: Config gesetzt + gespeichert + Service neu gebaut.""" target = _other_key(tray_app.config.writing_preset) @@ -225,10 +240,11 @@ def exec(self): assert window._preset_combo.currentData() == target def test_preset_combo_visible_only_for_text_improver(self, tray_app): - """Preset-Combo im Hauptfenster ist nur bei Blitztext+ sichtbar.""" + """Preset-Combo im Options-Popup ist nur bei Blitztext+ sichtbar.""" from app.workflows import WorkflowType window = self._open_window(tray_app) + window._btn_options.click() # Standard-Workflow ist TRANSCRIPTION → Combo unsichtbar for i in range(window._workflow_combo.count()): @@ -239,6 +255,7 @@ def test_preset_combo_visible_only_for_text_improver(self, tray_app): f"Workflow {wf}: Combo sichtbar={window._preset_combo.isVisible()}, " f"erwartet={expected}" ) + window._options_popup.hide() # --- Goal 04: Tray und Hauptfenster zeigen dieselben Kernaktionen ----------- From 92131089b535de7e0db1012bbc7323116054ef6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=3D=3DTIM=2E=C2=A9=2EB=20=20=3D=3D?= Date: Wed, 16 Sep 2026 05:40:53 +0200 Subject: [PATCH 2/3] fix: keep settings labels localized and Qt mnemonics intact The API key status word was hardcoded German, so the English settings tab showed "Status: nicht gesetzt". Emoji density offered the raw German config values ("wenig/mittel/viel") in both languages. Qt also swallowed the "&" in captions such as "Insert & Close", "Text & AI" and "Dictate & improve", because tabs, buttons and menu actions read it as a mnemonic marker. - add settings.api_key.status_set/status_unset and emoji density captions - translate the emoji density combo while storing the language independent value - add i18n.tq() and use it for tab, button and QAction captions - attach field help to editors that sit inside layout rows (base URL), so keyboard and screen reader users keep the HTTPS guidance Co-Authored-By: Claude Opus 5 --- app/blitztext_linux.py | 71 +++++++++++++----- app/compose_window.py | 6 +- app/i18n.py | 27 ++++++- docs/screenshots/linux/Banner.png | Bin 178663 -> 0 bytes docs/screenshots/linux/main-window-de.png | Bin 15637 -> 0 bytes docs/screenshots/linux/main-window-en.png | Bin 15619 -> 0 bytes .../linux/main-window-recording-de.png | Bin 15861 -> 0 bytes .../linux/main-window-recording-en.png | Bin 15205 -> 0 bytes .../linux/settings-ai-workflows-de.png | Bin 61309 -> 0 bytes .../linux/settings-ai-workflows-en.png | Bin 58875 -> 0 bytes tests/test_compose_window.py | 4 +- tests/test_i18n.py | 18 ++++- tests/test_make_screenshots.py | 10 +-- tests/test_settings_dialog.py | 40 ++++++++-- 14 files changed, 139 insertions(+), 37 deletions(-) delete mode 100644 docs/screenshots/linux/Banner.png delete mode 100644 docs/screenshots/linux/main-window-de.png delete mode 100644 docs/screenshots/linux/main-window-en.png delete mode 100644 docs/screenshots/linux/main-window-recording-de.png delete mode 100644 docs/screenshots/linux/main-window-recording-en.png delete mode 100644 docs/screenshots/linux/settings-ai-workflows-de.png delete mode 100644 docs/screenshots/linux/settings-ai-workflows-en.png diff --git a/app/blitztext_linux.py b/app/blitztext_linux.py index 7b3a898..5369c73 100644 --- a/app/blitztext_linux.py +++ b/app/blitztext_linux.py @@ -51,7 +51,7 @@ from app.compose_window import ComposeWindow from app.tts_window import TtsWindow from app.main_window import MainWindow -from app.i18n import LANGUAGES, LANGUAGE_DISPLAY_NAMES, set_language, t +from app.i18n import LANGUAGES, LANGUAGE_DISPLAY_NAMES, set_language, t, tq from app import notify as notify_service from app import theme from app import __version__ as APP_VERSION @@ -240,7 +240,7 @@ def init_ui(self) -> None: form_whisper.addRow(t("settings.record_key.label"), self.combo_transcription_key) form_whisper.addRow(create_help_label(t("settings.record_key.help"))) - self.tabs.addTab(self._scrollable(tab_whisper), t("settings.tab.speech")) + self.tabs.addTab(self._scrollable(tab_whisper), tq("settings.tab.speech")) # Tab 2: LLM (KI) tab_llm = QWidget() @@ -328,8 +328,16 @@ def init_ui(self) -> None: self.edit_compose_custom_preset.setMaximumHeight(110) self.combo_emoji = QComboBox() - self.combo_emoji.addItems(["wenig", "mittel", "viel"]) - self.combo_emoji.setCurrentText(self.config.emoji_density) + for density, label_key in ( + ("wenig", "settings.emoji_density.low"), + ("mittel", "settings.emoji_density.medium"), + ("viel", "settings.emoji_density.high"), + ): + # The stored value stays language independent; only the caption is translated. + self.combo_emoji.addItem(t(label_key), density) + self.combo_emoji.setCurrentIndex( + max(0, self.combo_emoji.findData(self.config.emoji_density)) + ) self.edit_dampf_prompt = QPlainTextEdit() self.edit_dampf_prompt.setPlainText(self.config.dampf_system_prompt) @@ -386,7 +394,7 @@ def init_ui(self) -> None: form_llm.addRow(create_help_label(t("settings.custom_terms.help"))) self._update_settings_tone() - self.tabs.addTab(self._scrollable(tab_llm), t("settings.tab.workflows")) + self.tabs.addTab(self._scrollable(tab_llm), tq("settings.tab.workflows")) # Tab 3: Allgemein tab_general = QWidget() @@ -439,10 +447,30 @@ def init_ui(self) -> None: version_label.setAlignment(Qt.AlignmentFlag.AlignRight) form_general.addRow(version_label) - self.tabs.addTab(self._scrollable(tab_general), t("settings.tab.general")) + self.tabs.addTab(self._scrollable(tab_general), tq("settings.tab.general")) layout.addWidget(self.tabs) + def _target_widgets(item) -> list[QWidget]: + if item is None: + return [] + widget = item.widget() + if widget is not None: + layout = widget.layout() + if layout is not None: + targets = [widget] + for i in range(layout.count()): + targets.extend(_target_widgets(layout.itemAt(i))) + return targets + return [widget] + layout = item.layout() + if layout is not None: + targets = [] + for i in range(layout.count()): + targets.extend(_target_widgets(layout.itemAt(i))) + return targets + return [] + # Put supplemental explanations on their fields, keeping forms short. # Security notices and the direct prompt-editor link remain visible. for form in (form_whisper, form_llm, form_general): @@ -456,8 +484,9 @@ def init_ui(self) -> None: continue for role in (QFormLayout.ItemRole.LabelRole, QFormLayout.ItemRole.FieldRole): previous = form.itemAt(row - 1, role) if row else None - widget = previous.widget() if previous is not None else None - if widget is not None: + for widget in _target_widgets(previous): + if widget.property("status") == "warning": + continue widget.setToolTip(help_label.text()) widget.setAccessibleDescription(help_label.text()) form.setRowVisible(row, False) @@ -484,7 +513,9 @@ def _update_settings_tone(self) -> None: def _refresh_api_key_status(self) -> None: env_name = self.edit_api_key_env.text().strip() or self.config.openai_api_key_env env_value = os.environ.get(env_name, "").strip() - status = "gesetzt" if env_value else "nicht gesetzt" + status = t( + "settings.api_key.status_set" if env_value else "settings.api_key.status_unset" + ) self.lbl_api_key_status.setText( t("settings.api_key.status").format(status=status, env_name=env_name) ) @@ -590,7 +621,7 @@ def save_settings(self) -> None: self.config.text_improver_tone = self.combo_tone.currentData() self.config.writing_preset = self.combo_writing_preset.currentData() self.config.compose_custom_preset_text = self.edit_compose_custom_preset.toPlainText() - self.config.emoji_density = self.combo_emoji.currentText() + self.config.emoji_density = self.combo_emoji.currentData() self.config.dampf_system_prompt = self.edit_dampf_prompt.toPlainText().strip() self.config.custom_terms = self._collect_custom_terms() @@ -811,24 +842,24 @@ def setup_tray(self) -> None: # Actions für die fünf Workflows self.action_transcription = QAction( - f"{t('workflow.transcription.name')}\t{hotkey_display_name(self.config.transcription_hotkey)}", self + f"{tq('workflow.transcription.name')}\t{hotkey_display_name(self.config.transcription_hotkey)}", self ) self.action_transcription.triggered.connect(lambda: self._trigger_menu_workflow(WorkflowType.TRANSCRIPTION)) self.menu.addAction(self.action_transcription) - self.action_local = QAction(f"{t('workflow.local.name')}\tMeta+Shift+H", self) + self.action_local = QAction(f"{tq('workflow.local.name')}\tMeta+Shift+H", self) self.action_local.triggered.connect(lambda: self._trigger_menu_workflow(WorkflowType.LOCAL)) self.menu.addAction(self.action_local) - self.action_improver = QAction(f"{t('workflow.text_improver.name')}\tMeta+Shift+T", self) + self.action_improver = QAction(f"{tq('workflow.text_improver.name')}\tMeta+Shift+T", self) self.action_improver.triggered.connect(lambda: self._trigger_menu_workflow(WorkflowType.TEXT_IMPROVER)) self.menu.addAction(self.action_improver) - self.action_dampf = QAction(f"{t('workflow.dampf_ablassen.name')}\tMeta+Shift+D", self) + self.action_dampf = QAction(f"{tq('workflow.dampf_ablassen.name')}\tMeta+Shift+D", self) self.action_dampf.triggered.connect(lambda: self._trigger_menu_workflow(WorkflowType.DAMPF_ABLASSEN)) self.menu.addAction(self.action_dampf) - self.action_emoji = QAction(f"{t('workflow.emoji_text.name')}\tMeta+Shift+E", self) + self.action_emoji = QAction(f"{tq('workflow.emoji_text.name')}\tMeta+Shift+E", self) self.action_emoji.triggered.connect(lambda: self._trigger_menu_workflow(WorkflowType.EMOJI_TEXT)) self.menu.addAction(self.action_emoji) @@ -931,16 +962,16 @@ def _refresh_i18n_texts(self) -> None: self.action_custom_prompt.setText(t("compose.custom.edit")) if hasattr(self, "action_transcription"): self.action_transcription.setText( - f"{t('workflow.transcription.name')}\t{hotkey_display_name(self.config.transcription_hotkey)}" + f"{tq('workflow.transcription.name')}\t{hotkey_display_name(self.config.transcription_hotkey)}" ) if hasattr(self, "action_local"): - self.action_local.setText(f"{t('workflow.local.name')}\tMeta+Shift+H") + self.action_local.setText(f"{tq('workflow.local.name')}\tMeta+Shift+H") if hasattr(self, "action_improver"): - self.action_improver.setText(f"{t('workflow.text_improver.name')}\tMeta+Shift+T") + self.action_improver.setText(f"{tq('workflow.text_improver.name')}\tMeta+Shift+T") if hasattr(self, "action_dampf"): - self.action_dampf.setText(f"{t('workflow.dampf_ablassen.name')}\tMeta+Shift+D") + self.action_dampf.setText(f"{tq('workflow.dampf_ablassen.name')}\tMeta+Shift+D") if hasattr(self, "action_emoji"): - self.action_emoji.setText(f"{t('workflow.emoji_text.name')}\tMeta+Shift+E") + self.action_emoji.setText(f"{tq('workflow.emoji_text.name')}\tMeta+Shift+E") if hasattr(self, "menu_preset"): self.menu_preset.setTitle(t("tray.writing_preset")) self.action_settings.setText(f"{t('tray.settings')}…") diff --git a/app/compose_window.py b/app/compose_window.py index c931919..18fd2a2 100644 --- a/app/compose_window.py +++ b/app/compose_window.py @@ -23,7 +23,7 @@ QWidget, ) -from app.i18n import t +from app.i18n import t, tq from app import theme from app.llm_service import LLMService from app.config import Config, ConfigError, VALID_TONES @@ -680,7 +680,7 @@ def retranslate_ui(self) -> None: self.lblOwnPrompt.setText(t("compose.custom.label")) self.txtOwnPrompt.setAccessibleName(t("compose.custom.label")) self.txtOwnPrompt.setPlaceholderText(t("compose.custom.placeholder")) - self.btnSavePrompt.setText(t("compose.custom.save")) + self.btnSavePrompt.setText(tq("compose.custom.save")) self.lblTone.setText(t("compose.tone.label")) self.chkVoiceRouting.setText(t("compose.voice_routing.label")) self.chkVoiceRouting.setToolTip(t("compose.voice_routing.help")) @@ -690,7 +690,7 @@ def retranslate_ui(self) -> None: self.btnShowPrompt.setText(t("compose.btn.show_prompt")) self.btnShowPrompt.setToolTip(t("compose.prompt_preview.tooltip")) self.btnCopy.setText(t("compose.button.copy")) - self.btnPaste.setText(t("compose.button.insert_close")) + self.btnPaste.setText(tq("compose.button.insert_close")) self.btnClose.setText(t("compose.button.close")) self.btnSignature.setText(t("compose.btn_append_signature")) self.btnSignature.setToolTip(t("compose.tooltip_append_signature")) diff --git a/app/i18n.py b/app/i18n.py index bcd6ab2..69dc5d4 100644 --- a/app/i18n.py +++ b/app/i18n.py @@ -38,6 +38,8 @@ "settings.api_key_env.label": "API-Key-Umgebung:", "settings.api_key_env.help": "Nur der Name der Umgebungsvariable wird gespeichert. Der Schlüssel selbst wird aus os.environ gelesen (secrets.env). Für OpenRouter z. B. OPENROUTER_API_KEY.", "settings.api_key.status": "Status: {status} ({env_name})", + "settings.api_key.status_set": "gesetzt", + "settings.api_key.status_unset": "nicht gesetzt", "settings.api_key.legacy_notice": "Legacy openai_api_key gefunden. Er wird beim nächsten Speichern entfernt.", "settings.llm_provider.label": "LLM-Anbieter:", "settings.llm_provider.custom_endpoint": "Eigener Endpunkt", @@ -54,6 +56,9 @@ "settings.compose_custom_preset.help": "Bestehender freier System-Prompt für die getrennte Aktion „Eigener Prompt“.", "settings.compose_custom_preset.placeholder": "z. B. Formuliere den Text als sachliche Pressemitteilung…", "settings.emoji_density.label": "Emoji-Dichte:", + "settings.emoji_density.low": "wenig", + "settings.emoji_density.medium": "mittel", + "settings.emoji_density.high": "viel", "settings.dampf_prompt.label": "Dampf-Umschreiber Prompt:", "settings.dampf_prompt.placeholder": "Standard-Systemprompt verwenden...", "settings.dampf_prompt.help": "Eigener System-Prompt, um wütende Aussagen in eine professionelle Form umzuschreiben.", @@ -251,6 +256,8 @@ "settings.api_key_env.label": "API key environment:", "settings.api_key_env.help": "Only the environment variable name is stored. The key itself is read from os.environ (secrets.env). For OpenRouter, for example OPENROUTER_API_KEY.", "settings.api_key.status": "Status: {status} ({env_name})", + "settings.api_key.status_set": "set", + "settings.api_key.status_unset": "not set", "settings.api_key.legacy_notice": "Legacy openai_api_key found. It will be removed the next time settings are saved.", "settings.llm_provider.label": "LLM provider:", "settings.llm_provider.custom_endpoint": "Custom endpoint", @@ -267,7 +274,10 @@ "settings.compose_custom_preset.help": "Existing free system prompt for the separate 'Custom prompt' action.", "settings.compose_custom_preset.placeholder": "e.g. Rewrite the text as a factual press release…", "settings.emoji_density.label": "Emoji density:", - "settings.dampf_prompt.label": "Dampf rewrite prompt:", + "settings.emoji_density.low": "few", + "settings.emoji_density.medium": "medium", + "settings.emoji_density.high": "many", + "settings.dampf_prompt.label": "Steam-release prompt:", "settings.dampf_prompt.placeholder": "Use default system prompt...", "settings.dampf_prompt.help": "Custom system prompt for rewriting angry statements into a professional form.", "settings.custom_terms.label": "Proper names / terms:", @@ -496,6 +506,21 @@ def t(key: str) -> str: return key +def tq(key: str) -> str: + """Übersetzung für Qt-Widgets, die "&" als Mnemonic-Marker lesen. + + Buttons, Tabs und Menüeinträge verschlucken sonst das kaufmännische Und + (aus "Insert & Close" wird "Insert Close" mit unterstrichenem Leerzeichen). + + Args: + key: Übersetzungs-Schlüssel. + + Returns: + Übersetzter String mit maskiertem "&". + """ + return t(key).replace("&", "&&") + + def missing_keys() -> set[str]: """Prüfe Vollständigkeits-Invariante. diff --git a/docs/screenshots/linux/Banner.png b/docs/screenshots/linux/Banner.png deleted file mode 100644 index 6fb249ef4639171c4c12a87491df012586c2d229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178663 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�Wu*Q^Kn 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�j&JT(U8IPtvZ&pF3LcS= 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 diff --git a/docs/screenshots/linux/main-window-de.png b/docs/screenshots/linux/main-window-de.png deleted file mode 100644 index ec28428e14b13d2f332cf922070a15b38ad3dc74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15637 zcmajGWl$YK+a^2*haiUpcL}b+-QC?C65QQ2gy3!oZoyp-PH=a33+`^q^X}GGeYNj? z`(tY6oayQA>3ga#>AQa_DM+Fq;UNJ4fFdm=rUC$<_e&5g0@V8{c(o$v{e9pO6^~gU}{*MkX!}tM8yLrsb+W zx8|n(ba=X?uWzV7uih1u8y5DbZo>K>KPk+VG-aBZSKD3YU5s>^^tX6k8l2Rt7nt~F z=TrVhz7FS1@1@{JG$K?OktUIsIVvHN=VUMl+>J*Dh-itz2q9R90SLw@=m2RMDHKTv zyBH8s6^al5o?|9lq%x%z6H`T>l(T6unsR^OMn{;+A@^>URWNa8s7VV6hl=ctbwg7I zaB>0@2ttwCFQM#bA{ccoAfFIcf$|7b7e_gmwX@BYSj(FZ zzvBv?^_;8E;FgR(+%Xe-cz2sOAE#yg;5)+zS;`-43;sSL@~5@1pXJ^oANYX@@v}%M z2=TZU_1n~B*kl~pmdrcyW-PIEh;wApX<>(&8o8=h~|Gz z-h&bsySib|;Gu!q{J2#-FDh1-m>3Tu^!~5J)QWVI4LEXEO)N4oaY`?H!DVVox+xNz z!9mF=FC!xj6}zxp5YOJ>eRs4P$H)N~NeI*)JPF?91meE##L%4{NxC01hd4+wOFJz= zoT&eA_sJ2634S#bv@68lXQ^gQ2Ro_nU+aDB(wIhZ&AFaK1j24gq zQz#HO9~EYbx)aVrmZgtHebIXvCcdVl?9^(OQq z8iByquI2BdZkjGn^*Zd2gOpDt#;N96NSC=602-_-lGu5DHFr+0(ILs+d;yX|Z+tZ5p8^S9u(peH=mCJl>%R4#0u)zH|mGF87`qIDSkiZV3T-1G3 zIbg%@_;rWMfG@@o@eLAxtsLxsZsZFD>sfygc z@S)vzvn!+Uw)cI)kP^5KG^Zr?JelLilIwl+Ath$_b{a)%JT2S%vQzocyi-Bb)69L>Kn)XN90T97?n`kZVOsd)sWM=kA)C~n_5ze55+z8_I@$~dMm?f2Khn+wVg z%|Sa`OV@wzCFdbv?8UoK^Yy1^@hAClyV}OAUp^bY;|hW=edW9(42YyRp*9_9U!^mQDYjR5ox3&;qW})~kwtY#v)aqnzf>CP4|w)3(gjGza_x5BGHV~b78{$}%%^pmvC-9d$mR)m^~RMgl6uzD&^BGFc$VFw zKehevJkv^IxlHQS2=r1CQzi8lgZH}c_I=_$5l#h|sqDebdu#gW*4FbyhY$(?(+R%y zkZrw%kj7K~9Vld&@_%!~M=XrmLauMf+t)sm3=K^=#mahMqA@`1z;$foI~~%WvtyAy z16<518$RvqHG>ukV_JbTpXsh>M5r8Di+PJSDcby13Mxx|J*ma{^q&Ai2d5umNSh% zvG6+D!HC@D{%VL-w-S4S{dpj&h4TTZLb%TUS6+e!I?!KSPxhWsgo(s2tna6*0}u5G24s;U>@$Wt;PnY^;hB@f=b z{~+1sUq_%LO`>NPJBjqa5cdB9!v|7=0eX}@0W>g9&E30BuK$I*al^YD5OoX?>Cg#k zvo$Rn$OxSk`D--}Kal|#M)`As1!4z3vgkBhPfesu0Xod_CjZnON*8SWpxF{aeXmKw zG9gjS4=ur*ADvf0!@D&)wzIS9Y_Ku~Dv#|dumR%qrUx~bEHP9tp6{cTYURt0#iy0X zLnc)M;DnZxRGj|%&nTjb>J#?Ju-ixeLsZpYoiPgD4Yiq~=C zN)=MTb8N&ijsG9|FuY)kQ*Y1osjeqW2g&;WzTBF%YJRWdp{3@GbklDNIt_kyIpO59 zqcY&%$oI-u*NwRS{YXM?$6J2?H!H(5=wOo>LPfp#Nv`6I!dVDfhR^VJt*oGK!)`|- z3hsn|XLg!BL9zZ-=LG0K_zQ7?@9A`wll$)O$-_gicc?WO$av`- zs?2+ywZ5n-)KL)*P0xu*7JJ4HgvOmw@bLt za@lLGY5{B%b~InubIN(Tc%E*G5|2$P9|pR&)_>a%goe!dK5sbG_ZvdFJl=2?9BbE3 zM^;lK1d*5^16tr#;-(pG*%bSQHv7A|S^E_Mq3{2$zYjMu=%z|QlgtiuR4ku2(&U}q zLUKcUZXc!(ZQp)RZCJ1b6TNv}U77AkP3|XawvVks?A=epvF!$8K>+Jzn&Enz>&n*M zJTcev%@!LTAX=Hm?8ry8?&DS}Fl9qs7PWGE3IibL||Gxvcf)EO`5LKCh{6cJw=e1#oyAA)kHWZrgHE zbf&{H_O)%yxNH%~l2Y(xiJ<{)KL+1;! z001-hbmh0kS1+7U{^wih!=#9!$mT~hYj6J7p_2nP0N}J5jNhq8lf&=0FI52rjAq8V zZ4@tV_bd2sZDj8o{7w-AO)2O<_VEpSUr|M8y#DP%XX0}gr7!s1vNL(_8c`UD%l_K; zV{MRsyq5g!{QA5{QIFN``ri7?*VDG0P!-YH@U=fA2-}W8@HA9&sPbuF_0uc@@GsFb zW`x@RB)NM2*|rg1X=lWfTbCH(w~~r08-wh3`HJ{1o8~WGs6I;QV@^A-C+kdNd>$_a zRo=L>yoZd5Sl7M7X+En_g5mKj6lFN`7bkPBx_pQ&toM~n8I+sBg1Z(mCUF!1RGFT+ z8)mV5SWvIA-G5lvfk8?QOz2qmF#yNFO%!vFxzkTZs&4R@y3q2`%q?0zrDwWnVYquu<_Xm z1FgjluFZI{MFqP_X0C!ij@|LMW>j~(;`)+D*Rey(7a)vXw_V@x6spVRdid-TUIDjU zeC^yX>z(&i^ZSpEQ;-)T@2@2F-W+JIv((4DbHneusPr01YJHKvcukGizLrzdvzyX- zUAp!t`d=+>dI_@;K9kO~e47H`0I+Jqt>G}*5g{rz8sIZIPS;@I60GEJbcEin86OP= zI3!^mePUH%BnNo}lY6o|OpjjKw|KVCKl*Qzcs}>GWj(u|)eHnWr?kIbKvv4{%BmiH zBFNxI{r|P&|M*+0rFJbNB<7unUV!#gmM_IutG`u$4rp9SjGk$Dcq z9S{KSnXObI2gaMvI_P{h&T!XP+DE~y51Q1gO*u{vBa`9!p$DqQS5u#etaRjDF8{vS zWRU}a5;vxcG-(vZgL|z7G-yXfjV)Eds=x#Z)(0DI5-B0IVth+LfX!S;_ z1S@@uFCyls7<5MF1{SDcut9(&85;ud$DpzGIYwIYwBxR_e>C@Y@69H2=@7_WH2WDg zISD`kRe1F)XH^TE4zy~*OCjQ>`o1@Z9V1?z9cRpF`9u$${0ERZH3ff%iKK6+R1Ks z)H8T?_;#<0ilj3`*Eh(Um*?vsM1YAi^ZB)2@b%pIZQ1bYeAfHY{$WYUe(`ZLQj+tY ze)2~ysPpXHJe$z9vL)(ZjW1W&Gc$9)ve zwd`!br?@#mef)nx#S6ua`YE)cYJX#S{pQbRZeJ(~s9T9sQl|wKq5~>Bl$17&w9=!G zc$t;OgDq(2sOy#JgRL9hoSX)TPw|PFptCVAULLRG4RQxnrnecfQVgT{pZTe!h%nim zCIvNZmb`cFGu4@p`ESOH1o-I!oX4@VW=CJwqxI=h%uZg8gD(%xUYe|S!!?Wa7V6e< zpOqGBc5gb$B0Ozw)_i}ZFtEL~R;U2rvC4;ztZgEL=EtWbVkYIYK?aobR=ppB9$wAf zT`9bm4V6A32@sxj`-ONd_xp|BK+{kd4Z#0)y5E4C|8lq98;xk`>FNnBGFlzkcjLjb zXx+p7hc>nTLk#B7Q)XI%(1YG2uEduq60wUP?EC z!H>*mn<;f1e^f|2JgP50{+7QJDq?&-t_2y6ybKp6$JO^>=Vx9Hq1|Od+&9g8Q%o^Q z0z*Q?AbC-j4WOT zL#aH$f%}y!5b>rOBOD%Do~2zYf8>rjur%4kbrLITfJ3k7bmZU7;dqz;aBt1KeKri2 z{1qI}F)uDd*0@}*V#)JAwMoI8lpeX1QzSE}zrWXgD-j_?R?N&SztjDu1WdFh`o*U5 z-Xj@h0$ZHq8k|c;u6~GcU~T$+V{!S!jow6FEM(f4imnIU3w4yPrNjl?UQ!tHd-Wk>?(gNgOy)FLiKg8$4{yOdmMW`+pG}|6kwl zzbTY<;Qce3=3fFmssi@(HYo*aujCXGcX=!+;LudnL!&nT;j5RP9!h^iaqVuRP@#_A z$IlEABLA3?QA{5Z=aIK1_Xm<>U`=)ajDWCefDCPe-5H4*jubBdsx#Gn!REHrXMT@- zq}?Z-UShf&406HN!F*kX@jHcSmdF#TgNksY=lXJH!RE!Zmh|aGV@x~}Y7$9|rfQ=~ zi$L($sbZ-&)#h`$a-$H;#0@o9s}bHCL^@Ig^Cv77R)&^EdR?H;>%%m`Lc=C!?rxY0 zNx1Vu)Vl3{$4YlRqLe-=x)3&NMaTKT=pW58)GF$hBhbBssic4#aT!^OC)OQ8PGS7| z{3EolSO7R%Vi5>SZ3JPl;jPwfVn9ce@Bf5rK_&~R5T@y2S~*SU|AHsR={66-%BG3c z4gSKp*fQUVKSBUz^S9yff*HjFgb>7tt~5fLx)u*dxQ1VSmdIlpgBSx4vOh?LeO!Me z7i25K-isnx$XVR-Ehom4C-#wBGek1@!bWvF`))CV^#Kzvr{e{IVsqIh%#88JmgD|&v7 z)1@K*BFF=aF4QlK@ak1c$I4*fpuvG>nJ~U(7|ZD!=<~7eIgk=^*XUtLDy)jsWssRc z)Zx-zn)hW25%>#xhg!}IHu}73l*P>yu?-R#S?o$?l_PKS72LVf8j(e)xQpNO` zwTVD_uIh~@=Rzwzg{K@P1Q03IKLjUKK|XBq@SaxK&Pu&djV#@v?#k9Xf3(|Kp-z>K zS*j6TFonNa1@->Gu#hCl`vdNBuKoT0#2Tv|MXe+3jmx4qPBceEua+IA+ehWa7>+x3 z_X`EZV!jAyxc95E$mNoQ*T0z6(LO_@*^EG@G<2qob(&|yc4%wv-7Xa~AV9k~{7Y~h z!BIK9gK0XJKMZVyLda~#FR{v{?}Mq$N~BN-X}W#Qm?b!q#c1hJu+Oz=-7NjQSt-ey zoJUmL2Db~{GshU>N93EG#Lt~Xc_Nt3S6n^jzoe)aCP)~SEST9w(mIX1P@7io#x%YP ziU3MlhaQjR&h2w(!0v2C(K?TN#mHnL{W*G2fH)e~Z)Yk8WLydiGBF_MOG~9>Uh)&N zyR1RSly5vtfl44OuSa?HD%27aIvh|`n$diU zTC|YZw26k;%r=sNPC#2g#v3O`h6*AJ0OKT%k;|N_LbE+_wCh%#X$F3*lRh$SxF_IJ z1v*<%Cd0dM^EJ6(!T=Ex22^N~*V?6*F29cF5Rl)3^iI>{_ep{|A&v+-!yD?I1!y?r3~|A;N`6-8pEG6?7yBeBu!27x14~1N~4H z8sPQAdV1M6O)Qtkg6_i+6Nc#|kmRo+iOYrJ62bURq#rxrhyh^1qQlqtbu0l-bm+_g ziP&;RJ}%pTMmu|n8Y=fiuJWP0&b3yqcJq|WEd9=9GcymXlZ#jUb}6rz;V^KA>-0ua zwN}L};36|G*;5hwy_A(>tk77@c;lKNxSaDNC{Qm=AQ^!GSIq%gud0-Tnn-HtKbCBcKJ7z z=zty7Gx|GBEH@1UJJ9C-Ad98IWfciopr8vOB>qD;T50MO6!|lFivQL#APK!ze2fFE zaw#`j#x&3EJb1W{_B7t)QX6Tr8K-_*0iys)7ytlAAAa63%Z~L6ocGl}JsG$XI_bHV`)#4H^T zo&}>_&;iulPjjfy-bml+3(LmMj z?BB}mW|Z9B;oH%C!y0zO`8nG{+(5XE`afaS#${xK0m%~{-bnJv%VIxz^>@q+A28c~Dja+)?8Rf~{$!s5 z-6=>UH)Ux7Fl&33hv!gdZLK$M{K%d|!vQmJrV)CY2jAA9Ly5qE@mc}F)4j7+jbLiH z2%q=B2h6{l=QHQ{v0#Du1Q0CS38gogcAZ1-Ww z0wzexg-C0?Vpfb<$rxF}cu%Kw);HQV3N=WjagDO{eWIrw7BuG20?@H{tLEOSQas*B zMXds2zbqD?xrcxFMwY!x!u4zU6<=<;h!(IYK>+~e^RZ8Zl)61ygfJVnK*68A8vW8- z<%ADAnuoz12cosl7TkbO$A@3X`CK1x$pWIQOdw8=4yrz73g8kYQ+NC6^idpg;P~p> z%0CQ{5=Qh)ooyilk5|q`>MK6J_xCTrsD#GsO!-2^VZ7`IPN}p>^xt;ZYccd#`WSf^ zj?<1GBw;!21N$<|3W+Ulf`6@22)cLFJI~s@VB~cLU9Af`DR8DCE}~1ZTENp(7T{K) z4QfDRG4JK<=1#mGiF4u?VX)fLpXh49HuZ9b#j8d>mPR#XUFtB>%EThP6ANyyz~M;t z!h*jhYp5g~jW6Do==j;QEc>7fPsQ7_4?PU=MnGtC{|TSX{k)EReZu0C_k#8~zQM4?WR~(&W0C36h{Eo}94l{f6;e|1N?Pw+z>fyqMuQNq> zc~Ka~89@lywOSc7W2!3?YN9SSd|{b;uBu8O67D$DzdPmv00HDbxd1P7A{N@QPnslI>kGiMrjRb$Vi;d{pyhXdy5R@T^cl3(9VYaN8L8Sf}0@* zn%=K|^0l%a4^0t|9|HGIOm_x6E2>ubnHNixt!Xr1b0OmQ_evJmp47?7y<{>5`liqO zGGaP>kar@$}vh0~;-L8@V=s9$->oh><8JqvX$ zt1`E0C6OSra8y}Rzq{>A4{_(E)(EStl=B z{KxFpwO@2tOiFOU&Q6YVgBF{mS!I)lc=ar161c}$^>tH~!Uu}C++R(EO;_XK^l^FR z3UL@O0NN|$U2zC~o)BFwgQre6=1!w5c8`}RE1lsDR7hp^-UEAH6cTH^cnNd3?73=+ zd%354RZQcT({Q}*ykK#!B(Z$ArfccXw9<6hvKG#FiwyTOUExMFi#14&>k!cgf3l=R z!E5Bi=LF!tCk+iII7!5GSSgj{l9Fo_Cz9GYs~}2$F=~WXDZxY-RHw!BKDHCDG-I%L zHjyb-3$ermC$kF?WY1k-YzM>#;w&Hso;XiK`~IiNt&OE%uQ-{1%Suq&AoqH0k7d&_Izn46gqZoPb6JV^z;#=fc-oM5#QL;kZD}l3gjb1wt`kGZ^$&C)?zuVKaAc0;@cy zuGsgfHua|zVe%jndnix)Qk)^D*}{f#Zv$&RUs2TT5>j;Pv-`)=t7U~?LO0$&)6S1~ z%GyW6;nq4GA*PK6hU1dG*Z6GA$>EcMr6Pt*Mx>n*_FkVAhj5cV8S_K@&$Q{_fJr_5 z6FF&FT;|`-CEMCIG!2Zs|)NCD6opa4KG z;7XVpDIP;SAC34oMnYoRDkmMe^Z_-0!|r@=l0uh`hE*)ZEwSgUde7rc^!7;a_g>dl zMsKm`irbkk6IM8&I)g2DbZ4&6?2d3j@Ov?j{vR~6kk*2=KC!=l|4P)Hrf(%s(b4oSNngjY3RlhqB zNKyumQ6VHI${U_*+iu?Jdm=88(P*KjIHBKgkc9r?n9_%n^=%3iB0mU`euiq&uNYgw zYL+WhqD2=8qP}e1Xd5*4%W9*55(zW5NY8~4uG1PJWVGf{fhGyzitfSjP;81OLlgOM zlus?gm;zZP5=Lm&c)u>614K~Gi$1&TPMRGV7zP&}{P|;1I=kiKW@cnMa0RkRPj>uG z5}vzITtY?AiSr?-vxZ)tm2{P{S+8)?V&&aX3{So7#DT2Z6^PIz4Du1V|M@O%!PLbj zPltij*gs9NW}CWk;UT6xVZkO`RPjWfGF-=#F?xEO?~bprK!|Dpj*tKNwZ@3G9r{xc z02Uz_<{=<7#9**N7oYrATTTB%i8o=3CR~L!Nh0rI>i0qt%=pzKUa(9-;U91rPe?vN z|3$vsAxu!GvmWnmf=;<(OW5+Xqn=%iOo5%CKDi2PCo^)N5MS2VMw_=SmxxmuGMFq= z(R{;`NI6lD(pr!Pkg|alL6}7T1ZOK?V|GUBtD5(9ql~8>l3jSj%jS`3j>}<`@I_o1 zsbFdoxm|!<7|*UzHz)D2khU032*Fi6#*z1wDZU7`&1+5__pr}JDw)sfvhL#GP`1vB zSmm>Met!Vz+eq4TMByoI=)2cp54F~ClDW1e-MfB&cqiD-#SjkVcAaqK)ZyV^6!S|X z`b#0TPVS@>k9TV|F>^to8gWTAqyVGyWsPl2ouU8hYHf3iPSZFX~3##c{E zWXlNJhfPjE9J|H0`HUEllNRmqmPkoa#A)dAoC^;yGa;lF5+?0K=?DUV+uUJP+M?s+ zesv?w!%MK z-NOkc5qrMf)?g8?_|FwfkDmU*%`>j7$Z zz0UpCLf6~t^i+L8>&g8PXNJ<4 z2vp^GaJckb(pM8Cl3eo%Tgk-a+%>Gav|$K&DHVqs$|!HEKC!-`FFcN3z}&;Wy!KdZ zZSdm{4sVNZk(!NC862Nw_bX^ijtB4=sxMxfv4JDF7 zPtDBb_DCuwZ7+bJSzHp|(5)iXvB!?|7xWW4?lyjY0!RR2i~zD&sYD!m2{S zmTY?T(0cNVv+QYWwTSrTUx?3N{ST6K=t&MoPxuY3UwDV^kYc~x$G_P>iZ9NaRR?pnpZ5#h(@>yBt#!7X#J) z*4LHhnuy1mZW-1IBntd3e5AhAZ%~Puw9UB?gLg_K68W?7H|IaJva#(c@j*Nbp+74P zCyC%M4pI^%_09**S)P{BCc~vnettF7?z;^vfr1Uk7mzb=yIpP&jOj~n_YLvOOYwdO zAHMf!51L#I7F|P~)HI4wWRg?CdsgxFk1wa4PiZ7VrC5UD5+=H~(hJ(Urb8o$p^c5zxkDo2IVSq4Y3bWfuJVv#~ z)n5S_k9e$vN#Jqr66@B!{o-N{54Eo@C_(-GHqlD19ZZ?y4iW}s#PMx zQT^-L7(O5QvO6Q3bo|z@d2i=Cgu$ch{GLaV2b_E<%QL_Ce--Kq#Xo(bm<58UC)D7# zx|@%X6q~lDSssg617I~*d!JSJIJ$AYx}tU3iW?R7{}eZHRMZ-}K7tcgnVQ$bTqLfw zj%1*s6Van?D5b(KQV(r$s(LL%ire_Sf?=V7h7>}6@w=l89uH>8pLWjj%C@{kUGo@3 z{1mqb8SGpcpqL&lrv|cXd~lf2c<4U=Z@IO$>7RdFS~0UQzai5Sr1QIuZAc?s9m?|t zaj=lP&MjEZ-^NH0@thP|ruAi1`n%Stmr`)-5)VEd%%e&8)LrNFn-lu)&09rG{$*WE zuurvOD5c^1TZ8OTrjgP*AB#JWrbO2*4uV&!qI z=853#b#?lPJ}>imlUQ_4u;%_HLF9UN-0$)@?COmFekP`{DogmOTEF=^hiP@5 z;bpk{qWE{U(R7OE#hn6^uh)fS5zJ`S9vj;0ncBRyLAeUv(NV#5sZ<6!Wx}wyFo|g( z52Cm-n>eq2V3D0gy$%{vY_(8ENTFqNjy$F6lXSrybdx?KrP4Mb>1Ui!$L3&-QLG5@ zVkNzyt7bA~T8#G}CMLyD=VK6K?cBiVo|>}d6U#hwX$9{fjlL%{@+V?^YYthbmtP2;DtzNt1jAbjcktiQ=!eO~7Ed^Sx+9w& zJ8`SiQltfbCM*yM1ea7)AkET?R#?FbJA{+Qct&*yvs&_CNcw7UpLNg1@r#X zpVZ-45!#FiG#E(Xg`Nf*urY@^I<;nSuSb49Y^EH2S%p>Y{a4XG^j~ z3z^S8vzR}wn{+ZfANd)uI|vG>C^kzg)bjt%9zIW>aW~(SsRREhBL{J;Z`nDxi`CO1 zIUo$krLLFwM1=B8ZM9?DXojztoGR)$EF3;_QM<1v_*z2Xc~g9Os&mzZk1np96AN$S zbkJS&_G^C%ulP$hWAM4U0Le`({#ko**7zglWqU35I*Z7bNmb51b{Z>Bf4lbsRaV6S zWI-=LIj+a9#np-hUdXzZa=hbeO>njL{`MevOAE+0t!&wCs7B=fno+>9WhL$NNKIDm z{w_G|ikyX=^nWW%Mo)%fkjupbEu22;oB_7t;`JA8)4xPM52&&xMDCA$S1b7e6htef z-LNZk22K3_PUd{gytxyI#Hn)ki$|c)qvsM$K-X1?faR#f02zV39}V9t26sU}9huNx zuY7KqLclkFG~HvnReKw*NMdNIsStHf#9Ed0(~g?i8}5}kYII>!)5!5X#|##I%A6D) z(qzVFsR+ygoPqmv?4NI|TaP^*&psmy-8I$a_j;p$Mv!;YRNa8sB6G?a%o7&V?0W4_ zg^>sN44>!=;2UiPHMS*`$@dk(w^zUUP>n zCc0Z#?W<hJ%!6sw_X{M$9qj>h|Aea`-Q)&#s>q!)2R< zM%AAz-rqEMaWYw{;-PJ_BoQ0>m$i=N5iuXRZ$D-+@M~dH(<%0D8a7C-aF_Vql$Z*r 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 V+fQ=?KD(L$DKUA`Y7v9L{{`z71-t+N diff --git a/docs/screenshots/linux/main-window-recording-de.png b/docs/screenshots/linux/main-window-recording-de.png deleted file mode 100644 index 3b728b8a6c089571b6247ca9b84f6a523c4709ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15861 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 MBo)5Yh#Lj{54)}6p#T5? diff --git a/docs/screenshots/linux/main-window-recording-en.png b/docs/screenshots/linux/main-window-recording-en.png deleted file mode 100644 index 6a7a92ef43d178665cc8e5d9f21237334e777039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15205 zcma*OWl&u~6D_*&g9Hf>+}$O(LvVt-yE_CA?(XjH9^Bm_I0Sch_sjP^sk-&*-ur%> z+Pil3oayPaPp{Q$dP3!7#J<2`!vO&BMM7Ly0RX^0Z^58I;GY-&wJN{Q3#^^Ex+4G} z_W$PtmPmt$0|118gs`BJYsOioiyGPx&d^5cS_h)bFL~M}gK+KIhjmu@cr&X|D)J<> zSr*aRpFeFaBFNw4N~SSAdcecbJudL%3;NdVt;b&9Ir}Xz(8>> zc+Mk>71g9XRU#xvG)JNI%(-pxMmTp^tWaT3Z9EPVq#xY3b##;k>mwduTsx95aN|cA z7Dwuqh99`?q?V+QnY5!;xgd)M%W!!;b(aHQphSK5&J{mmR;%WgRa}^@AcG7!ZPS!K z!8tPGf{B0~Df-^x03|@0x0{k4%I>xf;U-Usl(L&(M0_nw%p9Fe10)T&#KlXc)4=WZ z#Ae0zI5@yJR_rKA7EYMtI`Qwt`W(2W&*v#n@8Qx)0g#|6c;hkj!0XLTH(#F$ofuj$ zJ;*%DBswXyQU4!kA`wP-RMqeW3bUL9qa*>O64Z$rld*M>gpLhTE0Qt8e z)>v3<=QbCMI%=+RveAq(AFR&SE#Lgj{Y#oN_S0G6;DzU_R)HlG`QVMcN3|M=@W&7a z`L8M^VVUrc1>T>+)v$*7;M#XZpelJ1;jIx7N+jF>xp|9NQ0`Zk(IHFl5YF7?UurLV zWdb{vGwWzBC_9_$S6ZH`dTPfh7q9eeqWULc=P*Zn3u z?@03n$7fm8v^l&sGt1L`b!{b??~o6v_xc-h|Hu<8%akhF?gwBYpubGeoP%<~{DY!A z?S&G{<|SPw6z=ENuE$LL=Y9PU%x(!;L!#JqLR~HQl@+dy&=izIj%OuXyx%#&as+gP zc5xrC-uN}AkX~9ZC}7+GpC*q=7=eG^F6grh)$rRW-V?@}#5eZds)N$_@D}(cm0l7> z9QjYZ-M9Z;baJ$BzrjvqspGy+hNpGuzP${SJvOVSKh*0G@I8FZ{O6t^-faK26#GLu ztpV_HvV4c~`E-=cd|~_Z87zBM@_E`i3NYqF=_^>Ba@*eOEoK}8=D+FMN}_r3FnVJ6 zv#WZ%@!#r^!17zVKgGVDN{Y}4NT{dTRte+<5Rkf5*C&7eplzOx4Z|iU6Z+|W?&adL^ z^m`7kKH6jwl&%CeOVo5oQ~>d z8p-g?dP1OVhqqJxtA6{Mm2mNa&a=u!#k@0dluO}{BmQ^JS!TOu8L5%dQtWn~j+f=? zpbO@2kJC&1q~e+viNiSj(tG7yCL_F zfJYYFf4Z|o?BL`rgRZ|(k`SXgj(V%Pn77SdOI1Epl`4uD&mh@A@UmAAv*a`>Lr7iX zcJkCJ#329k@BPRN)wfP9;yT9OqT8kktUGDqWXzRejO%o^RDYV*bBb*g1@9++SH2vz z4~E{6N%>(7-P#_-4RM6`gqOdjy(+`%FV&B)hDj0x>NEjh0mzz`bGJQB-YNBT+736B zcilm2iDK>Rm0{Qr3efWvsJVj8+cD-0R390vo`a|U)X7Ytbv*pai1CCQfz$gFUF@T%0Pitnkz3zn_MmB@T z?b`K}ARpbbXi_74Uj|SR9Veh^!FXS5I$1m*){MlR5M%SfX@hX~@kl5h<){^@k(ltSEd`>rQK_JK54UTSlU*I!q=QgeQ=nXR^alw~ zd)|Nr%@w1%A&@Ak{0hbdg9m7>7ZLWld?YyN`w3maQ71}90Y=I*oZr5Wx!>0arp3bf zT>sTmCm%9Max9<)6aUH>!Ja%$neYPFSHn!8n?wc#Fb>Is$>C#hL?v?eQJfG4_vOxy zX3iGK;d5zZX8$A*bfB;hjtvM5N+kMB;Sj`xgaT;oXXt(yuHz2qy}cY!G*4!5dqgOh z$T{;*V-Jygf>Y}TwaB55PcJJK-;S}O6ug=buw)J>;QEc2-R!EwsE8tjV;`TeN^IpM zIeX^WOD3GNJ^i_A*XV9lre^cy+QT#Es|<2vY5v#n_+Jc#9?9qV_m|KOO*i=S_K}4} z96vA){!5(Lm6KTv&nK+<@5=wi!zPX1p8bzi_Wl;+$PM|h_uuv(jxdKjeDc%w_vc+h z!p$GrESFgqm)(B5rDYG<_hPs2sKqk4|7tDXr6w9c0?JLMi`aW5DW%vl>Ycv~c=tNG zJ@#OWEQ+)4ShCz^#_AboM5JFXs_j`zSBhrjRlpcoMLn+s{SCiEH`q*fZiHvkg?5>f z<=Aj;SMn7`#%q|sMS7-$6tABqUk-gtF5iG(BvLfH%gW;alRJq8&ec;=km%IXz8g4X z=L~IN7`q|F1^=K9C?E*qjkBu7im%39_GHGI$6aw45xl-~yFD~Y1$c)}sOJm5!d)ZVX{T2f`~ zp_!*gyx6<_(t7Rr!JRa9s+|f3h&)s`d98NMCVULw@-o}TfSq7RJeo|L{|LUfdOW); z;^OlLGcCKrQ*+x$TN8C)05MUvdZWJFJ;v%*ui9@8zen;%Tdx}(V$c{M;c}zh9Hd)= zGXZeeoqB!6JLKalH7|d2J#oCTH-2WP-|!E*V7~9AK@71=TlW+Hn62HYSgrlo>}hUr z)U`z&rPT0hww|36ZP`|JdbAokmT*e(%YD&eR=q1_=<=#^4yU4Nw0(J)Frj56IwPOl zsNv@GT6}I{XhP`b`166pts-re0|^YER?}`=&31=|3m zQI90ghzeCiaKDJmYIt?DEqA?-ZraCZK6@-tUBuscZzh#YRc)H`_S73HLCjxxjP~Yb zMW)y8{>G+XyGS}W4qeFz%g zWBk;L_M@4=3fmjM^yzmG3lHhz!Daqcd=AfF*2)d0#k`qUHwP!S*^{>V27C^e3LPbb zWX+dewTOR)MvN5JYj4k_dvyuBM3(1T!PhGU$EYBgC zZAbRp1#v{ol(pz@H9*KjyZZY*`HTxHx9Ra)-7 zkx7d@_8-E*ax(WP1gPUEG0ZM9{dn3jE21-SyO*_s$T9h{a`zAd-0oE zAVtUT5l>yT)gUQTrWMPtdhz?t5vK?N5sZMtVU$vT%fCzLCN%RdLU5{!`&aMs#nJ0U zkm+@xu*$16_9MQJyptzK9#f3eDbViEzn1irnOR5pGEzy9A#hr~Sg0%Gw60419{K>Xk1jlwI@_@g!T0DD4wsZX{!l;kZxqm z)fa&xj~1~^exMG{V346n7gA&u{~eW-msJttD7puMl>4gaI~Tz{Je=Nlg_(?H!p1*J z^+c2c93AG|PjzB%7xaf7jS~Or2z?)$oN-#GCh&gv_V|`9T-dJOumOMp8mWpuP_TlN zG$@<4Xnt{m^L34W2swP9YQdc&%8QgLTJSm}B(+%8v&-u5zofgCLYVWtU`wW>HdTa; z=-*y_blfYuYfkm&Uh*8XaU*7kAXwoTNMLws0|^YMx}2lPcHy`meMFMMCVPu{TH(fM z^)VV}dxF8i1W*7De(m=vpjN}$qH=|ED{g!c5*o%pJPt^SffL;SnV-O~uc!e{fcC9d zzz^gzN0i$-PJ<;Z9=T3Gezb5K!$)mD)-Eis(DG&NfbEC+QECz1jr-5#xSdu_d6!#D zx~U4z_1(nUyZd*C1s%#0@qGE^_{u#?JMS(^UBPQ5R!t{!C04a!J(evx=!cM>&31tl z3s(6`d!fgY0x7JJhs@PF&4w@)wlkGZ0|qmwGG}}x7rb?r956oxcJ$wH>Hwc#V9-Yk z11IDt3Cixyo->h#3RlPLt{%a${v^tvlVb#rvP5cKY09xM<{%lTD&D>jO*KG8FaL6%(Mu+r`^)SOscOT7H9((68p6kDz!qU{WXrx+ZxHxWHXD!=SBG2k1oHg7e82z9h?#s>dN zjH$jgy*9zNdNRS>2dhoI=sj^Qf~gY*WmX-sO;)4 zk|L3*)MU=nzUc-IRrp2Im@0LpO2;d)vE|$Id|wy8-9+0I>iqY|{C8ddjTIHfI%lSw zoGp0vCY^P!(S_^xNeV>#+p(~7&0txr%;WFUJ_tt8Bk@nPe@S@z$jK`nO@8by$vYYI z5~N38^H&I`nK1BNG~EW@{kc65Gs#V41vx{HpazKD`^v3^UIg(z)O@%1CQSOF%g1`H ze~{Ns#4nyzL61CCOK!;K1PHn*$x$bIy}NTV)PC}-gdybrmuhVU{)dp!e-g5RgB-zY z%Fh3?GV@PX23L6dzmq-w7uv{ScoY%{nlQn*7mFO(5JHqI0v*Ju9l!y7VM#+VM1XEM zsPJ0;LH7WGxSGD6o8Q<|6cW2hl5Pt<1kRTx&*#%`f=QZaVPa;;7KI8dDwM=nS|UC6 za8UB4!off4mPy<2&@~fa2h~dZEm+6w^%|~uvNt!YLuc%RN!Isk5|+`)3jrly9TI}4 zROyc*)iLu=^eAH%YzZ`xbm_X~Zfj(MgHEA=Gyot{E9|94_pdc-Slrjz;-#9`@dW1VRb^0e<=L0FMd@ zF=iw|s$76giTVpcj@-i0ia)XpeXIuBpNlA{jrE}=1QP6cM3f5E1i%hOPMG_{>@E&agorw!v#-~ z-Vwv!rxBXlr-x>Ks2qW>Q3+_3UEU-?NBQ#RQaBWuLYh7^K48z5^YXYjTgCOM6NI2D zbnnjNt`t$i>gOpO%w6S=$?uz0NpO^(D+nQ#$SYYiL-Xr4`0bl~hLp4oZVe{c7cVJ- z8WlNLa)t;~y8^HDDibs2&EAm)?$l^G&7kzwrp-Q#gCuM*C(Y65>&Hb$|3wMF&lfDo zl$2NP3B{#Iy%^XUp{uAepk(|y%-`g%1x9&1{5w)0w@83FT_iA%eyCBEhV>80F6ZaC zS;@i@|5}B@?fUv~uE8@!q`=@tsICcbHCT*x`0UI|xzc03RmsAbc<(S8B_L}nSe^t* zHPH|XprnEhT~RpUs*SG(vwNwLs}f_&YA=> zr=MyU5TZb3Y?QFdNz{Lb3GM@6`U@&|b>?ZX_SZdC34l-_hwe@qznk_~R0v(bB=8I{ zs8{yufy7D>hja>%#D;_51n3b2jFY~o*!8Z}GQ@rtA`2i40D(okz1)9EV+1Qz8o;Gj zuRL-*z-G4wml*Zn%?Us|_d<5%OWC0g{|X_nQJM^U20lWTU<}S=fF=4z!#HbO!}UL- zy>2G9rT7882Cm)8rq`ESdym*{luDJPPeV9ktYwNPE+xPL)-(lx{5mATrWqPo*9{iY zgUq7u_xi_={HGp5kOBQ6o5+X-87_toVMZ=^3_QAz7C6%akuWB72A@YpCTj9W|DN}{ z*8#n8hkJ8D>jrv-3eCy<7G>Om2&^Gp4iL1i(jq4{GT;;Yji@O%c1>lfiW@yP zHjDhgT{3iW>IboKxIB>8q)b1j;4rOU(Vw#GvaF&t{mUE@`Q*w7!eH5N-kZsM&ss7L z&JeE%32G$pGh}c9909{?-!^qdXy!yl(pyK00~F+PRx##3>^XzPzlI}=WrxLo`E(Zz zz%-OVgI5}tfm`UWGW21NNmlWt+1qGN{)PexZAeDFMhiVy?Fhf)G_Cy(6pno{j8SrXz&(z~{Fb%hX;DS}eMxeRt$4s3WpFoY0g z_@lk{1+kU;i))4sO5w&EBMDLjROsa`p4)#-XeHQ)i4L$8w?sG3^=()L#7Cl|zWIT` ziTXW{T-c`*P83lLabm~6e!5%&?8cGB;)d!4z(u*_hDiR~^Z%^#WaH~~TNLKz!?5*H zfe8C3VP@F7Br*(Ypv6dBA*x=|`QA_KcZ+&_a zqeP_ft>OQTNt`fKJmAbxqu^HE2SMiK3xJ4(OiYet`A1}F_KLFu#>WlP5_`X z?KqfWNv8p+y4>g=V`L)8-$5uMvD0Rx;bad)rU4*X9Y8>%r#QyUW5_d}ritotR$PD$Z8R)1% z096DINRWU}h11E;Hs{ilMb(88`Nu5~G3cH~wZe2VL|q*iNcMctCKN6GS+DjLO5>H+ z2d*1p65c=x3d5vYqzpaGu>wuf_1=1=q*UgL+o*=bDkjeIGM}WFFKn*jga8=V9paiT7uwuk>$kswM#UQ1e%=Rn8-DmFi3?` zO~?kc4Vx8&dXGsBM29wU(jyx*adULw=Y*`gp)e0yg5~`EoK5c43GVmit$XmAyE>trPlseAlfZKR;AAmd=t@ z1I5f8!&L5UPT^L^L&sK>kKbprZuh%w>R z&o2BViISB{I!$WPH@)WnUKr4ofI>m=kj5o&C+y4t?1Dv2SA1cV^KWnM4%rybh%GYj zXzm&G1Wz!qP|mF~HQ;?E2th3QM+uZ7npS@>&)3Cxg>{VUP0jH!X%}XGbv`Cug z#(n3i3}6}w$5j;mi}6GU>|VSwdU;t?vaMw}2E;i1x%Ggc1{h+9Btrd4Ot1E zH?l!Od>9%ccY$F!m-RMkrMrIqi2cqS?uOJL0Q13A=4c?tQJT*|=1EIAU$RY&t=M+SM-2BBQ zM+pK@AZ0z3QGg1C+E1@C5m(M&5#K{dtsDQjET8`BSPcJs9Z|t!XeCW?+p&DVAb$-2 zBG4ttFpvQ_C_++Lq4gQH+<4f}O$J5_){~2BIFKA8LQ(+^+Y79GnBygmgH@K*Sx;wRKN1-&0Z8ZG35SQghAn4LQrUccpfP45SM~52rQ@vp^q>C7A*Kj zLcuQ`apD-^VJsN$e!*;qHeETeRb4foV_eN(Lz;RkLLq423pkz-b%a_3RsbMCDjY+a zE<7Hf1~LLOLjDh5zv)$8cZ?Q7lg)`1TGfU032(QH#lZBDOZpG=LBkMM^o9HwJ{nk% z@uBFajr~b%9HtOQSp>RmX@r49?}iY96#v>!%H^UynR5a0e^8kJPrJ1LSGlt3)!UF& zYy99Hk6qI}hh1;?QdTNIAQDo*1Nr+WV3p6Va>j|-b+P%b-In*EeS38?;g25yCB7f{ zX73?O#*ZA0Xf+^X`&!3LPVYQc$1upow3+A93Uh?b^D+__$>d?6`f)EaRhHq%fM|8K z-89C25w>!@5smsUn2((7fawVfB(5!SNCjt2Dxo;j6QwxD_k0+ht)k2H%l+ww3h$NY zPHh|3h4)R|`~}1FTKe`5=28f=igEMpXo|&vVX&Xln0StNbIo*Z=nftNN$=* zre|mxHFyS z>x(Z;9-pe{~^jxSLX^Zo@*EMtZ?0zuX#MR*SRGi4&_h zu>HaOSSvf@cB%R}>mXuyZ+09Tch;h+@P%0UwM`z`3;;Or|LFxVuV_3^e>kVe9@lc0 zfwNd?i0wU_Tt!9eVLfIyll!ieSPrW4T0}%2xl7EJ{xJF%&9tnwCWA+h?qK>6{a?#M%l?*>MQ91Q!4O7HO}z*`;-Jd86~`S=wf5&P~`4j!jk ztChqz?|q4(=y0>LMO>AW7&$!DrCG*bGd4gtG_>Sv&*tAU6bl2% zVbIBZR}?EzASJbOHW~Q zM&8S}+#sb)bC2BJ8Ho4lHl=oITdqi+A3o>i4Q7~+w zRb}D+u0us!F|Txvqm>jE$RpJ%BPoEAkrF899$#%YoT|dZ*$7wA^X|~G{Y%0}MnyM8 zgpLSeA>^YY`vDFZNJ`ZD5HY$iQjukLrI3LE3NJ7A3dd(g_&^998Rv?%ZA8IF=gy}x zTCV}yiwQAv^461*W>WRQ6e;GT86D%K7~wpJeBPW`t2nkM_99b8ttFlD%J@# zEV=|z(0k8>v@@8Vk56$sTk6qf$8b^OGTuJ?GUUZaW@2h0HTXlfgYP57F)8SBnW~J4 zd{c-TQeWJ`LSXdg6tR}L8gdXR>{D={IUx=2*b`nXX(#|7myh)CSmgE~tj74jgMRTZ zkO~n|1e51uJwZWJBZDAMUf(1&StXjjeid0ItP6wIW)W7I7n-b0Kl1xrPX&pHcqA8k zLnAi^1DPf)z_jsmJVryQN+;0QQkj^f#+8OhK4Hd&R6{<}BDUu-r%=)e#h6yn!NPi!jz?QD0ttUIbXx1 zn03?*%!SI8+4yYR{Mcn#w}p9g2X#NtAYt z{!<&?U5Mr7_O|jz`pmzM#)1e>?kLT9Yn{}$oYpIqMHTVSMne5)~ z8y2H1T3j)O1tI#CMyxN9i3zi~Bu z#B>0FGD?}ghXWn}AOm)=_NEZ%m-BOWPB*&FhD$$QcRSGoX1k;_Yq<*Fmt?(Px6+Y@ zepU2?fetXdAD927qsU6Xx$f_R#a3jBvwx)Dy>H*>`xkk=zJH&$sYrS6i5m-yi=Aoo z`tC75-<=h|?p>(3@BNXHzh_cGa_m`YhMqPZgZ$3Iy=Bh0)Qra*+MmKIpka-5wl^2FGa^D}&P5 zTnC^pUhdv*yF-8*vcPim^&d#Z{EM;77Wm@o;(rh;QAfBbo|l^<$CwYDH;}-Dw*DStLP4EEZ z&xQbb%LGZXDem25Lkpv)gnz>_JUEc$N|GHtF^08ng)S!~Y85JiXf(=YB}&wid}-J% zO0E{WJUqz2pj!U4kuetUI1Ut~ptyweqJ0KL=o%)U3a zItoVC><{CeIx0Hl^%mSkv);Npc%6zHpY<-f!QsHzM2bK^)Uleh9mE2JFVp+(>Wa>; zrd!RI0hWu=6*_;Og_+h(3b?twwExgZq3RUhbjyF&WPd$scvvI@aZ)6Ed(M=n()hT9 z7Z8SI2vPm3fV%hS8y@}$o#ahdL1wVk^q_3$k3y@uUVYurEg1t3aaI)FZh6!Ec=DLY zMFSHUZFjYk^_lI+OjlBBXhT43srhYdFugqC5|QHUyn+An6all?Kr{O3=sdVxh7fXl zs)ttYi)OVGtTKl(wFa&VRC>cpwZW&lgnTpaZ@`BOQuOLBId64aLiwe4tIvD= z>x*)i0HoGlmF?^0K~d%O$^yMQV}~p$M0ZdF*2C2W4STX%E}3hqG%>3fm&_ zpAEUQrjZr#9Zu_~oZ$-tnJq^^Tw-cm&CLS?pX*0*{%GS)5klE-kYZd`! z`qK@RdZ+nq&iM7W0}H+4tG;8$?gdZttI3I3Zacu|kL<0-LvR!CLoW2!jMCY5LAxUX(tff<8v2 zuyOg+cr=!#S;%@m@sZn&eFf#?!J(J!n4`uS=u9E6Mi3u7wSrY%v_Ll6J^PL|A*|bB z&f9n8goA-2(ybiyt860U$$GLkQo=2{AxrIk_OsGdS>?}jj1JSstbzat@Bh_3tZUgz zK{j3$nD{Qd5lpFnGbFE7pI`A@Uf1Nu`_#9v6UkBQ;7%FpV+$)Z!!8G1=#5sQt(w&;|gJ9TbM851q%Ga|?(;e(vYQ_ck5fIJxKJ97+-l(Ih}v zsGWb9E2In(N^Yn}F1yh-H zJ-c2vwe9Od)p<}Nn;5iPPjN|BKl@hj0id;4=1n{08q3Ea{K+M8z;AUj^+Z6+ zt6wJD^^LX`CcD@Vgw1UCSdLZC=A3ioCnOWGzv01`>P;dDf{Bk#j<&jB#E4#0CorEE zpmnenSNt=aN&e7maei5t_>eZA1QQZThd+Wqh)77<{`K=rTy}!|JqR!rlNRsDqy__O zHP3vEejR|gX{8loX*$pZ9=?mmO|o-C9=t7yZcwD^g6bo^G42_-8C_<5R%|7j$sJe zI%!-b#|?p~F!$%Yk8MBN(+#yI$0o6wEqPZsIQPZ zxk{Ybe0OmD?p`Aq9}W1A<8ypoDVJELhWnG8D*XlN@XbO)$?N6^jHavYHJ0xl;i`Dj zvDXqQW|l}^`gS68@$nAy&o8=7#@F{`*^|?U-^S| zR_>-+mj+4J_UI|RdQ7GK)^VAgE%K#sFsheS9h;lHIDi@i!=|>Q6OXB3A%)fKuI$p~ zlBf6v_dA>E8RxAHh@tR5bZ`|boxwjqAy(_fx@~YxY%-coA^{%$rbDG~V&j>u9n4Ry ze0;OjDuHvXQuoHDCaBi_^blNiF6S8?{ZyDW2Pq=fd*9wX=8U(<0iRv>@zg$-YS9Ro z#)0&rJMX*1mGY@_&1j3_mJaaaV-yg53`=GLX9-dBHdNrC?-9owyMj(vyz-5M_DD=pUk z^v|cH%ze1E?)>DzJBl5;$mARUnQub>j9u0X9;@nk_v{{p|mtaronx%T{a>acW6HXp~=Q z$0XyFwmr({hK&V_VzsZV!d8r!p`j0X$I+qGlD@#hGGQCvNtVV+1&fJJ_SGkE!xA~S zNte$fgX?&59omcLtB?f5#a|3-?G=jBLuFxeB1NZbw5|2r_^FgDQYRt?4>4@Lpds{e zv=wBzpXP`r$(BZDc(fMV$P+H21mc0of702)uZE{4(^C{Zn1&HpLGpGPl7+$ob@la9 z2mb=FTPWMjj3~n`h11v0H{Bp}_x&k_h75@B{iWUfTcu)CY^`($17WtWJ?~sfbVo+e&^STqMdqDo@I$ z@gaS*9CaazfX*ZJbH)ORq&hxfy!XSHH?@Faz!NzVxvM&->_Dg~xLr^+bE<>czz1eG zJUAiRH*ABZu`n@});3)}#S#BO(2Y6%&&#^&B*{*+Jp#!-Ro<%qeES{+x~f?O<0u52 zj*5%|Rd+rC$+)4MKzwmE_8GvG4^p^+Mj~#(8$hj z3-z<8?`6kRkrvrb7Hfls%U-N2&Q^EAA#hfys!`{wPV|{DMJ5jiWot{;r7O7-;?KVE z$K=n3-ZpIpFaYk1iJ9)%JK4(DjC>9>xf@u|ZQm1TfoJOZxy79+<7-IfNxZIwW+&;s zTK`no1Di%$U7E}Oty>5A7LFYYbmwx0mvgBmSv(o}ISbwr{Q+sIo$yO1-Bu+#y)_ly zv{J`YP&#hI3!kFuS#*_k2bO0;NJI617W;WTCul41nhB`Uj?i|PmRdBRW;53%GVhC< zAMxwu7qD(JrLf^vdTJRhPPS>G1>f8(!9RmwsM2lclfJH=&G)Wm8$`EnA_bHul4P@1 z8%*@$M3m;sxe8R2_Y%XMy9HS->=t)y4kq+VXjDF%?7Bz*#&>9bMbV^sVew@w@((z7 zgw*X!O)9UuK32*#Eqt!zI8rJOc5UWmm+Z^sMVSnK?|YRKijGvc8C6>q8lD7J9sWAr z`=51*zzM-}kw;t2Xru;J6&_#q_F(RB`BJof{eBP)JbnZ4)98SSp`lB&88eXhCFW!? zj&r4;RK5CHdA1PEP*iYd$7dKj4d+Fsm=h#$KhT$)c3Z8kKUKK`3_G7)`aXH-9g^k_^(3MeP1qS%+sR<%yU=i^!Fw+Ku2{Uoeo?_&P$GVb_o_K@XRT16~C9XXoh$o|SU zGEz$op@aztFdJ`l^z=LI87P!%#HNiMH4tCTXS!%%+b0=9#n;clw|Cdkf)fHEdzkW@ zpZXv;gPlfIMg({}T6=_AutODKOX~3@s zPr@grUL)ADUsxzCnn8)-4(h69!I2I~M9Ickt}_$BQ9C>QD%#j^lgv$4qX2rh(3wqb+eYBQHM4+-!+mc+2VL8plUhz3xqL2}ZLR1Y4*)6zfKR<>mPx)aVomF_V zlIq~WN;cMq6rW$GORTF_Hch5V)ARDMkwbatJU`96mSpER_OPP~(xl?q-4X(%#e--7BRg9R*B4^5#h6$0Tr9%RIpe1 zoTskP{;Z4y>nWUhhTXl)`|!%UN!!_j25r6-$vUalejeo^aS5V0p=T^6SFlU}tjvOR zCz1DrJ!67)Ybb#k{Zy4nC^Knz(c40}66d3Whgw8w(50#not2Y}Uo@p%u!b@$Zf>bmXJa|Tyv+vV?sM*(5IPR(YL5BkyeIdV#E~hcC^BRdSy4cn zY@JN?#~JPrvJPc!b0Q!5$S>|5NS{ejhK}vwI7q534fD@@x60njIOyvuNM7Hv`@<6k z_uuc~oWb{`a*xG}_84t?m3qnWY?!1dObJ)%T#*GtI)$wGy4)^9XtAYL1@ zIg9dng;$zD5hY8*xHH5yp z2*OM9_?8O#a=5iO5BhTaOeIMMz%K31=8-z6hY!EAY;_x3RSMZPcn!X1Ea&gqVhIZ| z5nKA*v}EB=@Xr&cPKV`N|38kL{!i*;+6RQ4a7oE2)F%JuxmiF$L`JwuNYC$o0DiMa AZvX%Q diff --git a/docs/screenshots/linux/settings-ai-workflows-de.png b/docs/screenshots/linux/settings-ai-workflows-de.png deleted file mode 100644 index 897b2f4a242290f1f771b1f1fafde9cbc500acec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61309 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 diff --git a/tests/test_compose_window.py b/tests/test_compose_window.py index ed770cf..e675b39 100644 --- a/tests/test_compose_window.py +++ b/tests/test_compose_window.py @@ -8,7 +8,7 @@ from app.compose_window import MAX_COMPOSE_VARIANTS, ComposeWindow from app.config import Config -from app.i18n import DEFAULT_LANGUAGE, missing_keys, set_language, t +from app.i18n import DEFAULT_LANGUAGE, missing_keys, set_language, t, tq from app.workflows import WorkflowType _GUI = os.environ.get("WHISPER_GUI_TESTS") == "1" @@ -152,7 +152,7 @@ def test_window_texts_follow_language(qapp, language, title, prompt_label): assert window.btnShowPrompt.text() == prompt_label assert window.btnShowPrompt.toolTip() == t("compose.prompt_preview.tooltip") assert window.btnCopy.text() == t("compose.button.copy") - assert window.btnPaste.text() == t("compose.button.insert_close") + assert window.btnPaste.text() == tq("compose.button.insert_close") assert window.btnClose.text() == t("compose.button.close") finally: window.close() diff --git a/tests/test_i18n.py b/tests/test_i18n.py index 13ad527..12cf280 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -5,7 +5,7 @@ import pytest -from app.i18n import LANGUAGES, DEFAULT_LANGUAGE, TRANSLATIONS, t, get_language, set_language, missing_keys +from app.i18n import LANGUAGES, DEFAULT_LANGUAGE, TRANSLATIONS, t, tq, get_language, set_language, missing_keys PLACEHOLDER_RE = re.compile(r"\{([a-zA-Z_][a-zA-Z0-9_]*)\}") @@ -248,3 +248,19 @@ def test_goal_visible_preset_names(language, expected): keys = ("standard", "shorten", "expand", "change_tone", "custom") set_language(language) assert tuple(t(f"preset.{key}.name") for key in keys) == expected + + +@pytest.mark.parametrize( + ("language", "key", "expected"), + [ + ("de", "settings.tab.workflows", "Text && KI"), + ("en", "settings.tab.workflows", "Text && AI"), + ("en", "compose.button.insert_close", "Insert && Close"), + ("de", "compose.button.insert_close", "Einfügen && Schließen"), + ("en", "settings.tab.general", "General"), + ], +) +def test_tq_escapes_ampersands_for_qt_widgets(language, key, expected): + """Qt liest "&" als Mnemonic — tq maskiert es, sonst fehlt es in der UI.""" + set_language(language) + assert tq(key) == expected diff --git a/tests/test_make_screenshots.py b/tests/test_make_screenshots.py index 6263b83..0bcd793 100644 --- a/tests/test_make_screenshots.py +++ b/tests/test_make_screenshots.py @@ -27,7 +27,7 @@ from PIL import Image, ImageDraw, ImageFont # noqa: E402 -from app.i18n import set_language, t # noqa: E402 +from app.i18n import set_language, t, tq # noqa: E402 _MODULE_PATH = Path(__file__).resolve().parent.parent / "scripts" / "_make_screenshots.py" @@ -163,9 +163,9 @@ def test_tab_index_resolves_keys_independent_of_language(lang): # Arrange: reale Tab-Reihenfolge speech, workflows, general in aktueller Sprache set_language(lang) tabs = _FakeTabs([ - t("settings.tab.speech"), - t("settings.tab.workflows"), - t("settings.tab.general"), + tq("settings.tab.speech"), + tq("settings.tab.workflows"), + tq("settings.tab.general"), ]) # Act / Assert: Lookup trifft die korrekten Indizes (Workflows == 1, nicht 2) @@ -177,7 +177,7 @@ def test_tab_index_resolves_keys_independent_of_language(lang): def test_tab_index_raises_for_unknown_tab(): # Arrange set_language("en") - tabs = _FakeTabs([t("settings.tab.general")]) + tabs = _FakeTabs([tq("settings.tab.general")]) # Act / Assert with pytest.raises(ValueError): diff --git a/tests/test_settings_dialog.py b/tests/test_settings_dialog.py index 43e7257..ce18428 100644 --- a/tests/test_settings_dialog.py +++ b/tests/test_settings_dialog.py @@ -150,7 +150,7 @@ def _fake_save_self(config_dir, preset_key, ui_language="de"): combo_tone=_Combo(text="neutral", data="neutral"), combo_writing_preset=_Combo(text="E-Mail – formell", data=preset_key), edit_compose_custom_preset=_Edit(""), - combo_emoji=_Combo("mittel"), + combo_emoji=_Combo("mittel", "mittel"), edit_dampf_prompt=_Edit(""), _collect_custom_terms=lambda: [], check_autopaste=_Check(True), @@ -446,9 +446,16 @@ def test_save_settings_persists_compose_custom_preset(tmp_path): assert reloaded.compose_custom_preset_text == "Freier Compose-Prompt." -def test_refresh_api_key_status_shows_env_name_not_secret(monkeypatch): +@pytest.mark.parametrize( + ("language", "expected_status"), + [("de", "gesetzt"), ("en", "set")], +) +def test_refresh_api_key_status_shows_env_name_not_secret( + monkeypatch, language, expected_status +): secret_value = "dummy-openai-key" monkeypatch.setenv("CUSTOM_OPENAI_KEY", secret_value) + set_language(language) class FakeLineEdit: def text(self): @@ -467,11 +474,14 @@ def setText(self, value): lbl_api_key_status=FakeLabel(), ) - with patch("app.blitztext_linux.theme.set_status_role") as set_status_role: - SettingsDialog._refresh_api_key_status(fake) + try: + with patch("app.blitztext_linux.theme.set_status_role") as set_status_role: + SettingsDialog._refresh_api_key_status(fake) + finally: + set_language(DEFAULT_LANGUAGE) assert "CUSTOM_OPENAI_KEY" in fake.lbl_api_key_status.text - assert "gesetzt" in fake.lbl_api_key_status.text + assert expected_status in fake.lbl_api_key_status.text assert secret_value not in fake.lbl_api_key_status.text set_status_role.assert_called_once_with(fake.lbl_api_key_status, "success") @@ -513,3 +523,23 @@ def test_goal_settings_save_preserves_custom_selection_and_prompt(tmp_path): assert reloaded.writing_preset == "custom" assert reloaded.compose_custom_preset_text == " Nutzer-Prompt exakt. \n" + + +def test_settings_dialog_attaches_help_to_layout_fields_and_editors(tmp_path): + from PyQt6.QtWidgets import QApplication + from app.i18n import t + + qapp = QApplication.instance() or QApplication([]) + config = BlitztextConfig(config_dir=tmp_path / ".config" / "blitztext-linux") + dialog = SettingsDialog(config) + try: + # Base URL is in a QVBoxLayout; ensure the QLineEdit receives help/accessible description + assert dialog.edit_base_url.toolTip() == t("settings.base_url.help") + assert dialog.edit_base_url.accessibleDescription() == t("settings.base_url.help") + + # Counter-check: a field mounted directly as a widget keeps working too. + assert dialog.edit_llm_model.toolTip() == t("settings.llm_model.help") + assert dialog.edit_llm_model.accessibleDescription() == t("settings.llm_model.help") + finally: + dialog.close() + qapp.processEvents() From 0de779aa4c210a9a888ca5e7243b73f02c3b9c23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=3D=3DTIM=2E=C2=A9=2EB=20=20=3D=3D?= Date: Wed, 16 Sep 2026 05:41:00 +0200 Subject: [PATCH 3/3] docs: show the single-panel widget in READMEs and screenshots The READMEs still described the old main window, the nine writing-style presets and the former workflow brand names, and the regenerated assets lived in a separate single-panel/ folder next to stale duplicates. - generate every screenshot into docs/screenshots/linux again and drop the legacy aliases (main-window*, settings-ai-workflows*, Banner.png) - add the new widget states, the compose prompt editor and the options menu - document the five text actions, the current workflow names and the "Text & AI" settings tab in README.md and README.de.md - size the settings dialog per tab and show Piper instead of a cloud error - ignore the local scratch/ and prototypes/ directories Co-Authored-By: Claude Opus 5 --- .gitignore | 2 + README.de.md | 166 ++++++----- README.md | 166 ++++++----- docs/screenshots/linux/Banner-de.png | Bin 180008 -> 184145 bytes docs/screenshots/linux/Banner-en.png | Bin 178663 -> 174241 bytes docs/screenshots/linux/compose-de.png | Bin 48793 -> 45932 bytes docs/screenshots/linux/compose-en.png | Bin 45339 -> 43802 bytes docs/screenshots/linux/compose-prompt-de.png | Bin 0 -> 52045 bytes docs/screenshots/linux/compose-prompt-en.png | Bin 0 -> 46652 bytes docs/screenshots/linux/demo-de.gif | Bin 469663 -> 1555689 bytes docs/screenshots/linux/demo-en.gif | Bin 420123 -> 1270263 bytes docs/screenshots/linux/history-de.png | Bin 22090 -> 31511 bytes docs/screenshots/linux/history-en.png | Bin 20653 -> 30397 bytes docs/screenshots/linux/main-idle-de.png | Bin 0 -> 22815 bytes docs/screenshots/linux/main-idle-en.png | Bin 0 -> 23074 bytes docs/screenshots/linux/main-menu-de.png | Bin 0 -> 41248 bytes docs/screenshots/linux/main-menu-en.png | Bin 0 -> 40552 bytes docs/screenshots/linux/main-processing-de.png | Bin 0 -> 25652 bytes docs/screenshots/linux/main-processing-en.png | Bin 0 -> 25629 bytes docs/screenshots/linux/main-recording-de.png | Bin 0 -> 24481 bytes docs/screenshots/linux/main-recording-en.png | Bin 0 -> 24110 bytes docs/screenshots/linux/settings-ai-de.png | Bin 0 -> 66627 bytes docs/screenshots/linux/settings-ai-en.png | Bin 0 -> 62200 bytes .../screenshots/linux/settings-general-de.png | Bin 56536 -> 38570 bytes .../screenshots/linux/settings-general-en.png | Bin 51778 -> 35514 bytes docs/screenshots/linux/settings-speech-de.png | Bin 57167 -> 30587 bytes docs/screenshots/linux/settings-speech-en.png | Bin 53358 -> 29206 bytes docs/screenshots/linux/social-preview.png | Bin 0 -> 165498 bytes docs/screenshots/linux/tray-menu-de.png | Bin 42170 -> 39147 bytes docs/screenshots/linux/tray-menu-en.png | Bin 38933 -> 34891 bytes docs/screenshots/linux/tts-de.png | Bin 27309 -> 27634 bytes docs/screenshots/linux/tts-en.png | Bin 25933 -> 26319 bytes scripts/_make_demo_gif.py | 14 +- scripts/_make_screenshots.py | 258 +++++++++++++----- 34 files changed, 387 insertions(+), 219 deletions(-) create mode 100644 docs/screenshots/linux/compose-prompt-de.png create mode 100644 docs/screenshots/linux/compose-prompt-en.png create mode 100644 docs/screenshots/linux/main-idle-de.png create mode 100644 docs/screenshots/linux/main-idle-en.png create mode 100644 docs/screenshots/linux/main-menu-de.png create mode 100644 docs/screenshots/linux/main-menu-en.png create mode 100644 docs/screenshots/linux/main-processing-de.png create mode 100644 docs/screenshots/linux/main-processing-en.png create mode 100644 docs/screenshots/linux/main-recording-de.png create mode 100644 docs/screenshots/linux/main-recording-en.png create mode 100644 docs/screenshots/linux/settings-ai-de.png create mode 100644 docs/screenshots/linux/settings-ai-en.png create mode 100644 docs/screenshots/linux/social-preview.png diff --git a/.gitignore b/.gitignore index 7934cb7..1fbc15f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ __pycache__/ .env.* secrets.env .venv/ +scratch/ +prototypes/ diff --git a/README.de.md b/README.de.md index 0998368..f6fa322 100644 --- a/README.de.md +++ b/README.de.md @@ -38,7 +38,7 @@ Blitztext Linux ist ein Hotkey-gesteuerter Sprachassistent, der gesprochene Spra ## Features - **Mehrsprachige Oberfläche (EN/DE):** Schalte die App-Oberfläche zwischen Deutsch und Englisch um – unter **Einstellungen → Allgemein → „Sprache der Oberfläche"** (die Änderung greift nach einem Neustart der App). -- **Compose-Fenster:** Text eintippen oder einfügen, einen Workflow und Schreibstil wählen und von der KI umschreiben lassen — ganz ohne Mikrofon. Mit Tonfall-Auswahl, eigenem Preset, Varianten-Verlauf und Signatur-Unterstützung. +- **Compose-Fenster:** Text eintippen, einfügen oder hineindiktieren, eine Text-Aktion wählen und von der KI umschreiben lassen — ganz ohne Mikrofon. Mit Tonfall-Auswahl, eigener Anweisung samt Prompt-Prüfung, Varianten-Navigation und Signatur-Unterstützung. - **OpenRouter & eigene LLM-Endpunkte:** Nutze OpenRouter oder eine beliebige OpenAI-kompatible API als Alternative zu OpenAI für alle KI-Workflows. - **Audio-Export:** Speichere die Ausgabe der Vorlesefunktion direkt als Audiodatei. - **Eigennamen / Begriffe:** Erweitere das Vokabular der KI um eigene Begriffe, Namen oder Fachwörter für perfekte Transkriptionen. @@ -53,21 +53,21 @@ Blitztext registriert globale Hotkeys via `evdev`. Mit diesen Kombinationen hast | Workflow | Hotkey | LLM? | Beschreibung | | :--- | :--- | :---: | :--- | -| **Blitztext** | Alt (halten) | ❌ | Standard: Nimmt auf, solange die Taste gehalten wird, transkribiert und fügt den Text ein. Sehr kurze Tastendrücke unter 150 ms werden im Halten-Modus als Fehldruck verworfen. Aufnahmetaste und Halten/Umschalten-Modus sind unter **Einstellungen → Spracherkennung** konfigurierbar. | -| **Blitztext Lokal** | Meta + Shift + H | ❌ | Erzwingt eine reine **Offline-Transkription**. | -| **Blitztext+** | Meta + Shift + T | ✅ | Formuliert deine Aufnahme professionell via LLM um. | -| **Blitztext $%&!** | Meta + Shift + D | ✅ | Emotionale Entladung: Wandelt Frust in eine sachliche Nachricht um. | -| **Blitztext :)** | Meta + Shift + E | ✅ | Ergänzt deine Nachricht passend mit Emojis. | +| **Diktieren** | Alt (halten) | ❌ | Standard: Nimmt auf, solange die Taste gehalten wird, transkribiert und fügt den Text ein. Sehr kurze Tastendrücke unter 150 ms werden im Halten-Modus als Fehldruck verworfen. Aufnahmetaste und Halten/Umschalten-Modus sind unter **Einstellungen → Spracherkennung** konfigurierbar. | +| **Diktieren · lokal** | Meta + Shift + H | ❌ | Erzwingt eine reine **Offline-Transkription**. | +| **Diktieren & verbessern** | Meta + Shift + T | ✅ | Transkribiert und schreibt das Ergebnis mit der gewählten Text-Aktion um. | +| **Sachlich formulieren** | Meta + Shift + D | ✅ | Emotionale Entladung: Wandelt Frust in eine sachliche Nachricht um. | +| **Emojis ergänzen** | Meta + Shift + E | ✅ | Ergänzt deine Nachricht passend mit Emojis. | > [!NOTE] -> **LLM-Workflows** (`Blitztext+`, `Blitztext $%&!`, `Blitztext :)`) setzen einen gültigen **API-Key** voraus. Siehe [Secrets](#secrets) weiter unten für die Konfiguration. Ohne diesen Key sind diese Funktionen im Menü und über die Hotkeys deaktiviert bzw. führen zu einer Fehlermeldung. +> **LLM-Workflows** (`Diktieren & verbessern`, `Sachlich formulieren`, `Emojis ergänzen`) setzen einen gültigen **API-Key** voraus. Siehe [Secrets](#secrets) weiter unten für die Konfiguration. Ohne diesen Key sind diese Funktionen im Menü und über die Hotkeys deaktiviert bzw. führen zu einer Fehlermeldung. ### KI-Workflows -Die KI-Workflows helfen bei Formulierung, Ton und Emojis. Die passenden Einstellungen findest du unter **Einstellungen → KI-Workflows**: +Die KI-Workflows helfen bei Formulierung, Ton und Emojis. Die passenden Einstellungen findest du unter **Einstellungen → Text & KI**:
- KI-Workflow-Einstellungen + Einstellungen: Text & KI

@@ -81,7 +81,7 @@ Die KI-Workflows helfen bei Formulierung, Ton und Emojis. Die passenden Einstell > systemd-User-Service laden diese Datei beim nächsten Start. Eine vollständige > Anleitung mit Dateiformat und Berechtigungen steht unter [Secrets](#secrets). -**LLM-Anbieter.** Blitztext unterstützt drei Anbieter-Modi, wählbar unter **Einstellungen → KI-Workflows → „LLM-Anbieter"**: +**LLM-Anbieter.** Blitztext unterstützt drei Anbieter-Modi, wählbar unter **Einstellungen → Text & KI → „LLM-Anbieter"**: | Anbieter | Wann verwenden | | :--- | :--- | @@ -91,68 +91,57 @@ Die KI-Workflows helfen bei Formulierung, Ton und Emojis. Die passenden Einstell Für OpenRouter `base_url` auf `https://openrouter.ai/api/v1` setzen und Modell wählen (z. B. `openai/gpt-4o`). Der Name der API-Key-Umgebungsvariable wird unter „API-Key-Umgebung" eingestellt. -**Schreibstil-Vorlagen.** Für den Workflow **Blitztext+** (Text-Verbesserer) gibt es vorgefertigte Schreibstil-Vorlagen, die du unter **Einstellungen → KI-Workflows → „Schreibstil-Vorlage"** oder direkt im **Compose-Fenster** auswählst: +**Text-Aktionen.** Das Umschreiben läuft über fünf klar getrennte Aktionen. Du wählst sie unter **Einstellungen → Text & KI → „Text-Aktion"**, im Compose-Fenster oder im ⋯-Menü des Haupt-Widgets: -| Vorlage | Wirkung | +| Text-Aktion | Wirkung | | --- | --- | -| **Standard (Text verbessern)** | Bisheriges Verhalten – sauber formatierter Text, der gewählte **Tonfall** greift. | -| **E-Mail – formell** | Höfliche E-Mail in der Sie-Form mit klarer Struktur. | -| **E-Mail – locker** | Freundliche E-Mail in der Du-Form. | -| **Stichpunkte** | Gliedert den Inhalt in prägnante Stichpunkte. | -| **Zusammenfassung** | Knappe, sachliche Zusammenfassung der Kernaussagen. | -| **Persönlich (Du-Form)** | Klarer Text in der persönlichen Du-Form. | -| **Höflich (Sie-Form)** | Klarer Text in der höflichen Sie-Form. | -| **Kurz & präzise** | Maximal knapp, ohne Füllwörter und Wiederholungen. | -| **Eigenes Preset…** | Ein freier System-Prompt, den du selbst unter **Einstellungen → Allgemein → „Eigenes Preset (Compose)"** festlegst. | - -> Bei **Standard** wird zusätzlich der eingestellte **Tonfall** angewendet. Jede andere Vorlage bringt ihren eigenen Schreibstil mit und überschreibt den Tonfall. Eigennamen/Begriffe bleiben in allen Vorlagen erhalten. +| **Text verbessern** | Standard: sauber formatierter Text mit korrigierter Grammatik und Zeichensetzung; der gewählte **Ziel-Tonfall** greift. | +| **Kürzen** | Entfernt Füllwörter, Wiederholungen und Umwege, behält aber alle wesentlichen Informationen. | +| **Ausformulieren** | Macht aus Notizen und Fragmenten zusammenhängenden Fließtext — ohne neue Fakten zu ergänzen. | +| **Tonfall ändern** | Ändert gezielt nur den Tonfall (locker / neutral / professionell) und lässt Inhalt, Sprache und Absicht unverändert. | +| **Eigene Anweisung** | Deine eigene Anweisung aus dem Compose-Fenster („Wie soll dein Text klingen?“). **Speichern & für Diktate verwenden** überträgt sie zusätzlich auf den Workflow „Diktieren & verbessern“. | -### Compose-Fenster - -**Kompakte Bedienung:** Unter **Text bearbeiten** wählst du eine Text-Aktion: -Text verbessern, Kürzen, Ausformulieren, Tonfall ändern oder Eigene Anweisung. -Der Tonfall erscheint nur bei „Tonfall ändern“; eine zusätzliche Workflow-Auswahl entfällt. -Entwurf und Ergebnis stehen nebeneinander (Startgröße 620 × 400). - -**Deinen Prompt eingeben:** Klicke **Eigene Anweisung …** und beschreibe im Feld -**Wie soll dein Text klingen?** die gewünschte Ausgabe. Mit **Verbessern** wird -diese Anweisung für den aktuellen Text verwendet. **Speichern & für Diktate verwenden** -speichert sie für kommende Sitzungen und wählt „Eigene Anweisung“ für -„Diktieren & verbessern“ aus. Ohne Speichern bleibt die Änderung nur im geöffneten Textfenster. -**Prompt prüfen** zeigt den vollständigen Prompt für einen einzelnen Aufruf. +> Der **Ziel-Tonfall** wirkt bei **Text verbessern** und **Tonfall ändern**. Ältere Konfigurationen mit den früheren neun Schreibstil-Vorlagen werden automatisch auf die nächstliegende Aktion migriert (z. B. „E-Mail – formell“ → **Tonfall ändern**, professionell). Eigennamen/Begriffe bleiben in allen Aktionen erhalten. -Das Hauptfenster bietet **Diktieren** und **Diktieren & verbessern**. -Die speziellen bisherigen Workflows bleiben über Tray und Tastenkürzel erreichbar. -Die älteren Abbildungen unten zeigen noch die vorherige Oberfläche. +### Compose-Fenster -Das **Compose-Fenster** (`✍ Compose…` im Tray-Kontextmenü) ermöglicht das Umschreiben beliebiger Texte mit der KI — ganz ohne Sprachaufnahme. Es eignet sich ideal zum Überarbeiten fertiger Entwürfe, E-Mails oder Notizen. +Das **Compose-Fenster** (`✍ Text bearbeiten…` im Tray-Menü oder über das Stift-Symbol im Hauptfenster-Widget) ermöglicht das Entwerfen, Umschreiben und Verfeinern von Texten mit der KI — ganz ohne Sprachaufnahme. Es eignet sich ideal zum Überarbeiten von E-Mails, Notizen oder Nachrichten, bevor sie eingefügt werden.

- Compose-Fenster + Compose-Fenster

-**Öffnen:** Klick auf das Tray-Icon → **✍ Compose…** +**Öffnen:** Klick auf das Tray-Icon → **✍ Text bearbeiten…** oder Klick auf das goldene Stift-Symbol im Hauptfenster-Widget. **Was du im Compose-Fenster tun kannst:** | Element | Beschreibung | | :--- | :--- | -| **Entwurf (linkes Feld)** | Text eintippen oder einfügen, der umgeschrieben werden soll. | -| **Workflow** | Wähle zwischen Blitztext+ (Text-Verbesserer), Blitztext $%&! (Dampfablassen) oder Blitztext :) (Emojis). | -| **Schreibstil-Vorlage** | Vorlage auswählen oder **Eigenes Preset…** für einen vollständig freien System-Prompt. | -| **Tonfall** | Locker, neutral oder professionell. Aktiv nur bei **Standard**-Preset + **Blitztext+**; bei allen anderen Vorlagen ausgegraut (Tooltip erklärt warum). | -| **Verbessern** | Sendet den Entwurf an die KI und zeigt das Ergebnis im rechten Feld. | -| **Varianten-Verlauf** | Die letzten 10 generierten Ergebnisse der aktuellen Sitzung werden als scrollbare Liste gespeichert — Klick auf einen Eintrag stellt ihn wieder her. | -| **Signatur** | Hängt deine gespeicherte Signatur an (konfiguriert unter **Einstellungen → Allgemein**). Ersetzt automatisch gängige KI-generierte Platzhalter wie `[Your Name]`, `[Ihr Name]`, `[Vorname Nachname]`, `[Signature]` u. Ä. — kein verlorener Platzhalter bleibt zurück. | +| **Text-Aktion** | Wähle zwischen *Text verbessern*, *Kürzen*, *Ausformulieren*, *Tonfall ändern* oder *Eigene Anweisung*. | +| **Tonfall** | Erscheint dynamisch bei Auswahl von *Tonfall ändern* (Locker, Neutral, Professionell). | +| **Eigene Anweisung …** | Klappt eine eigene Prompt-Karte aus (*„Wie soll dein Text klingen?“*). **Verbessern** wendet sie für den aktuellen Entwurf an; **Speichern & für Diktate verwenden** speichert sie dauerhaft für kommende Sitzungen und Diktat-Workflows. | +| **Prompt prüfen** | Zeigt den exakt zusammengestellten System-Prompt samt Anweisungen vor dem Senden an das Sprachmodell. | +| **Sprachaufnahme hierher umleiten** | Ist diese Option aktiv, landen laufende Diktataufnahmen direkt im Entwurfsfeld statt in der aktiven Anwendung. | +| **Entwurf (linkes Feld)** | Text eintippen, einfügen oder direkt per Sprache hineindiktieren. | +| **Ergebnis (rechtes Feld)** | Zeigt die KI-generierte Fassung direkt neben dem Ausgangstext. | +| **Varianten-Navigation** | Die in dieser Sitzung erzeugten Ergebnisse bleiben verfügbar — über die Pfeile ‹ › oberhalb des Ergebnisfelds durchblätterbar. | | **Kopieren** | Kopiert das Ergebnis in die Zwischenablage. | -| **Einfügen & Schließen** | Fügt das Ergebnis direkt in die aktive Anwendung ein und schließt das Fenster. | +| **Einfügen & Schließen** | Fügt das Ergebnis direkt in die aktive Anwendung ein und schließt das Compose-Fenster. | + +
+
+ Compose-Fenster mit eigener Anweisung und Prompt-Prüfung +
+ Eigene KI-Anweisungen direkt im Compose-Fenster formulieren und den System-Prompt vorab prüfen. +

+
> [!NOTE] -> Signatur und eigener Preset-Text werden unter **Einstellungen → Allgemein** konfiguriert. Setze dort „Signatur für das Compose-Fenster" und aktiviere „Nach jeder Generierung automatisch anhängen", wenn die Signatur bei jedem Ergebnis ergänzt werden soll. +> Signatur und eigener Preset-Text werden unter **Einstellungen → Allgemein** konfiguriert („Signatur für Compose-Fenster“ und „Automatisch nach Generierung anfügen“). Gängige KI-Platzhalter wie `[Ihr Name]` oder `[Your Name]` werden dabei automatisch sauber ersetzt. -### Tray-Symbol: Statusfarben +### Tray-Symbol und Kontextmenü Das Mikrofon im System-Tray ist dein Indikator für den aktuellen Zustand: @@ -183,35 +172,61 @@ Das Mikrofon im System-Tray ist dein Indikator für den aktuellen Zustand:
-Das Tray-Kontextmenü gibt dir schnellen Zugriff auf alle Workflows, das Compose-Fenster, Schreibstil-Vorlagen, Diktat-Modus, Verlauf und Einstellungen: +Das Tray-Kontextmenü gibt dir schnellen Zugriff auf alle Workflows, das Compose-Fenster, Text-Aktionen, Diktat-Modus, Verlauf und Einstellungen:

- Tray-Kontextmenü + Tray-Kontextmenü

> [!NOTE] > Steht im Desktop-Environment kein Tray-Bereich zur Verfügung, fällt das Icon auf das System-Theme `audio-input-microphone` zurück; die Farbkodierung greift dann ggf. nicht. -### Hauptfenster +### Hauptfenster: Single-Panel-Widget -Das Hauptfenster ist dein grafisches Kontrollzentrum — nützlich, wenn Hotkeys blockiert sind oder du lieber mit der Maus arbeitest: +Das Hauptfenster ist ein kompaktes, rahmenloses Desktop-Widget mit einheitlicher dunkler Ästhetik, edlen Gold-Akzenten und direkter visueller Rückmeldung:
-
- Hauptfenster -

+ + + + + + + +
+

+ Bereit
+ Wartet auf Sprach- oder Mausklick-Eingabe. +
+

+ Aufnahme
+ Laufender Timer und Audiowellen-Balken. +
+

+ Verarbeitung
+ Rotierender goldener Fortschrittsring. +
+

+ Aktions-Menü
+ Workflows und Schnellzugriff direkt am Widget. +
-- **Workflow-Dropdown:** Alle 5 Aufnahmemodi zur Auswahl. -- **Schreibstil-Vorlage:** Sichtbar wenn **Blitztext+** gewählt ist — Preset direkt im Hauptfenster wählen. Änderungen werden sofort mit dem Tray synchronisiert. -- **Start/Stopp-Button:** Klick zum Starten oder Beenden einer Aufnahme. -- **Abbruch:** Bricht die aktuelle Aufnahme ohne Transkription ab. -- **Diktat / Verlauf:** Schnellzugriff auf den Diktat-Modus und den Transkript-Verlauf. -- **Vorlesen / Einstellungen:** Öffnet das Vorlese-Fenster oder den Einstellungs-Dialog. +- **Zentrales Gold-Mikrofon:** Markanter kreisrunder Button mit metallischem Farbverlauf und Blitz-Aussparung. Klick startet oder beendet die Aufnahme. +- **Dynamische visuelle Rückmeldung:** + - **Bereit (IDLE):** Grüner Statuspunkt und Zeitanzeige (`Bereit: 00:00`). + - **Aufnahme (RECORDING):** Gelber Statuspunkt, sekundengenaue Zeitanzeige und animierte Wellenbalken links und rechts des Mikrofons. + - **Verarbeitung (TRANSCRIBING):** Rotierender goldener Kreisbogen um das Mikrofon (`Transkribiere…`). +- **Kompakte Werkzeugleiste:** + - ✍ **Compose-Button** (hervorgehobenes Stift-Symbol): Öffnet das Entwurfsfenster für Texteingabe und KI-Verfeinerung. + - 🕒 **Verlauf-Button** (mit Zähler-Badge): Öffnet den Transkript- und Diktat-Verlauf. + - 🔊 **Vorlesen-Button** (Lautsprecher-Symbol): Öffnet das TTS-Fenster zur Sprachausgabe. + - ⚙ **Einstellungen-Button** (Zahnrad): Öffnet den Konfigurations-Dialog. + - ⋯ **Mehr-Button**: Öffnet das Popup-Menü für *Diktieren & verbessern*, Text-Aktionen (*Kürzen*, *Ausformulieren*, *Tonfall ändern*), *Eigene Anweisung*, *Sammel-Diktat* und *Verwerfen*. -*Das Fenster öffnet sich beim Start sowie über den Tray-Eintrag **Fenster anzeigen** oder einen Klick auf das Tray-Icon. Schließen versteckt das Fenster nur — die App läuft im Tray weiter.* +*Das Widget öffnet sich beim Start sowie über den Tray-Eintrag **Fenster anzeigen** oder einen Klick auf das Tray-Icon. Schließen blendet das Widget aus — die App läuft im Hintergrund im Tray weiter.* ### Diktat, Verlauf und Vorlesen @@ -219,7 +234,8 @@ Zusätzlich zu den Workflows bietet das Tool drei Komfort-Funktionen:

- Verlauf + Verlauf +    Vorlesen

@@ -374,10 +390,10 @@ Der Einstellungs-Dialog hat drei Tabs:
Einstellungen: Spracherkennung
Spracherkennung — Whisper-Modell, Backend, Sprache, Hotkey-Modus und Aufnahmetaste.

- Einstellungen: KI-Workflows -
KI-Workflows — LLM-Anbieter, API-Key, Base-URL, Modell, Tonfall und Schreibstil-Vorlage.

+ Einstellungen: Text & KI +
Text & KI — System-Prompt, API-Key-Umgebung, LLM-Anbieter, Base-URL, Modell, Text-Aktion und Emoji-Dichte.

Einstellungen: Allgemein -
Allgemein — Auto-Paste, Diktat-Ordner, Verlaufsgröße, Sprache der Oberfläche und Signatur.

+
Allgemein — Auto-Paste, Diktat-Notizordner, Verlaufsgröße, Sprache der Oberfläche und Signatur.

> [!IMPORTANT] @@ -445,7 +461,7 @@ Der Einstellungs-Dialog hat drei Tabs: - **tts_openai_model** / **tts_openai_voice**: Modell und Stimme für OpenAI Cloud-TTS (Standard: `gpt-4o-mini-tts`, `marin`). - **tts_openai_consent**: `true`, sobald die einmalige Datenschutz-Bestätigung für Cloud-TTS erteilt wurde. Standard: `false`. - **tts_speed**: Sprechgeschwindigkeit für „Vorlesen" als Multiplikator. Standard: `1.0`. -- **workflows**: Feintuning von Tonalität (`text_improver_tone`), Schreibstil-Vorlage (`writing_preset`), Emojis (`emoji_density`) und dem Dampf-Prompt (`dampf_system_prompt`). +- **workflows**: Feintuning von Tonalität (`text_improver_tone`), Text-Aktion (`writing_preset`), Emojis (`emoji_density`) und dem Dampf-Prompt (`dampf_system_prompt`). --- @@ -454,7 +470,7 @@ Der Einstellungs-Dialog hat drei Tabs: API-Keys werden niemals in `config.json` gespeichert — sie werden zur Laufzeit aus Umgebungsvariablen gelesen. -**Empfohlen: `secrets.env`.** Lege deine(n) Key(s) in `~/.config/blitztext-linux/secrets.env` ab, ein `NAME=WERT`-Paar pro Zeile — der Variablenname richtet sich nach dem unter **Einstellungen → KI-Workflows → „API-Key-Umgebung"** gewählten Anbieter (z. B. die OpenAI-Variable für OpenAI, die OpenRouter-Variable für OpenRouter), `WERT` ist der geheime Key von diesem Anbieter: +**Empfohlen: `secrets.env`.** Lege deine(n) Key(s) in `~/.config/blitztext-linux/secrets.env` ab, ein `NAME=WERT`-Paar pro Zeile — der Variablenname richtet sich nach dem unter **Einstellungen → Text & KI → „API-Key-Umgebung"** gewählten Anbieter (z. B. die OpenAI-Variable für OpenAI, die OpenRouter-Variable für OpenRouter), `WERT` ist der geheime Key von diesem Anbieter: ```bash = @@ -462,8 +478,8 @@ API-Keys werden niemals in `config.json` gespeichert — sie werden zur Laufzeit `./run.sh` und der systemd-User-Service laden diese Datei automatisch. `config.json` speichert nur den *Namen* der zu lesenden Umgebungsvariable (`openai_api_key_env`), niemals den Key selbst. -- Welche Variable verwendet wird, hängt von **Einstellungen → KI-Workflows → „API-Key-Umgebung"** und dem gewählten LLM-Anbieter ab (`OPENAI_API_KEY` für OpenAI, `OPENROUTER_API_KEY` für OpenRouter, oder ein eigener Name für einen eigenen Endpunkt). -- Ohne gültigen Key sind die LLM-Workflows (`Blitztext+`, `Blitztext $%&!`, `Blitztext :)`) und OpenAI Cloud-TTS deaktiviert bzw. schlagen mit einer Fehlermeldung fehl; lokale Transkription und Piper-TTS funktionieren weiterhin. +- Welche Variable verwendet wird, hängt von **Einstellungen → Text & KI → „API-Key-Umgebung"** und dem gewählten LLM-Anbieter ab (`OPENAI_API_KEY` für OpenAI, `OPENROUTER_API_KEY` für OpenRouter, oder ein eigener Name für einen eigenen Endpunkt). +- Ohne gültigen Key sind die LLM-Workflows (`Diktieren & verbessern`, `Sachlich formulieren`, `Emojis ergänzen`) und OpenAI Cloud-TTS deaktiviert bzw. schlagen mit einer Fehlermeldung fehl; lokale Transkription und Piper-TTS funktionieren weiterhin. - Committe niemals `secrets.env`, API-Keys oder Tokens in git. Sollte ein Key jemals offengelegt werden (z. B. versehentlich committet oder in ein Issue eingefügt), rotiere ihn sofort beim Anbieter. - `config.json` wird mit restriktiven Rechten (`0o600`) geschrieben; die gleiche Erwartung gilt für `secrets.env`. @@ -530,7 +546,7 @@ Dieses Projekt wurde mit Unterstützung künstlicher Intelligenz (AI-assisted) e │ ├── transcribe.py # Whisper-Transkription │ ├── tts_window.py # Vorlese-Fenster mit Audio-Export │ ├── workflows.py # Workflow-Definitionen -│ └── writing_presets.py # Schreibstil-Vorlagen-Definitionen +│ └── writing_presets.py # Text-Aktionen und Migration alter Presets ├── packaging/flatpak/ # Experimenteller Flatpak-MVP-Spike (siehe oben) ├── tests/ # Test-Suite └── README.md # Englische Fassung (diese Datei: README.de.md) diff --git a/README.md b/README.md index 7726364..dc530f3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
- Blitztext Linux Banner + Blitztext Linux Banner

Blitztext Linux

Your local AI voice assistant for Linux desktops on Wayland

@@ -38,7 +38,7 @@ Blitztext Linux is a hotkey-driven voice assistant that turns speech into text a ## Features - **Multilingual interface (EN/DE):** Switch the app interface between German and English under **Settings → General → "Interface language"** (takes effect after restarting the app). -- **Compose window:** Type or paste any text, select a workflow and writing style, and let the AI rewrite it — no microphone needed. Includes tone selector, custom preset, variant history, and signature support. +- **Compose window:** Type, paste, or dictate any text, pick a text action, and let the AI rewrite it — no microphone needed. Includes tone selector, custom instruction with prompt inspection, variant navigation, and signature support. - **OpenRouter & custom LLM endpoints:** Use OpenRouter or any OpenAI-compatible API as an alternative to OpenAI for all AI workflows. - **Audio export:** Save read-aloud output as an audio file directly from the Read Aloud window. - **Custom names / terms:** Extend the AI's vocabulary with your own terms, names, or technical words for perfect transcriptions. @@ -53,21 +53,21 @@ Blitztext registers global hotkeys via `evdev`. With these combinations you have | Workflow | Hotkey | LLM? | Description | | :--- | :--- | :---: | :--- | -| **Blitztext** | Alt (hold) | ❌ | Default: records while the key is held, transcribes, and pastes the text. Very short presses below 150 ms are discarded as accidental taps in hold mode. Recording key and hold/toggle mode are configurable under **Settings → Speech Recognition**. | -| **Blitztext Local** | Meta + Shift + H | ❌ | Forces a pure **offline transcription**. | -| **Blitztext+** | Meta + Shift + T | ✅ | Rephrases your recording professionally via LLM. | -| **Blitztext $%&!** | Meta + Shift + D | ✅ | Emotional release: turns frustration into a matter-of-fact message. | -| **Blitztext :)** | Meta + Shift + E | ✅ | Enriches your message with fitting emojis. | +| **Dictate** | Alt (hold) | ❌ | Default: records while the key is held, transcribes, and pastes the text. Very short presses below 150 ms are discarded as accidental taps in hold mode. Recording key and hold/toggle mode are configurable under **Settings → Speech Recognition**. | +| **Dictate · local** | Meta + Shift + H | ❌ | Forces a pure **offline transcription**. | +| **Dictate & improve** | Meta + Shift + T | ✅ | Transcribes and rewrites the result with the selected text action. | +| **Make it factual** | Meta + Shift + D | ✅ | Emotional release: turns frustration into a matter-of-fact message. | +| **Add emojis** | Meta + Shift + E | ✅ | Enriches your message with fitting emojis. | > [!NOTE] -> **LLM workflows** (`Blitztext+`, `Blitztext $%&!`, `Blitztext :)`) require a valid **API key**. See [Secrets](#secrets) below for how to configure it. Without a key, these functions are disabled in the menu and via hotkeys, or result in an error message. +> **LLM workflows** (`Dictate & improve`, `Make it factual`, `Add emojis`) require a valid **API key**. See [Secrets](#secrets) below for how to configure it. Without a key, these functions are disabled in the menu and via hotkeys, or result in an error message. ### AI workflows -The AI workflows help with phrasing, tone, and emojis. You'll find the relevant settings under **Settings → AI Workflows**: +The AI workflows help with phrasing, tone, and emojis. You'll find the relevant settings under **Settings → Text & AI**:
- AI workflow settings + Settings: Text & AI

@@ -80,7 +80,7 @@ The AI workflows help with phrasing, tone, and emojis. You'll find the relevant > and the systemd user service load that file on the next start. See > [Secrets](#secrets) for the complete file format and permission instructions. -**LLM providers.** Blitztext supports three provider modes, selectable under **Settings → AI Workflows → "LLM provider"**: +**LLM providers.** Blitztext supports three provider modes, selectable under **Settings → Text & AI → "LLM provider"**: | Provider | When to use | | :--- | :--- | @@ -90,66 +90,55 @@ The AI workflows help with phrasing, tone, and emojis. You'll find the relevant For OpenRouter, set `base_url` to `https://openrouter.ai/api/v1` and choose your model (e.g. `openai/gpt-4o`). The API key environment variable name is configured under "API key environment". -**Writing-style presets.** For the **Blitztext+** workflow (text improver) there are ready-made writing-style presets that you select under **Settings → AI Workflows → "Writing-style preset"** or directly in the **Compose window**: +**Text actions.** Rewriting is built around five clearly separated actions. You select them under **Settings → Text & AI → "Text action"**, in the Compose window, or in the ⋯ menu of the main widget: -| Preset | Effect | +| Text action | Effect | | --- | --- | -| **Standard (improve text)** | Previous behavior – cleanly formatted text, the selected **tone** applies. | -| **Email – formal** | Polite email in the formal form with a clear structure. | -| **Email – casual** | Friendly email in the informal form. | -| **Bullet points** | Structures the content into concise bullet points. | -| **Summary** | Concise, factual summary of the key statements. | -| **Personal (informal)** | Clear text in a personal, informal tone. | -| **Polite (formal)** | Clear text in a polite, formal tone. | -| **Short & precise** | As concise as possible, without filler words and repetitions. | -| **Custom preset…** | A free-form system prompt you define yourself under **Settings → General → "Custom preset (Compose)"**. | - -> With **Standard**, the configured **tone** (casual / neutral / professional) is additionally applied. Every other preset brings its own writing style and overrides the tone setting. Custom names/terms are preserved in all presets. +| **Improve text** | Default: cleanly formatted text with corrected grammar and punctuation; the selected **target tone** applies. | +| **Shorten** | Removes filler words, repetitions, and detours while keeping every essential piece of information. | +| **Expand** | Turns notes and fragments into coherent prose — without adding new facts. | +| **Change tone** | Changes the tone only (casual / neutral / professional) and leaves content, language, and intent untouched. | +| **Custom instruction** | Your own instruction from the Compose window ("How should your text sound?"). **Save & use for dictation** also applies it to the Dictate & improve workflow. | -### Compose window - -**Compact controls:** **Edit text** now has one action selector: Improve text, -Shorten, Expand, Change tone, or Custom instruction. The tone selector appears -only for Change tone; the separate workflow selector is removed. Draft and result -are side by side (initial size 620 × 400). - -**Enter your prompt:** Click **Custom instruction …**, then describe the desired -output under **How should your text sound?**. **Improve** uses this instruction -for the current text. **Save & use for dictation** persists it for future -sessions and selects Custom instruction for Dictate & improve. Unsaved changes -remain in the open editor only. **Inspect prompt** shows the full prompt for a -single request. +> The **target tone** applies to **Improve text** and **Change tone**. Older configurations with the previous nine writing-style presets are migrated automatically to the closest action (e.g. "Email – formal" → **Change tone**, professional). Custom names/terms are preserved in every action. -The main window offers **Dictate** and **Dictate & improve**. Existing specialized -workflows remain available through the tray and hotkeys. The older screenshots -below still show the previous interface. +### Compose window -The **Compose window** (`✍ Compose…` in the tray menu) lets you rewrite any text using the AI — without recording your voice. It is ideal for editing existing drafts, emails, or notes. +The **Compose window** (`✍ Edit text…` in the tray menu or the pen button in the main widget) lets you draft, rewrite, and refine text using the AI — without recording your voice. It is ideal for polishing emails, notes, or messages before pasting them anywhere.

- Compose window + Compose window

-**How to open:** Click the tray icon → **✍ Compose…** +**How to open:** Click the tray icon → **✍ Edit text…** or click the gold pen button in the main window widget. **What you can do in the Compose window:** | Element | Description | | :--- | :--- | -| **Draft (left pane)** | Type or paste the text you want to rewrite. | -| **Workflow** | Choose between Blitztext+ (text improver), Blitztext $%&! (steam release), or Blitztext :) (emojis). | -| **Writing-style preset** | Select a preset or **Custom preset…** for a fully custom system prompt. | -| **Tone** | Choose casual, neutral, or professional. Active only when **Standard** preset + **Blitztext+** is selected; grayed out for all other presets (a tooltip explains why). | -| **Improve** | Sends your draft to the AI and shows the result in the right pane. | -| **Variant history** | The last 10 generated results within the current session are kept as a scrollable list — click any entry to restore it. | -| **Signature** | Appends your saved signature (configured under **Settings → General**). Automatically replaces common AI-generated placeholders such as `[Your Name]`, `[Ihr Name]`, `[Vorname Nachname]`, `[Signature]`, and similar — so no stray placeholder is ever left behind. | -| **Copy** | Copies the result to the clipboard. | -| **Insert & Close** | Pastes the result directly into the active application and closes the window. | +| **Text action selector** | Choose between *Improve text*, *Shorten*, *Expand*, *Change tone*, or *Custom instruction*. | +| **Tone selector** | Appears dynamically when *Change tone* is selected (Casual, Neutral, Professional). | +| **Custom instruction …** | Expands an inline prompt editor (*"How should your text sound?"*). **Improve** uses this instruction for the current draft; **Save & use for dictation** persists it for future sessions and selects it for dictation workflows. | +| **Inspect prompt** | Inspect the exact system prompt and instructions before submitting to the LLM. | +| **Route voice input here** | When checked, active voice dictations are inserted directly into the draft field instead of being pasted to the active application. | +| **Draft (left pane)** | Type, paste, or dictate the text you want to rewrite. | +| **Result (right pane)** | Shows the AI-generated output side by side with your draft. | +| **Variant navigation** | The results generated in this session stay available — step through them with the ‹ › arrows above the result pane. | +| **Copy** | Copies the generated result to the clipboard. | +| **Insert & Close** | Pastes the result directly into the active application and closes the compose window. | + +
+
+ Compose window with custom prompt inspection +
+ Inspect and edit the LLM instruction directly inside the Compose window. +

+
> [!NOTE] -> The signature and custom preset text are configured under **Settings → General**. Set "Signature for Compose window" and toggle "Automatically append after generation" if you want the signature added to every result. +> Signature and custom preset text are configured under **Settings → General**. Set "Compose Window Signature" and toggle "Auto-append after generation" if you want your signature automatically added to every result. Common AI placeholders (like `[Your Name]`) are cleanly replaced. ### Tray icon and context menu @@ -182,35 +171,61 @@ The microphone in the system tray is your indicator of the current state:
-The tray context menu gives you quick access to all workflows, the compose window, writing-style presets, dictation mode, history, and settings: +The tray context menu gives you quick access to all workflows, the compose window, text actions, dictation mode, history, and settings:

- Tray context menu + Tray context menu

> [!NOTE] > If no tray area is available in the desktop environment, the icon falls back to the system theme `audio-input-microphone`; the color coding may then not apply. -### Main window +### Main window: Single-panel widget -The main window is your graphical control center — useful when hotkeys are blocked or you prefer mouse control: +The main window is a compact, frameless desktop widget with a consistent dark look, gold accents, and immediate visual feedback:
-
- Main window -

+ + + + + + + +
+

+ Idle
+ Ready, standing by for input. +
+

+ Recording
+ Live timer and stereo wave bars. +
+

+ Processing
+ Animated gold spinning ring. +
+

+ Options menu
+ Workflows and quick actions. +
-- **Workflow dropdown:** Select from all 5 recording modes. -- **Writing-style preset:** Visible when **Blitztext+** is selected — pick your preset directly in the main window. Changes sync to the tray instantly. -- **Start/Stop button:** Click to begin or end a recording. -- **Discard:** Cancels the current recording without transcription. -- **Dictation / History:** Quick access to dictation mode and the transcript history. -- **Read aloud / Settings:** Open the read-aloud window or the settings dialog. +- **Central gold microphone:** Prominent circular button with metallic gradient and lightning bolt cut-out. Click to toggle recording on and off. +- **Dynamic visual feedback:** + - **Idle:** Green status dot with duration counter (`Ready: 00:00`). + - **Recording:** Amber indicator, live recording timer, and animated stereo wave bars flanking the mic. + - **Processing:** Rotating gold progress ring around the microphone (`Transcribing…`). +- **Tool row:** + - ✍ **Compose button** (highlighted pen icon): Opens the Compose window for drafting and rewriting. + - 🕒 **History button** (with counter badge): Opens the transcript history with recent entries. + - 🔊 **Read aloud button** (speaker icon): Opens the TTS window to synthesize speech. + - ⚙ **Settings button** (gear icon): Opens the settings dialog. + - ⋯ **More options button**: Pops up quick access to *Dictate & improve*, text improvement presets (*Shorten*, *Expand*, *Change tone*), *Custom instruction*, *Batch dictation*, and *Discard*. -*The window opens at startup and via the tray entry **Show window** or a click on the tray icon. Closing only hides the window — the app keeps running in the tray.* +*The widget opens at startup, via the tray entry **Show window**, or by clicking the tray icon. Closing only hides the widget — the app keeps running in the background tray.* ### Dictation, history, and read-aloud @@ -218,7 +233,8 @@ In addition to the workflows, the tool offers three convenience functions:

- History + History +    Read aloud

@@ -372,8 +388,8 @@ The settings dialog has three tabs:
Settings: Speech Recognition
Speech Recognition — Whisper model, backend, language, hotkey mode, and recording key.

- Settings: AI Workflows -
AI Workflows — LLM provider, API key, base URL, model, tone, and writing-style preset.

+ Settings: Text & AI +
Text & AI — system prompt, API key environment, LLM provider, base URL, model, text action, and emoji density.

Settings: General
General — Auto-Paste, dictation folder, history size, interface language, and signature.

@@ -443,7 +459,7 @@ The settings dialog has three tabs: - **tts_openai_model** / **tts_openai_voice**: Model and voice for OpenAI Cloud TTS (default: `gpt-4o-mini-tts`, `marin`). - **tts_openai_consent**: `true` once the one-time privacy confirmation for Cloud TTS has been granted. Default: `false`. - **tts_speed**: Speech speed multiplier for "Read aloud". Default: `1.0`. -- **workflows**: Fine-tuning of tonality (`text_improver_tone`), writing-style preset (`writing_preset`), emojis (`emoji_density`), and the steam-release prompt (`dampf_system_prompt`). +- **workflows**: Fine-tuning of tonality (`text_improver_tone`), text action (`writing_preset`), emojis (`emoji_density`), and the steam-release prompt (`dampf_system_prompt`). --- @@ -452,7 +468,7 @@ The settings dialog has three tabs: API keys are never stored in `config.json` — they are read from environment variables at runtime. -**Recommended: `secrets.env`.** Place your key(s) in `~/.config/blitztext-linux/secrets.env`, one `NAME=VALUE` pair per line — the variable name matches the provider selected under **Settings → AI Workflows → "API key environment"** (e.g. the OpenAI variable for OpenAI, the OpenRouter variable for OpenRouter), and `VALUE` is the secret key you got from that provider: +**Recommended: `secrets.env`.** Place your key(s) in `~/.config/blitztext-linux/secrets.env`, one `NAME=VALUE` pair per line — the variable name matches the provider selected under **Settings → Text & AI → "API key environment"** (e.g. the OpenAI variable for OpenAI, the OpenRouter variable for OpenRouter), and `VALUE` is the secret key you got from that provider: ```bash = @@ -460,8 +476,8 @@ API keys are never stored in `config.json` — they are read from environment va `./run.sh` and the systemd user service load this file automatically. `config.json` only stores the *name* of the environment variable to read (`openai_api_key_env`), never the key itself. -- Which variable is used depends on **Settings → AI Workflows → "API key environment"** and the selected LLM provider (`OPENAI_API_KEY` for OpenAI, `OPENROUTER_API_KEY` for OpenRouter, or a custom name for a custom endpoint). -- Without a valid key, the LLM workflows (`Blitztext+`, `Blitztext $%&!`, `Blitztext :)`) and OpenAI Cloud TTS are disabled or fail with an error message; local transcription and Piper TTS keep working. +- Which variable is used depends on **Settings → Text & AI → "API key environment"** and the selected LLM provider (`OPENAI_API_KEY` for OpenAI, `OPENROUTER_API_KEY` for OpenRouter, or a custom name for a custom endpoint). +- Without a valid key, the LLM workflows (`Dictate & improve`, `Make it factual`, `Add emojis`) and OpenAI Cloud TTS are disabled or fail with an error message; local transcription and Piper TTS keep working. - Never commit `secrets.env`, API keys, or tokens to git. If a key is ever exposed (e.g. committed by accident or pasted into an issue), rotate it immediately with the provider. - `config.json` is written with restrictive permissions (`0o600`); keep the same expectation for `secrets.env`. @@ -528,7 +544,7 @@ This project was designed with the support of artificial intelligence (AI-assist │ ├── transcribe.py # Whisper transcription │ ├── tts_window.py # Read Aloud window with audio export │ ├── workflows.py # Workflow definitions -│ └── writing_presets.py # Writing-style preset definitions +│ └── writing_presets.py # Text action definitions and legacy preset migration ├── packaging/flatpak/ # Experimental Flatpak MVP spike (see above) ├── tests/ # Test suite └── README.md # This document (German version: README.de.md) diff --git a/docs/screenshots/linux/Banner-de.png b/docs/screenshots/linux/Banner-de.png index d1097be79428d1a7db385b9c77f0b09f7338286e..f8b512653ac66083cc61dba678b8264ffae208c9 100644 GIT binary patch literal 184145 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%0Dt-r=Ka`hYP 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

A9ZO*p734uFur{W#$^V8)`d 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

t2Ul#gtO7<)_O1|#qu2AwqW&LM{qYC*i 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 z