fix duplicate keyed entries in the chat model selector when multiple providers expose models with the same display name/value alias
prefer the backing model.id as the Svelte keyed-each identity for the virtualized dropdown rows
Testing
not run (frontend package manager/tooling not available in this agent environment)
Checklist
My pull request targets the dev branch of open-webui/open-webui.
I have performed a self-review of my own code.
I have commented my code, particularly in hard-to-understand areas.
I have tested my changes and verified that they work as expected, or documented why runtime verification was not possible in this environment.
My changes generate no new warnings or errors.
I have added thorough and meaningful tests if applicable, or documented why they were not added.
I have read and agree to the Contributor License Agreement in the section below.
Description
This addresses the model selector crash reported in #24578.
When multiple providers expose models that resolve to the same selector value/display alias, the virtualized dropdown currently keys rows by item.value, which can collide and trigger Svelte's each_key_duplicate error.
This patch uses the underlying model.id as the primary keyed identity for dropdown rows, falling back only if needed. That keeps the selector stable even when providers surface the same model name.
By submitting this pull request, I confirm that I have the right to license my contribution under the same license as this project and agree that this contribution may be distributed under the terms of that license.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/24655
**Author:** [@linliang-bot](https://github.com/linliang-bot)
**Created:** 5/13/2026
**Status:** ❌ Closed
**Base:** `dev` ← **Head:** `fix/24578-model-selector-duplicate-keys`
---
### 📝 Commits (10+)
- [`fe6783c`](https://github.com/open-webui/open-webui/commit/fe6783c16699911c7be17392596d579333fb110c) Merge pull request #19030 from open-webui/dev
- [`fc05e0a`](https://github.com/open-webui/open-webui/commit/fc05e0a6c5d39da60b603b4d520f800d6e36f748) Merge pull request #19405 from open-webui/dev
- [`e3faec6`](https://github.com/open-webui/open-webui/commit/e3faec62c58e3a83d89aa3df539feacefa125e0c) Merge pull request #19416 from open-webui/dev
- [`9899293`](https://github.com/open-webui/open-webui/commit/9899293f050ad50ae12024cbebee7e018acd851e) Merge pull request #19448 from open-webui/dev
- [`140605e`](https://github.com/open-webui/open-webui/commit/140605e660b8186a7d5c79fb3be6ffb147a2f498) Merge pull request #19462 from open-webui/dev
- [`6f1486f`](https://github.com/open-webui/open-webui/commit/6f1486ffd0cb288d0e21f41845361924e0d742b3) Merge pull request #19466 from open-webui/dev
- [`d95f533`](https://github.com/open-webui/open-webui/commit/d95f533214e3fe5beb5e41ec1f349940bc4c7043) Merge pull request #19729 from open-webui/dev
- [`a727153`](https://github.com/open-webui/open-webui/commit/a7271532f8a38da46785afcaa7e65f9a45e7d753) 0.6.43 (#20093)
- [`6adde20`](https://github.com/open-webui/open-webui/commit/6adde203cd292a9e3af9c64a2ae36b603fed096a) Merge pull request #20394 from open-webui/dev
- [`f9b0534`](https://github.com/open-webui/open-webui/commit/f9b0534e0c442631d1cb7205169588b9b6204179) Merge pull request #20522 from open-webui/dev
### 📊 Changes
**3 files changed** (+3 additions, -3 deletions)
<details>
<summary>View changed files</summary>
📝 `src/lib/components/chat/Messages/ResponseMessage.svelte` (+1 -1)
📝 `src/lib/components/chat/Messages/UserMessage.svelte` (+1 -1)
📝 `src/lib/components/chat/ModelSelector/Selector.svelte` (+1 -1)
</details>
### 📄 Description
## Summary
- fix duplicate keyed entries in the chat model selector when multiple providers expose models with the same display name/value alias
- prefer the backing `model.id` as the Svelte keyed-each identity for the virtualized dropdown rows
## Testing
- not run (frontend package manager/tooling not available in this agent environment)
## Checklist
- [x] My pull request targets the `dev` branch of `open-webui/open-webui`.
- [x] I have performed a self-review of my own code.
- [x] I have commented my code, particularly in hard-to-understand areas.
- [x] I have tested my changes and verified that they work as expected, or documented why runtime verification was not possible in this environment.
- [x] My changes generate no new warnings or errors.
- [x] I have added thorough and meaningful tests if applicable, or documented why they were not added.
- [x] I have read and agree to the Contributor License Agreement in the section below.
## Description
This addresses the model selector crash reported in #24578.
When multiple providers expose models that resolve to the same selector value/display alias, the virtualized dropdown currently keys rows by `item.value`, which can collide and trigger Svelte's `each_key_duplicate` error.
This patch uses the underlying `model.id` as the primary keyed identity for dropdown rows, falling back only if needed. That keeps the selector stable even when providers surface the same model name.
Closes #24578
## Contributor License Agreement
By submitting this pull request, I confirm that I have the right to license my contribution under the same license as this project and agree that this contribution may be distributed under the terms of that license.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/24655
Author: @linliang-bot
Created: 5/13/2026
Status: ❌ Closed
Base:
dev← Head:fix/24578-model-selector-duplicate-keys📝 Commits (10+)
fe6783cMerge pull request #19030 from open-webui/devfc05e0aMerge pull request #19405 from open-webui/deve3faec6Merge pull request #19416 from open-webui/dev9899293Merge pull request #19448 from open-webui/dev140605eMerge pull request #19462 from open-webui/dev6f1486fMerge pull request #19466 from open-webui/devd95f533Merge pull request #19729 from open-webui/deva7271530.6.43 (#20093)6adde20Merge pull request #20394 from open-webui/devf9b0534Merge pull request #20522 from open-webui/dev📊 Changes
3 files changed (+3 additions, -3 deletions)
View changed files
📝
src/lib/components/chat/Messages/ResponseMessage.svelte(+1 -1)📝
src/lib/components/chat/Messages/UserMessage.svelte(+1 -1)📝
src/lib/components/chat/ModelSelector/Selector.svelte(+1 -1)📄 Description
Summary
model.idas the Svelte keyed-each identity for the virtualized dropdown rowsTesting
Checklist
devbranch ofopen-webui/open-webui.Description
This addresses the model selector crash reported in #24578.
When multiple providers expose models that resolve to the same selector value/display alias, the virtualized dropdown currently keys rows by
item.value, which can collide and trigger Svelte'seach_key_duplicateerror.This patch uses the underlying
model.idas the primary keyed identity for dropdown rows, falling back only if needed. That keeps the selector stable even when providers surface the same model name.Closes #24578
Contributor License Agreement
By submitting this pull request, I confirm that I have the right to license my contribution under the same license as this project and agree that this contribution may be distributed under the terms of that license.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.