Skip to content

agent_ui: Implement favorite models selection#44297

Merged
danilo-leal merged 15 commits intozed-industries:mainfrom
aqrln:aqrln-zonnklzsltnv
Dec 16, 2025
Merged

agent_ui: Implement favorite models selection#44297
danilo-leal merged 15 commits intozed-industries:mainfrom
aqrln:aqrln-zonnklzsltnv

Conversation

@aqrln
Copy link
Contributor

@aqrln aqrln commented Dec 6, 2025

This PR solves my main pain point with Zed agent: I have a long list of available models from different providers, and I switch between a few of them depending on the context and the project. In particular, I use the same models from different providers depending on whether I'm working on a personal project or at my day job. Since I only care about a few models (none of which are in "recommended") that are scattered all over the list, switching between them is bothersome, even using search.

This change adds a new option in settings.json (agent.favorite_models) and the UI to manipulate it directly from the list of available models. When any models are marked as favorites, they appear in a dedicated section at the very top of the list. Each model has a small icon button that appears on hover and allows to toggle whether it's marked as favorite.

I implemented this on the UI level (i.e. there's no first-party knowledge about favorite models in the agent itself; in theory it could return favorite models as a group but it would make it harder to implement bespoke UI for the favorite models section and it also wouldn't work for text threads which don't use the ACP infrastructure).

The feature is only enabled for the native agent but disabled for external agents because we can't easily map their model IDs to settings and there could be weird collisions between them.

Screen.Recording.2025-12-06.at.19.02.41.mov

Closes #31507

Release Notes:

  • Added the ability to mark language models as favorites and pin them to the top of the list. This feature is available in the native Zed agent (including text threads and the inline assistant), but not in external agents via ACP.

@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Dec 6, 2025
@SomeoneToIgnore SomeoneToIgnore added the area:ai Improvement related to Agent Panel, Edit Prediction, Copilot, or other AI features label Dec 6, 2025
@aqrln aqrln force-pushed the aqrln-zonnklzsltnv branch 2 times, most recently from 50cd424 to 8789fbb Compare December 7, 2025 10:38
@danilo-leal danilo-leal self-assigned this Dec 8, 2025
@aqrln aqrln force-pushed the aqrln-zonnklzsltnv branch 2 times, most recently from b1fefe9 to 6a62710 Compare December 11, 2025 09:49
@aqrln aqrln force-pushed the aqrln-zonnklzsltnv branch from 6a62710 to 69c5dc9 Compare December 11, 2025 09:50
@aqrln
Copy link
Contributor Author

aqrln commented Dec 11, 2025

@danilo-leal I've revisited and updated the implementation a little bit for better separation of concerns

Copy link
Member

@danilo-leal danilo-leal left a comment

Choose a reason for hiding this comment

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

Thank you so much; great feature to have :)

@danilo-leal danilo-leal merged commit 0c91f06 into zed-industries:main Dec 16, 2025
23 checks passed
@github-project-automation github-project-automation bot moved this from Community PRs to Done in Quality Week – December 2025 Dec 16, 2025
@aqrln
Copy link
Contributor Author

aqrln commented Dec 17, 2025

Thank you for the review and improvements @danilo-leal and @bennetbo!

@aqrln aqrln deleted the aqrln-zonnklzsltnv branch December 17, 2025 08:11
HactarCE pushed a commit that referenced this pull request Dec 17, 2025
This PR solves my main pain point with Zed agent: I have a long list of
available models from different providers, and I switch between a few of
them depending on the context and the project. In particular, I use the
same models from different providers depending on whether I'm working on
a personal project or at my day job. Since I only care about a few
models (none of which are in "recommended") that are scattered all over
the list, switching between them is bothersome, even using search.

This change adds a new option in `settings.json`
(`agent.favorite_models`) and the UI to manipulate it directly from the
list of available models. When any models are marked as favorites, they
appear in a dedicated section at the very top of the list. Each model
has a small icon button that appears on hover and allows to toggle
whether it's marked as favorite.

I implemented this on the UI level (i.e. there's no first-party
knowledge about favorite models in the agent itself; in theory it could
return favorite models as a group but it would make it harder to
implement bespoke UI for the favorite models section and it also
wouldn't work for text threads which don't use the ACP infrastructure).

The feature is only enabled for the native agent but disabled for
external agents because we can't easily map their model IDs to settings
and there could be weird collisions between them.


https://github.com/user-attachments/assets/cf23afe4-3883-45cb-9906-f55de3ea2a97

Closes #31507

Release Notes:

- Added the ability to mark language models as favorites and pin them to
the top of the list. This feature is available in the native Zed agent
(including text threads and the inline assistant), but not in external
agents via ACP.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
aqrln added a commit to aqrln/zed that referenced this pull request Dec 17, 2025
Follow up to zed-industries#44297.

Initial implementation in ce88444 used
`Arc` to store the reference to the hash map inside the iterator while
keeping the lifetime static. The code was later simplified in
5151b22 to build the list eagerly but
the Arc was forgotten, although it is not needed anymore.
Veykril pushed a commit that referenced this pull request Dec 18, 2025
Follow up to #44297.

