Improve sidebar workspace readability and host identity (#2790)

* fix(app): align turn footer actions

Keep running-turn actions in the same position as completed-turn actions and use the shared small icon size for both copy and fork controls.

* feat(app): improve sidebar workspace identity

Make dense sidebar workspace rows easier to scan and let each device control how connected hosts are identified.

* fix(app): keep host badges readable

Use a compact display menu and keep identity color on the host icon so translated controls fit and badge text retains standard contrast.

* fix(app): announce selected sidebar badge mode

* fix(app): retain icon-only host names for screen readers

* fix(app): name hoisted workspace rows

* fix(app): retain host identity in workspace labels

* fix(app): retain workspace status in row labels

* fix(app): defer host appearance until identity resolves

* fix(app): serialize host appearance writes

* fix(app): serialize host registry writes

* fix(app): bound sidebar host badge labels

* test(app): match workspace status labels

* fix(app): consolidate sidebar identity behavior

* test(app): assert status grouping behavior

* fix(app): keep sidebar row actions accessible

* fix(app): stabilize optimistic message layout
This commit is contained in:
Mohamed Boudra
2026-08-02 16:58:20 +02:00
committed by GitHub
parent 553ac53643
commit ccb668b3b4
57 changed files with 3251 additions and 809 deletions
+35
View File
@@ -1938,6 +1938,41 @@ export const ar: TranslationResources = {
},
},
host: {
appearance: {
title: "المظهر",
name: {
label: "الاسم",
},
color: {
label: "اللون",
accessibilityLabel: "اللون، {{value}}",
options: {
none: "افتراضي",
violet: "بنفسجي",
sky: "سماوي",
emerald: "زمردي",
orange: "برتقالي",
pink: "وردي",
indigo: "نيلي",
teal: "أزرق مخضر",
red: "أحمر",
amber: "كهرماني",
blue: "أزرق",
},
},
badge: {
label: "شارة الشريط الجانبي",
accessibilityLabel: "شارة الشريط الجانبي، {{value}}",
options: {
name: "الاسم",
icon: "أيقونة فقط",
hidden: "مخفي",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "لم يتم العثور على Host",
badges: {
relay: "تتابع",
+36 -1
View File
@@ -265,7 +265,7 @@ export const en = {
copyCode: "Copy code",
copyTurn: "Copy turn",
copyMessage: "Copy message",
forkMenu: "Fork chat",
forkMenu: "Fork chat from here",
forkInNewTab: "Fork in a new tab",
forkInNewWorkspace: "Fork in a new workspace",
forkUnavailable: "Update the host to use this.",
@@ -1949,6 +1949,41 @@ export const en = {
},
},
host: {
appearance: {
title: "Appearance",
name: {
label: "Name",
},
color: {
label: "Color",
accessibilityLabel: "Color, {{value}}",
options: {
none: "Default",
violet: "Violet",
sky: "Sky",
emerald: "Emerald",
orange: "Orange",
pink: "Pink",
indigo: "Indigo",
teal: "Teal",
red: "Red",
amber: "Amber",
blue: "Blue",
},
},
badge: {
label: "Sidebar badge",
accessibilityLabel: "Sidebar badge, {{value}}",
options: {
name: "Name",
icon: "Icon only",
hidden: "Hidden",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "Host not found",
badges: {
relay: "Relay",
+35
View File
@@ -1988,6 +1988,41 @@ export const es: TranslationResources = {
},
},
host: {
appearance: {
title: "Apariencia",
name: {
label: "Nombre",
},
color: {
label: "Color",
accessibilityLabel: "Color, {{value}}",
options: {
none: "Predeterminado",
violet: "Violeta",
sky: "Cielo",
emerald: "Esmeralda",
orange: "Naranja",
pink: "Rosa",
indigo: "Índigo",
teal: "Verde azulado",
red: "Rojo",
amber: "Ámbar",
blue: "Azul",
},
},
badge: {
label: "Insignia de la barra lateral",
accessibilityLabel: "Insignia de la barra lateral, {{value}}",
options: {
name: "Nombre",
icon: "Solo icono",
hidden: "Oculta",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "Hostno encontrado",
badges: {
relay: "Relé",
+35
View File
@@ -1992,6 +1992,41 @@ export const fr: TranslationResources = {
},
},
host: {
appearance: {
title: "Apparence",
name: {
label: "Nom",
},
color: {
label: "Couleur",
accessibilityLabel: "Couleur, {{value}}",
options: {
none: "Par défaut",
violet: "Violet",
sky: "Ciel",
emerald: "Émeraude",
orange: "Orange",
pink: "Rose",
indigo: "Indigo",
teal: "Sarcelle",
red: "Rouge",
amber: "Ambre",
blue: "Bleu",
},
},
badge: {
label: "Badge de la barre latérale",
accessibilityLabel: "Badge de la barre latérale, {{value}}",
options: {
name: "Nom",
icon: "Icône seule",
hidden: "Masqué",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "Hostintrouvable",
badges: {
relay: "Relais",
+35
View File
@@ -1957,6 +1957,41 @@ export const ja: TranslationResources = {
},
},
host: {
appearance: {
title: "外観",
name: {
label: "名前",
},
color: {
label: "色",
accessibilityLabel: "色、{{value}}",
options: {
none: "デフォルト",
violet: "バイオレット",
sky: "スカイ",
emerald: "エメラルド",
orange: "オレンジ",
pink: "ピンク",
indigo: "インディゴ",
teal: "ティール",
red: "レッド",
amber: "アンバー",
blue: "ブルー",
},
},
badge: {
label: "サイドバーのバッジ",
accessibilityLabel: "サイドバーのバッジ、{{value}}",
options: {
name: "名前",
icon: "アイコンのみ",
hidden: "非表示",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "ホストが見つかりません",
badges: {
relay: "リレー",
+35
View File
@@ -1972,6 +1972,41 @@ export const ptBR: TranslationResources = {
},
},
host: {
appearance: {
title: "Aparência",
name: {
label: "Nome",
},
color: {
label: "Cor",
accessibilityLabel: "Cor, {{value}}",
options: {
none: "Padrão",
violet: "Violeta",
sky: "Céu",
emerald: "Esmeralda",
orange: "Laranja",
pink: "Rosa",
indigo: "Índigo",
teal: "Verde-azulado",
red: "Vermelho",
amber: "Âmbar",
blue: "Azul",
},
},
badge: {
label: "Selo da barra lateral",
accessibilityLabel: "Selo da barra lateral, {{value}}",
options: {
name: "Nome",
icon: "Somente ícone",
hidden: "Oculto",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "Host não encontrado",
badges: {
relay: "Relay",
+35
View File
@@ -1976,6 +1976,41 @@ export const ru: TranslationResources = {
},
},
host: {
appearance: {
title: "Оформление",
name: {
label: "Имя",
},
color: {
label: "Цвет",
accessibilityLabel: "Цвет, {{value}}",
options: {
none: "По умолчанию",
violet: "Фиолетовый",
sky: "Небесный",
emerald: "Изумрудный",
orange: "Оранжевый",
pink: "Розовый",
indigo: "Индиго",
teal: "Бирюзовый",
red: "Красный",
amber: "Янтарный",
blue: "Синий",
},
},
badge: {
label: "Значок на боковой панели",
accessibilityLabel: "Значок на боковой панели, {{value}}",
options: {
name: "Имя",
icon: "Только значок",
hidden: "Скрыт",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "Host не найден",
badges: {
relay: "Реле",
+35
View File
@@ -1916,6 +1916,41 @@ export const zhCN: TranslationResources = {
},
},
host: {
appearance: {
title: "外观",
name: {
label: "名称",
},
color: {
label: "颜色",
accessibilityLabel: "颜色,{{value}}",
options: {
none: "默认",
violet: "紫罗兰",
sky: "天蓝",
emerald: "翠绿",
orange: "橙色",
pink: "粉色",
indigo: "靛蓝",
teal: "青色",
red: "红色",
amber: "琥珀",
blue: "蓝色",
},
},
badge: {
label: "侧边栏徽章",
accessibilityLabel: "侧边栏徽章,{{value}}",
options: {
name: "名称",
icon: "仅图标",
hidden: "隐藏",
},
},
preview: {
workspaceName: "my-workspace",
},
},
notFound: "Host 未找到",
badges: {
relay: "Relay",