Skip to content

feat(tui): add a provider slot to the footer status line - #2461

Open
hikariming wants to merge 1 commit into
MoonshotAI:mainfrom
hikariming:feat/status-line-provider-slot
Open

feat(tui): add a provider slot to the footer status line#2461
hikariming wants to merge 1 commit into
MoonshotAI:mainfrom
hikariming:feat/status-line-provider-slot

Conversation

@hikariming

@hikariming hikariming commented Jul 31, 2026

Copy link
Copy Markdown

Related Issue

No prior issue; the problem is explained below.

Problem

The footer status line shows the current model name but never says which provider serves it. With several providers configured, look-alike model names (the same open-weights model offered by different providers, or similarly named aliases) are indistinguishable in the footer — you cannot tell who is actually serving the request without opening the model selector.

What changed

  • Added an opt-in provider slot to the built-in status line. Listing provider in [status_line].items (tui.toml) renders the provider label next to the model name; the id is accepted anywhere in the order, like the other slots. The default layout is unchanged — the slot only appears when explicitly listed.
  • The [status_line].command JSON payload now carries the same value as a provider field, so custom status line scripts can use it too.
  • providerDisplayName moved from the model selector dialog to tui/utils/provider-label.ts so the footer can reuse it without chrome depending on dialogs; the managed: id prefix stays hidden from the UI as before.
  • When the active model alias is not in the catalog, the slot is dropped instead of echoing the raw alias — an alias is not an answer to "which provider".

This follows the existing slot architecture of the footer: provider is one more entry in STATUS_LINE_ITEMS rendered through the same slot pipeline, so ordering, truncation, and the items-config validation all apply to it for free. Docs (en/zh config-files.md) are updated and unit tests cover the slot rendering, the opt-in default, the unknown-alias fallback, and the command payload field.

Checklist

  • I have read the CONTRIBUTING document.
  • I have linked a related issue, or explained the problem above.
  • I have added tests that prove my feature works.
  • Ran gen-changesets skill, or this PR needs no changeset.
  • Ran gen-docs skill, or this PR needs no doc update.
261aabb8426bdb8ba89400ef55859879 b379f8deeb7fc33242d8cba17849b2af

The footer showed the model name but never said which provider serves it,
so look-alike model names across providers were indistinguishable.

Add an opt-in `provider` status-line slot: list it in `[status_line].items`
to render the provider ahead of (or anywhere around) the model name. The
default layout is unchanged. The same value also ships in the
`[status_line].command` JSON payload as `provider`.

`providerDisplayName` moves from the model selector dialog to
`tui/utils/provider-label.ts` so the footer can reuse it without chrome
depending on dialogs; the `managed:` prefix stays hidden from the UI.
@changeset-bot

changeset-bot Bot commented Jul 31, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: db0e11d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@moonshot-ai/kimi-code Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

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