Initial implementation in ce88444 used
`Arc` to store the reference to the hash map inside the iterator while
keeping the lifetime static. The code was later simplified in
5151b22 to build the list eagerly but
the Arc was forgotten, although it became unnecessary.

cc @bennetbo

Release Notes:

- N/A
rtfeldman pushed a commit that referenced this pull request Jan 5, 2026
Follow up to #44297.

Initial implementation in ce88444 used
`Arc` to store the reference to the hash map inside the iterator while
keeping the lifetime static. The code was later simplified in
5151b22 to build the list eagerly but
the Arc was forgotten, although it became unnecessary.

cc @bennetbo

Release Notes:

- N/A
@merdweebner
Copy link

Mirror mirror on the wall

LivioGama pushed a commit to LivioGama/zed that referenced this pull request Jan 20, 2026
This PR solves my main pain point with Zed agent: I have a long list of
available models from different providers, and I switch between a few of
them depending on the context and the project. In particular, I use the
same models from different providers depending on whether I'm working on
a personal project or at my day job. Since I only care about a few
models (none of which are in "recommended") that are scattered all over
the list, switching between them is bothersome, even using search.

This change adds a new option in `settings.json`
(`agent.favorite_models`) and the UI to manipulate it directly from the
list of available models. When any models are marked as favorites, they
appear in a dedicated section at the very top of the list. Each model
has a small icon button that appears on hover and allows to toggle
whether it's marked as favorite.

I implemented this on the UI level (i.e. there's no first-party
knowledge about favorite models in the agent itself; in theory it could
return favorite models as a group but it would make it harder to
implement bespoke UI for the favorite models section and it also
wouldn't work for text threads which don't use the ACP infrastructure).

The feature is only enabled for the native agent but disabled for
external agents because we can't easily map their model IDs to settings
and there could be weird collisions between them.


https://github.com/user-attachments/assets/cf23afe4-3883-45cb-9906-f55de3ea2a97

Closes zed-industries#31507

Release Notes:

- Added the ability to mark language models as favorites and pin them to
the top of the list. This feature is available in the native Zed agent
(including text threads and the inline assistant), but not in external
agents via ACP.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
LivioGama pushed a commit to LivioGama/zed that referenced this pull request Jan 20, 2026
Follow up to zed-industries#44297.

Initial implementation in ce88444 used
`Arc` to store the reference to the hash map inside the iterator while
keeping the lifetime static. The code was later simplified in
5151b22 to build the list eagerly but
the Arc was forgotten, although it became unnecessary.

cc @bennetbo

Release Notes:

- N/A
LivioGama pushed a commit to LivioGama/zed that referenced this pull request Jan 20, 2026
This PR solves my main pain point with Zed agent: I have a long list of
available models from different providers, and I switch between a few of
them depending on the context and the project. In particular, I use the
same models from different providers depending on whether I'm working on
a personal project or at my day job. Since I only care about a few
models (none of which are in "recommended") that are scattered all over
the list, switching between them is bothersome, even using search.

This change adds a new option in `settings.json`
(`agent.favorite_models`) and the UI to manipulate it directly from the
list of available models. When any models are marked as favorites, they
appear in a dedicated section at the very top of the list. Each model
has a small icon button that appears on hover and allows to toggle
whether it's marked as favorite.

I implemented this on the UI level (i.e. there's no first-party
knowledge about favorite models in the agent itself; in theory it could
return favorite models as a group but it would make it harder to
implement bespoke UI for the favorite models section and it also
wouldn't work for text threads which don't use the ACP infrastructure).

The feature is only enabled for the native agent but disabled for
external agents because we can't easily map their model IDs to settings
and there could be weird collisions between them.


https://github.com/user-attachments/assets/cf23afe4-3883-45cb-9906-f55de3ea2a97

Closes zed-industries#31507

Release Notes:

- Added the ability to mark language models as favorites and pin them to
the top of the list. This feature is available in the native Zed agent
(including text threads and the inline assistant), but not in external
agents via ACP.

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
LivioGama pushed a commit to LivioGama/zed that referenced this pull request Jan 20, 2026
Follow up to zed-industries#44297.

Initial implementation in ce88444 used
`Arc` to store the reference to the hash map inside the iterator while
keeping the lifetime static. The code was later simplified in
5151b22 to build the list eagerly but
the Arc was forgotten, although it became unnecessary.

cc @bennetbo

Release Notes:

- N/A
LivioGama pushed a commit to LivioGama/zed that referenced this pull request Feb 15, 2026
Follow up to zed-industries#44297.

Initial implementation in ce88444 used
`Arc` to store the reference to the hash map inside the iterator while
keeping the lifetime static. The code was later simplified in
5151b22 to build the list eagerly but
the Arc was forgotten, although it became unnecessary.

cc @bennetbo

Release Notes:

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

Labels

area:ai Improvement related to Agent Panel, Edit Prediction, Copilot, or other AI features cla-signed The user has signed the Contributor License Agreement

Projects

Development

Successfully merging this pull request may close these issues.

Agent Panel: Customize options included in model selector

5 participants