Character Voices waveform trim editor doesn't render (no error) on recent frontend
Environment: ComfyUI 0.31.1, comfyui_frontend_package 1.48.7 (via Comfy Desktop 1.0.37), macOS arm64 (Apple Silicon), Python 3.12.11
Repro
- Add a fresh 🎭 Character Voices node to any workflow
- Select any library voice from
voice_name (e.g. voices_examples/Ru_Anton.WAV)
Expected
Per web/character_voices_preview.js / web/character_voices_trim_ui.js, selecting a voice should mount a waveform editor with drag handles for trim_start/trim_end, replacing the plain trim_start, trim_end, and customized widgets.
Actual
The node shows only voice_name and reference_text — no waveform, no plain trim_start/trim_end/customized fields, no play/pause control. Just blank space where the editor should be.
Diagnosis
The plain trim_start/trim_end/customized widgets are getting hidden (confirmed visually — they don't appear at all), which only happens inside setupDomEditor() in character_voices_preview.js, right after node.addDOMWidget(...) succeeds:
const domWidget = node.addDOMWidget("voice_reference_editor", "audioUI", editor.element, {...});
domWidget.computeSize = ...
hideNativeWidget(findWidget(node, "trim_start"));
hideNativeWidget(findWidget(node, "trim_end"));
hideNativeWidget(findWidget(node, "customized"));
So addDOMWidget isn't throwing (the fallback path in setupCharacterVoices — plain ▶ Play/Pause Voice button — never appears either). The DOM widget appears to be registered but its content (editor.element) isn't actually painting.
Checked and ruled out:
- Backend is fine —
/api/tts-audio-suite/voice-library returns the correct voice list, /api/tts-audio-suite/voice-preview?voice_name=... returns 200 with valid audio bytes.
- No console errors — reselecting the voice in DevTools (opened via a plain browser tab pointed at the same local server, since Comfy Desktop's packaged build has DevTools disabled) produces zero new console output, red or otherwise, tied to
character_voices_*.js.
My guess, unverified: something about how addDOMWidget-based widgets are laid out on this frontend version has changed since this code was written — possibly related to the frontend's move toward Vue-based widget rendering — such that editor.element gets attached to the widget list but not actually mounted into the visible node DOM. Happy to help narrow this down further if you can point at what changed in addDOMWidget handling around the 1.48.x frontend line, or if there's a known replacement pattern for custom audio/waveform widgets on current frontends.
Impact
Users can't trim reference audio through the UI at all on this frontend version — no error surfaces, so it just silently looks like the feature doesn't exist. Workaround is trimming the source file externally before dropping it into voices_examples/.
Character Voices waveform trim editor doesn't render (no error) on recent frontend
Environment: ComfyUI 0.31.1,
comfyui_frontend_package1.48.7 (via Comfy Desktop 1.0.37), macOS arm64 (Apple Silicon), Python 3.12.11Repro
voice_name(e.g.voices_examples/Ru_Anton.WAV)Expected
Per
web/character_voices_preview.js/web/character_voices_trim_ui.js, selecting a voice should mount a waveform editor with drag handles fortrim_start/trim_end, replacing the plaintrim_start,trim_end, andcustomizedwidgets.Actual
The node shows only
voice_nameandreference_text— no waveform, no plaintrim_start/trim_end/customizedfields, no play/pause control. Just blank space where the editor should be.Diagnosis
The plain
trim_start/trim_end/customizedwidgets are getting hidden (confirmed visually — they don't appear at all), which only happens insidesetupDomEditor()incharacter_voices_preview.js, right afternode.addDOMWidget(...)succeeds:So
addDOMWidgetisn't throwing (the fallback path insetupCharacterVoices— plain▶ Play/Pause Voicebutton — never appears either). The DOM widget appears to be registered but its content (editor.element) isn't actually painting.Checked and ruled out:
/api/tts-audio-suite/voice-libraryreturns the correct voice list,/api/tts-audio-suite/voice-preview?voice_name=...returns 200 with valid audio bytes.character_voices_*.js.My guess, unverified: something about how
addDOMWidget-based widgets are laid out on this frontend version has changed since this code was written — possibly related to the frontend's move toward Vue-based widget rendering — such thateditor.elementgets attached to the widget list but not actually mounted into the visible node DOM. Happy to help narrow this down further if you can point at what changed inaddDOMWidgethandling around the 1.48.x frontend line, or if there's a known replacement pattern for custom audio/waveform widgets on current frontends.Impact
Users can't trim reference audio through the UI at all on this frontend version — no error surfaces, so it just silently looks like the feature doesn't exist. Workaround is trimming the source file externally before dropping it into
voices_examples/.