webui: point every catalog entry at the package it installs - #428
Open
CryptVenture wants to merge 1 commit into
Open
webui: point every catalog entry at the package it installs#428CryptVenture wants to merge 1 commit into
CryptVenture wants to merge 1 commit into
Conversation
60 of the 85 catalog entries name a download_id that is not a packages[].id, a
path no package installs into, or both: 46 unresolvable ids and 14 paths that
are not the package's target_directory. They resolve only through a
compatibility shim in catalog.ts that strips precision suffixes and guesses;
where the guess fails the entry offers no install button at all.
Each entry now names the package that entry already meant and the directory
that package installs into:
- download_id is an exact packages[].id from the entry's own family. Where
the old id was a stem ("omnivoice", "chatterbox"), it becomes the family's
recommended package. Where it named a variant ("qwen3_tts_1_7b_custom_
voice", "dots_tts_mf_q8_0"), the variant is preserved and only the
spelling is corrected to the published id.
- path is models/<target_directory> of that package. 40 entries pointed at
pre-GGUF directories that no package writes ("models/chatterbox" ->
"models/Chatterbox-GGUF"), and several pointed at a single .gguf file
inside the directory, which only resolves when that exact filename ships.
- Three entries resolved to safetensors packages the native manager cannot
install, so they had no install choice; they now use their family's
recommended GGUF package.
No entry is added, removed or retasked here, and display names, tasks, modes
and min_vram_gb are untouched. The voxcpm1 download_id fixed in 0xShug0#424 is left
as it is.
Validation:
- Entries whose download_id is not a packages[].id, or whose path is not
that package's target_directory: 60 before, 0 after.
- No path is targeted by more than one download_id, so a catalog install
leaves one package per directory.
- tools/check_loader_catalog_sync.py reports loaders, model_specs and
model_manager_v2 in sync.
- Directory paths load exactly as the file paths they replace. Same server,
same input, audiosr registered twice:
models/AudioSR-GGUF 200
models/AudioSR-GGUF/audiosr-basic-f32.gguf 200
identical response fields from both.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ATa5YkLUPMDPRL7w1gCo9p
CryptVenture
marked this pull request as ready for review
September 3, 2026 13:10
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.
Reopened now that #400 has merged, rebased on current
main. The voxcpm1download_idfixed in #424 is kept as it is.The problem
60 of the 85 catalog entries do not describe a package that exists:
download_idthat is not apackages[].idin anymodel_specs/*.json.paththat is notmodels/<target_directory>of the package they point at.They resolve only through a compatibility shim in
catalog.tsthat strips precision suffixes and guesses. Where the guess fails, the entry offers no install button at all.The change
Each entry names the package it already meant, and the directory that package installs into.
download_idbecomes an exactpackages[].idfrom the entry's own family. A stem (omnivoice,chatterbox) becomes the family's recommended package; a variant (qwen3_tts_1_7b_custom_voice,dots_tts_mf_q8_0) keeps the variant and only has its spelling corrected to the published id.pathbecomesmodels/<target_directory>of that package. 40 entries pointed at pre-GGUF directories no package writes (models/chatterbox→models/Chatterbox-GGUF); several pointed at one.gguffile inside the directory, which only resolves while that exact filename ships.No entry is added, removed or retasked. Display names, tasks, modes and
min_vram_gbare untouched. 60 lines changed, 60 replaced.Verification
No path is claimed by two packages, so a catalog install leaves one package per directory.
Directory paths load exactly as the file paths they replace — same server, same input,
audiosrregistered twice:The one entry where this matters most is
minimax-h3, which moves frommodels/MiniMax-H3-Q4-GGUF/dit.ggufto the directory:load_minimax_h3_assetstakes either, and the directory is the spec-driven path that reaches the whole component package rather than the DiT alone.