You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I want to tell similar models apart in the Codex App picker before I select one. The picker renders each routed row as provider/model-id in a narrow dropdown and cuts the end of the string with an ellipsis. The part that gets cut is the model suffix, which is usually the only part that differs between rows.
My picker currently shows these rows (OpenCodex 2.41.0, Windows 11):
opencode-go/deepseek-v4-f... and opencode-go/deepseek-v4-...: these are deepseek-v4-flash and deepseek-v4-pro, but nothing on screen says which is which.
opencode-zen/deepseek-v4-...: hides whether the row is the free variant.
opencode-go/muse-spark-1.... and opencode-zen/muse-spark-1....: version and variant collapse into the same few visible characters.
I cannot tell which row selects which model until I pick one and check what actually runs. The label truncates exactly the information I am choosing on.
What prevents this today?
End-of-string ellipsis plus a provider-first label means a long provider name pushes the distinguishing suffix out of view. opencode-zen/ is 13 characters before the model name even starts.
The recent display work helps, but none of it fixes the default view:
A label-order option that renders model (provider), so end truncation eats the provider prefix instead of the model suffix. deepseek-v4-flash (opencode-zen) stays identifiable even when clipped; the current order does the opposite.
If neither fits, a docs note in the display-names guide: when two discovered rows truncate to the same visible prefix, set modelDisplayNames or a provider alias for that pair.
A wider picker or a smaller font would also fix it, but that rendering belongs to the Codex App rather than OpenCodex. The label string is the part OpenCodex controls, and it is enough.
Example usage or interface
Illustrative config. Field names are up to you; the ask is the behavior.
{
"catalog": {
"displayProviderCompaction": true// opencode-go -> go, opencode-zen -> zen in picker labels only
}
}
I can set modelDisplayNames for every colliding pair today, or alias the providers. It works, but it is manual, per-environment, and fails silently the next time discovery adds a colliding row. The dashboard editor in #2716 will lower the friction once it merges, but defaults would still truncate for anyone who has not labeled anything.
Additional context
Codex App on Windows 11, OpenCodex 2.41.0, routed providers opencode-go and opencode-zen. Related: #2201 and #3212 (model display names), #2959 and #2960 (alias-aware picker labels), #2716 (display-name editor), #3531 (per-provider compaction).
I searched existing issues and documentation.
This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
Area
Catalog / models
What are you trying to accomplish?
I want to tell similar models apart in the Codex App picker before I select one. The picker renders each routed row as
provider/model-idin a narrow dropdown and cuts the end of the string with an ellipsis. The part that gets cut is the model suffix, which is usually the only part that differs between rows.My picker currently shows these rows (OpenCodex 2.41.0, Windows 11):
opencode-go/deepseek-v4-f...andopencode-go/deepseek-v4-...: these aredeepseek-v4-flashanddeepseek-v4-pro, but nothing on screen says which is which.opencode-zen/deepseek-v4-...: hides whether the row is the free variant.opencode-go/muse-spark-1....andopencode-zen/muse-spark-1....: version and variant collapse into the same few visible characters.I cannot tell which row selects which model until I pick one and check what actually runs. The label truncates exactly the information I am choosing on.
What prevents this today?
End-of-string ellipsis plus a provider-first label means a long provider name pushes the distinguishing suffix out of view.
opencode-zen/is 13 characters before the model name even starts.The recent display work helps, but none of it fixes the default view:
modelDisplayNames, so I can override labels per model id. That only works if I notice each collision and hand-label every row, in every environment, and keep doing it whenever discovery adds a new colliding model.google-antigravitytoagy). Useful precedent, but it is a single hard-coded compaction rather than a general display option.Out of the box, two rows that share a prefix still render identically.
What should OpenCodex do?
Any of these would keep the distinguishing part visible in a narrow picker, in the order I would prefer:
model (provider), so end truncation eats the provider prefix instead of the model suffix.deepseek-v4-flash (opencode-zen)stays identifiable even when clipped; the current order does the opposite.modelDisplayNamesor a provider alias for that pair.A wider picker or a smaller font would also fix it, but that rendering belongs to the Codex App rather than OpenCodex. The label string is the part OpenCodex controls, and it is enough.
Example usage or interface
Illustrative config. Field names are up to you; the ask is the behavior.
{ "catalog": { "displayProviderCompaction": true // opencode-go -> go, opencode-zen -> zen in picker labels only } }Before:
After:
Same width, distinguishable.
Alternatives or workarounds
I can set
modelDisplayNamesfor every colliding pair today, or alias the providers. It works, but it is manual, per-environment, and fails silently the next time discovery adds a colliding row. The dashboard editor in #2716 will lower the friction once it merges, but defaults would still truncate for anyone who has not labeled anything.Additional context
Codex App on Windows 11, OpenCodex 2.41.0, routed providers
opencode-goandopencode-zen. Related: #2201 and #3212 (model display names), #2959 and #2960 (alias-aware picker labels), #2716 (display-name editor), #3531 (per-provider compaction).