Fix invisible Add Custom engine dialog and a TDZ error on Engines tab (v1.14.5)

Two unclosed <div class="card"> tags in the TTS settings markup left the
add-engine dialog nested inside the TTS panel's DOM subtree, so it
rendered at zero size whenever another Engines sub-tab (e.g. Speech
Recognition) was active. Also fixed a `let` declared after its first
use, which threw a ReferenceError on every Engines-tab page load.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mARTin-B78 2026-07-08 21:45:53 +02:00
parent 939d33f7cc
commit 2a2c34fb56
5 changed files with 17 additions and 7 deletions

View File

@ -9,6 +9,14 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
---
## [1.14.5] — 2026-07-08
### Fixed
- **"Add Custom" engine dialog was invisible/unclickable from the Speech Recognition and Language Models tabs** — two unclosed `<div class="card">` tags in the TTS settings markup left the dialog (and everything after it) nested inside the TTS panel's DOM subtree. Since that panel is `display:none` whenever another Engines tab is active, the dialog opened with zero size and no way to interact with it. Closed the missing tags so the dialog renders as a top-level element.
- **Uncaught `ReferenceError: Cannot access '_localContainersLoadSeq' before initialization`** thrown on every page load when the Engines tab was active — a `let` declaration for the container-load sequence counter was placed after the code that first used it. Moved the declaration above its first use.
---
## [1.14.4] — 2026-07-08
### Fixed

View File

@ -1 +1 @@
1.14.4
1.14.5

View File

@ -10,7 +10,7 @@
<meta name="format-detection" content="telephone=no">
<meta name="color-scheme" content="light dark">
<meta name="theme-color" content="#2563EB">
<meta name="app-version" content="1.14.4">
<meta name="app-version" content="1.14.5">
<link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" href="/static/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/static/icon.svg">
@ -27,7 +27,7 @@
<!-- ── Core styles (local — no CDN dependency for first paint) ────────── -->
<link rel="stylesheet" href="/static/vendor/mdi/materialdesignicons.min.css">
<link rel="stylesheet" href="/static/style.css?v=1.14.4">
<link rel="stylesheet" href="/static/style.css?v=1.14.5">
<!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── -->
@ -365,7 +365,7 @@ window.toggleNavTree = function(treeId, chevronId) {
</script>
<!-- loader.js: fetches sections → loads JS modules → removes skeleton -->
<script src="/static/loader.js?v=1.14.4"></script>
<script src="/static/loader.js?v=1.14.5"></script>
</body>
</html>

View File

@ -188,6 +188,7 @@ if (document.getElementById('s-studio')?.classList.contains('is-active')) initEl
if (typeof renderIntegrationSnippets === 'function') renderIntegrationSnippets();
// ── Engines section: load containers when that section is visible ──────────
let _localContainersLoadSeq = 0;
if (document.getElementById('s-llms')?.classList.contains('is-active')) {
loadLocalContainers();
}
@ -307,7 +308,6 @@ function editCustomEngineCard(card) {
// ── Local Docker container management ─────────────────────────────────────
let _localContainersLoadSeq = 0;
let _lastLocalContainers = null;
function cardType(card) {

View File

@ -544,7 +544,8 @@
<span class="s-hint">Controls payload shape for the normal TTS API URL.</span>
</div>
</div>
</div>
<div class="card" style="margin-bottom: 24px;">
<div class="s-page-head">
<h3>Default Playback Voice</h3>
@ -556,9 +557,10 @@
<select id="s-captures-default-voice">
<option value="">None — select manually</option>
</select>
</div>
</div>
</div>
<div class="s-page-actions" style="margin-top: 15px;">
<button class="btn-primary s-save-btn">Save settings</button>
<button class="btn-secondary s-reload-btn">Reload settings</button>