webui: point every catalog entry at the package it installs - #409
Closed
CryptVenture wants to merge 1 commit into
Closed
webui: point every catalog entry at the package it installs#409CryptVenture wants to merge 1 commit into
CryptVenture wants to merge 1 commit into
Conversation
CryptVenture
force-pushed
the
pr/catalog-entry-fixes
branch
2 times, most recently
from
September 2, 2026 23:47
e7bb83b to
e28e073
Compare
60 of the 85 catalog entries named a download_id that is not a packages[].id,
a path no package installs into, or both. They resolved only through a
compatibility shim in catalog.ts that strips precision suffixes and guesses;
where the guess failed the entry offered 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.
Validation:
tools/check_loader_catalog_sync.py --strict-catalog # exit 0 (86 findings
# against main)
Reachable packages, measured by loading catalog.ts through Vite's SSR loader:
main catalog, main resolver 130
this catalog, main resolver 129
this catalog, new resolver 143
The one-package dip under the old resolver is its suffix-stripping shim
losing a guess it used to make; the shim is what the resolver change removes.
CryptVenture
force-pushed
the
pr/catalog-entry-fixes
branch
from
September 3, 2026 00:04
e28e073 to
1e33213
Compare
Contributor
Author
|
Closing for now to stay inside the 3-concurrent-PR policy (see the discussion on #422). Nothing is wrong with the change and CI is green on it; I will reopen it as review slots free. |
Contributor
Author
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.