From 6ffba2d58877fe5fad502df190c8d22c58d76dcf Mon Sep 17 00:00:00 2001 From: mARTin-B78 Date: Mon, 22 Jun 2026 21:36:59 +0200 Subject: [PATCH] fix: Add new paths to config, fix Uvicorn logging, and update Storage settings --- core/config.py | 4 +++- server.py | 4 ++++ static/js/settings.js | 10 +++++++++- static/sections/s-settings.html | 10 ++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/core/config.py b/core/config.py index 9e3aed5..4ae3d1f 100644 --- a/core/config.py +++ b/core/config.py @@ -37,8 +37,8 @@ _SETTINGS_KEYS = { "client_voice_bindings", "llm_url", "llm_model", # Browser-persistent UI state - "engine_local_urls", "engine_container_names", "custom_engine_cards", "refine_llm_url", "conv_llm_url", "seed_finder_text", + "seed_finder_dir", "pt_dir", } # ── TTS stability defaults ──────────────────────────────────────────────────── @@ -276,6 +276,8 @@ def _load_settings() -> dict: "refine_llm_url": "", "conv_llm_url": "", "seed_finder_text": "", + "seed_finder_dir": "", + "pt_dir": "", } if CONFIG_FILE.exists(): try: diff --git a/server.py b/server.py index 8a877aa..c35ce94 100644 --- a/server.py +++ b/server.py @@ -30,6 +30,8 @@ app.add_middleware(GZipMiddleware, minimum_size=1024) _buf_handler = _BufferHandler() _buf_handler.setLevel(logging.DEBUG) logging.getLogger().addHandler(_buf_handler) +logging.getLogger("uvicorn.error").addHandler(_buf_handler) +logging.getLogger("uvicorn.access").addHandler(_buf_handler) # ── File log handler (rotates at 5 MB, keeps 3 files) ──────────────────────── @@ -48,6 +50,8 @@ try: datefmt="%Y-%m-%d %H:%M:%S", )) logging.getLogger().addHandler(_file_handler) + logging.getLogger("uvicorn.error").addHandler(_file_handler) + logging.getLogger("uvicorn.access").addHandler(_file_handler) except Exception as _log_err: logger.warning("Could not set up file logging at %s: %s", _LOG_DIR, _log_err) diff --git a/static/js/settings.js b/static/js/settings.js index 7282cc2..81ccb9e 100644 --- a/static/js/settings.js +++ b/static/js/settings.js @@ -343,7 +343,9 @@ const SETTINGS_FIELD_HELP = { 's-tts-key': ['TTS API key', 'Optional. For local OpenAI-compatible servers, sk-local or empty usually works.'], 's-vd-key': ['Voice Design API key', 'Optional. Use only if your Voice Design backend requires Authorization.'], 's-whisper-key': ['Whisper API key', 'Optional. Needed for cloud STT, usually empty for local Whisper-compatible containers.'], - 's-seed-finder-text': ['Seed Finder text', 'Custom test sentence used when opening the Seed Finder. Leave empty to use language defaults.'] + 's-seed-finder-text': ['Seed Finder text', 'Custom test sentence used when opening the Seed Finder. Leave empty to use language defaults.'], + 's-seed-finder-dir': ['Seed Finder Sample Files', 'Container path for seed finder sample storage.'], + 's-pt-dir': ['PT Files', 'Container path for .pt embedding storage.'] }; @@ -460,6 +462,10 @@ async function loadSettings() { $('s-vd-key').value = s.voice_design_api_key || ''; $('s-voices-scan-dir').value = s.voices_scan_dir || ''; $('s-output-dir').value = s.output_dir || ''; + const seedFinderDirEl = $('s-seed-finder-dir'); + if (seedFinderDirEl) seedFinderDirEl.value = s.seed_finder_dir || ''; + const ptDirEl = $('s-pt-dir'); + if (ptDirEl) ptDirEl.value = s.pt_dir || ''; const seedTextEl = $('s-seed-finder-text'); if (seedTextEl) seedTextEl.value = s.seed_finder_text || ''; const themeEl = $('s-theme-select'); @@ -560,6 +566,8 @@ document.addEventListener('click', async e => { if (!e.target.closest('.s-save-b voice_design_api_key: $('s-vd-key').value, voices_scan_dir: $('s-voices-scan-dir').value, output_dir: $('s-output-dir').value, + seed_finder_dir: $('s-seed-finder-dir')?.value || '', + pt_dir: $('s-pt-dir')?.value || '', stt_language: $('s-stt-language')?.value || '', stt_preferred_backend: $('s-stt-preferred-backend')?.value || '', auto_refine: $('s-auto-refine')?.value || 'off', diff --git a/static/sections/s-settings.html b/static/sections/s-settings.html index 6e78ce6..363c4b3 100644 --- a/static/sections/s-settings.html +++ b/static/sections/s-settings.html @@ -422,6 +422,16 @@ New cloned/exported voices are saved here. +
+ + + Directory containing generated seed finder samples. +
+
+ + + Directory for saved embedding models (.pt files). +