From 71602f0ece1702b13440228b9d5a373c2491f60f Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Tue, 14 Apr 2026 21:26:36 +0200 Subject: [PATCH] feat(config): pause_media_during_recording-Flag Co-Authored-By: Claude Sonnet 4.6 --- tests/test_config.py | 25 ++++++++++++++++++++++++- whisper_local/config.py | 11 ++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/tests/test_config.py b/tests/test_config.py index e0fbb2b..f8bc560 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -3,7 +3,7 @@ from unittest.mock import patch import os import tomllib -from whisper_local.config import Config, load_config +from whisper_local.config import Config, load_config, save_config class TestConfigDefaults: @@ -113,3 +113,26 @@ class TestSaveConfig: save_config(config, path) loaded = load_config(path) assert loaded.microphone == 'USB "Pro" Mic' + + +class TestPauseMediaDuringRecording: + def test_default_pause_media_during_recording_is_true(self): + config = Config() + assert config.pause_media_during_recording is True + + def test_load_config_reads_pause_media_false(self, tmp_path: Path): + cfg_path = tmp_path / "config.toml" + cfg_path.write_text("[media]\npause_during_recording = false\n", encoding="utf-8") + + config = load_config(cfg_path) + + assert config.pause_media_during_recording is False + + def test_save_config_roundtrip_preserves_pause_media(self, tmp_path: Path): + cfg_path = tmp_path / "config.toml" + original = Config(pause_media_during_recording=False) + + save_config(original, cfg_path) + loaded = load_config(cfg_path) + + assert loaded.pause_media_during_recording is False diff --git a/whisper_local/config.py b/whisper_local/config.py index 9c81b23..8d47377 100644 --- a/whisper_local/config.py +++ b/whisper_local/config.py @@ -26,6 +26,7 @@ class Config: channels: int = 1 min_duration: float = 0.5 microphone: str = "" + pause_media_during_recording: bool = True def load_config(path: Path = DEFAULT_CONFIG_PATH) -> Config: @@ -60,6 +61,12 @@ def load_config(path: Path = DEFAULT_CONFIG_PATH) -> Config: if "device" in audio_section: config.microphone = audio_section["device"] + media_section = data.get("media", {}) + if "pause_during_recording" in media_section: + config.pause_media_during_recording = bool( + media_section["pause_during_recording"] + ) + return config @@ -71,6 +78,7 @@ def _toml_str(value: str) -> str: def save_config(config: Config, path: Path = DEFAULT_CONFIG_PATH) -> None: """Schreibt Config als TOML-Datei. Erstellt Verzeichnisse bei Bedarf.""" path.parent.mkdir(parents=True, exist_ok=True) + pause_media_str = "true" if config.pause_media_during_recording else "false" content = ( f'[hotkey]\nkey = "{_toml_str(config.hotkey)}"\n\n' f'[whisper]\nmodel = "{_toml_str(config.whisper_model)}"\n' @@ -79,6 +87,7 @@ def save_config(config: Config, path: Path = DEFAULT_CONFIG_PATH) -> None: f'[audio]\nsample_rate = {config.sample_rate}\n' f'channels = {config.channels}\n' f'min_duration = {config.min_duration}\n' - f'device = "{_toml_str(config.microphone)}"\n' + f'device = "{_toml_str(config.microphone)}"\n\n' + f'[media]\npause_during_recording = {pause_media_str}\n' ) path.write_text(content, encoding="utf-8")