Skip to content

[Feature] Allow visual drag-and-drop reordering for modelPickerOrder in Web GUI #3774

Description

@leonclab

Ordering presets landed; drag-and-drop remains open

#3801 (8615f1a1c9) adds picker-order presets and saves them without replacing featured selections. Free-form drag-and-drop and the requested native/featured-row behavior remain outstanding.

Verified against dev 5759d9ea2f1e7281cdc01eb9628f2e0a123fb59c. Original report by @leonclab. The attribution record was added in #3811.

Area

Dashboard

What are you trying to accomplish?

In Codex Desktop, when users configure multiple models across different providers (native OpenAI, OpenCode-Go, Google Antigravity, or custom forward proxies), the display order in the model picker is dominated by subagentModels priority calculation (priority = 0..N-1), while non-featured models are placed arbitrarily.

I need a convenient way in the OpenCodex Web GUI to visually reorder enabled models so that users can organize the Codex Desktop model picker (e.g. keep native OpenAI models on top, followed by cleanly grouped provider sections) without manually editing JSON configuration files.

What prevents this today?

Currently, customizing the model picker display order requires manually crafting the modelPickerOrder array inside ~/.opencodex/config.json. This requires knowing internal model slugs (e.g., provider/model-id), checking catalog priority calculations, and manually restarting or syncing the service. It is error-prone and not accessible from the Web GUI.

What should OpenCodex do?

  1. In the Models management tab of the Web GUI, provide drag-and-drop handles for all enabled models to visually adjust their display order.
  2. Provide a quick action button (e.g., "Group by Provider") that clusters models by their upstream provider (e.g., native OpenAI first, then sorted by provider namespaces).
  3. When the order is changed, save the list directly to config.modelPickerOrder via the existing /api/config endpoint and trigger catalog synchronization.

Example usage or interface

  1. Open Web GUI -> Models.
  2. Drag google-antigravity/gemini-3.8-flash above another provider row, or click "Group by Provider".
  3. The GUI sends a PATCH/PUT to /api/config with {"modelPickerOrder": ["gpt-5.6-sol", "gpt-5.6-luna", "OG/...", "google-antigravity/..."]}.
  4. OpenCodex triggers syncModelsToCodex() and Codex Desktop reflects the new picker order.

Alternatives or workarounds

Manually editing ~/.opencodex/config.json and adding a large modelPickerOrder string array by hand.

Additional context

The underlying priority reordering engine modelPickerOrder is already supported in src/codex/catalog/sync.ts (around line 520). Exposing this to the Web GUI would make model ordering much more user-friendly.

Checks

  • I searched existing issues and documentation.
  • This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
  • I removed secrets and personal data.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestguiDashboard, tray, settings UI

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions