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
CryptVenture
marked this pull request as ready for review
September 3, 2026 13:10
65 of the 90 catalog entries name a download_id that is not a packages[].id, a
path no package installs into, or both: 51 unresolvable ids and 14 paths that
are not the package's target_directory. This corrects the 60 that can be
corrected. 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.
The five breeze_tts, cosyvoice3 and chatterbox_turbo entries added since are
left alone: those families have no model_specs/*.json yet, so their package
ids exist nowhere to point at. They are the 5 that remain unresolvable below,
and they resolve themselves once those specs land.
Validation:
- Entries whose download_id is not a packages[].id, or whose path is not
that package's target_directory: 65 before, 5 after -- the 5 being the
new families that have no spec yet.
- 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>
CryptVenture
force-pushed
the
pr/catalog-entry-fixes
branch
from
September 4, 2026 18:32
7756a2d to
a67483d
Compare
Contributor
Author
|
Rebased on current Those five new entries are deliberately left alone: |
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.
Rebased on current
main. The voxcpm1download_idfixed in #424 is kept as it is.The problem
65 of the 90 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.This corrects the 60 that can be corrected. The five
breeze_tts,cosyvoice3andchatterbox_turboentries added recently are left alone: those families have nomodel_specs/*.jsonyet, so there is no package id to point them at. They fix themselves when those specs land.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.