feat: show model in working indicator and fix streaming bottom jitter

- Working indicator shows provider icon and model name with the live
  status (e.g. 'Fable 5 is reading file'), localized via
  chat.statusRow.modelStatus
- Pin auto-follow to the exact fractional scroll maximum and re-pin on
  every passive follow instead of skipping within tolerance
- Round message text line-height to whole pixels so streamed content
  grows on the pixel grid; kills the 1px vertical jitter of
  bottom-anchored rows during streaming
This commit is contained in:
Bohdan Triapitsyn
2026-07-19 22:58:28 +03:00
parent 8e718ee58c
commit 4be6854ba5
15 changed files with 84 additions and 11 deletions
+1
View File
@@ -1797,6 +1797,7 @@ export const dict = {
'chat.statusRow.todo.priority.low': 'Low priority',
'chat.statusRow.actions.stopGeneratingAria': 'Stop generating',
'chat.statusRow.tasksTitle': 'Tasks',
'chat.statusRow.modelStatus': '{model} is {status}',
'chat.statusRow.summary.activeLeft': '{active} active · {left} left',
'chat.statusRow.aborted': 'Aborted',
'chat.revertIndicator.redo': 'Redo',
+1
View File
@@ -1775,6 +1775,7 @@ export const dict: Record<I18nKey, string> = {
"chat.statusRow.todo.priority.low": "Prioridad baja",
"chat.statusRow.actions.stopGeneratingAria": "Detener la generación",
"chat.statusRow.tasksTitle": "Tareas",
"chat.statusRow.modelStatus": "{model} · {status}",
"chat.statusRow.summary.activeLeft": "{active} activas · {left} restantes",
"chat.statusRow.aborted": "Interrumpido",
"chat.revertIndicator.redo": "Rehacer",
+1
View File
@@ -1601,6 +1601,7 @@ export const dict = {
'chat.statusRow.todo.priority.low': 'Faible priorité',
'chat.statusRow.actions.stopGeneratingAria': 'Arrêter de générer',
'chat.statusRow.tasksTitle': 'Tâches',
'chat.statusRow.modelStatus': '{model} · {status}',
'chat.statusRow.summary.activeLeft': '{active} actif · {left} gauche',
'chat.statusRow.aborted': 'Avorté',
'chat.revertIndicator.redo': 'Refaire',
+1
View File
@@ -1793,6 +1793,7 @@ export const dict: Record<I18nKey, string> = {
'chat.statusRow.todo.priority.low': '低優先度',
'chat.statusRow.actions.stopGeneratingAria': '生成を停止',
'chat.statusRow.tasksTitle': 'タスク',
'chat.statusRow.modelStatus': '{model} · {status}',
'chat.statusRow.summary.activeLeft': '{active}アクティブ · {left}残り',
'chat.statusRow.aborted': '中止されました',
'chat.revertIndicator.redo': 'やり直し',
+1
View File
@@ -1799,6 +1799,7 @@ export const dict: Record<I18nKey, string> = {
'chat.statusRow.todo.priority.low': '낮은 우선순위',
'chat.statusRow.actions.stopGeneratingAria': '생성 중지',
'chat.statusRow.tasksTitle': '작업',
'chat.statusRow.modelStatus': '{model} · {status}',
'chat.statusRow.summary.activeLeft': '{active}개 활성 · {left}개 남음',
'chat.statusRow.aborted': '중단됨',
'chat.revertIndicator.redo': '다시 실행',
+1
View File
@@ -687,6 +687,7 @@ export const dict: Record<I18nKey, string> = {
'chat.statusRow.todo.priority.low': 'Niski priorytet',
'chat.statusRow.actions.stopGeneratingAria': 'Zatrzymaj generowanie',
'chat.statusRow.tasksTitle': 'Zadania',
'chat.statusRow.modelStatus': '{model} · {status}',
'chat.statusRow.summary.activeLeft': '{active} aktywne · {left} pozostało',
'chat.statusRow.aborted': 'Przerwane',
'chat.revertIndicator.redo': 'Ponów',
@@ -1775,6 +1775,7 @@ export const dict: Record<I18nKey, string> = {
"chat.statusRow.todo.priority.low": "Prioridade baixa",
"chat.statusRow.actions.stopGeneratingAria": "Parar a geração",
"chat.statusRow.tasksTitle": "Tarefas",
"chat.statusRow.modelStatus": "{model} · {status}",
"chat.statusRow.summary.activeLeft": "{active} ativas · {left} restantes",
"chat.statusRow.aborted": "Interrompido",
"chat.revertIndicator.redo": "Refazer",
+1
View File
@@ -1775,6 +1775,7 @@ export const dict: Record<I18nKey, string> = {
"chat.statusRow.todo.priority.low": "Низький пріоритет",
"chat.statusRow.actions.stopGeneratingAria": "Припинити генерацію",
"chat.statusRow.tasksTitle": "завдання",
"chat.statusRow.modelStatus": "{model} · {status}",
"chat.statusRow.summary.activeLeft": "Активних: {active} · залишилось: {left}",
"chat.statusRow.aborted": "Перервано",
"chat.revertIndicator.redo": "Повторити",
@@ -1763,6 +1763,7 @@ export const dict: Record<I18nKey, string> = {
'chat.statusRow.todo.priority.low': '低优先级',
'chat.statusRow.actions.stopGeneratingAria': '停止生成',
'chat.statusRow.tasksTitle': '任务',
'chat.statusRow.modelStatus': '{model} · {status}',
'chat.statusRow.summary.activeLeft': '{active} 个活跃 · 剩余 {left} 个',
'chat.statusRow.aborted': '已中止',
'chat.revertIndicator.redo': '重做',
@@ -1767,6 +1767,7 @@ export const dict: Record<I18nKey, string> = {
'chat.statusRow.todo.priority.low': '低優先級',
'chat.statusRow.actions.stopGeneratingAria': '停止生成',
'chat.statusRow.tasksTitle': '任務',
'chat.statusRow.modelStatus': '{model} · {status}',
'chat.statusRow.summary.activeLeft': '{active} 個活躍 · 剩餘 {left} 個',
'chat.statusRow.aborted': '已中止',
'chat.revertIndicator.redo': '重做',