[Instance] Split model metadata into columns on Duo model selection

What does this MR do and why?

On the instance-level GitLab Duo model selection page, each model dropdown packed the model name, hosting provider, "Default", and a "GitLab-managed model" or "Self-hosted model" subtitle into one tall button, with an info icon beside it. That was hard to scan.

This MR moves that metadata into its own sortable columns, between Feature and Model:

  • Provider: where the selected model is hosted, for example "Anthropic". Shows "Custom" for self-hosted models and "Varies" for Auto (Duo Developer with duo_developer_model_routing), both muted.
  • Managed by: "GitLab-managed" or "Self-hosted", with a keyboard-focusable tooltip that explains the difference. Shown only when the instance has both self-hosted and GitLab-managed models.
  • Default: "Yes" or "No", for whether the selected model is the GitLab default for the feature.

The dropdown button now shows only the model name, plus the model family for self-hosted models, on one line, and is narrower. The option list is unchanged, and so is how selections are saved.

All values come from the selected feature setting rather than from the option label, so they update when a new selection is saved. The trailing info icon is removed.

The group-level model selection page is not changed. It shares BaseFeatureSettingsTable and ModelSelectDropdown, but its output is the same. The base table only gains an optional loaderViewBoxWidth, so narrow columns keep the same skeleton height.

References

  • Stacked on !258208 (merged), which adds column sorting. This MR targets that branch and should be retargeted to master after it merges.

Screenshots or screen recordings

Without self-hosted models

Before After
CleanShot_2026-10-08_at_1.34.07_PM CleanShot_2026-10-08_at_1.32.12_PM

With self-hosted models

Before After
CleanShot_2026-10-08_at_12.50.00_PM CleanShot_2026-10-08_at_12.44.06_PM

The Managed by tooltip, which also opens on keyboard focus:

After: Managed by tooltip on hover

How to set up and validate locally

  1. Configure at least one self-hosted model and select it for a feature, so that both GitLab-managed and self-hosted rows appear.
  2. Visit Admin > GitLab Duo > Model selection (/admin/gitlab_duo/model_selection).
  3. Check the Provider, Managed by, and Default columns for GitLab-managed, self-hosted, and default rows.
  4. Hover over or tab to a Managed by value to see its tooltip.
  5. Select Provider, Managed by, or Default to sort by that column.
  6. Pick a different model for a feature and confirm that the columns update after it saves.
  7. Optional: enable duo_developer_model_routing and confirm that Duo Developer shows Varies and Auto.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Austin Regnery

Merge request reports

Loading
Loading