From 07e6a839faf4a32bd7c99e072d1785d0520f97c6 Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Sun, 21 Jun 2026 08:35:03 +0000 Subject: [PATCH 1/2] =?UTF-8?q?stage=20#4599=20onto=20master=20(v0.51.555)?= =?UTF-8?q?=20=E2=80=94=20add=20id-ID=20Edge=20TTS=20voice=20+=20fix=20Lis?= =?UTF-8?q?ten=20button=20playing-state=20(parity)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit latipun7: adds id-ID-GadisNeural to the Edge TTS allowlist (Edge TTS is a core builtin -> parity, default-in) + picker label + sets speaking-state at start of _playEdgeTtsChunked so the Listen button reflects playback. Co-authored-by: latipun7 --- api/routes.py | 1 + static/panels.js | 1 + static/ui.js | 2 ++ 3 files changed, 4 insertions(+) diff --git a/api/routes.py b/api/routes.py index 47d9bad0..58404f4d 100644 --- a/api/routes.py +++ b/api/routes.py @@ -13577,6 +13577,7 @@ def _handle_tts(handler, parsed): "fr-CA-AntoineNeural", "fr-CA-JeanNeural", "fr-CA-SylvieNeural", "fr-CA-ThierryNeural", "fr-FR-DeniseNeural", "fr-FR-EloiseNeural", "fr-FR-HenriNeural", + "id-ID-GadisNeural", } if voice not in allowed: from api.helpers import bad as _bad diff --git a/static/panels.js b/static/panels.js index bd320023..d6b5067c 100644 --- a/static/panels.js +++ b/static/panels.js @@ -7372,6 +7372,7 @@ async function loadSettingsPanel(){ {value:'zh-CN-YunyangNeural',label:'Yunyang (Chinese, Male)'}, {value:'en-US-AriaNeural',label:'Aria (English, Female)'}, {value:'en-US-GuyNeural',label:'Guy (English, Male)'}, + {value:'id-ID-GadisNeural',label:'Gadis (Indonesian, Female)'}, ]; ttsVoiceSel.innerHTML=''; edgeVoices.forEach(v=>{ diff --git a/static/ui.js b/static/ui.js index 5a4f05d0..7346fed8 100644 --- a/static/ui.js +++ b/static/ui.js @@ -6095,6 +6095,8 @@ function _buildBrowserUtterance(text, btn){ } function _playEdgeTtsChunked(text, btn){ + _ttsSpeaking=true; + if(btn) btn.dataset.speaking='1'; const chunks=_splitForTTS(text); const _playOne=function(idx){ if(idx>=chunks.length){ From 1ef996b112589b4fa6aa8da08db24af607c8fcef Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Sun, 21 Jun 2026 08:43:17 +0000 Subject: [PATCH 2/2] =?UTF-8?q?docs(release):=20stamp=20v0.51.556=20?= =?UTF-8?q?=E2=80=94=20id-ID=20Edge=20TTS=20voice=20+=20Listen=20button=20?= =?UTF-8?q?state=20(#4599)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0af1f63..48171bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ ## [Unreleased] +## [v0.51.556] — 2026-06-21 — Release TO (Indonesian Edge TTS voice + Listen button state fix) + +### Added + +- **Indonesian Edge TTS voice (`Gadis`).** Added `id-ID-GadisNeural` to the Edge TTS voice allowlist and the voice picker. Thanks @latipun7. + +### Fixed + +- **The Listen (text-to-speech) button now reflects playing state for chunked Edge TTS playback.** It marks the speaking state at the start of playback so the button shows it's active instead of looking idle while audio plays. Thanks @latipun7. + ## [v0.51.555] — 2026-06-21 — Release TN (mobile reloads recover after compression rotation) ### Fixed