router-for-me / router-for-me/EasyCLIProxyAPI
Allow batch show/hide of models in the Codex model catalog editor
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 2.3k
- Forks
- 187
- Avg merge
- 8m
- Merged PRs (30d)
- 50
Description
Summary
In the Model list settings dialog (agents.catalog.button), a model's visibility can only be changed one model at a time: select a single model in the left list, then toggle ** Show in Codex catalog** (agents.catalog.visible) in that model's detail panel on the right, and save. When the proxy exposes a large number of models (multiple channels plus unprefixed duplicates), hiding the unwanted ones is repetitive and error‑prone.
It would be much more convenient to select multiple models at once and show/hide them in a single batch operation.
Current behavior
- The editor sidebar is a single‑select list (
role="listbox"with onearia-selecteditem at a time). - There is no visibility control in the list itself. The only visibility switch (
visibility: list/hide) lives inside the selected model's detail panel. - To hide N models you must repeat "click model → toggle the visible switch" N times, then save once at the end.
Pain point / motivation
When CLIProxyAPI is configured with several OpenAI‑compatible providers, each given its own prefix (e.g. A/, B/, C/), and force-model-prefix: false, the proxy also exposes an unprefixed entry for every underlying model. So /v1/models can easily return well over a hundred entries, many of which duplicate the prefixed ones.
Illustrative example (three providers with ~10–30 models each):
- ~60 prefixed models like
A/model-x,B/model-x,C/model-y - ~50 unprefixed duplicates (
model-x,model-y, …) of the same underlying models - a few additional direct models
- 110+ entries total, of which only roughly half are actually wanted in the picker
Hiding dozens of unwanted unprefixed entries one by one in the GUI is tedious. (Writing codex_models/model-customizations.json by hand works, but is undocumented and not user‑friendly.)
Proposed improvement
Add batch selection and batch visibility actions to the catalog editor sidebar:
- Multi‑select in the sidebar — a checkbox on each row, and/or standard range selection (
Shift+Click) andCmd/Ctrl+Click. Optionally surface the per‑row visible toggle directly in the list so state is visible at a glance. - "Select all" — a header checkbox that selects everything currently shown by the (already existing) text filter.
- Batch actions — with ≥1 model selected, offer:
Hide selected(setvisibility: "hide")Show selected(setvisibility: "list")- optionally
Only show selected(hide everything else)
Nice‑to‑have: filter + batch
Since the sidebar already supports text search, pairing batch actions with filtering makes bulk cleanup very fast. Even better would be prefix‑aware filtering (e.g. filter by A/, B/, C/, or "no prefix"), so a user can do:
filter to "no prefix" → select all → hide
…in three clicks, which directly solves the duplicate‑channel scenario above.
Acceptance criteria
- Multiple models can be selected at once in the catalog editor sidebar.
- A single action can set
visibilitytolistorhidefor all selected models. - Batch changes are applied through the existing save flow and persisted to
model-customizations.json, so they survive catalog re‑syncs. - (Optional) Visibility state is visible directly in the list (e.g. an icon/eye toggle per row) without opening each model.
- (Optional) Filtering by prefix / "no prefix" is supported to make bulk selection easy.
Alternatives considered
force-model-prefix: truein CLIProxyAPI: removes unprefixed entries at the source, but changes routing behavior for all clients and doesn't help when you want to hide specific prefixed models too. Batch hiding in the GUI is more flexible and client‑scoped.- Hand‑editing
model-customizations.json: works today but is undocumented and easy to get wrong (IDs must be lowercased, only allowlisted fields are accepted).
Environment
- EasyCLIProxyAPI: v0.2.96 (cpa-core v7.3.5)
- OS: macOS (Apple Silicon)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the Model list settings dialog opened by agents.catalog.button and inspect the existing agents.catalog.visible control, sidebar filter, and save flow. Trace how changes are persisted to codex_models/model-customizations.json. Done means multiple filtered models can be selected and their visibility set to list or hide through the existing save path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100