Repository navigation
webui: treat configured models the same with and without UI management - #972
Merged
Merged
Conversation
The config-mode support added to the WebUI only covered servers without UI management; with --ui-management the WebUI kept assuming a server without a config. So: - A config model under an id the catalog does not have was not offered at all with UI management. It is now listed (with its id beside the name) and used as configured, as without UI management: it loads on its first request and is not reloaded from the catalog. A config model under a catalog id stays that catalog entry; the server keeps its config settings when the WebUI loads it. - A configured model's memory could not be released from the WebUI. Its button now releases a loaded model through POST /v1/tasks/unload_models, which needs no UI management; /v1/models/unload stays management-only. After a request loads such a model the button shows it as loaded. - A model with built-in voices listed only those voices with UI management, hiding the server's presets. Both modes now list the server's voices and the built-in ones, leaving out the embedded demo recordings, which such a model cannot clone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
|
Thanks, @KKTTSPJ PR Merged! |
cunba-ai
pushed a commit
to cunba-ai/audio.cpp
that referenced
this pull request
Oct 28, 2026
…ke-word/Whistle NEON + Drama3 deepening + per-model server device selection Upstream commits a8ba5a3..5074956 (16): - shared object libraries declared in model registrations (0xShug0#966) - OpenWakeWord Alexa GGUF package (0xShug0#968) - Whistle host decoder restored + opt-in NEON acceleration (0xShug0#967) - opt-in NEON network execution for microWakeWord (0xShug0#969) - fish_drama3: per-layer expert counts, speech-only head (0xShug0#959) - server: exec_plan engines counted in free-memory guard (0xShug0#964) - server: config model settings kept on WebUI loads, demo voices with --ui (0xShug0#971) - fix(rknn): exec_plan engine lookup next to the model (0xShug0#963) - webui: configured models treated same with/without UI management (0xShug0#972) - perf(rknn): ladder engine priced by driver report (0xShug0#970) - feat(server): per-model backend device selection (0xShug0#973) - perf(fish_dac): chunked reference encoding cuts VRAM peak (0xShug0#960) - webui: Vietnamese interface translations (0xShug0#839) - Drama3 base/small release cleanup (0xShug0#976) - text chunking: closing quotes kept with their sentence, tag-aware (0xShug0#977) - fish_drama3: default top_k 4097 no cap, matching Fish's Space (0xShug0#978) # Conflicts: # src/community_models/whistle_asr/session.cpp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
With
--ui-management, the WebUI still assumes a server without a config. Most of the config-mode behaviour added for #234 exists only without UI management. This PR makes a configured model behave the same in both modes:What stays as it is: without UI management, the WebUI offers only the configured models, with no catalog, downloads or model switching (the request in #234).
POST /v1/models/unloadstays management-only.It pairs with #971, which adds the
configuredfield toGET /v1/modelsand keeps a config model's settings when the WebUI loads it. Without that PR, item 1 adds nothing and items 2 and 3 still apply.Background
I am sending this because, while working on #941, I kept running into places where UI management and config mode disagree for no clear reason. So I traced where the two modes split.
WebUI - Initial native Svelte WebUI embedded inside audiocpp_server.exe — no Python, Node.js, or Gradio needed #185, the original design. It introduced the embedded WebUI as one UI for both setups:
--uiand no config, it is a standalone host with model management.--ui-managementis added "when that instance should permit model switching".Confusion about web UI and existing configuration #234 and Track native UI configuration-mode gaps #236. Confusion about web UI and existing configuration #234 asked for a UI limited to the configured models when not managing. Track native UI configuration-mode gaps #236 answered it:
These were added as
if (!server.ui_management)branches. The management side kept WebUI - Initial native Svelte WebUI embedded inside audiocpp_server.exe — no Python, Node.js, or Gradio needed #185's assumption of a server without a config. So a config combined with--ui-managementnever got the configured-model handling, although the server supports that combination and the README documents it.Later changes followed the same split.
The result today, with a config and
--ui-management:voice_id.Without UI management, the WebUI cannot release a configured model's memory. Yet
POST /v1/tasks/unload_models(#197) does exactly that and needs no UI management. OnlyPOST /v1/models/unload, which is part of model switching, is management-only.Changes
configuredfromGET /v1/models.isConfiguredEntry()is true for every entry without UI management, and for the entries added above with it.ui_managementfor the selected model, it now branches onisConfiguredEntry(). That covers the model path, the installed check, load and ensure-loaded, settings import, the Arena and the LFM2 panel.POST /v1/tasks/unload_models.dist/index.htmlis rebuilt.Testing
npm run check: 0 errors, 0 warnings.npm run build.main(5b772fe0) with this PR and server: keep config model settings on WebUI loads, and offer demo voices with --ui #971 applied. "main" is the same build without the two PRs.irodori-tts) and some not (irodori-tts-anime), and avoice_dirwith one WAV.my-irodori(not a catalog id, presetnarr2), a presetnarronirodori-tts, andkokoro-test.kokoro-testis akokoro_ttsentry registered without its files, used only to look at its voice list.With UI management:
irodori-tts-anime,my-irodoriandkokoro-testin the model listmy-irodori: voice listnarr2my-irodori: generate withnarr2, then the model buttonloaded: false)kokoro-test: voice listheart(preset), the library WAV, then the built-in voicesirodori-tts(catalog entry): generate withnarr, which makes the WebUI load itnarris still listed afterwardsWithout UI management:
my-irodoriafter a requestloaded: false)kokoro-test: voice listheart, the library WAV, the built-in voicesI did not run this PR without #971. Without it,
configuredis absent, so the code adds no entries for item 1.🤖 Generated with Claude Code