Skip to content

Refresh OpenRouter models after setting API key - #58551

Merged
yara-blue merged 2 commits into
zed-industries:mainfrom
ChihweiLHBird:openrouter-format-model-refresh
Jun 4, 2026
Merged

Refresh OpenRouter models after setting API key#58551
yara-blue merged 2 commits into
zed-industries:mainfrom
ChihweiLHBird:openrouter-format-model-refresh

Conversation

@ChihweiLHBird

@ChihweiLHBird ChihweiLHBird commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Self-Review Checklist:

  • I've reviewed my own diff for quality, security, and reliability
  • Unsafe blocks (if any) have justifying comments
  • The content is consistent with the UI/UX checklist
  • Tests cover the new/changed behavior
  • Performance impact has been considered and is acceptable

Summary

Adding an OpenRouter API key did not populate the model list until the app was
restarted. set_api_key stored the credential but never triggered a model
fetch, so until re-authentication happened (on restart or a settings change)
the picker showed only the user-configured settings.available_models, not the
models returned by the OpenRouter API.

This makes set_api_key refresh the models right after the key is stored,
mirroring how authenticate already does it.

Changes

  • set_api_key awaits the credential store and then calls
    restart_fetch_models_task, so the API model list loads immediately after a
    key is entered (and is cleared when the key is removed).
  • fetch_models now maps list_models errors via
    LanguageModelCompletionError::from, preserving the real OpenRouter error
    message instead of wrapping it in a generic Other(...).

Release Notes:

  • Fixed OpenRouter models not appearing until restart after adding an API key

Copilot AI review requested due to automatic review settings June 4, 2026 15:21
@cla-bot cla-bot Bot added the cla-signed The user has signed the Contributor License Agreement label Jun 4, 2026
Signed-off-by: Zhiwei Liang <zhiwei.liang@zliang.me>
@ChihweiLHBird
ChihweiLHBird force-pushed the openrouter-format-model-refresh branch from 89b4f7f to c2b6843 Compare June 4, 2026 15:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Updates OpenRouter provider state handling around API key changes and model fetching, ensuring the model list is kept in sync with authentication state.

Changes:

  • Restart model-fetching when the API key is updated.
  • Clear available_models and notify the UI when the API key is missing.
  • Simplify error mapping when listing models.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread crates/language_models/src/provider/open_router.rs
Comment thread crates/language_models/src/provider/open_router.rs
@yara-blue
yara-blue enabled auto-merge June 4, 2026 15:55
@yara-blue

Copy link
Copy Markdown
Contributor

Thanks!

@yara-blue yara-blue added the area:ai/openrouter AI feedback for Openrouter label Jun 4, 2026
@yara-blue
yara-blue added this pull request to the merge queue Jun 4, 2026
Merged via the queue into zed-industries:main with commit 307ea5a Jun 4, 2026
44 checks passed
@ChihweiLHBird
ChihweiLHBird deleted the openrouter-format-model-refresh branch June 4, 2026 16:59
TomPlanche pushed a commit to TomPlanche/zed that referenced this pull request Jun 8, 2026
Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Summary

Adding an OpenRouter API key did not populate the model list until the
app was
restarted. `set_api_key` stored the credential but never triggered a
model
fetch, so until re-authentication happened (on restart or a settings
change)
the picker showed only the user-configured `settings.available_models`,
not the
models returned by the OpenRouter API.

This makes `set_api_key` refresh the models right after the key is
stored,
mirroring how `authenticate` already does it.

## Changes

- `set_api_key` awaits the credential store and then calls
`restart_fetch_models_task`, so the API model list loads immediately
after a
  key is entered (and is cleared when the key is removed).
- `fetch_models` now maps `list_models` errors via
`LanguageModelCompletionError::from`, preserving the real OpenRouter
error
  message instead of wrapping it in a generic `Other(...)`.

Release Notes:

- Fixed OpenRouter models not appearing until restart after adding an
API key

Signed-off-by: Zhiwei Liang <zhiwei.liang@zliang.me>
This was referenced Jun 18, 2026
jonx pushed a commit to jonx/zed-aros that referenced this pull request Jul 17, 2026
Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Summary

Adding an OpenRouter API key did not populate the model list until the
app was
restarted. `set_api_key` stored the credential but never triggered a
model
fetch, so until re-authentication happened (on restart or a settings
change)
the picker showed only the user-configured `settings.available_models`,
not the
models returned by the OpenRouter API.

This makes `set_api_key` refresh the models right after the key is
stored,
mirroring how `authenticate` already does it.

## Changes

- `set_api_key` awaits the credential store and then calls
`restart_fetch_models_task`, so the API model list loads immediately
after a
  key is entered (and is cleared when the key is removed).
- `fetch_models` now maps `list_models` errors via
`LanguageModelCompletionError::from`, preserving the real OpenRouter
error
  message instead of wrapping it in a generic `Other(...)`.

Release Notes:

- Fixed OpenRouter models not appearing until restart after adding an
API key

Signed-off-by: Zhiwei Liang <zhiwei.liang@zliang.me>
jolutz pushed a commit to jolutz/zed that referenced this pull request Aug 8, 2026
Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [ ] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Summary

Adding an OpenRouter API key did not populate the model list until the
app was
restarted. `set_api_key` stored the credential but never triggered a
model
fetch, so until re-authentication happened (on restart or a settings
change)
the picker showed only the user-configured `settings.available_models`,
not the
models returned by the OpenRouter API.

This makes `set_api_key` refresh the models right after the key is
stored,
mirroring how `authenticate` already does it.

## Changes

- `set_api_key` awaits the credential store and then calls
`restart_fetch_models_task`, so the API model list loads immediately
after a
  key is entered (and is cleared when the key is removed).
- `fetch_models` now maps `list_models` errors via
`LanguageModelCompletionError::from`, preserving the real OpenRouter
error
  message instead of wrapping it in a generic `Other(...)`.

Release Notes:

- Fixed OpenRouter models not appearing until restart after adding an
API key

Signed-off-by: Zhiwei Liang <zhiwei.liang@zliang.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:ai/openrouter AI feedback for Openrouter cla-signed The user has signed the Contributor License Agreement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants