feat(app): create agent profiles from the model chooser (#3533)

* feat(app): create agent profiles from the model chooser

Restore quick model pinning by creating an agent profile directly from a
model row. A trailing plus on unprofiled model rows opens the pre-filled
profile form; rows that already name the provider+model show the profile
glyph and open it for edit.

- seed the profile form model with provider, model, and suggested name
- expose useAgentProfileEditor from @/agent-profiles for the write path
- hover-refactor model rows per docs/hover.md and add the trailing action
- wire the composer desktop selector and compact model sheet (close-then-open)

Closes #3529

* fix(app): match favourites star position for model row profile action

The star sat after the selection checkmark at the far-right edge. Put the
profile create/edit action in the same slot instead of before the checkmark.

* fix(app): disambiguate per-model create profile action

The per-model + buttons shared the accessible name "Create profile" with
the empty-state row, which broke the empty-host picker test (strict mode
matched five buttons). Name the action "Create profile from <model>" so it
is specific and screen readers get the model context.

* fix(app): keep per-model create label out of model row names

Naming the action "Create profile from <model>" put the model label into a
second button on the row, so regex selectors targeting a model row by name
matched both. Use a generic "Create profile from this model" label that
neither collides with the empty-state "Create profile" row nor with model
row names.
This commit is contained in:
Mohamed Boudra
2026-08-19 07:46:47 +02:00
committed by GitHub
parent 9c9a85a0cf
commit e9373c026b
23 changed files with 674 additions and 54 deletions
+3
View File
@@ -1463,6 +1463,9 @@ export const ar: TranslationResources = {
editProfiles: "تحرير",
editProfilesLabel: "تحرير ملفات الوكيل",
createProfile: "إنشاء ملف شخصي",
createProfileFromModel: "إنشاء ملف شخصي من هذا النموذج",
editProfileLabel: "تحرير {{name}}",
editProfilesCount: "تحرير الملفات الشخصية ({{count}})",
modelCount: "{{count}} نموذج",
modelCountPlural: "{{count}} نماذج",
retry: "أعد المحاولة",
+3
View File
@@ -1473,6 +1473,9 @@ export const en = {
editProfiles: "Edit",
editProfilesLabel: "Edit agent profiles",
createProfile: "Create profile",
createProfileFromModel: "Create profile from this model",
editProfileLabel: "Edit {{name}}",
editProfilesCount: "Edit profiles ({{count}})",
modelCount: "{{count}} model",
modelCountPlural: "{{count}} models",
retry: "Retry",
+3
View File
@@ -1507,6 +1507,9 @@ export const es: TranslationResources = {
editProfiles: "Editar",
editProfilesLabel: "Editar perfiles de agente",
createProfile: "Crear perfil",
createProfileFromModel: "Crear perfil desde este modelo",
editProfileLabel: "Editar {{name}}",
editProfilesCount: "Editar perfiles ({{count}})",
modelCount: "{{count}} modelo",
modelCountPlural: "{{count}} modelos",
retry: "Rever",
+3
View File
@@ -1511,6 +1511,9 @@ export const fr: TranslationResources = {
editProfiles: "Modifier",
editProfilesLabel: "Modifier les profils d'agent",
createProfile: "Créer un profil",
createProfileFromModel: "Créer un profil à partir de ce modèle",
editProfileLabel: "Modifier {{name}}",
editProfilesCount: "Modifier les profils ({{count}})",
modelCount: "{{count}} modèle",
modelCountPlural: "{{count}} modèles",
retry: "Réessayer",
+3
View File
@@ -1478,6 +1478,9 @@ export const ja: TranslationResources = {
editProfiles: "編集",
editProfilesLabel: "エージェントプロファイルを編集",
createProfile: "プロファイルを作成",
createProfileFromModel: "このモデルからプロファイルを作成",
editProfileLabel: "{{name}}を編集",
editProfilesCount: "プロファイルを編集({{count}})",
modelCount: "{{count}}つのモデル",
modelCountPlural: "{{count}}つのモデル",
retry: "再試行",
+3
View File
@@ -1473,6 +1473,9 @@ export const ko: TranslationResources = {
editProfiles: "편집",
editProfilesLabel: "에이전트 프로필 편집",
createProfile: "프로필 만들기",
createProfileFromModel: "이 모델에서 프로필 만들기",
editProfileLabel: "{{name}} 편집",
editProfilesCount: "프로필 편집 ({{count}})",
modelCount: "모델 {{count}}개",
modelCountPlural: "모델 {{count}}개",
retry: "다시 시도",
+3
View File
@@ -1493,6 +1493,9 @@ export const ptBR: TranslationResources = {
editProfiles: "Editar",
editProfilesLabel: "Editar perfis de agente",
createProfile: "Criar perfil",
createProfileFromModel: "Criar perfil a partir deste modelo",
editProfileLabel: "Editar {{name}}",
editProfilesCount: "Editar perfis ({{count}})",
modelCount: "{{count}} modelo",
modelCountPlural: "{{count}} modelos",
retry: "Tentar novamente",
+3
View File
@@ -1496,6 +1496,9 @@ export const ru: TranslationResources = {
editProfiles: "Изменить",
editProfilesLabel: "Изменить профили агентов",
createProfile: "Создать профиль",
createProfileFromModel: "Создать профиль из этой модели",
editProfileLabel: "Изменить {{name}}",
editProfilesCount: "Изменить профили ({{count}})",
modelCount: "{{count}} модель",
modelCountPlural: "{{count}} моделей",
retry: "Повторить попытку",
+3
View File
@@ -1446,6 +1446,9 @@ export const zhCN: TranslationResources = {
editProfiles: "编辑",
editProfilesLabel: "编辑智能体配置文件",
createProfile: "创建配置文件",
createProfileFromModel: "从此模型创建配置文件",
editProfileLabel: "编辑 {{name}}",
editProfilesCount: "编辑配置文件 ({{count}})",
modelCount: "{{count}} 个模型",
modelCountPlural: "{{count}} 个模型",
retry: "重试",