debug(tts): log attachSentenceGlow path to diagnose missing manual highlights
Temporary instrumentation to pinpoint why sentence highlighting fails on manual Play. Logs whether audio/button are present, whether sentences is the expected array, the post-wrap span count, and the wrap-flag state. Will revert once root cause is found.
This commit is contained in:
parent
8589c91ca9
commit
cdf3c7ca24
1 changed files with 16 additions and 4 deletions
|
|
@ -1039,17 +1039,29 @@ function wrapSentencesForGlow(container) {
|
||||||
// array from the speech service: [{index, text, start_ms, end_ms}, ...].
|
// array from the speech service: [{index, text, start_ms, end_ms}, ...].
|
||||||
// Without it (non-F5 models), we no-op rather than guess.
|
// Without it (non-F5 models), we no-op rather than guess.
|
||||||
function attachSentenceGlow(audio, playButton, sentences) {
|
function attachSentenceGlow(audio, playButton, sentences) {
|
||||||
if (!audio || !playButton) return;
|
console.log("[glow] attach called", {
|
||||||
|
hasAudio: !!audio,
|
||||||
|
hasButton: !!playButton,
|
||||||
|
sentencesType: Array.isArray(sentences) ? 'array' : typeof sentences,
|
||||||
|
sentencesLen: Array.isArray(sentences) ? sentences.length : -1
|
||||||
|
});
|
||||||
|
if (!audio || !playButton) { console.log("[glow] bail: missing audio/button"); return; }
|
||||||
// Allow an initially-empty array: under SSE it grows as sentences arrive,
|
// Allow an initially-empty array: under SSE it grows as sentences arrive,
|
||||||
// and the tick reads its length live. Undefined (non-F5) still no-ops.
|
// and the tick reads its length live. Undefined (non-F5) still no-ops.
|
||||||
if (!Array.isArray(sentences)) return;
|
if (!Array.isArray(sentences)) { console.log("[glow] bail: sentences not array"); return; }
|
||||||
const wrapper = playButton.closest('.message-wrapper');
|
const wrapper = playButton.closest('.message-wrapper');
|
||||||
const container = wrapper && wrapper.querySelector('.message-content');
|
const container = wrapper && wrapper.querySelector('.message-content');
|
||||||
if (!container) return;
|
if (!container) { console.log("[glow] bail: no container"); return; }
|
||||||
wrapSentencesForGlow(container);
|
wrapSentencesForGlow(container);
|
||||||
const spans = container.querySelectorAll('.tts-sentence');
|
const spans = container.querySelectorAll('.tts-sentence');
|
||||||
const domCount = container._glowSentenceCount || 0;
|
const domCount = container._glowSentenceCount || 0;
|
||||||
if (!spans.length || domCount <= 0) return;
|
console.log("[glow] post-wrap", {
|
||||||
|
spans: spans.length,
|
||||||
|
domCount,
|
||||||
|
glowWrappedFlag: container.dataset.glowWrapped,
|
||||||
|
containerHasContent: container.textContent.substring(0, 50)
|
||||||
|
});
|
||||||
|
if (!spans.length || domCount <= 0) { console.log("[glow] bail: no spans"); return; }
|
||||||
|
|
||||||
let active = -1;
|
let active = -1;
|
||||||
function setActive(idx) {
|
function setActive(idx) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue