diff --git a/ui/src/i18n/.i18n/ar.meta.json b/ui/src/i18n/.i18n/ar.meta.json index 52d65420420c..4276a2c0bd21 100644 --- a/ui/src/i18n/.i18n/ar.meta.json +++ b/ui/src/i18n/.i18n/ar.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:07:21.796Z", + "generatedAt": "2026-06-29T17:06:18.945Z", "locale": "ar", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/de.meta.json b/ui/src/i18n/.i18n/de.meta.json index cedeb690a7e5..bdb5954927c1 100644 --- a/ui/src/i18n/.i18n/de.meta.json +++ b/ui/src/i18n/.i18n/de.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:06:02.374Z", + "generatedAt": "2026-06-29T17:06:17.867Z", "locale": "de", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/es.meta.json b/ui/src/i18n/.i18n/es.meta.json index ead0e4cc5f07..238099037e84 100644 --- a/ui/src/i18n/.i18n/es.meta.json +++ b/ui/src/i18n/.i18n/es.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:06:31.127Z", + "generatedAt": "2026-06-29T17:06:18.056Z", "locale": "es", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fa.meta.json b/ui/src/i18n/.i18n/fa.meta.json index 54e695a34ce6..d1c64e393676 100644 --- a/ui/src/i18n/.i18n/fa.meta.json +++ b/ui/src/i18n/.i18n/fa.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:08:50.278Z", + "generatedAt": "2026-06-29T17:06:20.668Z", "locale": "fa", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fr.meta.json b/ui/src/i18n/.i18n/fr.meta.json index 89176a25f0c5..276752eb11d4 100644 --- a/ui/src/i18n/.i18n/fr.meta.json +++ b/ui/src/i18n/.i18n/fr.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:06:59.616Z", + "generatedAt": "2026-06-29T17:06:18.559Z", "locale": "fr", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/hi.meta.json b/ui/src/i18n/.i18n/hi.meta.json index 8746728be1d2..5cd4c45b8734 100644 --- a/ui/src/i18n/.i18n/hi.meta.json +++ b/ui/src/i18n/.i18n/hi.meta.json @@ -1,11 +1,14 @@ { - "fallbackKeys": [], - "generatedAt": "2026-06-26T21:38:17.797Z", + "fallbackKeys": [ + "chat.commentaryLabel", + "chat.commentaryToggle" + ], + "generatedAt": "2026-06-29T17:06:18.728Z", "locale": "hi", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, "translatedKeys": 1416, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/id.meta.json b/ui/src/i18n/.i18n/id.meta.json index fe0cfdc9953a..f5e3f84aa695 100644 --- a/ui/src/i18n/.i18n/id.meta.json +++ b/ui/src/i18n/.i18n/id.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:08:00.729Z", + "generatedAt": "2026-06-29T17:06:19.737Z", "locale": "id", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/it.meta.json b/ui/src/i18n/.i18n/it.meta.json index 89c5b56f5052..c5333f74586f 100644 --- a/ui/src/i18n/.i18n/it.meta.json +++ b/ui/src/i18n/.i18n/it.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:07:12.745Z", + "generatedAt": "2026-06-29T17:06:19.156Z", "locale": "it", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ja-JP.meta.json b/ui/src/i18n/.i18n/ja-JP.meta.json index 0f001fbe3999..17a9c782385e 100644 --- a/ui/src/i18n/.i18n/ja-JP.meta.json +++ b/ui/src/i18n/.i18n/ja-JP.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:06:34.355Z", + "generatedAt": "2026-06-29T17:06:18.241Z", "locale": "ja-JP", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ko.meta.json b/ui/src/i18n/.i18n/ko.meta.json index 4d97ed7a5839..ef118286a1c5 100644 --- a/ui/src/i18n/.i18n/ko.meta.json +++ b/ui/src/i18n/.i18n/ko.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:06:42.132Z", + "generatedAt": "2026-06-29T17:06:18.409Z", "locale": "ko", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/nl.meta.json b/ui/src/i18n/.i18n/nl.meta.json index 6d27b8c97a7b..8057e5340c45 100644 --- a/ui/src/i18n/.i18n/nl.meta.json +++ b/ui/src/i18n/.i18n/nl.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:08:47.496Z", + "generatedAt": "2026-06-29T17:06:20.490Z", "locale": "nl", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pl.meta.json b/ui/src/i18n/.i18n/pl.meta.json index 7634fad71c51..d717c998f9b7 100644 --- a/ui/src/i18n/.i18n/pl.meta.json +++ b/ui/src/i18n/.i18n/pl.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:08:08.174Z", + "generatedAt": "2026-06-29T17:06:19.915Z", "locale": "pl", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pt-BR.meta.json b/ui/src/i18n/.i18n/pt-BR.meta.json index 6036027ba115..7b2558de9230 100644 --- a/ui/src/i18n/.i18n/pt-BR.meta.json +++ b/ui/src/i18n/.i18n/pt-BR.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:05:51.685Z", + "generatedAt": "2026-06-29T17:06:17.682Z", "locale": "pt-BR", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/raw-copy-baseline.json b/ui/src/i18n/.i18n/raw-copy-baseline.json index 372a51a8f2cf..25afde2e5fc7 100644 --- a/ui/src/i18n/.i18n/raw-copy-baseline.json +++ b/ui/src/i18n/.i18n/raw-copy-baseline.json @@ -1513,6 +1513,13 @@ "path": "ui/src/ui/views/channels.whatsapp.ts", "text": "WhatsApp" }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Cancel reply" + }, { "count": 1, "kind": "html-attribute", @@ -1597,6 +1604,13 @@ "path": "ui/src/ui/views/chat.ts", "text": "Search messages..." }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/chat.ts", + "text": "Cancel reply" + }, { "count": 1, "kind": "html-attribute", diff --git a/ui/src/i18n/.i18n/ru.meta.json b/ui/src/i18n/.i18n/ru.meta.json index 5a8f849a4b07..ac7576594c5a 100644 --- a/ui/src/i18n/.i18n/ru.meta.json +++ b/ui/src/i18n/.i18n/ru.meta.json @@ -1,11 +1,14 @@ { - "fallbackKeys": [], - "generatedAt": "2026-06-26T21:42:51.346Z", + "fallbackKeys": [ + "chat.commentaryLabel", + "chat.commentaryToggle" + ], + "generatedAt": "2026-06-29T17:06:20.849Z", "locale": "ru", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, "translatedKeys": 1416, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/th.meta.json b/ui/src/i18n/.i18n/th.meta.json index 7c04686b8b22..f6448670acad 100644 --- a/ui/src/i18n/.i18n/th.meta.json +++ b/ui/src/i18n/.i18n/th.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:08:16.442Z", + "generatedAt": "2026-06-29T17:06:20.099Z", "locale": "th", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/tr.meta.json b/ui/src/i18n/.i18n/tr.meta.json index 6637e147efea..7a73b4e6a5dd 100644 --- a/ui/src/i18n/.i18n/tr.meta.json +++ b/ui/src/i18n/.i18n/tr.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:07:26.912Z", + "generatedAt": "2026-06-29T17:06:19.344Z", "locale": "tr", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/uk.meta.json b/ui/src/i18n/.i18n/uk.meta.json index 466fbf734427..317bad71b0b6 100644 --- a/ui/src/i18n/.i18n/uk.meta.json +++ b/ui/src/i18n/.i18n/uk.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:07:50.082Z", + "generatedAt": "2026-06-29T17:06:19.546Z", "locale": "uk", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/vi.meta.json b/ui/src/i18n/.i18n/vi.meta.json index ec9d6b2458f3..7fb172548c77 100644 --- a/ui/src/i18n/.i18n/vi.meta.json +++ b/ui/src/i18n/.i18n/vi.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:08:44.881Z", + "generatedAt": "2026-06-29T17:06:20.308Z", "locale": "vi", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-CN.meta.json b/ui/src/i18n/.i18n/zh-CN.meta.json index 842ce9c62ee8..36087521588f 100644 --- a/ui/src/i18n/.i18n/zh-CN.meta.json +++ b/ui/src/i18n/.i18n/zh-CN.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:05:51.877Z", + "generatedAt": "2026-06-29T17:06:17.341Z", "locale": "zh-CN", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-TW.meta.json b/ui/src/i18n/.i18n/zh-TW.meta.json index 200c61b719c9..fa30d60dea3d 100644 --- a/ui/src/i18n/.i18n/zh-TW.meta.json +++ b/ui/src/i18n/.i18n/zh-TW.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-06-26T22:05:54.449Z", + "generatedAt": "2026-06-29T17:06:17.519Z", "locale": "zh-TW", "model": "claude-opus-4-8", "provider": "anthropic", - "sourceHash": "08e6ec5c2e8416d0049d2452906c20d096e17e384299af89cde872f0cfbb5015", - "totalKeys": 1416, - "translatedKeys": 1416, + "sourceHash": "29f546ff372524aa64d09bd700f76899045da99552fa295a32eda9fad2a0407f", + "totalKeys": 1418, + "translatedKeys": 1418, "workflow": 1 } diff --git a/ui/src/i18n/locales/ar.ts b/ui/src/i18n/locales/ar.ts index b57c79f36b99..8cfae182fb00 100644 --- a/ui/src/i18n/locales/ar.ts +++ b/ui/src/i18n/locales/ar.ts @@ -1313,6 +1313,8 @@ export const ar: TranslationMap = { settings: "إعدادات الدردشة", thinkingToggle: "تبديل مخرجات تفكير/عمل المساعد", toolCallsToggle: "تبديل استدعاءات الأدوات ونتائج الأدوات", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "وضع التمرير التلقائي", autoScrollAlways: "دائمًا", autoScrollNearBottom: "قرب الأسفل", diff --git a/ui/src/i18n/locales/de.ts b/ui/src/i18n/locales/de.ts index 963c8d5a8d90..8dd5bd3f8273 100644 --- a/ui/src/i18n/locales/de.ts +++ b/ui/src/i18n/locales/de.ts @@ -1340,6 +1340,8 @@ export const de: TranslationMap = { settings: "Chat-Einstellungen", thinkingToggle: "Ausgabe des Assistenten ein-/ausblenden", toolCallsToggle: "Tool-Aufrufe und Tool-Ergebnisse umschalten", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Automatischer Scrollmodus", autoScrollAlways: "Immer", autoScrollNearBottom: "Nahe am unteren Rand", diff --git a/ui/src/i18n/locales/en.ts b/ui/src/i18n/locales/en.ts index d9489bd82471..618ca38fad71 100644 --- a/ui/src/i18n/locales/en.ts +++ b/ui/src/i18n/locales/en.ts @@ -1319,6 +1319,8 @@ export const en: TranslationMap = { settings: "Chat settings", thinkingToggle: "Toggle assistant thinking/working output", toolCallsToggle: "Toggle tool calls and tool results", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Auto-scroll mode", autoScrollAlways: "Always", autoScrollNearBottom: "Near bottom", diff --git a/ui/src/i18n/locales/es.ts b/ui/src/i18n/locales/es.ts index 5f1cd78b1061..28f6e5e064f3 100644 --- a/ui/src/i18n/locales/es.ts +++ b/ui/src/i18n/locales/es.ts @@ -1337,6 +1337,8 @@ export const es: TranslationMap = { settings: "Configuración del chat", thinkingToggle: "Alternar salida de pensamiento/trabajo del asistente", toolCallsToggle: "Alternar llamadas a herramientas y resultados de herramientas", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Modo de desplazamiento automático", autoScrollAlways: "Siempre", autoScrollNearBottom: "Cerca del final", diff --git a/ui/src/i18n/locales/fa.ts b/ui/src/i18n/locales/fa.ts index 17b6cd588f1f..86967923d205 100644 --- a/ui/src/i18n/locales/fa.ts +++ b/ui/src/i18n/locales/fa.ts @@ -1331,6 +1331,8 @@ export const fa: TranslationMap = { settings: "تنظیمات چت", thinkingToggle: "تغییر وضعیت خروجی فکر/کار دستیار", toolCallsToggle: "تغییر وضعیت نمایش فراخوانی‌های ابزار و نتایج ابزار", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "حالت پیمایش خودکار", autoScrollAlways: "همیشه", autoScrollNearBottom: "نزدیک پایین", diff --git a/ui/src/i18n/locales/fr.ts b/ui/src/i18n/locales/fr.ts index 1418d2e6dc28..5cef695fae96 100644 --- a/ui/src/i18n/locales/fr.ts +++ b/ui/src/i18n/locales/fr.ts @@ -1344,6 +1344,8 @@ export const fr: TranslationMap = { settings: "Paramètres de chat", thinkingToggle: "Afficher/masquer la sortie de réflexion/travail de l’assistant", toolCallsToggle: "Afficher/masquer les appels d’outil et les résultats d’outil", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Mode de défilement automatique", autoScrollAlways: "Toujours", autoScrollNearBottom: "Près du bas", diff --git a/ui/src/i18n/locales/hi.ts b/ui/src/i18n/locales/hi.ts index d343462058dc..b92c80c0405e 100644 --- a/ui/src/i18n/locales/hi.ts +++ b/ui/src/i18n/locales/hi.ts @@ -1315,6 +1315,8 @@ export const hi: TranslationMap = { settings: "चैट सेटिंग्स", thinkingToggle: "सहायक की सोच/कार्य आउटपुट टॉगल करें", toolCallsToggle: "टूल कॉल और टूल परिणाम टॉगल करें", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "ऑटो-स्क्रॉल मोड", autoScrollAlways: "हमेशा", autoScrollNearBottom: "नीचे के पास", diff --git a/ui/src/i18n/locales/id.ts b/ui/src/i18n/locales/id.ts index 1d6dba68d66b..2de250328792 100644 --- a/ui/src/i18n/locales/id.ts +++ b/ui/src/i18n/locales/id.ts @@ -1329,6 +1329,8 @@ export const id: TranslationMap = { settings: "Pengaturan chat", thinkingToggle: "Alihkan output berpikir/bekerja asisten", toolCallsToggle: "Alihkan panggilan alat dan hasil alat", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Mode gulir otomatis", autoScrollAlways: "Selalu", autoScrollNearBottom: "Dekat bagian bawah", diff --git a/ui/src/i18n/locales/it.ts b/ui/src/i18n/locales/it.ts index 2bca1a614ecd..8870ad627b84 100644 --- a/ui/src/i18n/locales/it.ts +++ b/ui/src/i18n/locales/it.ts @@ -1336,6 +1336,8 @@ export const it: TranslationMap = { settings: "Impostazioni chat", thinkingToggle: "Attiva/disattiva output di pensiero/elaborazione dell'assistente", toolCallsToggle: "Attiva/disattiva chiamate agli strumenti e risultati strumenti", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Modalità di scorrimento automatico", autoScrollAlways: "Sempre", autoScrollNearBottom: "Vicino al fondo", diff --git a/ui/src/i18n/locales/ja-JP.ts b/ui/src/i18n/locales/ja-JP.ts index e4b542d04030..0283d1fb48e9 100644 --- a/ui/src/i18n/locales/ja-JP.ts +++ b/ui/src/i18n/locales/ja-JP.ts @@ -1334,6 +1334,8 @@ export const ja_JP: TranslationMap = { settings: "チャット設定", thinkingToggle: "アシスタントの思考 / 作業出力の表示を切り替え", toolCallsToggle: "ツール呼び出しとツール結果の表示を切り替え", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "自動スクロールモード", autoScrollAlways: "常に", autoScrollNearBottom: "下部付近", diff --git a/ui/src/i18n/locales/ko.ts b/ui/src/i18n/locales/ko.ts index c6b3ac125841..f29e2c381a28 100644 --- a/ui/src/i18n/locales/ko.ts +++ b/ui/src/i18n/locales/ko.ts @@ -1320,6 +1320,8 @@ export const ko: TranslationMap = { settings: "채팅 설정", thinkingToggle: "어시스턴트 생각/작업 출력 전환", toolCallsToggle: "도구 호출 및 도구 결과 전환", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "자동 스크롤 모드", autoScrollAlways: "항상", autoScrollNearBottom: "하단 근처", diff --git a/ui/src/i18n/locales/nl.ts b/ui/src/i18n/locales/nl.ts index e891e527b536..6c2153fdf452 100644 --- a/ui/src/i18n/locales/nl.ts +++ b/ui/src/i18n/locales/nl.ts @@ -1335,6 +1335,8 @@ export const nl: TranslationMap = { settings: "Chatinstellingen", thinkingToggle: "Denken-/werken-output van assistent schakelen", toolCallsToggle: "Tool-aanroepen en toolresultaten schakelen", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Automatisch scrollen", autoScrollAlways: "Altijd", autoScrollNearBottom: "Bijna onderaan", diff --git a/ui/src/i18n/locales/pl.ts b/ui/src/i18n/locales/pl.ts index b1fe1fbca153..cbbd105d17e6 100644 --- a/ui/src/i18n/locales/pl.ts +++ b/ui/src/i18n/locales/pl.ts @@ -1334,6 +1334,8 @@ export const pl: TranslationMap = { settings: "Ustawienia czatu", thinkingToggle: "Przełącz wyświetlanie myślenia/pracy asystenta", toolCallsToggle: "Przełącz wyświetlanie wywołań narzędzi i wyników narzędzi", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Tryb automatycznego przewijania", autoScrollAlways: "Zawsze", autoScrollNearBottom: "Blisko dołu", diff --git a/ui/src/i18n/locales/pt-BR.ts b/ui/src/i18n/locales/pt-BR.ts index 90afafc70b9c..10014ecf6fb0 100644 --- a/ui/src/i18n/locales/pt-BR.ts +++ b/ui/src/i18n/locales/pt-BR.ts @@ -1331,6 +1331,8 @@ export const pt_BR: TranslationMap = { settings: "Configurações do chat", thinkingToggle: "Alternar saída de pensamento/trabalho do assistente", toolCallsToggle: "Alternar chamadas de ferramenta e resultados de ferramenta", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Modo de rolagem automática", autoScrollAlways: "Sempre", autoScrollNearBottom: "Próximo ao final", diff --git a/ui/src/i18n/locales/ru.ts b/ui/src/i18n/locales/ru.ts index 75607097e092..23faa28bac2a 100644 --- a/ui/src/i18n/locales/ru.ts +++ b/ui/src/i18n/locales/ru.ts @@ -1339,6 +1339,8 @@ export const ru: TranslationMap = { settings: "Настройки чата", thinkingToggle: "Показать или скрыть вывод размышлений/работы ассистента", toolCallsToggle: "Показать или скрыть вызовы инструментов и их результаты", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Режим автопрокрутки", autoScrollAlways: "Всегда", autoScrollNearBottom: "Рядом с нижним краем", diff --git a/ui/src/i18n/locales/th.ts b/ui/src/i18n/locales/th.ts index b338d3ac1cb6..1ad521ac250c 100644 --- a/ui/src/i18n/locales/th.ts +++ b/ui/src/i18n/locales/th.ts @@ -1297,6 +1297,8 @@ export const th: TranslationMap = { settings: "การตั้งค่าแชท", thinkingToggle: "สลับการแสดงผลการคิด/การทำงานของผู้ช่วย", toolCallsToggle: "สลับการแสดงการเรียกใช้ tool และผลลัพธ์ของ tool", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "โหมดเลื่อนอัตโนมัติ", autoScrollAlways: "เสมอ", autoScrollNearBottom: "ใกล้ด้านล่าง", diff --git a/ui/src/i18n/locales/tr.ts b/ui/src/i18n/locales/tr.ts index 4e2bb6816e43..a60e34d533dd 100644 --- a/ui/src/i18n/locales/tr.ts +++ b/ui/src/i18n/locales/tr.ts @@ -1335,6 +1335,8 @@ export const tr: TranslationMap = { settings: "Sohbet ayarları", thinkingToggle: "Asistanın düşünme/çalışma çıktısını aç/kapat", toolCallsToggle: "Araç çağrılarını ve araç sonuçlarını aç/kapat", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Otomatik kaydırma modu", autoScrollAlways: "Her zaman", autoScrollNearBottom: "Alta yakın", diff --git a/ui/src/i18n/locales/uk.ts b/ui/src/i18n/locales/uk.ts index 3a793aee6a24..739c2bc7c148 100644 --- a/ui/src/i18n/locales/uk.ts +++ b/ui/src/i18n/locales/uk.ts @@ -1333,6 +1333,8 @@ export const uk: TranslationMap = { settings: "Налаштування чату", thinkingToggle: "Перемкнути показ мислення/роботи асистента", toolCallsToggle: "Перемкнути виклики інструментів і результати інструментів", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Режим автопрокручування", autoScrollAlways: "Завжди", autoScrollNearBottom: "Біля низу", diff --git a/ui/src/i18n/locales/vi.ts b/ui/src/i18n/locales/vi.ts index 381fcc34121d..96883c6ecfa0 100644 --- a/ui/src/i18n/locales/vi.ts +++ b/ui/src/i18n/locales/vi.ts @@ -1321,6 +1321,8 @@ export const vi: TranslationMap = { settings: "Cài đặt trò chuyện", thinkingToggle: "Bật/tắt đầu ra suy nghĩ/đang xử lý của trợ lý", toolCallsToggle: "Bật/tắt lượt gọi công cụ và kết quả công cụ", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "Chế độ tự động cuộn", autoScrollAlways: "Luôn luôn", autoScrollNearBottom: "Gần cuối", diff --git a/ui/src/i18n/locales/zh-CN.ts b/ui/src/i18n/locales/zh-CN.ts index bf53ddd3494e..18289ef30247 100644 --- a/ui/src/i18n/locales/zh-CN.ts +++ b/ui/src/i18n/locales/zh-CN.ts @@ -1292,6 +1292,8 @@ export const zh_CN: TranslationMap = { settings: "聊天设置", thinkingToggle: "切换助手思考/工作输出", toolCallsToggle: "切换工具调用和工具结果", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "自动滚动模式", autoScrollAlways: "始终", autoScrollNearBottom: "接近底部", diff --git a/ui/src/i18n/locales/zh-TW.ts b/ui/src/i18n/locales/zh-TW.ts index e227e5fbbfab..3246de02ee9a 100644 --- a/ui/src/i18n/locales/zh-TW.ts +++ b/ui/src/i18n/locales/zh-TW.ts @@ -1294,6 +1294,8 @@ export const zh_TW: TranslationMap = { settings: "聊天設定", thinkingToggle: "切換助手思考/工作輸出", toolCallsToggle: "切換工具呼叫與工具結果", + commentaryToggle: "Keep commentary after the final answer (off: clears with the final message)", + commentaryLabel: "Commentary", autoScrollMode: "自動捲動模式", autoScrollAlways: "一律", autoScrollNearBottom: "接近底部", diff --git a/ui/src/ui/app-render.helpers.browser.test.ts b/ui/src/ui/app-render.helpers.browser.test.ts index 0095393f8160..4469075d6a1f 100644 --- a/ui/src/ui/app-render.helpers.browser.test.ts +++ b/ui/src/ui/app-render.helpers.browser.test.ts @@ -119,7 +119,7 @@ describe("chat header controls (browser)", () => { ), ); - expect(buttons).toHaveLength(5); + expect(buttons).toHaveLength(6); const labels = buttons.map((button) => button.getAttribute("data-tooltip")); expect(labels).toEqual([ @@ -127,6 +127,7 @@ describe("chat header controls (browser)", () => { `${t("chat.autoScrollMode")}: ${t("chat.autoScrollNearBottom")}`, t("chat.thinkingToggle"), t("chat.toolCallsToggle"), + t("chat.commentaryToggle"), t("chat.showCronSessions"), ]); @@ -231,7 +232,7 @@ describe("chat header controls (browser)", () => { container.querySelectorAll(".chat-controls__thinking .btn--icon"), ); - expect(buttons).toHaveLength(4); + expect(buttons).toHaveLength(5); const autoScrollButton = requireButton(buttons.at(0), "auto-scroll mode"); expect(autoScrollButton.dataset.chatAutoScrollMode).toBe("near-bottom"); const cronButton = requireButton(buttons.at(-1), "cron sessions"); diff --git a/ui/src/ui/app-render.helpers.ts b/ui/src/ui/app-render.helpers.ts index 481cb015791c..c45d91320c6c 100644 --- a/ui/src/ui/app-render.helpers.ts +++ b/ui/src/ui/app-render.helpers.ts @@ -365,12 +365,16 @@ export function renderChatControls(state: AppViewState) { const disableThinkingToggle = state.onboarding; const showThinking = state.onboarding ? false : state.settings.chatShowThinking; const showToolCalls = state.onboarding ? true : state.settings.chatShowToolCalls; + const persistCommentary = state.settings.chatPersistCommentary !== false; const thinkingLabel = disableThinkingToggle ? t("chat.onboardingDisabled") : t("chat.thinkingToggle"); const toolCallsLabel = disableThinkingToggle ? t("chat.onboardingDisabled") : t("chat.toolCallsToggle"); + const commentaryLabel = disableThinkingToggle + ? t("chat.onboardingDisabled") + : t("chat.commentaryToggle"); const refreshDisabled = !state.connected || state.chatManualRefreshInFlight || @@ -503,6 +507,28 @@ export function renderChatControls(state: AppViewState) { ${toolCallsIcon} ${t("agents.tabs.tools")} + +