Skip to content

webui: point every catalog entry at the package it installs - #409

Closed
CryptVenture wants to merge 1 commit into
0xShug0:mainfrom
CryptVenture:pr/catalog-entry-fixes
Closed

webui: point every catalog entry at the package it installs#409
CryptVenture wants to merge 1 commit into
0xShug0:mainfrom
CryptVenture:pr/catalog-entry-fixes

Conversation

@CryptVenture

@CryptVenture CryptVenture commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Reopened now that #400 has merged, rebased on current main. The voxcpm1 download_id fixed in #424 is kept as it is.

The problem

60 of the 85 catalog entries do not describe a package that exists:

  • 46 name a download_id that is not a packages[].id in any model_specs/*.json.
  • 14 name a path that is not models/<target_directory> of the package they point at.

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.

The change

Each entry names the package it already meant, and the directory that package installs into.

  • download_id becomes an exact packages[].id from 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.
  • path becomes models/<target_directory> of that package. 40 entries pointed at pre-GGUF directories no package writes (models/chatterboxmodels/Chatterbox-GGUF); several pointed at one .gguf file inside the directory, which only resolves while that exact filename ships.
  • Three entries resolved to safetensors packages the native manager cannot install, so they had no install choice at all; they now use their family's recommended GGUF package.

No entry is added, removed or retasked. Display names, tasks, modes and min_vram_gb are untouched. 60 lines changed, 60 replaced.

Verification

entries whose download_id is not a packages[].id      46 -> 0
entries whose path is not the package target_directory 14 -> 0
paths targeted by more than one download_id            0
tools/check_loader_catalog_sync.py                     ok, loaders/model_specs/model_manager_v2 in sync

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, audiosr registered twice:

models/AudioSR-GGUF                          200  ["audio","channels","sample_rate","timing"]
models/AudioSR-GGUF/audiosr-basic-f32.gguf   200  identical

The one entry where this matters most is minimax-h3, which moves from models/MiniMax-H3-Q4-GGUF/dit.gguf to the directory: load_minimax_h3_assets takes either, and the directory is the spec-driven path that reaches the whole component package rather than the DiT alone.

@CryptVenture
CryptVenture force-pushed the pr/catalog-entry-fixes branch 2 times, most recently from e7bb83b to e28e073 Compare September 2, 2026 23:47
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
CryptVenture force-pushed the pr/catalog-entry-fixes branch from e28e073 to 1e33213 Compare September 3, 2026 00:04
@CryptVenture

Copy link
Copy Markdown
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.

@CryptVenture

Copy link
Copy Markdown
Contributor Author

Superseded by #428 — same change rebased on current main, keeping the voxcpm1 download_id fixed in #424. Reopening this one was refused because the branch head moved while it was closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant