Root cause 1 (v1.12.18): `window.loadVoiceLibrary = () => loadVoiceLibrary()` overwrites the global binding the arrow function references, causing immediate RangeError: Maximum call stack size exceeded on every call. Changed to direct assignment `window.loadVoiceLibrary = loadVoiceLibrary`. Root cause 2 (v1.12.18): `loadSettings()` called `renderSettingsAbout()` which lives in conversation.js (batch E), loaded after init.js. Guard added with typeof check; nav.js already calls it safely when the About section opens. Also (v1.12.18): s-library.html duplicated cl-book-filter / cl-search / cl-grid from s-characters.html, breaking getElementById. Characters panel in Library now redirects to s-characters instead of duplicating its DOM nodes. Also (v1.12.19): engines.js triggers a second loadVoiceLibrary() after nav.js already rendered voices, blanking the list briefly. Second call now silently re-fetches without clearing the list when voices are already present. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| audio.py | ||
| config.py | ||
| constants.py | ||
| docker_client.py | ||
| presets.py | ||
| registry.py | ||
| routing.py | ||
| tts_helpers.py | ||
| validation.py | ||
| voice.py | ||