Keep focused agent timelines live and catch up instantly (#2196)

* fix(app): keep focused agent timelines live

Window focus was conflated with app visibility, so switching OS windows could remove the selected timeline subscription. Separate those signals, grace every visibility-driven removal, and cover retained history until authoritative catch-up completes.

* fix(app): keep timeline catch-up failures non-blocking

* fix(app): surface timeline catch-up failures

* fix(app): preserve file preview refocus

* fix(app): preserve optimistic catch-up flow
This commit is contained in:
Mohamed Boudra
2026-07-18 16:30:59 +02:00
committed by GitHub
parent fcaa84f0e4
commit 7917532716
26 changed files with 527 additions and 64 deletions
+1
View File
@@ -190,6 +190,7 @@ export const ar: TranslationResources = {
notFound: "لم يتم العثور على Agent",
failedToLoad: "فشل تحميل الوكيل",
reconnecting: "جارٍ إعادة الاتصال...",
timelineSyncFailed: "تعذر تحديث سجل الوكيل. جارٍ إعادة المحاولة…",
archivingTitle: "وكيل الارشيف...",
archivingSubtitle: "الرجاء الانتظار بينما نقوم بأرشفة هذا الوكيل.",
},
+1
View File
@@ -188,6 +188,7 @@ export const en = {
notFound: "Agent not found",
failedToLoad: "Failed to load agent",
reconnecting: "Reconnecting...",
timelineSyncFailed: "Couldn't refresh agent history. Retrying…",
archivingTitle: "Archiving agent...",
archivingSubtitle: "Please wait while we archive this agent.",
},
+1
View File
@@ -190,6 +190,7 @@ export const es: TranslationResources = {
notFound: "Agentno encontrado",
failedToLoad: "No se pudo cargar el agente",
reconnecting: "Reconectando...",
timelineSyncFailed: "No se pudo actualizar el historial del agente. Reintentando…",
archivingTitle: "Agente de archivo...",
archivingSubtitle: "Espere mientras archivamos este agente.",
},
+1
View File
@@ -191,6 +191,7 @@ export const fr: TranslationResources = {
notFound: "Agentintrouvable",
failedToLoad: "Échec du chargement de l'agent",
reconnecting: "Reconnexion...",
timelineSyncFailed: "Impossible d’actualiser l’historique de l’agent. Nouvelle tentative…",
archivingTitle: "Agent d'archivage...",
archivingSubtitle: "Veuillez patienter pendant que nous archivons cet agent.",
},
+1
View File
@@ -190,6 +190,7 @@ export const ja: TranslationResources = {
notFound: "エージェントが見つかりません",
failedToLoad: "エージェントの読み込みに失敗しました",
reconnecting: "再接続中...",
timelineSyncFailed: "エージェントの履歴を更新できませんでした。再試行しています…",
archivingTitle: "エージェントをアーカイブ中...",
archivingSubtitle: "このエージェントをアーカイブするまでお待ちください。",
},
+1
View File
@@ -190,6 +190,7 @@ export const ptBR: TranslationResources = {
notFound: "Agente não encontrado",
failedToLoad: "Falha ao carregar agente",
reconnecting: "Reconectando...",
timelineSyncFailed: "Não foi possível atualizar o histórico do agente. Tentando novamente…",
archivingTitle: "Arquivando agente...",
archivingSubtitle: "Aguarde enquanto arquivamos este agente.",
},
+1
View File
@@ -190,6 +190,7 @@ export const ru: TranslationResources = {
notFound: "Agent не найден",
failedToLoad: "Не удалось загрузить агент",
reconnecting: "Повторное подключение...",
timelineSyncFailed: "Не удалось обновить историю агента. Повторная попытка…",
archivingTitle: "Архивный агент...",
archivingSubtitle: "Пожалуйста, подождите, пока мы архивируем этого агента.",
},
+1
View File
@@ -190,6 +190,7 @@ export const zhCN: TranslationResources = {
notFound: "未找到 Agent",
failedToLoad: "加载 Agent 失败",
reconnecting: "正在重连...",
timelineSyncFailed: "无法刷新代理历史记录。正在重试…",
archivingTitle: "正在归档 Agent...",
archivingSubtitle: "请稍候,我们正在归档这个 Agent。",
},