diff --git a/scripts/control-ui-mock-background-tasks.ts b/scripts/control-ui-mock-background-tasks.ts index 8e0468b91447..05cb9d10e8bf 100644 --- a/scripts/control-ui-mock-background-tasks.ts +++ b/scripts/control-ui-mock-background-tasks.ts @@ -46,6 +46,29 @@ export function buildBackgroundTasksMock(baseTime: number) { lastToolName: "read", childSessionKey: taskSessionKey, }, + { + id: "task-mock-running-2", + taskId: "task-mock-running-2", + status: "running", + runtime: "subagent", + agentId: "openclaw-mock", + title: "Audit gateway event scope guards", + createdAt: now - 95_000, + startedAt: now - 95_000, + updatedAt: now - 1_000, + }, + ...[1, 2, 3, 4, 5].map((n) => ({ + id: `task-mock-finished-${n}`, + taskId: `task-mock-finished-${n}`, + status: n === 3 ? "failed" : "completed", + runtime: "subagent", + agentId: "openclaw-mock", + title: `Finished mock task number ${n} with a fairly long title`, + createdAt: now - n * 600_000, + startedAt: now - n * 600_000, + endedAt: now - n * 500_000, + updatedAt: now - n * 500_000, + })), ], }, }; diff --git a/ui/src/i18n/.i18n/ar.meta.json b/ui/src/i18n/.i18n/ar.meta.json index b1d23e64de13..8e429646ad1a 100644 --- a/ui/src/i18n/.i18n/ar.meta.json +++ b/ui/src/i18n/.i18n/ar.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:23.793Z", + "generatedAt": "2026-07-14T08:44:41.065Z", "locale": "ar", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ar.tm.jsonl b/ui/src/i18n/.i18n/ar.tm.jsonl index 7f4cc559a7b8..509ef58214ed 100644 --- a/ui/src/i18n/.i18n/ar.tm.jsonl +++ b/ui/src/i18n/.i18n/ar.tm.jsonl @@ -1694,6 +1694,7 @@ {"cache_key":"f403a8cccaaef7bf1c768ee9d9d974450942ac5789c8ae64aaaaf4ca51f8aa3b","model":"claude-sonnet-4-6","provider":"anthropic","segment_id":"cron.suggestions.ideas.watchdog.prompt","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Check that my services and gateway are healthy: scan recent logs for new errors, restarts, or unusual load. Reply with a single short all-clear line when everything is fine; if something looks broken, report what failed and where to start looking.","text_hash":"81c27753a3ba9ba3f5687e7b00bf943abdf2bf187ac0f2aed10136f5dc043aec","tgt_lang":"ar","translated":"تحقق من أن خدماتي و Gateway بصحة جيدة: افحص السجلات الأخيرة بحثاً عن أخطاء جديدة، أو إعادة تشغيل، أو حمل غير معتاد. أجب بسطر قصير واحد يفيد بأن كل شيء على ما يرام عندما يكون كذلك؛ وإذا بدا أن شيئاً معطلاً، أفد بما فشل وأين تبدأ البحث.","updated_at":"2026-07-11T22:59:32.634Z"} {"cache_key":"f44aace01ecddbcbc07a3ecd09837e5b6df1d2f55e59538ae47162940bd9ab79","model":"gpt-5.6-sol","provider":"openai","segment_id":"modelProviders.add.saved","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Provider {provider} added.","text_hash":"e5ddbd2d85055aa073b50d1bba07d4cf29cbd60520398f3da1d77e432f124f03","tgt_lang":"ar","translated":"تمت إضافة المزوّد {provider}.","updated_at":"2026-07-13T16:32:18.166Z"} {"cache_key":"f4822cf5776f0b67e4895bf2c3625ce775e8a3012b6833e69c162c2f63fd3afd","model":"gpt-5.6-sol","provider":"openai","segment_id":"configView.viewPendingChange","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"View {count} pending change","text_hash":"c4850cc53c216a4f10641b44ad9dd1b6a89bc9ffde5697b6cba6e9e76c1fe376","tgt_lang":"ar","translated":"عرض تغيير معلّق واحد من أصل {count}","updated_at":"2026-07-12T06:59:07.079Z"} +{"cache_key":"f491a016942ff6737b0b236e98d5ead24c0f8d932c0ffe1cca44c84c12078d61","model":"gpt-5.6-sol","provider":"openai","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"ar","translated":"+{count} أخرى","updated_at":"2026-07-12T06:59:23.240Z"} {"cache_key":"f49b25305df17d43d513ee2d7b88711e61dfb9eb3c69f9a91ebdf26944afd096","model":"gpt-5.5","provider":"openai","segment_id":"chat.composer.contextUsage.open","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Open context usage details","text_hash":"8765adde14aebe600e7c9c69196c5b4a9ccc654802a94626d0391d9eaed725b1","tgt_lang":"ar","translated":"فتح تفاصيل استخدام السياق","updated_at":"2026-07-05T10:16:14.365Z"} {"cache_key":"f4ac00d519c812ca6aee67bb3ff6737d6130e02187c343b6efa70733049645cb","model":"claude-opus-4-8","provider":"anthropic","segment_id":"workboard.unknownStatus","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Unknown","text_hash":"b764cdc0eab7137467211272fa539f1260d1bf2e71bcf6ff3bdc960f5c16aa14","tgt_lang":"ar","translated":"غير معروف","updated_at":"2026-06-16T14:15:34.787Z"} {"cache_key":"f4c1d2f3c85270540289f6aa90293ca0dc21f224a71ff3cf1ca07df6fc49c231","model":"gpt-5.5","provider":"openai","segment_id":"chat.pullRequests.merged","source_path":"ui/src/i18n/locales/ar.ts","src_lang":"en","text":"Merged","text_hash":"bd0a06202c440a9ee86f50165aa66886259d89c3d219e2ef47a759cde6a38c00","tgt_lang":"ar","translated":"مدمج","updated_at":"2026-07-10T17:04:04.784Z"} diff --git a/ui/src/i18n/.i18n/catalog-fallbacks.json b/ui/src/i18n/.i18n/catalog-fallbacks.json index 6fea79701039..ba6a75f84753 100644 --- a/ui/src/i18n/.i18n/catalog-fallbacks.json +++ b/ui/src/i18n/.i18n/catalog-fallbacks.json @@ -1,5 +1,5 @@ { "fallbacks": {}, - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", "version": 1 } diff --git a/ui/src/i18n/.i18n/de.meta.json b/ui/src/i18n/.i18n/de.meta.json index 95bad642497f..10f549c40d59 100644 --- a/ui/src/i18n/.i18n/de.meta.json +++ b/ui/src/i18n/.i18n/de.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:22.410Z", + "generatedAt": "2026-07-14T08:44:38.456Z", "locale": "de", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/de.tm.jsonl b/ui/src/i18n/.i18n/de.tm.jsonl index f5d4e32b2e8e..addad2597e32 100644 --- a/ui/src/i18n/.i18n/de.tm.jsonl +++ b/ui/src/i18n/.i18n/de.tm.jsonl @@ -649,6 +649,7 @@ {"cache_key":"5b0ab59138fd65f7f3a236db3c04458d74c99539c8ab736086c9637395c06d55","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.workspaceFiles.expand","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Expand session workspace","text_hash":"ac1d210db40c5026879774849ad74a9e1247523192a795ac33965b3ee72691c2","tgt_lang":"de","translated":"Sitzungsarbeitsbereich aufklappen","updated_at":"2026-06-16T14:12:59.821Z"} {"cache_key":"5b10a9b2d0200a0314dc1fb79a78bb54e14890c29f048505a180a17401d71a6c","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configView.secretCount","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"{count} secret","text_hash":"0e6d25bb2eb2d8b98f478224b4330f249de6465d2c06a012c51575b3dd56cb6b","tgt_lang":"de","translated":"{count} Geheimnis","updated_at":"2026-07-12T06:27:28.099Z"} {"cache_key":"5b18396bb0c5597ea061c3d0fa03c2952dd5d6c7ef810eec6285449ba62e5840","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.sideChat.close","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Close side chat","text_hash":"2a1484f044f8f6a1108e2eaaf52849239fa7317678c770fc392907a9a45e6570","tgt_lang":"de","translated":"Seitenchat schließen","updated_at":"2026-07-12T06:29:30.665Z"} +{"cache_key":"5b1f05260942110f7fa00dd79ca5c78f3bac40b6874d2949229f063577741f14","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"de","translated":"+{count} weitere","updated_at":"2026-07-12T06:27:47.285Z"} {"cache_key":"5b7965dfd48f4c45f15c3ffbe32367b3eb183bf5058a6b38f1a8a9b55fa2c2e8","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.detailPanel.discard","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Discard","text_hash":"eb1a70e39274bb762b5d7c1adb5debeea2b05e12af28207f21a375b596853273","tgt_lang":"de","translated":"Verwerfen","updated_at":"2026-07-12T06:29:30.665Z"} {"cache_key":"5ba3b2fdc5d07dd3ae310f313f0e1753668ff9f34605e34af0abb0ae3da112a1","model":"gpt-5.5","provider":"openai","segment_id":"codexSessions.sidebar.viewAll","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"View all Codex sessions","text_hash":"0646a48bff46e85a2e25fccd3c8b7aeb7ba9136870564c1cfe66da32d8e494ff","tgt_lang":"de","translated":"Alle Codex-Sitzungen anzeigen","updated_at":"2026-07-11T10:24:46.061Z"} {"cache_key":"5bfb68ecba459d574c0393241dc1ff639e34d1cb0da65740570d921a3a230c3a","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.toolCatalog.groups.runtime","source_path":"ui/src/i18n/locales/de.ts","src_lang":"en","text":"Runtime","text_hash":"1093115897879aa3ad9511a1dc2850929cfb60ba45ec741605f69f5d20203472","tgt_lang":"de","translated":"Laufzeit","updated_at":"2026-07-12T06:25:43.020Z"} diff --git a/ui/src/i18n/.i18n/es.meta.json b/ui/src/i18n/.i18n/es.meta.json index fe57812fe583..2251fe711846 100644 --- a/ui/src/i18n/.i18n/es.meta.json +++ b/ui/src/i18n/.i18n/es.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:22.632Z", + "generatedAt": "2026-07-14T08:44:38.882Z", "locale": "es", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/es.tm.jsonl b/ui/src/i18n/.i18n/es.tm.jsonl index 21ef700569f1..b19876d6d36d 100644 --- a/ui/src/i18n/.i18n/es.tm.jsonl +++ b/ui/src/i18n/.i18n/es.tm.jsonl @@ -864,6 +864,7 @@ {"cache_key":"753a5f5b7726788c8cde59c97d2ab04de0efd39772cf386a610ed42a5a9b0eaf","model":"gpt-5","provider":"openai","segment_id":"claudeSessions.loadMore","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Load more","text_hash":"ac8991ef01019cf55a2426194a05959e0cb886333f1a332ff4f442320d165400","tgt_lang":"es","translated":"Cargar más","updated_at":"2026-07-09T10:01:43.721Z"} {"cache_key":"75410af1327b1761d347bdda49c087b62dc7a1566a59a4d13ec581d28b1fd5e7","model":"gpt-5.5","provider":"openai","segment_id":"worktrees.lastActive","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Last active","text_hash":"bcdf701c4dfbaee3a2162f9b9affd87a23a13426c391f95e964d983851b58a05","tgt_lang":"es","translated":"Última actividad","updated_at":"2026-07-05T21:00:41.074Z"} {"cache_key":"754fb0d4b62e0e4c86bf28754b0f80070018b0cac8e4150f996afd10af34af88","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.detail.clickToPreview","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"· click to preview","text_hash":"e7122b28694c3a1928054e15e27f203aaae8d00f9c34ae04dedad01d8b652fb2","tgt_lang":"es","translated":"· haz clic para previsualizar","updated_at":"2026-07-12T06:34:29.611Z"} +{"cache_key":"75d33a2233e190e4403d41cb7d29ce41aa125f8914decd430a78bd2b03e6c6e1","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"es","translated":"+{count} más","updated_at":"2026-07-12T06:33:39.673Z"} {"cache_key":"767ae24de02ebb17a5b498760a677c7b3694775e9596bdddaf3065f88e2d3e0e","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.toolCatalog.groups.runtime","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Runtime","text_hash":"1093115897879aa3ad9511a1dc2850929cfb60ba45ec741605f69f5d20203472","tgt_lang":"es","translated":"Entorno de ejecución","updated_at":"2026-07-12T06:31:55.983Z"} {"cache_key":"76af8a08c677eb76940779b68a532406252d95d69a7c89b01c82786e48d99f4c","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.commands.fill","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"fill","text_hash":"dcd32479a72e55b29a03a586d8a483a05be0ce87cc5c25c7bad23079fc0356b3","tgt_lang":"es","translated":"rellenar","updated_at":"2026-07-12T06:35:10.787Z"} {"cache_key":"76b540f6b811c94c53486c77b3eb80c4426ab7deb04960346f33117492f9658a","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agentTools.loadConfig","source_path":"ui/src/i18n/locales/es.ts","src_lang":"en","text":"Load the gateway config to adjust tool profiles.","text_hash":"0e9291ef2bab7a6a96376087b37d281a973319e0c5b893360b67cf5681d8c863","tgt_lang":"es","translated":"Carga la configuración del gateway para ajustar los perfiles de herramientas.","updated_at":"2026-07-12T06:33:33.671Z"} diff --git a/ui/src/i18n/.i18n/fa.meta.json b/ui/src/i18n/.i18n/fa.meta.json index e39e49528137..2eeedbc04216 100644 --- a/ui/src/i18n/.i18n/fa.meta.json +++ b/ui/src/i18n/.i18n/fa.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:26.027Z", + "generatedAt": "2026-07-14T08:44:45.178Z", "locale": "fa", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fa.tm.jsonl b/ui/src/i18n/.i18n/fa.tm.jsonl index a89b58f6e97a..2d613289b86e 100644 --- a/ui/src/i18n/.i18n/fa.tm.jsonl +++ b/ui/src/i18n/.i18n/fa.tm.jsonl @@ -1445,6 +1445,7 @@ {"cache_key":"d249459b07714a3fed8c372f3c34f44ae6913d237e7cc038d6331c957cbe6c06","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.overview.fallbacks","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Fallbacks","text_hash":"7a508ceac71e07fa7d38ec2ef91c387e4a47d65c7edd799b8e70b15e9cda579d","tgt_lang":"fa","translated":"جایگزین‌ها","updated_at":"2026-07-12T06:53:17.312Z"} {"cache_key":"d26497e841d86df0c24bb71aa610a5ca3ed3a03f7ad7158ffd48091e5f15aec5","model":"gpt-5.5","provider":"openai","segment_id":"workboard.badgeAttachments","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"{count} attachments","text_hash":"7bb1847693bc91e6e4624d996a96840396a71052786ab143ccb47fbdaa77cf41","tgt_lang":"fa","translated":"{count} پیوست","updated_at":"2026-05-30T15:38:53.293Z"} {"cache_key":"d2cf99c3bc3afa18c2f65798dfc85d91d8aaad8fb13c8502f2cae27edaec0485","model":"gpt-5.6-sol","provider":"openai","segment_id":"agentScope.allAgents","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"All agents","text_hash":"54c32d3e2cfa1cc879f746643e6b41360541692fc0a163f3793595510398e6f5","tgt_lang":"fa","translated":"همه عامل‌ها","updated_at":"2026-07-13T11:01:33.963Z"} +{"cache_key":"d2d01dc1264c175214882254a81cac25c59e36624c0d4d60b3e3d52df7f0cf49","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"fa","translated":"+{count} مورد دیگر","updated_at":"2026-07-12T06:56:19.156Z"} {"cache_key":"d36522949d6d08c2be1066e5a170756fdefb5f1a68da3e109583a2ef00fce803","model":"claude-opus-4-8","provider":"anthropic","segment_id":"cron.actions.remove","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Remove","text_hash":"c3812fc4acb861d5182fc2b8155f327f736fbe5e5eb86a7bd7afcb6dc5497282","tgt_lang":"fa","translated":"حذف","updated_at":"2026-07-12T06:59:42.434Z"} {"cache_key":"d370a07271724bff0901ca59a3a83a61be009a06ea72974d88871d536511a5b6","model":"claude-opus-4-8","provider":"anthropic","segment_id":"mcpPage.parallel","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"parallel","text_hash":"83a00300ad6a2502c3fd8f04f50b47f5ce60496614534ebf6bf9fc85c85e1b0d","tgt_lang":"fa","translated":"موازی","updated_at":"2026-07-12T06:56:55.723Z"} {"cache_key":"d378ba71193e340b3bec7cfd67bd837a159cc83eac71e96ffef79b1f60f52786","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.revision.placeholder","source_path":"ui/src/i18n/locales/fa.ts","src_lang":"en","text":"Example: Make this use Gmail labels instead of unread search, and add a safer dry-run step.","text_hash":"7edb7073a0feb0a4c7077e287eec6b05ceea500e1d0ed452b274c211562042ec","tgt_lang":"fa","translated":"مثال: این را به‌جای جستجوی خوانده‌نشده از برچسب‌های Gmail استفاده کن، و یک مرحله اجرای آزمایشی امن‌تر اضافه کن.","updated_at":"2026-07-12T06:57:42.109Z"} diff --git a/ui/src/i18n/.i18n/fr.meta.json b/ui/src/i18n/.i18n/fr.meta.json index 5a01bdb0968a..778f6323c182 100644 --- a/ui/src/i18n/.i18n/fr.meta.json +++ b/ui/src/i18n/.i18n/fr.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:23.308Z", + "generatedAt": "2026-07-14T08:44:40.147Z", "locale": "fr", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fr.tm.jsonl b/ui/src/i18n/.i18n/fr.tm.jsonl index 54533b7bf989..6b41017e013b 100644 --- a/ui/src/i18n/.i18n/fr.tm.jsonl +++ b/ui/src/i18n/.i18n/fr.tm.jsonl @@ -1025,6 +1025,7 @@ {"cache_key":"8fbe3ddaee1855b6f3532db5de8e15561946607e558f67713b5d697ef238891e","model":"gpt-5.5","provider":"openai","segment_id":"subtitles.tasks","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Background tasks: subagents, cron runs, CLI.","text_hash":"86b1cdd143e0bee775431403456aa967dad1c7f0a952e10200c332d8ba382d35","tgt_lang":"fr","translated":"Tâches en arrière-plan : sous-agents, exécutions cron, CLI.","updated_at":"2026-07-06T08:42:28.841Z"} {"cache_key":"9011fdf2adf6bd93b6a660abc0f27d3b089c8772bc7135f9ff8b2d173e505ced","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configPage.channels.whatsapp","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"WhatsApp","text_hash":"6a40edf1fc87a29f243a7eefdbed57d19bfe16ab2e039d7ae1a44c097297e2f3","tgt_lang":"fr","translated":"WhatsApp","updated_at":"2026-07-12T06:33:38.128Z"} {"cache_key":"901f87ed7e72269c4f671b54f3e134f1fb90be7ed60221ef7c5fe7b4afcd1629","model":"claude-opus-4-8","provider":"anthropic","segment_id":"dreaming.wiki.openSourcePage","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Open source page","text_hash":"adceca1a6bf7fd8414cfd2d97781d11393693b85e108d57998c6c7a90b861191","tgt_lang":"fr","translated":"Ouvrir la page source","updated_at":"2026-07-12T06:35:45.465Z"} +{"cache_key":"904b11824c22e7e3d847dbb96735079bee602762f15714fddaf36f91bb357407","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"fr","translated":"+{count} de plus","updated_at":"2026-07-12T06:32:07.279Z"} {"cache_key":"9068ef1cd848bb0016a8e3a341f8dd37af78709f58df78f531af608e6f0a4f82","model":"gpt-5.6-sol","provider":"openai","segment_id":"modelProviders.notes.removeKey","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Remove API key for {provider} from Control UI","text_hash":"bec2c63b5f26f0dcc7a9d366736e31adab5e4550dfacf236c08f260c39831aee","tgt_lang":"fr","translated":"Supprimer la clé API pour {provider} depuis la Control UI","updated_at":"2026-07-13T16:31:59.089Z"} {"cache_key":"907b09795789cf241ab4c1f560071c47dca23b82e4753a7a236f92801226603e","model":"gpt-5.5","provider":"openai","segment_id":"sessionsView.pinned","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Pinned","text_hash":"f20c879465551f0d1457a13d4390d0f1ece456b115d75463169c5d55341b9b1e","tgt_lang":"fr","translated":"Épinglée","updated_at":"2026-07-02T14:30:13.470Z"} {"cache_key":"9081304fdf85ba875f2c56817d0143370a9baefc005fd5eb72d3d4428ca052f9","model":"gpt-5.5","provider":"openai","segment_id":"chat.pullRequests.checksPassed","source_path":"ui/src/i18n/locales/fr.ts","src_lang":"en","text":"Passed","text_hash":"436fe71bb9561f0596161c4d50c7b23327b4189acaf63dc89f4f9205b67a7528","tgt_lang":"fr","translated":"Réussies","updated_at":"2026-07-10T16:20:01.450Z"} diff --git a/ui/src/i18n/.i18n/hi.meta.json b/ui/src/i18n/.i18n/hi.meta.json index 4b5863cf35c9..f8b7907e44fa 100644 --- a/ui/src/i18n/.i18n/hi.meta.json +++ b/ui/src/i18n/.i18n/hi.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:23.547Z", + "generatedAt": "2026-07-14T08:44:40.625Z", "locale": "hi", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/hi.tm.jsonl b/ui/src/i18n/.i18n/hi.tm.jsonl index d8963b93e3e0..9083e48e805a 100644 --- a/ui/src/i18n/.i18n/hi.tm.jsonl +++ b/ui/src/i18n/.i18n/hi.tm.jsonl @@ -1429,6 +1429,7 @@ {"cache_key":"718ccb58f6ef97f10a48761d6e4e23cc1953978bc0ae304da2294d9255010a0d","model":"gpt-5.5","provider":"openai","segment_id":"workboard.detailNotePlaceholder","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"Add a decision, blocker, or proof note...","text_hash":"0e40ea8371be2fcbd8379458b0da541ca0dce5dc86357dea64a4d8fac1c742dc","tgt_lang":"hi","translated":"निर्णय, अवरोधक, या प्रमाण नोट जोड़ें...","updated_at":"2026-06-26T21:32:11.358Z"} {"cache_key":"7201c54121eb72d2b7120920d6915e5c243c3ab47affbfff74b3bf045f3c9b4a","model":"gpt-5.5","provider":"openai","segment_id":"workboard.taskStatus.cancelled","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"Task cancelled","text_hash":"1a7f1e13e7ad3ebeb832eeec64ef238c4ce3eb8d74df61aa0ef575835570cc05","tgt_lang":"hi","translated":"कार्य रद्द किया गया","updated_at":"2026-06-26T21:33:00.304Z"} {"cache_key":"72028647b44b938dd3c3a47c33eb98369359dcbd051836a07dbb0b902014390c","model":"gpt-5","provider":"openai","segment_id":"codexSessions.untitled","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"Untitled Codex session","text_hash":"c70b89c47992206d82993f9d295c9d3368a993fbc0899eef1bafb25277e5c88d","tgt_lang":"hi","translated":"बिना शीर्षक वाला Codex सेशन","updated_at":"2026-07-09T10:01:43.755Z"} +{"cache_key":"7205748bd80ec00a97c8ed286ae6d47d568ed7a87d7bcf2d66361abf045b653e","model":"gpt-5.5","provider":"openai","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"hi","translated":"+{count} और","updated_at":"2026-06-26T21:35:20.292Z"} {"cache_key":"721d31e2c0929afd42ee138a26fca55aac6d9a1feb8f8464638986ec39532083","model":"gpt-5.5","provider":"openai","segment_id":"usage.presets.last7d","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"7d","text_hash":"a7c742643c7cc56cde61922fb5e8d3548a30b717e8e8b38bc5ec903f2c0be6d2","tgt_lang":"hi","translated":"7d","updated_at":"2026-06-26T21:34:31.303Z"} {"cache_key":"722d1c060a41e12f2a041d594d463846a830e0900ac0c74e2a27e71160146cc5","model":"gpt-5.5","provider":"openai","segment_id":"cron.form.minutes","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"Minutes","text_hash":"4f846a84e7fc9ef6e68468c270c9153c20204641bd7b839ad4b8e5233e1c86d0","tgt_lang":"hi","translated":"मिनट","updated_at":"2026-06-26T21:37:38.564Z"} {"cache_key":"72433321e68e6184d42645d962c80eab5a7a33fdcaaef29e844eea0f6ea07ca2","model":"gpt-5.5","provider":"openai","segment_id":"usage.details.collapseAll","source_path":"ui/src/i18n/locales/hi.ts","src_lang":"en","text":"Collapse All","text_hash":"55988e28a4e8720a588c5c53fd47616d929a404d3d2af7e6f8ba313dce6dc3e4","tgt_lang":"hi","translated":"सभी संक्षिप्त करें","updated_at":"2026-06-26T21:35:26.182Z"} diff --git a/ui/src/i18n/.i18n/id.meta.json b/ui/src/i18n/.i18n/id.meta.json index cafc25dc354a..13d0c2d3028f 100644 --- a/ui/src/i18n/.i18n/id.meta.json +++ b/ui/src/i18n/.i18n/id.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:24.718Z", + "generatedAt": "2026-07-14T08:44:43.018Z", "locale": "id", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/id.tm.jsonl b/ui/src/i18n/.i18n/id.tm.jsonl index ef3ce1836115..cc0675807599 100644 --- a/ui/src/i18n/.i18n/id.tm.jsonl +++ b/ui/src/i18n/.i18n/id.tm.jsonl @@ -619,6 +619,7 @@ {"cache_key":"5bac50a3984a3f5c33d7a38a9ad3acff5062c14376a0e7b93d89bc86669ec757","model":"claude-opus-4-8","provider":"anthropic","segment_id":"pluginsPage.connectorDescriptions.github","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"PR review queues, issue triage, and repo Q&A through the official GitHub MCP.","text_hash":"56ac30344e3daa6df914513e72ae6a4b2043974ae3fa1c003388536d5635e3d1","tgt_lang":"id","translated":"Antrean tinjauan PR, triase isu, dan tanya jawab repo melalui MCP GitHub resmi.","updated_at":"2026-07-12T06:48:01.260Z"} {"cache_key":"5baecf2bfca99c5cb9e9cb2c42d7cdbbcd5be85559579d95e2fea8c94fb21504","model":"gpt-5.6-sol","provider":"openai","segment_id":"cron.form.summaryCron","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Cron schedule {expr}","text_hash":"953e6a80deb2a7c7fd3a8a29e4c363baa92bc4df48ae58ac0c7dafee554fd510","tgt_lang":"id","translated":"Jadwal Cron {expr}","updated_at":"2026-07-12T09:22:20.313Z"} {"cache_key":"5bdd3a4f3266fa546320e8fb9785c9ab4804675fcc13d993fdfa4fb1caf36fbb","model":"gpt-5.5","provider":"openai","segment_id":"newSession.worktreeNamePlaceholder","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"auto","text_hash":"929260ad9b9ea9fe0f3553dd964f4ff3deb5792efd031a2b90f573fe91f012bb","tgt_lang":"id","translated":"otomatis","updated_at":"2026-07-10T15:21:37.072Z"} +{"cache_key":"5c0dd32207ef1853b9900958aa8d6837cd560de3278938ea0c55c573bac48cd1","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"id","translated":"+{count} lainnya","updated_at":"2026-07-12T06:44:55.794Z"} {"cache_key":"5c196176bd1822141e221eaded7d505337799478a7633ae23da4228c19cf8a83","model":"claude-opus-4-8","provider":"anthropic","segment_id":"nodes.inventory.active","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"active","text_hash":"96879611650f80a81392a52e0db9b0237669087c4518e1c130e541a505e0eeef","tgt_lang":"id","translated":"aktif","updated_at":"2026-07-12T06:45:01.302Z"} {"cache_key":"5c493b810458baca1f3fc54dc4f81c67a883f82b50dd039e9bbc1b7cc3b0be0c","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.compaction.description","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"The compacted transcript is preserved as a checkpoint. Open session checkpoints to branch or restore from that compacted view.","text_hash":"97c8fdc1029344f0bf90f8df9ca40048596738ef54806c3b903b44d823e1d03e","tgt_lang":"id","translated":"Transkrip yang dipadatkan disimpan sebagai checkpoint. Buka checkpoint sesi untuk membuat cabang atau memulihkan dari tampilan yang dipadatkan tersebut.","updated_at":"2026-07-12T06:49:01.783Z"} {"cache_key":"5c54ae0e95e5d4c4d546795e9e6d91a8a18ef2beda212fd6230376084e5321c1","model":"claude-opus-4-8","provider":"anthropic","segment_id":"quickSettings.personal.assistantIdentity","source_path":"ui/src/i18n/locales/id.ts","src_lang":"en","text":"Assistant identity","text_hash":"a9335181b681b52ae4ab368b9c52b0ad6a0ec6f809f3dc33de3df596d1361569","tgt_lang":"id","translated":"Identitas assistant","updated_at":"2026-07-12T06:46:23.208Z"} diff --git a/ui/src/i18n/.i18n/it.meta.json b/ui/src/i18n/.i18n/it.meta.json index cd407736a7bb..66decbd41773 100644 --- a/ui/src/i18n/.i18n/it.meta.json +++ b/ui/src/i18n/.i18n/it.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:24.028Z", + "generatedAt": "2026-07-14T08:44:41.556Z", "locale": "it", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/it.tm.jsonl b/ui/src/i18n/.i18n/it.tm.jsonl index 88e63373afde..11460ca38add 100644 --- a/ui/src/i18n/.i18n/it.tm.jsonl +++ b/ui/src/i18n/.i18n/it.tm.jsonl @@ -841,6 +841,7 @@ {"cache_key":"7af254caf9222bf3b3e7607f3904fda0b2da5432743ab068b817f6cec54cb47b","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.overview.fallbacks","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Fallbacks","text_hash":"7a508ceac71e07fa7d38ec2ef91c387e4a47d65c7edd799b8e70b15e9cda579d","tgt_lang":"it","translated":"Fallback","updated_at":"2026-07-12T06:38:27.421Z"} {"cache_key":"7b143d96aec7379d4c469825d69aa98455ab5fec717afc4f8bf7d56295e9b9cf","model":"gpt-5.6-sol","provider":"openai","segment_id":"cron.runs.emptyTitle","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"No runs yet","text_hash":"306b45db20163464c2774564e0d61aaabdcf961067fcddb3a14cbc29e65fd0f7","tgt_lang":"it","translated":"Ancora nessuna esecuzione","updated_at":"2026-07-12T08:38:10.855Z"} {"cache_key":"7b236a6bd4776b29f6b6b45bc52e9c1aa80e823f19ed29406ec9f2c3b4405edb","model":"claude-opus-4-8","provider":"anthropic","segment_id":"cron.form.repeat","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Repeat","text_hash":"b6b7a0065808a62e7d5781b356c5ddba4e000433c34b5d561d200158a4443eb1","tgt_lang":"it","translated":"Ripeti","updated_at":"2026-07-12T06:42:36.545Z"} +{"cache_key":"7b43f12af553cdce453d2ac51f2055f728a3ae778e47843b0bfc1b94e4b1ad82","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"it","translated":"+{count} altri","updated_at":"2026-07-12T06:40:25.148Z"} {"cache_key":"7b474b2776a04ee47f22d88c9d4dee21367526f9fd4f8d9208ae1251ababb5a9","model":"gpt-5.6-sol","provider":"openai","segment_id":"chat.progressLabels.pearling","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Pearling","text_hash":"f9777b12e8f49df274c843c278ce466de6991d5f57b954686bd8fc2ebeed314d","tgt_lang":"it","translated":"Perlando","updated_at":"2026-07-14T04:54:09.261Z"} {"cache_key":"7b54485c9bc6e8ba66776c143833409ce15bb393a7d3d1dc67b1762cd9fdfedf","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configView.sections.broadcast","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Broadcast","text_hash":"17bc9178343601795dbd6d0e4328dcade21e406e6514640250c79ac9317ee81a","tgt_lang":"it","translated":"Broadcast","updated_at":"2026-07-12T06:39:43.229Z"} {"cache_key":"7b69d6ec9d622eb0427cec231db772635508b697987b21d2de1130d8dde27db8","model":"claude-opus-4-8","provider":"anthropic","segment_id":"dreaming.wiki.pageDetails","source_path":"ui/src/i18n/locales/it.ts","src_lang":"en","text":"Page details","text_hash":"86bbe3b1127c4076f48948f6a5a526db2d32efdef1f116d951b8f790dbb811b9","tgt_lang":"it","translated":"Dettagli pagina","updated_at":"2026-07-12T06:42:00.950Z"} diff --git a/ui/src/i18n/.i18n/ja-JP.meta.json b/ui/src/i18n/.i18n/ja-JP.meta.json index e99d81f7d1eb..6fcbde6a9a88 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-07-14T05:17:22.856Z", + "generatedAt": "2026-07-14T08:44:39.294Z", "locale": "ja-JP", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ja-JP.tm.jsonl b/ui/src/i18n/.i18n/ja-JP.tm.jsonl index dbbf2dd67eb7..a16c0c57bc82 100644 --- a/ui/src/i18n/.i18n/ja-JP.tm.jsonl +++ b/ui/src/i18n/.i18n/ja-JP.tm.jsonl @@ -1556,6 +1556,7 @@ {"cache_key":"eb472182ec7521d199f725fd4e9c83a9ef7eb91bb34f851cc046c05a225969ab","model":"claude-opus-4-8","provider":"anthropic","segment_id":"dreaming.wiki.pageDetails","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Page details","text_hash":"86bbe3b1127c4076f48948f6a5a526db2d32efdef1f116d951b8f790dbb811b9","tgt_lang":"ja-JP","translated":"ページの詳細","updated_at":"2026-07-12T06:35:46.041Z"} {"cache_key":"eb68742ac7bd103bbee1f3eb52966f3fe3ff11975fbdbe78f29fd12056ac36da","model":"claude-opus-4-8","provider":"anthropic","segment_id":"quickSettings.appearance.themes.claw","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Claw","text_hash":"587cfbbbcd42a71ba7f33f8051d5c354707fa1ff227cab11452c3ba2147a8682","tgt_lang":"ja-JP","translated":"Claw","updated_at":"2026-07-12T06:32:58.919Z"} {"cache_key":"eb88685affb39067dbaf9ed8c5515d447f11328c3ef7396c752521ad0e8e05c4","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.empty.searchTitle","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"No matching proposals","text_hash":"234a276112b9461d57c89b98e3fb75e83958d3ed2df5143927db7c77e99ff209","tgt_lang":"ja-JP","translated":"一致する提案はありません","updated_at":"2026-07-12T06:35:04.039Z"} +{"cache_key":"eb8a13af5e4fc9bc4ae97b3ddfa48467c5819beb15e863b3d2ea8e12abda9126","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"ja-JP","translated":"+{count}件","updated_at":"2026-07-12T06:31:38.844Z"} {"cache_key":"eb8f78b67d3fcf8dd4e5b7ab019294f8920b2d84a05c4a3ebdfb8f93fe82b167","model":"claude-opus-4-8","provider":"anthropic","segment_id":"quickSettings.personal.avatarPlaceholder","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"JD or 🦞","text_hash":"0c8423364cee2ff9cfdda023eae04fb8f75f3be33eb2ea07cd9aa9b720e7a5fd","tgt_lang":"ja-JP","translated":"JD または 🦞","updated_at":"2026-07-12T06:33:11.331Z"} {"cache_key":"eb9f2456f3b345830ced22648b81b7bb3a0e8bc2d977f92c77c485c35fe90394","model":"claude-opus-4-8","provider":"anthropic","segment_id":"pluginsPage.connectorDescriptions.grafana","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Grafana know-how and community connectors for dashboards and alerts.","text_hash":"5e33b161935bee02bb2a242d88518dcf5cee29ce9898e6176189e5af51c099b6","tgt_lang":"ja-JP","translated":"ダッシュボードとアラートのためのGrafanaのノウハウとコミュニティコネクタ。","updated_at":"2026-07-12T06:34:51.337Z"} {"cache_key":"eba3b0f8128b91b14850c25d626a6997c16d0ebee07b899c49d6cf898d8f1f5f","model":"claude-opus-4-8","provider":"anthropic","segment_id":"workboard.viewRecentlyDone","source_path":"ui/src/i18n/locales/ja-JP.ts","src_lang":"en","text":"Recently done","text_hash":"46b889592a2f5e79197f62b5f96c76993545626bf207740ea58632ceed9623be","tgt_lang":"ja-JP","translated":"最近完了","updated_at":"2026-06-17T14:14:04.173Z"} diff --git a/ui/src/i18n/.i18n/ko.meta.json b/ui/src/i18n/.i18n/ko.meta.json index 82e8bf537727..40837106d0f7 100644 --- a/ui/src/i18n/.i18n/ko.meta.json +++ b/ui/src/i18n/.i18n/ko.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:23.079Z", + "generatedAt": "2026-07-14T08:44:39.709Z", "locale": "ko", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ko.tm.jsonl b/ui/src/i18n/.i18n/ko.tm.jsonl index 6e3ceeaeb0e2..7f310bae6614 100644 --- a/ui/src/i18n/.i18n/ko.tm.jsonl +++ b/ui/src/i18n/.i18n/ko.tm.jsonl @@ -573,6 +573,7 @@ {"cache_key":"55dc7975a66e560e42b8c1a69dc431391abbc44dd3a666ec8e7d71f3f16dabba","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.messages.deleteMessage","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Delete message","text_hash":"87e7176a7ce700af0c4afe34a922d1401eec9611ffc5a99bdbf032e8654c2e9b","tgt_lang":"ko","translated":"메시지 삭제","updated_at":"2026-07-12T06:36:13.954Z"} {"cache_key":"566503efa262a223d812e4c7cd93affe462c6d5aca8d7e9d2c2c1fff2ba67d97","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configForm.sections.meta.label","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Metadata","text_hash":"9eddf573cb509f1f62df633e25c052ac1b2a0ff9241e70223c77c73e834c0045","tgt_lang":"ko","translated":"메타데이터","updated_at":"2026-07-12T06:32:58.583Z"} {"cache_key":"5680c05711535d47eb28edea6b83ae99c449a0ace312d6d1b7a75f03a868b4fd","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.queue.noStatus","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"No {status} proposals.","text_hash":"544c678efbbaddc044e6193554b36e1ca8c8a6d688cdfecba0fb78ffa12c07c7","tgt_lang":"ko","translated":"{status} 제안이 없습니다.","updated_at":"2026-07-12T06:35:19.851Z"} +{"cache_key":"568d41123a62b8fd7f3ee7901d91dc599972719ae182eaac7ef7a2d1fc8a764f","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"ko","translated":"+{count}개 더보기","updated_at":"2026-07-12T06:31:59.316Z"} {"cache_key":"569bd0c791ef788bf7eb55d2f8215c2b2229b495b75436a39423f2a8c775bf74","model":"claude-opus-4-8","provider":"anthropic","segment_id":"nodes.execApprovals.native","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Native","text_hash":"d509e493885298a23c55f83c133e5d725f24dd6cc67cf734baa2c11b220ab809","tgt_lang":"ko","translated":"네이티브","updated_at":"2026-07-12T06:32:06.418Z"} {"cache_key":"56be37c3e44a0b1334d627212fddd5d277864f5d51c2e7e208742177655e2807","model":"gpt-5.5","provider":"openai","segment_id":"browser.title","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Browser","text_hash":"d31de1a5c5c8ba2a210a167cf0d0dc2425c57ea7525f4b73a4b7ab934af79dfc","tgt_lang":"ko","translated":"브라우저","updated_at":"2026-07-11T02:18:07.814Z"} {"cache_key":"576cbf7a2f4e7f7b3dff70872c663dcc38eac2a10893d2ca7fca500bc30741a0","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.skillsPanel.loadAgent","source_path":"ui/src/i18n/locales/ko.ts","src_lang":"en","text":"Load skills for this agent to view workspace-specific entries.","text_hash":"8071e15c0be9eb4b50a191485fa0537d85f7c834d61224dd4321140c438cc94b","tgt_lang":"ko","translated":"워크스페이스별 항목을 보려면 이 에이전트의 스킬을 로드하세요.","updated_at":"2026-07-12T06:32:38.783Z"} diff --git a/ui/src/i18n/.i18n/nl.meta.json b/ui/src/i18n/.i18n/nl.meta.json index 0f4f2f71f085..791ebc031a5f 100644 --- a/ui/src/i18n/.i18n/nl.meta.json +++ b/ui/src/i18n/.i18n/nl.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:25.782Z", + "generatedAt": "2026-07-14T08:44:44.754Z", "locale": "nl", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/nl.tm.jsonl b/ui/src/i18n/.i18n/nl.tm.jsonl index a6f81199a363..70eed8faba9f 100644 --- a/ui/src/i18n/.i18n/nl.tm.jsonl +++ b/ui/src/i18n/.i18n/nl.tm.jsonl @@ -394,6 +394,7 @@ {"cache_key":"340d741dad02479420f25da0620b522a94aa632e4860053c07c41bf5232d5e9a","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configView.notifications.permission","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Permission","text_hash":"229efc8f526335f103d962810fe99f785811ad8ed36b9437a4a215a44c7152fe","tgt_lang":"nl","translated":"Toestemming","updated_at":"2026-07-12T06:54:02.978Z"} {"cache_key":"343691fec3a5dc9c8cd0a0e84f07d5a4456995761893fecaebe0d3876970b717","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configView.notifications.unsupported","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Unsupported","text_hash":"54324658e2eba91c826cb01a802414559c8b8b713b28b4df68cd5075611cf1b5","tgt_lang":"nl","translated":"Niet ondersteund","updated_at":"2026-07-12T06:54:02.978Z"} {"cache_key":"3478636ffa72eb2b659e59e4777598b52a8413c12599eeffa8ac74953592d5e8","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.detailPanel.nextMatch","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Next match","text_hash":"825e5abd0762be6e7083ca449c61fc73862d150d429cc9351b8cfae2a05cecc8","tgt_lang":"nl","translated":"Volgende overeenkomst","updated_at":"2026-07-12T06:56:31.300Z"} +{"cache_key":"3483f4bddc15063b0d8a3b45a0b6aecf49f46c4371bd43a33e8fba3f7d805861","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"nl","translated":"+{count} meer","updated_at":"2026-07-12T06:52:09.077Z"} {"cache_key":"3513fef39a494243567d645afea2afcf96776c05fab9e17fc8af5a9709ed8ed8","model":"gpt-5.5","provider":"openai","segment_id":"browser.inspectHint","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Hover to inspect; click to send the element to your chat.","text_hash":"eee42900227737c5b30d3497a2ea7831e46f089ca301e9ebcf301c985f96b1d2","tgt_lang":"nl","translated":"Beweeg de cursor om te inspecteren; klik om het element naar je chat te sturen.","updated_at":"2026-07-11T02:20:09.408Z"} {"cache_key":"351ec3a0ed83418733b604485126dd13e7d1cda406a5fc69ee9143024dd18253","model":"claude-opus-4-8","provider":"anthropic","segment_id":"dreaming.wiki.emptyPalaceHint","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Right now the wiki mostly has raw source imports and operational reports. This tab becomes useful once syntheses, entities, or concepts start getting written.","text_hash":"6ef1b621950befbe7531888ec6aa549260423c4d5601d99e936f6bdcf46b69d1","tgt_lang":"nl","translated":"Op dit moment bevat de wiki vooral ruwe bronimports en operationele rapporten. Dit tabblad wordt nuttig zodra syntheses, entiteiten of concepten worden geschreven.","updated_at":"2026-07-12T06:56:11.457Z"} {"cache_key":"3542fda0c59a5e6a89e0827df3d5e1de2b9c3dded04f848e68518babc82552a1","model":"gpt-5.5","provider":"openai","segment_id":"chat.welcome.recentSessions","source_path":"ui/src/i18n/locales/nl.ts","src_lang":"en","text":"Recent chats","text_hash":"2ccfecbca1011bad772fce00fa6479c9af2d398ce3b3951b7713b2655b6999eb","tgt_lang":"nl","translated":"Recente chats","updated_at":"2026-07-11T08:43:24.357Z"} diff --git a/ui/src/i18n/.i18n/pl.meta.json b/ui/src/i18n/.i18n/pl.meta.json index a8c3f6f48d01..842940585c56 100644 --- a/ui/src/i18n/.i18n/pl.meta.json +++ b/ui/src/i18n/.i18n/pl.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:24.991Z", + "generatedAt": "2026-07-14T08:44:43.429Z", "locale": "pl", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pl.tm.jsonl b/ui/src/i18n/.i18n/pl.tm.jsonl index 46b6f22bc705..e5cafcd4cced 100644 --- a/ui/src/i18n/.i18n/pl.tm.jsonl +++ b/ui/src/i18n/.i18n/pl.tm.jsonl @@ -1027,6 +1027,7 @@ {"cache_key":"94837605c135753091c1b936d2bef16f268949be6c0e302378558f9b4dbab801","model":"claude-opus-4-8","provider":"anthropic","segment_id":"quickSettings.appearance.textSizes.small","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"S","text_hash":"8de0b3c47f112c59745f717a626932264c422a7563954872e237b223af4ad643","tgt_lang":"pl","translated":"S","updated_at":"2026-07-12T06:47:05.395Z"} {"cache_key":"94cbb7c232317beb270f211eb25b22c1c6cef61b0e5abff6f09b059315d3aea5","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configView.sections.broadcast","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Broadcast","text_hash":"17bc9178343601795dbd6d0e4328dcade21e406e6514640250c79ac9317ee81a","tgt_lang":"pl","translated":"Nadawanie","updated_at":"2026-07-12T06:47:28.389Z"} {"cache_key":"952667b504cc9b0728bf58b2a77d7611b9524fb9cac385aafd9ada69958b6a8c","model":"gpt-5.5","provider":"openai","segment_id":"browser.back","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Back","text_hash":"76900f1bfd16c8d4dd3d25e6f46638d7165aee23883ccea6bfe071c514421769","tgt_lang":"pl","translated":"Wstecz","updated_at":"2026-07-11T02:19:32.402Z"} +{"cache_key":"9554e8134f115596a74080923255e1c569305db0380d8e20f80c216354fd4ee2","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"pl","translated":"+{count} więcej","updated_at":"2026-07-12T06:48:18.206Z"} {"cache_key":"957b0fc3c159c9f1e9f4d67c58be83ad6b55e39e73d53a9c1d049d01b50d298b","model":"gpt-5.5","provider":"openai","segment_id":"chat.composer.realtimeTalkRequiresMicrophone","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Realtime Talk requires browser microphone access.","text_hash":"e082e85327dc5d2905a34ca4ca60e76836f9b4d7e3b1834b821c81a9c456b39d","tgt_lang":"pl","translated":"Realtime Talk wymaga dostępu do mikrofonu w przeglądarce.","updated_at":"2026-07-06T17:57:07.854Z"} {"cache_key":"958c632cc7971902b9d35848c936423cfda92efafd372bc5ce4ada425dafd834","model":"claude-sonnet-4-6","provider":"anthropic","segment_id":"cron.suggestions.ideas.dependencyRadar.name","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Dependency radar","text_hash":"87934151936f549abbc080b64b217a214f4501cf0b0a13a497719efedcc851ce","tgt_lang":"pl","translated":"Radar zależności","updated_at":"2026-07-11T22:47:58.550Z"} {"cache_key":"95de173951e4a2a820b23f4c403598f9c5935a9e690a4776338cd1c07422c1b4","model":"claude-opus-4-8","provider":"anthropic","segment_id":"pluginsPage.connectorDescriptions.airtable","source_path":"ui/src/i18n/locales/pl.ts","src_lang":"en","text":"Query and update records, tables, and bases in Airtable.","text_hash":"d50d210d4078f40825578718ef4891ae7c0a793081413c977803486e45bf3e05","tgt_lang":"pl","translated":"Przeszukuj i aktualizuj rekordy, tabele oraz bazy w Airtable.","updated_at":"2026-07-12T06:48:47.312Z"} diff --git a/ui/src/i18n/.i18n/pt-BR.meta.json b/ui/src/i18n/.i18n/pt-BR.meta.json index fa191db704ec..ba5ede9601f4 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-07-14T05:17:22.215Z", + "generatedAt": "2026-07-14T08:44:38.052Z", "locale": "pt-BR", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pt-BR.tm.jsonl b/ui/src/i18n/.i18n/pt-BR.tm.jsonl index 8c5ed9643a80..341678fdfbca 100644 --- a/ui/src/i18n/.i18n/pt-BR.tm.jsonl +++ b/ui/src/i18n/.i18n/pt-BR.tm.jsonl @@ -952,6 +952,7 @@ {"cache_key":"85cb4e6c4de65570dd4475c45d5dba088ff2f3357fbff1e733d3ab8faea26343","model":"gpt-5.5","provider":"openai","segment_id":"chat.splitView.splitDown","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Split down","text_hash":"8730b89df7caaf5b5090f9b7365a0a03e0a13d9682dc6418f556b8a676d9e98f","tgt_lang":"pt-BR","translated":"Dividir para baixo","updated_at":"2026-07-06T07:23:13.378Z"} {"cache_key":"8624097f9d10fb615da66a4341195eba407f92f016c3bfc9d407283c100dfa3d","model":"claude-opus-4-8","provider":"anthropic","segment_id":"githubPreview.ariaLabel","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"{state} {kind} {repo} #{number}: {title}, by {author}","text_hash":"e18c624550814e4318a45e1e0f8782913409763d046aa703519e91c887be205b","tgt_lang":"pt-BR","translated":"{state} {kind} {repo} #{number}: {title}, por {author}","updated_at":"2026-07-12T06:24:58.182Z"} {"cache_key":"8626b07aa9a791dc6a5438a7bad1b0b86ce826ee1f24ea14c96e5d3daad755f7","model":"gpt-5.5","provider":"openai","segment_id":"chat.composer.microphoneFallback","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Microphone {number}","text_hash":"357eae20db9739dfdbb59ec21db70200f6ca9ee257c28ed637712f147af419ec","tgt_lang":"pt-BR","translated":"Microfone {number}","updated_at":"2026-07-06T17:56:11.051Z"} +{"cache_key":"8664caed8c1accb472a9c8353d80ddfbe8abc92e8fde18185a92b80add2d12b5","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"pt-BR","translated":"+{count} mais","updated_at":"2026-07-12T06:25:16.155Z"} {"cache_key":"869adaaf933f58ebce0de74cca77566e54c11d15467234708b2838d31d125536","model":"gpt-5","provider":"openai","segment_id":"codexSessions.searchPlaceholder","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Search session titles","text_hash":"9a6bdede84234fa08d6294e1636a34d26cbdd8eca425248f8d3c6cf8844a0cf9","tgt_lang":"pt-BR","translated":"Pesquisar títulos de sessões","updated_at":"2026-07-09T10:01:43.718Z"} {"cache_key":"869e8d4c7aacef3723f24c727154274125df8d963a93a7a3b751832bf7cb47fa","model":"claude-opus-4-8","provider":"anthropic","segment_id":"cron.form.accountId","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Account ID","text_hash":"919bb4cb2182c322ed2e1d13d112570bfcff57a2b9260bf3ff19939975d042b2","tgt_lang":"pt-BR","translated":"ID da conta","updated_at":"2026-07-12T06:29:38.006Z"} {"cache_key":"86c262fb848e799bf503fd243c754fa82b8b412bd48d38bd036e0ecdc7574561","model":"gpt-5.6-sol","provider":"openai","segment_id":"skillWorkshop.selfLearning.enable","source_path":"ui/src/i18n/locales/pt-BR.ts","src_lang":"en","text":"Enable self-learning","text_hash":"33a368430ce8e88b54c97c828fa272ed164a10a56e15e7cadc38523642119e50","tgt_lang":"pt-BR","translated":"Ativar autoaprendizado","updated_at":"2026-07-13T06:15:15.673Z"} diff --git a/ui/src/i18n/.i18n/ru.meta.json b/ui/src/i18n/.i18n/ru.meta.json index 4aa3ad1c55e6..e6f9a86be7e5 100644 --- a/ui/src/i18n/.i18n/ru.meta.json +++ b/ui/src/i18n/.i18n/ru.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:26.260Z", + "generatedAt": "2026-07-14T08:44:45.655Z", "locale": "ru", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ru.tm.jsonl b/ui/src/i18n/.i18n/ru.tm.jsonl index 4c42233c75ce..5a2d8a0b6e8d 100644 --- a/ui/src/i18n/.i18n/ru.tm.jsonl +++ b/ui/src/i18n/.i18n/ru.tm.jsonl @@ -1502,6 +1502,7 @@ {"cache_key":"77b711ff02cb24b17d0da9dba8a826ce41ca754ad5aed8a35fb66a482b5e3718","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.toolCatalog.descriptions.sessionsSend","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"Send to session","text_hash":"832b527e87a2c949b0af9f7220414adb15dcbe92d6b29d42f8bb427e3216d15e","tgt_lang":"ru","translated":"Отправить в сессию","updated_at":"2026-07-12T06:59:08.580Z"} {"cache_key":"77bc75659bcb077046444e003ce6ce8ec0390cd98457a3c28a1825467c6dfcd7","model":"gpt-5.5","provider":"openai","segment_id":"overview.stats.cronNext","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"Next wake {time}","text_hash":"e66ba10846e8db186b6d61def765932e1da962ecb4bf2ae2ab711934043413f3","tgt_lang":"ru","translated":"Следующее пробуждение {time}","updated_at":"2026-06-26T21:40:18.156Z"} {"cache_key":"77e3cc3333079b6bb06dabba3a473cbae72706fbf6ac37985737eba21f7b6c59","model":"gpt-5.5","provider":"openai","segment_id":"newSession.worktreeNameInvalid","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"Worktree names use lowercase letters, digits, and dashes.","text_hash":"6a34593b030e5dc2e8e8c55a2be4a5e9a6b415676d4d91e9f521b8586ea3c28f","tgt_lang":"ru","translated":"Имена рабочих деревьев могут содержать строчные буквы, цифры и дефисы.","updated_at":"2026-07-10T15:22:08.248Z"} +{"cache_key":"7808b750ea2e58d18d2783b325d615aed0e3d133ece57d24011a0ea98cd5592b","model":"gpt-5.5","provider":"openai","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"ru","translated":"+{count} ещё","updated_at":"2026-06-26T21:41:23.762Z"} {"cache_key":"780a264bb89b3b2f12d4d5dcaf237bb0ea158ab9c222f39dce8660224c7b23da","model":"gpt-5.6-sol","provider":"openai","segment_id":"chat.progressLabels.scuttling","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"Scuttling","text_hash":"4646155e9edc98598bf9b7f01a3ad8fbf13649cf53aa8c3710dd7a82ef1c5ba8","tgt_lang":"ru","translated":"Семенит","updated_at":"2026-07-14T04:55:30.458Z"} {"cache_key":"7813a0cd9f869de997d9adaef2431b3856ed437433f88da0782f8e564f7f9b12","model":"gpt-5.5","provider":"openai","segment_id":"workboard.stopSession","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"Stop session","text_hash":"e4d1dad5c74ad296c45ca01ac7e9e7fedffc7478a3556f8962465760b98c5391","tgt_lang":"ru","translated":"Остановить сеанс","updated_at":"2026-06-26T21:39:43.912Z"} {"cache_key":"782d922cf4709b47f73afec02d66937579853fb09f659acb8b87d3826606d456","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.toolCatalog.descriptions.agentsList","source_path":"ui/src/i18n/locales/ru.ts","src_lang":"en","text":"List agents","text_hash":"14c11ce2c1ad03acc37cf3f89893cd4d986f1ab24ab2d7fb5e49bd89c923c72d","tgt_lang":"ru","translated":"Список агентов","updated_at":"2026-07-12T06:59:08.580Z"} diff --git a/ui/src/i18n/.i18n/th.meta.json b/ui/src/i18n/.i18n/th.meta.json index 4e9633885062..7a1284a3c904 100644 --- a/ui/src/i18n/.i18n/th.meta.json +++ b/ui/src/i18n/.i18n/th.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:25.263Z", + "generatedAt": "2026-07-14T08:44:43.854Z", "locale": "th", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/th.tm.jsonl b/ui/src/i18n/.i18n/th.tm.jsonl index af04a8ee3845..a0a6d88f9a81 100644 --- a/ui/src/i18n/.i18n/th.tm.jsonl +++ b/ui/src/i18n/.i18n/th.tm.jsonl @@ -1141,6 +1141,7 @@ {"cache_key":"9dbd09c81f15e3afb4d35352e89be6c4392d715adba920bc739be3ffd07806f7","model":"claude-opus-4-8","provider":"anthropic","segment_id":"nodes.inventory.roleUpgrade","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"role upgrade requires approval","text_hash":"c2c2a021e6839c8bb89fcf5d387a4a7c577bf4a042a110220ee1ffb78f238966","tgt_lang":"th","translated":"การอัปเกรด role ต้องได้รับการอนุมัติ","updated_at":"2026-07-12T06:50:13.234Z"} {"cache_key":"9dc09c418dbde2db6ccb6a47ea858354665ca4d41f6fd39eb5d9a849ad8b6d70","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configForm.jsonValue","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"JSON value","text_hash":"0c2d485c9291cebc6440ef7f34304dfbba495f52cb5ea4580f4b2315342e6d42","tgt_lang":"th","translated":"ค่า JSON","updated_at":"2026-07-12T06:51:17.672Z"} {"cache_key":"9dd1642939e3bef529b686ff187de5c5c68904a5abbd3de7b5ee1d816bab4663","model":"gpt-5.6-sol","provider":"openai","segment_id":"palette.footer.select","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"select","text_hash":"b1a36d25d9633ed2ac04939fcb614ccb2b513243c148f18694592ae037f9d35f","tgt_lang":"th","translated":"เลือก","updated_at":"2026-07-12T00:10:41.112Z"} +{"cache_key":"9de8e321c052f0d7017f33939ff2edfe9776eab8677e7923851dc9db0037324b","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"th","translated":"+{count} เพิ่มเติม","updated_at":"2026-07-12T06:50:01.584Z"} {"cache_key":"9e26fa092b3be589c99e51c2b1245665306290e180ed3a3463a88c30fc51da17","model":"gpt-5.6-sol","provider":"openai","segment_id":"nodes.pairing.limitedAccessHint","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Node, chat, and approvals without administrative controls.","text_hash":"875b64d38acce53b42fad8c29f5b91fb83b31234b509b9ea9d5afa909b915078","tgt_lang":"th","translated":"เข้าถึงโหนด แชท และการอนุมัติ โดยไม่มีการควบคุมระดับผู้ดูแลระบบ","updated_at":"2026-07-13T10:03:09.768Z"} {"cache_key":"9e29643230f67744b1ccd0148fd9b8f3bf27715ef16dc97e72c41ba89ad4753c","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configForm.sections.diagnostics.label","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Diagnostics","text_hash":"268f14bbfe119c1e92150583af960a086d7db9619a097f8aa72ff6779842f610","tgt_lang":"th","translated":"การวินิจฉัย","updated_at":"2026-06-16T14:17:16.747Z"} {"cache_key":"9e3fe364d025a1cdc171e0c04c3efefe8736e11172389dc56f912858b748a2c2","model":"claude-opus-4-8","provider":"anthropic","segment_id":"workboard.detailUpdated","source_path":"ui/src/i18n/locales/th.ts","src_lang":"en","text":"Updated","text_hash":"3a5ecca188c0579c00ee24cf3cab21bd02c15a06f7a70cc8e0a8ff2381dcbbfd","tgt_lang":"th","translated":"อัปเดตแล้ว","updated_at":"2026-06-16T14:17:16.747Z"} diff --git a/ui/src/i18n/.i18n/tr.meta.json b/ui/src/i18n/.i18n/tr.meta.json index 9de0d16ee7fc..5e3c213a47b5 100644 --- a/ui/src/i18n/.i18n/tr.meta.json +++ b/ui/src/i18n/.i18n/tr.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:24.234Z", + "generatedAt": "2026-07-14T08:44:42.089Z", "locale": "tr", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/tr.tm.jsonl b/ui/src/i18n/.i18n/tr.tm.jsonl index ab50199c9fac..04a9cf770f03 100644 --- a/ui/src/i18n/.i18n/tr.tm.jsonl +++ b/ui/src/i18n/.i18n/tr.tm.jsonl @@ -214,6 +214,7 @@ {"cache_key":"21d0d39331a3b8122651c027bcfb3fc2e4af0343bc979bff54978020bbb90cd5","model":"claude-opus-4-8","provider":"anthropic","segment_id":"quickSettings.channels.connectedCount","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"{count} connected","text_hash":"894f17f96a432fbdce46c9e0ee1d66ec2d807daa4f0dd359e327ae5cbe43dd3a","tgt_lang":"tr","translated":"{count} bağlı","updated_at":"2026-07-12T06:39:49.200Z"} {"cache_key":"21ed47c21072d3339e6d82f531855fa27fe966d443d2607df6fadc9ae5565898","model":"claude-opus-4-8","provider":"anthropic","segment_id":"cron.actions.resume","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Resume","text_hash":"d640c7421da066618a39daf4266da5f61f66a9b1afcd626481b831a17064965d","tgt_lang":"tr","translated":"Devam ettir","updated_at":"2026-07-12T06:43:39.739Z"} {"cache_key":"2215fe0002d914e87ad419c9bd73978d025cec6d4ab539f6c775640309e1b70f","model":"claude-opus-4-8","provider":"anthropic","segment_id":"nodes.execApprovals.hostNativeHint","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Read-only here. Edit from the companion app or CLI.","text_hash":"f40b6f5e3ead3a1a83b8c2cb0ffe80b8d105b35497ec464651dc8be98b7fe8cb","tgt_lang":"tr","translated":"Burada salt okunur. Yardımcı uygulamadan veya CLI'den düzenleyin.","updated_at":"2026-07-12T06:38:37.636Z"} +{"cache_key":"2220cca9293553f90ae57f1dda09cc9261d9b8267d3b6aed952cccda145416f3","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"tr","translated":"+{count} daha","updated_at":"2026-07-12T06:38:29.467Z"} {"cache_key":"22bb530ef663d7a1a5b24541e40978d6ab2ad2f52891382cda5d914ffea2e09a","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.empty.quarantinedTitle","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Nothing quarantined","text_hash":"6ab6de340b250b26c6bfc4415a19fffc241b304579304a2b0e8d9cf3f9941676","tgt_lang":"tr","translated":"Karantinaya alınan yok","updated_at":"2026-07-12T06:42:21.934Z"} {"cache_key":"22c250c7eb8e6db6f3cbc26d8e09ddd3981061cc0205983c74c51a246ad3030b","model":"claude-opus-4-8","provider":"anthropic","segment_id":"nodes.execApprovals.allShells","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"all shells","text_hash":"e273a637c04e803c47c367a83e2478b2fe87c374d6907a1570a5dc9f5228c540","tgt_lang":"tr","translated":"tüm kabuklar","updated_at":"2026-07-12T06:38:44.811Z"} {"cache_key":"22d85524508bea41561640364241f5b28754461c98ccf68d38442efe02ee3601","model":"claude-opus-4-8","provider":"anthropic","segment_id":"palette.descriptions.verboseMode","source_path":"ui/src/i18n/locales/tr.ts","src_lang":"en","text":"Toggle verbose mode.","text_hash":"b6b4efc3c03e4f99acc1df6ba5e76c49bb41fda420480a9b8a04b948821fbeda","tgt_lang":"tr","translated":"Ayrıntılı modu aç/kapat.","updated_at":"2026-07-12T06:42:51.542Z"} diff --git a/ui/src/i18n/.i18n/uk.meta.json b/ui/src/i18n/.i18n/uk.meta.json index c1ebeb19da00..fc865726cb0f 100644 --- a/ui/src/i18n/.i18n/uk.meta.json +++ b/ui/src/i18n/.i18n/uk.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:24.475Z", + "generatedAt": "2026-07-14T08:44:42.559Z", "locale": "uk", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/uk.tm.jsonl b/ui/src/i18n/.i18n/uk.tm.jsonl index 7c42f2ae573e..fb0cfe720d6c 100644 --- a/ui/src/i18n/.i18n/uk.tm.jsonl +++ b/ui/src/i18n/.i18n/uk.tm.jsonl @@ -673,6 +673,7 @@ {"cache_key":"56ad3218a4ba7709f4c7180faf1a61f6013f1736fb96fc010c5c609b61ff1328","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configForm.noCustomEntries","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"No custom entries.","text_hash":"de38070e96ce715083fdc916ee46db5a1935131fbde6caf2b714043859eb6115","tgt_lang":"uk","translated":"Немає власних записів.","updated_at":"2026-07-12T06:45:39.834Z"} {"cache_key":"56d60d14e1699bfec92e6964269ea6909ed1b0ce44177f22c4ec844b6f00d439","model":"gpt-5.5","provider":"openai","segment_id":"chat.backgroundTasks.loading","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Loading background tasks…","text_hash":"b8f8eaea7ccdee15740c7daa3d290a534fd3db2b4f0b2835243a6627d9ff7ff6","tgt_lang":"uk","translated":"Завантаження фонових завдань…","updated_at":"2026-07-11T00:45:26.267Z"} {"cache_key":"56e9eb7a65ad9e8aacd92b0359207bfe422a55267ee35eed55e24dc1294cc622","model":"gpt-5.6-sol","provider":"openai","segment_id":"nodes.pairing.limitedAccessHint","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Node, chat, and approvals without administrative controls.","text_hash":"875b64d38acce53b42fad8c29f5b91fb83b31234b509b9ea9d5afa909b915078","tgt_lang":"uk","translated":"Вузол, чат і схвалення без адміністративного керування.","updated_at":"2026-07-13T10:02:54.685Z"} +{"cache_key":"570a28378e9f5da04e026ce2a6963632fe5aba6b03826e5d90554bb56ba5c8e4","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"uk","translated":"+ще {count}","updated_at":"2026-07-12T06:44:48.232Z"} {"cache_key":"572054c3fea0ec86b3c959ff052ad88c4681e3126fc9b5a719b2fc61a4d97514","model":"claude-opus-4-8","provider":"anthropic","segment_id":"cron.form.accountId","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Account ID","text_hash":"919bb4cb2182c322ed2e1d13d112570bfcff57a2b9260bf3ff19939975d042b2","tgt_lang":"uk","translated":"ID акаунта","updated_at":"2026-07-12T06:50:27.325Z"} {"cache_key":"572bf779a2067af6bca5651dc4e96d9668c49cb6b12071226c7316056510b209","model":"gpt-5","provider":"openai","segment_id":"claudeSessions.host.gateway","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Gateway","text_hash":"41ed52921661c7f0d68d92511589cc9d7aaeab2b5db49fb27f0be336cbfdb7df","tgt_lang":"uk","translated":"Gateway","updated_at":"2026-07-09T10:01:43.750Z"} {"cache_key":"575ed755e675c34b9496f28c757f269b99fa08f5770cba064107a48fdc79f49d","model":"gpt-5.5","provider":"openai","segment_id":"chat.composer.microphoneFallback","source_path":"ui/src/i18n/locales/uk.ts","src_lang":"en","text":"Microphone {number}","text_hash":"357eae20db9739dfdbb59ec21db70200f6ca9ee257c28ed637712f147af419ec","tgt_lang":"uk","translated":"Мікрофон {number}","updated_at":"2026-07-06T17:57:00.020Z"} diff --git a/ui/src/i18n/.i18n/vi.meta.json b/ui/src/i18n/.i18n/vi.meta.json index f62cd4c2d2a1..d2bd3ffbd041 100644 --- a/ui/src/i18n/.i18n/vi.meta.json +++ b/ui/src/i18n/.i18n/vi.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-07-14T05:17:25.528Z", + "generatedAt": "2026-07-14T08:44:44.314Z", "locale": "vi", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/vi.tm.jsonl b/ui/src/i18n/.i18n/vi.tm.jsonl index 410f93c9fd24..66b7da71514f 100644 --- a/ui/src/i18n/.i18n/vi.tm.jsonl +++ b/ui/src/i18n/.i18n/vi.tm.jsonl @@ -1033,6 +1033,7 @@ {"cache_key":"94b89081dea72d238e3d5ff7ea29478f6bd15d171cb201cb03b97a4c63288221","model":"claude-opus-4-8","provider":"anthropic","segment_id":"cron.suggestions.schedules.everyMorning","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Daily at 8:00 AM","text_hash":"1cd9af2c3816010faaffc9adb5efa4e0a337f35e5af82eb4f5462d09ad62a94b","tgt_lang":"vi","translated":"Hằng ngày lúc 8:00 AM","updated_at":"2026-07-12T06:57:03.569Z"} {"cache_key":"94e911614fd522e91bfc724eaabff1245dbb2b43e687b08a33ae3a6f670bc0b6","model":"gpt-5.5","provider":"openai","segment_id":"nav.exitSettings","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Back to app","text_hash":"a6989680b3528cd399ebaea75e660da6ce8d155d24226532180f90ab37c05e9e","tgt_lang":"vi","translated":"Quay lại ứng dụng","updated_at":"2026-07-09T08:08:12.733Z"} {"cache_key":"956af5347779331dece26693cbf4fa5431285d7693d07c6338f3e0f5d8eb7017","model":"gpt-5.6-sol","provider":"openai","segment_id":"attention.cronOverdue","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"{count} cron job(s) overdue","text_hash":"31f2f925ab3c5a145026243be12d8c96a00885e1ab541f0d09bfc585a00bf9f4","tgt_lang":"vi","translated":"{count} tác vụ cron quá hạn","updated_at":"2026-07-12T00:10:50.384Z"} +{"cache_key":"95774625f04c2ac27442dd1f1fcd2ec18cf1e307cf4fd6b79e3745d41a6185c0","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"vi","translated":"+{count} nữa","updated_at":"2026-07-12T06:54:35.616Z"} {"cache_key":"95b11fdc7cc941dc3aec80d1229fe752549bf09007010227ed891541e909f07b","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.workspaceFiles.search","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Search files","text_hash":"179fed85ec50a433bb23932745d18f1ade2f84a6ebe145b0025ed3ce5f89fd5a","tgt_lang":"vi","translated":"Tìm tệp","updated_at":"2026-06-16T14:17:25.260Z"} {"cache_key":"9605f4958b93fc56d928bc4d2429364297fa6f3765a71c49f3c8387238c6b9ec","model":"gpt-5.5","provider":"openai","segment_id":"common.colorModeOption","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Color mode: {mode}","text_hash":"d5b61a3af66f845d2ab32795685ca0b37889374de15f66ae3f848abf83169a43","tgt_lang":"vi","translated":"Chế độ màu: {mode}","updated_at":"2026-07-07T08:47:40.743Z"} {"cache_key":"962781dcb6e2837b8a83c85ce0f8c2c22a62f0d33afc3d83b27cc55b698f8670","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.today.askAgent","source_path":"ui/src/i18n/locales/vi.ts","src_lang":"en","text":"Ask the agent to change something","text_hash":"756d8c49d716577120af09971a16bf3771d6929e4ea2f38e4804928c64380147","tgt_lang":"vi","translated":"Yêu cầu tác nhân thay đổi điều gì đó","updated_at":"2026-07-12T06:55:56.454Z"} diff --git a/ui/src/i18n/.i18n/zh-CN.meta.json b/ui/src/i18n/.i18n/zh-CN.meta.json index 5ca67e027ff5..c79436464694 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-07-14T05:17:21.655Z", + "generatedAt": "2026-07-14T08:44:36.832Z", "locale": "zh-CN", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-CN.tm.jsonl b/ui/src/i18n/.i18n/zh-CN.tm.jsonl index be5fa6956419..09ea15bc234d 100644 --- a/ui/src/i18n/.i18n/zh-CN.tm.jsonl +++ b/ui/src/i18n/.i18n/zh-CN.tm.jsonl @@ -1188,6 +1188,7 @@ {"cache_key":"b02c3b3ab2d71f27784fa7d5c31939ef0027133c8adca0b8aa43b198f427bbe0","model":"claude-opus-4-8","provider":"anthropic","segment_id":"dreaming.wiki.howToEnable","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"How to enable","text_hash":"790e7baf165ea39118e9b759e63a42ccf7c741f4229d248508ed4ad1eeede3a3","tgt_lang":"zh-CN","translated":"如何启用","updated_at":"2026-07-12T06:29:01.870Z"} {"cache_key":"b0412a23a4c8c387c63f344a0a88943a72f70c16d330fcee1f81616f2033a2f4","model":"claude-opus-4-8","provider":"anthropic","segment_id":"nodes.execApprovals.useDefault","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Use default","text_hash":"a769cedc799260e81ce23b3fc1533ae48004f6ab25f0dffcc783d95fea378e19","tgt_lang":"zh-CN","translated":"使用默认值","updated_at":"2026-07-12T06:25:34.328Z"} {"cache_key":"b052360022a4be4121b6a788ef892b1c566332eb6c2db49a575f9092ccbcca09","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillWorkshop.empty.allTitle","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"No proposals here","text_hash":"30289613b7f4e190e5a04e8544571a9ef3fadac44112c7378c49a3bff5688270","tgt_lang":"zh-CN","translated":"此处没有提案","updated_at":"2026-07-12T06:28:31.142Z"} +{"cache_key":"b06849d2267ad9b93dab4ceacd98e260813091d7534d01efcfb48dc01caeea77","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"zh-CN","translated":"另有 {count} 项","updated_at":"2026-07-12T06:25:16.708Z"} {"cache_key":"b07fd81688b646c639401340dac4b9d7b8fc87b40351ef05da1562112c77b7ee","model":"claude-opus-4-8","provider":"anthropic","segment_id":"configForm.sections.broadcast.description","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Broadcast and notification settings","text_hash":"ae4fa77fc6938b4e99acff0e7af3f12682b79f6c2f11e7c8189c72af5377ae29","tgt_lang":"zh-CN","translated":"广播与通知设置","updated_at":"2026-07-12T06:26:14.321Z"} {"cache_key":"b08b52d1d1ad82adee610e29f622f08f5f10396e6bc4bcf8cc70324a0e133e28","model":"claude-opus-4-8","provider":"anthropic","segment_id":"channels.nostr.placeholders.username","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"satoshi","text_hash":"da2876b3eb31edb4436fa4650673fc6f01f90de2f1793c4ec332b2387b09726f","tgt_lang":"zh-CN","translated":"satoshi","updated_at":"2026-07-12T06:25:05.607Z"} {"cache_key":"b0b1576e81afe3aea82eecfe959ee7f260e091db230c13be7894817a84cfcbb1","model":"claude-opus-4-8","provider":"anthropic","segment_id":"codexSessions.transcript.command","source_path":"ui/src/i18n/locales/zh-CN.ts","src_lang":"en","text":"Command","text_hash":"713166971d730f81fcf8b757f2ea239d1a0360d9f74e8f5afe60fba97105879c","tgt_lang":"zh-CN","translated":"命令","updated_at":"2026-06-16T14:13:09.659Z"} diff --git a/ui/src/i18n/.i18n/zh-TW.meta.json b/ui/src/i18n/.i18n/zh-TW.meta.json index fac70fc409a6..a36e84020b98 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-07-14T05:17:22.023Z", + "generatedAt": "2026-07-14T08:44:37.623Z", "locale": "zh-TW", "model": "gpt-5.6-sol", "provider": "openai", - "sourceHash": "622f10085ef94b6f07d88f35cf370b2ce3108dbb36897da543cfc3b82ccd2240", - "totalKeys": 3332, - "translatedKeys": 3332, + "sourceHash": "0c13460dca0cb1cfcf4d17d97316218cb003189bf09681a53dd54cedebb4225b", + "totalKeys": 3333, + "translatedKeys": 3333, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-TW.tm.jsonl b/ui/src/i18n/.i18n/zh-TW.tm.jsonl index 9e26ef0751c9..37bf21cf5bd1 100644 --- a/ui/src/i18n/.i18n/zh-TW.tm.jsonl +++ b/ui/src/i18n/.i18n/zh-TW.tm.jsonl @@ -4,6 +4,7 @@ {"cache_key":"006c126d4c91423d27d9029a5c0cadefb42110dca26be77a89812a368ff3dcb0","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.actions.scrollToLatest","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Scroll to latest","text_hash":"60df3caee4bdbdad5b699375edc79340fbd86c484b4b24b6b50bb0562ea060cd","tgt_lang":"zh-TW","translated":"捲動至最新","updated_at":"2026-07-12T06:29:54.478Z"} {"cache_key":"007609efe9d58bd04fb7ac58de11379b2391e91935878aed3489b30ce5c1a003","model":"claude-opus-4-8","provider":"anthropic","segment_id":"dreaming.wiki.contradictions","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Contradictions","text_hash":"c1c93b72082e87a5bcd5704fedddcc6acdc3c666dc77c2cfe18613889b9054db","tgt_lang":"zh-TW","translated":"矛盾","updated_at":"2026-07-12T06:29:48.180Z"} {"cache_key":"007b9a391fa01b70a3f56a9b45d275c51d4971691bd43b9acda9191059451d1d","model":"claude-opus-4-8","provider":"anthropic","segment_id":"skillsPage.disconnected","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Not connected to gateway.","text_hash":"c5ea4108f1f9b79d5316c2c6c07f6746ef801746094eb75e5d3cfcbef2cbbc18","tgt_lang":"zh-TW","translated":"未連線至 Gateway。","updated_at":"2026-07-12T06:28:22.466Z"} +{"cache_key":"008afa2d613c0072479e654454217ba2081c970537c66b66e40a713d871eaa8e","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.backgroundTasks.statusPreviewMore","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"+{count} more","text_hash":"ecccea94c62457a718fff608b635a8fdeb2a9d43b60a9db2680fa35e800b5dd6","tgt_lang":"zh-TW","translated":"還有 +{count} 個","updated_at":"2026-07-12T06:28:16.237Z"} {"cache_key":"00a09ca354e276c91fcec391e545263a523d4480c6a6f96b6825f4720f15ab1a","model":"claude-opus-4-8","provider":"anthropic","segment_id":"chat.queue.steered","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Steered","text_hash":"030ed66937ef8b9ec3a179ee4731715df00ee1dacc1fed0cdbdb4d251e02daaa","tgt_lang":"zh-TW","translated":"已引導","updated_at":"2026-07-12T06:30:00.937Z"} {"cache_key":"00a50f2e0d3a9514848b06fbacaf9ca28918512b85e9211b2dba37d93cb00f60","model":"claude-opus-4-8","provider":"anthropic","segment_id":"agents.toolCatalog.descriptions.cron","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Schedule tasks","text_hash":"44c6425e3e6f0bb4df510671d2cf05cabd6d2070d94af0a4a961024db2a7f754","tgt_lang":"zh-TW","translated":"排程任務","updated_at":"2026-07-12T06:26:21.254Z"} {"cache_key":"00e6dc5787663a773e01a7c45365b42b91da27a61171ebc03cfa380dd733a469","model":"gpt-5.6-sol","provider":"openai","segment_id":"subtitles.connection","source_path":"ui/src/i18n/locales/zh-TW.ts","src_lang":"en","text":"Gateway endpoint, credentials, and handshake status.","text_hash":"5d6324ca52f899e2db988c9a0b14314fe2240f17cb129b8ff2bf16bf87bef2e7","tgt_lang":"zh-TW","translated":"Gateway 端點、憑證和交握狀態。","updated_at":"2026-07-12T00:07:53.648Z"} diff --git a/ui/src/i18n/locales/ar.ts b/ui/src/i18n/locales/ar.ts index 91412c73df35..2d6067436654 100644 --- a/ui/src/i18n/locales/ar.ts +++ b/ui/src/i18n/locales/ar.ts @@ -3649,6 +3649,7 @@ export const ar: TranslationMap = { finished: "مكتملة ({count})", statusRunningOne: "مهمة واحدة قيد التشغيل", statusRunningMany: "{count} مهام قيد التشغيل", + statusPreviewMore: "+{count} أخرى", stopTask: "إيقاف {title}", viewTranscript: "عرض النص", toolUseOne: "استخدام واحد لأداة", diff --git a/ui/src/i18n/locales/de.ts b/ui/src/i18n/locales/de.ts index d7575d9364cb..472a2e99a547 100644 --- a/ui/src/i18n/locales/de.ts +++ b/ui/src/i18n/locales/de.ts @@ -3722,6 +3722,7 @@ export const de: TranslationMap = { finished: "Abgeschlossen ({count})", statusRunningOne: "1 laufende Aufgabe", statusRunningMany: "{count} laufende Aufgaben", + statusPreviewMore: "+{count} weitere", stopTask: "{title} stoppen", viewTranscript: "Transkript anzeigen", toolUseOne: "1 Tool-Aufruf", diff --git a/ui/src/i18n/locales/en.ts b/ui/src/i18n/locales/en.ts index 0c7e48dbd2e0..b99f246d5162 100644 --- a/ui/src/i18n/locales/en.ts +++ b/ui/src/i18n/locales/en.ts @@ -3627,6 +3627,7 @@ export const en: TranslationMap = { finished: "Finished ({count})", statusRunningOne: "1 running task", statusRunningMany: "{count} running tasks", + statusPreviewMore: "+{count} more", stopTask: "Stop {title}", viewTranscript: "View transcript", toolUseOne: "1 tool use", diff --git a/ui/src/i18n/locales/es.ts b/ui/src/i18n/locales/es.ts index 8ff079b8f01a..1ae127359cba 100644 --- a/ui/src/i18n/locales/es.ts +++ b/ui/src/i18n/locales/es.ts @@ -3718,6 +3718,7 @@ export const es: TranslationMap = { finished: "Finalizadas ({count})", statusRunningOne: "1 tarea en ejecución", statusRunningMany: "{count} tareas en ejecución", + statusPreviewMore: "+{count} más", stopTask: "Detener {title}", viewTranscript: "Ver transcripción", toolUseOne: "1 uso de herramienta", diff --git a/ui/src/i18n/locales/fa.ts b/ui/src/i18n/locales/fa.ts index b38c902812cd..a15686df9f32 100644 --- a/ui/src/i18n/locales/fa.ts +++ b/ui/src/i18n/locales/fa.ts @@ -3676,6 +3676,7 @@ export const fa: TranslationMap = { finished: "پایان‌یافته ({count})", statusRunningOne: "۱ وظیفه در حال اجرا", statusRunningMany: "{count} وظیفه در حال اجرا", + statusPreviewMore: "+{count} مورد دیگر", stopTask: "توقف {title}", viewTranscript: "مشاهدهٔ رونوشت", toolUseOne: "۱ بار استفاده از ابزار", diff --git a/ui/src/i18n/locales/fr.ts b/ui/src/i18n/locales/fr.ts index d3a7fb6ca279..dc5f7ad88c17 100644 --- a/ui/src/i18n/locales/fr.ts +++ b/ui/src/i18n/locales/fr.ts @@ -3746,6 +3746,7 @@ export const fr: TranslationMap = { finished: "Terminées ({count})", statusRunningOne: "1 tâche en cours", statusRunningMany: "{count} tâches en cours", + statusPreviewMore: "+{count} de plus", stopTask: "Arrêter {title}", viewTranscript: "Afficher la transcription", toolUseOne: "1 utilisation d’outil", diff --git a/ui/src/i18n/locales/hi.ts b/ui/src/i18n/locales/hi.ts index 1f123484c0a8..1c9d3d89cbba 100644 --- a/ui/src/i18n/locales/hi.ts +++ b/ui/src/i18n/locales/hi.ts @@ -3644,6 +3644,7 @@ export const hi: TranslationMap = { finished: "समाप्त ({count})", statusRunningOne: "1 कार्य चल रहा है", statusRunningMany: "{count} कार्य चल रहे हैं", + statusPreviewMore: "+{count} और", stopTask: "{title} रोकें", viewTranscript: "ट्रांसक्रिप्ट देखें", toolUseOne: "1 टूल उपयोग", diff --git a/ui/src/i18n/locales/id.ts b/ui/src/i18n/locales/id.ts index 826aad6f6d19..1324d9b86847 100644 --- a/ui/src/i18n/locales/id.ts +++ b/ui/src/i18n/locales/id.ts @@ -3681,6 +3681,7 @@ export const id: TranslationMap = { finished: "Selesai ({count})", statusRunningOne: "1 tugas sedang berjalan", statusRunningMany: "{count} tugas sedang berjalan", + statusPreviewMore: "+{count} lainnya", stopTask: "Hentikan {title}", viewTranscript: "Lihat transkrip", toolUseOne: "1 penggunaan alat", diff --git a/ui/src/i18n/locales/it.ts b/ui/src/i18n/locales/it.ts index df988e00ef40..1462269a2a95 100644 --- a/ui/src/i18n/locales/it.ts +++ b/ui/src/i18n/locales/it.ts @@ -3721,6 +3721,7 @@ export const it: TranslationMap = { finished: "Completate ({count})", statusRunningOne: "1 attività in esecuzione", statusRunningMany: "{count} attività in esecuzione", + statusPreviewMore: "+{count} altri", stopTask: "Interrompi {title}", viewTranscript: "Visualizza trascrizione", toolUseOne: "1 utilizzo dello strumento", diff --git a/ui/src/i18n/locales/ja-JP.ts b/ui/src/i18n/locales/ja-JP.ts index 5199d1706b55..a55b6a405df2 100644 --- a/ui/src/i18n/locales/ja-JP.ts +++ b/ui/src/i18n/locales/ja-JP.ts @@ -3694,6 +3694,7 @@ export const ja_JP: TranslationMap = { finished: "完了({count})", statusRunningOne: "1 件のタスクを実行中", statusRunningMany: "{count} 件のタスクを実行中", + statusPreviewMore: "+{count}件", stopTask: "{title}を停止", viewTranscript: "トランスクリプトを表示", toolUseOne: "ツール使用 1 回", diff --git a/ui/src/i18n/locales/ko.ts b/ui/src/i18n/locales/ko.ts index 7ea42f51d12a..0e1111b913de 100644 --- a/ui/src/i18n/locales/ko.ts +++ b/ui/src/i18n/locales/ko.ts @@ -3663,6 +3663,7 @@ export const ko: TranslationMap = { finished: "완료됨({count})", statusRunningOne: "실행 중인 작업 1개", statusRunningMany: "실행 중인 작업 {count}개", + statusPreviewMore: "+{count}개 더보기", stopTask: "{title} 중지", viewTranscript: "트랜스크립트 보기", toolUseOne: "도구 사용 1회", diff --git a/ui/src/i18n/locales/nl.ts b/ui/src/i18n/locales/nl.ts index d14ddf4f6995..b4b0653df58f 100644 --- a/ui/src/i18n/locales/nl.ts +++ b/ui/src/i18n/locales/nl.ts @@ -3698,6 +3698,7 @@ export const nl: TranslationMap = { finished: "Voltooid ({count})", statusRunningOne: "1 actieve taak", statusRunningMany: "{count} actieve taken", + statusPreviewMore: "+{count} meer", stopTask: "{title} stoppen", viewTranscript: "Transcript bekijken", toolUseOne: "1 toolgebruik", diff --git a/ui/src/i18n/locales/pl.ts b/ui/src/i18n/locales/pl.ts index b0b8330736ed..e3064e8b63bb 100644 --- a/ui/src/i18n/locales/pl.ts +++ b/ui/src/i18n/locales/pl.ts @@ -3706,6 +3706,7 @@ export const pl: TranslationMap = { finished: "Ukończone ({count})", statusRunningOne: "1 uruchomione zadanie", statusRunningMany: "{count} uruchomionych zadań", + statusPreviewMore: "+{count} więcej", stopTask: "Zatrzymaj {title}", viewTranscript: "Wyświetl transkrypcję", toolUseOne: "1 użycie narzędzia", diff --git a/ui/src/i18n/locales/pt-BR.ts b/ui/src/i18n/locales/pt-BR.ts index 1618eb915d4c..ecaf0cbb2605 100644 --- a/ui/src/i18n/locales/pt-BR.ts +++ b/ui/src/i18n/locales/pt-BR.ts @@ -3694,6 +3694,7 @@ export const pt_BR: TranslationMap = { finished: "Concluídas ({count})", statusRunningOne: "1 tarefa em execução", statusRunningMany: "{count} tarefas em execução", + statusPreviewMore: "+{count} mais", stopTask: "Parar {title}", viewTranscript: "Ver transcrição", toolUseOne: "1 uso de ferramenta", diff --git a/ui/src/i18n/locales/ru.ts b/ui/src/i18n/locales/ru.ts index 25ec1d172695..0acd3a425b97 100644 --- a/ui/src/i18n/locales/ru.ts +++ b/ui/src/i18n/locales/ru.ts @@ -3709,6 +3709,7 @@ export const ru: TranslationMap = { finished: "Завершены ({count})", statusRunningOne: "1 выполняющаяся задача", statusRunningMany: "{count} выполняющихся задач", + statusPreviewMore: "+{count} ещё", stopTask: "Остановить {title}", viewTranscript: "Просмотреть расшифровку", toolUseOne: "1 вызов инструмента", diff --git a/ui/src/i18n/locales/th.ts b/ui/src/i18n/locales/th.ts index fc68736f3e4e..c7342f1b4f6d 100644 --- a/ui/src/i18n/locales/th.ts +++ b/ui/src/i18n/locales/th.ts @@ -3620,6 +3620,7 @@ export const th: TranslationMap = { finished: "เสร็จสิ้น ({count})", statusRunningOne: "งานที่กำลังทำงานอยู่ 1 รายการ", statusRunningMany: "งานที่กำลังทำงานอยู่ {count} รายการ", + statusPreviewMore: "+{count} เพิ่มเติม", stopTask: "หยุด {title}", viewTranscript: "ดูบันทึกการสนทนา", toolUseOne: "ใช้เครื่องมือ 1 ครั้ง", diff --git a/ui/src/i18n/locales/tr.ts b/ui/src/i18n/locales/tr.ts index ed24a37fe5f1..37a50792386c 100644 --- a/ui/src/i18n/locales/tr.ts +++ b/ui/src/i18n/locales/tr.ts @@ -3702,6 +3702,7 @@ export const tr: TranslationMap = { finished: "Tamamlandı ({count})", statusRunningOne: "1 görev çalışıyor", statusRunningMany: "{count} görev çalışıyor", + statusPreviewMore: "+{count} daha", stopTask: "{title} öğesini durdur", viewTranscript: "Transkripti görüntüle", toolUseOne: "1 araç kullanımı", diff --git a/ui/src/i18n/locales/uk.ts b/ui/src/i18n/locales/uk.ts index d344fcbe16bb..de879c791ee7 100644 --- a/ui/src/i18n/locales/uk.ts +++ b/ui/src/i18n/locales/uk.ts @@ -3691,6 +3691,7 @@ export const uk: TranslationMap = { finished: "Завершено ({count})", statusRunningOne: "1 активне завдання", statusRunningMany: "{count} активних завдань", + statusPreviewMore: "+ще {count}", stopTask: "Зупинити {title}", viewTranscript: "Переглянути транскрипт", toolUseOne: "1 використання інструмента", diff --git a/ui/src/i18n/locales/vi.ts b/ui/src/i18n/locales/vi.ts index 44f8fbbb2081..91d3eea877a2 100644 --- a/ui/src/i18n/locales/vi.ts +++ b/ui/src/i18n/locales/vi.ts @@ -3677,6 +3677,7 @@ export const vi: TranslationMap = { finished: "Đã hoàn tất ({count})", statusRunningOne: "1 tác vụ đang chạy", statusRunningMany: "{count} tác vụ đang chạy", + statusPreviewMore: "+{count} nữa", stopTask: "Dừng {title}", viewTranscript: "Xem bản ghi", toolUseOne: "1 lần sử dụng công cụ", diff --git a/ui/src/i18n/locales/zh-CN.ts b/ui/src/i18n/locales/zh-CN.ts index 485da1bdec7a..bccc9ec92f55 100644 --- a/ui/src/i18n/locales/zh-CN.ts +++ b/ui/src/i18n/locales/zh-CN.ts @@ -3600,6 +3600,7 @@ export const zh_CN: TranslationMap = { finished: "已完成 ({count})", statusRunningOne: "1 个正在运行的任务", statusRunningMany: "{count} 个正在运行的任务", + statusPreviewMore: "另有 {count} 项", stopTask: "停止 {title}", viewTranscript: "查看转录", toolUseOne: "1 次工具调用", diff --git a/ui/src/i18n/locales/zh-TW.ts b/ui/src/i18n/locales/zh-TW.ts index 35a11839ce4e..a057ee301161 100644 --- a/ui/src/i18n/locales/zh-TW.ts +++ b/ui/src/i18n/locales/zh-TW.ts @@ -3606,6 +3606,7 @@ export const zh_TW: TranslationMap = { finished: "已完成 ({count})", statusRunningOne: "1 個執行中的任務", statusRunningMany: "{count} 個執行中的任務", + statusPreviewMore: "還有 +{count} 個", stopTask: "停止 {title}", viewTranscript: "檢視文字記錄", toolUseOne: "使用 1 次工具", diff --git a/ui/src/pages/chat/chat-view.test.ts b/ui/src/pages/chat/chat-view.test.ts index b93567979d4f..9b2271946f97 100644 --- a/ui/src/pages/chat/chat-view.test.ts +++ b/ui/src/pages/chat/chat-view.test.ts @@ -1650,6 +1650,7 @@ describe("chat composer workbench", () => { it("moves the background-tasks rail to a bottom strip on narrow panes", () => { const backgroundTasks = { agentId: "main", + statusRowId: "chat-tasks-status-test", collapsed: false, narrowLayout: false, connected: true, @@ -1681,6 +1682,7 @@ describe("chat composer workbench", () => { it("shows the running-tasks status row after the turn settles, not while working", () => { const backgroundTasks = { agentId: "main", + statusRowId: "chat-tasks-status-test", collapsed: true, narrowLayout: false, connected: true, diff --git a/ui/src/pages/chat/components/chat-background-tasks-status.ts b/ui/src/pages/chat/components/chat-background-tasks-status.ts new file mode 100644 index 000000000000..72df963ee0b3 --- /dev/null +++ b/ui/src/pages/chat/components/chat-background-tasks-status.ts @@ -0,0 +1,143 @@ +// Registers : the status row's hover preview uses it directly +// because openclaw-tooltip only carries plain-text content. +import "@awesome.me/webawesome/dist/components/tooltip/tooltip.js"; +import { html, nothing, type TemplateResult } from "lit"; +import "../../../components/elapsed-time.ts"; +import { icons } from "../../../components/icons.ts"; +import { t } from "../../../i18n/index.ts"; +import { formatRelativeTimestamp } from "../../../lib/format.ts"; +import { + isActiveTask, + partitionTasks, + taskStatusLabel, + taskTimestampMs, + taskTitle, + type TaskSummary, +} from "../../../lib/tasks/data.ts"; +import { STATUS_TONES, type BackgroundTasksProps } from "./chat-background-tasks.ts"; + +type BackgroundTasksStatus = { count: number; startedMs: number | null }; + +/** Summary for the bottom-of-thread status row: active-task count plus the + * oldest active start time so the row ticks one elapsed label, not one per + * task. `startedMs` is null when no active task has a usable timestamp. */ +function activeBackgroundTasksStatus( + props: BackgroundTasksProps | undefined, +): BackgroundTasksStatus | null { + const active = props?.tasks?.filter(isActiveTask) ?? []; + if (active.length === 0) { + return null; + } + let startedMs: number | null = null; + for (const task of active) { + const started = taskTimestampMs(task.startedAt ?? task.createdAt); + if (started > 0 && (startedMs === null || started < startedMs)) { + startedMs = started; + } + } + return { count: active.length, startedMs }; +} + +/** Rows the hover preview shows before deferring to the rail's full list. */ +const STATUS_PREVIEW_LIMIT = 5; + +function renderStatusPreviewRow(task: TaskSummary): TemplateResult { + const active = isActiveTask(task); + const tone = STATUS_TONES[task.status]; + const timeMs = active + ? taskTimestampMs(task.startedAt ?? task.createdAt) + : taskTimestampMs(task.updatedAt ?? task.createdAt); + return html` +
+ ${task.status === "running" + ? html`` + : nothing} + ${taskTitle(task)} + + ${taskStatusLabel(task.status)} + ${timeMs > 0 + ? html` + + ${active + ? html`` + : formatRelativeTimestamp(timeMs)} + ` + : nothing} + +
+ `; +} + +/** Hover/focus preview on the status row: the latest tasks at a glance + * without opening the rail. Content is read-only — a tooltip is a transient + * surface, so actions stay in the rail the click opens. */ +function renderStatusPreview(props: BackgroundTasksProps): TemplateResult { + const { active, recent } = partitionTasks(props.tasks ?? []); + const tasks = [...active, ...recent]; + const preview = tasks.slice(0, STATUS_PREVIEW_LIMIT); + const overflow = tasks.length - preview.length; + return html` + +
+ ${preview.map((task) => renderStatusPreviewRow(task))} + ${overflow > 0 + ? html`
+ ${t("chat.backgroundTasks.statusPreviewMore", { count: String(overflow) })} +
` + : nothing} +
+
+ `; +} + +/** Post-turn status row in the chat thread: once the agent turn settles while + * background tasks keep running, the running work stays visible next to a + * free composer. Hover previews the latest tasks; the link opens the tasks + * rail (noop when already open). */ +export function renderBackgroundTasksStatusRow( + backgroundTasks: BackgroundTasksProps | undefined, +): TemplateResult | typeof nothing { + const status = activeBackgroundTasksStatus(backgroundTasks); + // Disconnected snapshots are stale: task events cannot arrive, so a ticking + // "running" claim would be a lie. The rail owns the disconnected state. + if (!backgroundTasks?.connected || !status) { + return nothing; + } + const label = + status.count === 1 + ? t("chat.backgroundTasks.statusRunningOne") + : t("chat.backgroundTasks.statusRunningMany", { count: String(status.count) }); + const openRail = () => { + if (backgroundTasks.collapsed) { + backgroundTasks.onToggleCollapsed(); + } + }; + // The preview tooltip anchors the whole row (not the link button): wa-tooltip + // joins the anchor's aria-labelledby, which would replace the button's + // accessible name. It also stays a sibling so the ticking preview content + // never lives inside the polite live region. + return html` +
+ + ${status.startedMs !== null + ? html` + + + + ` + : nothing} + +
+ ${renderStatusPreview(backgroundTasks)} + `; +} diff --git a/ui/src/pages/chat/components/chat-background-tasks.test.ts b/ui/src/pages/chat/components/chat-background-tasks.test.ts index af6569120fc9..9ae7e43880e3 100644 --- a/ui/src/pages/chat/components/chat-background-tasks.test.ts +++ b/ui/src/pages/chat/components/chat-background-tasks.test.ts @@ -2,11 +2,11 @@ import { html, render } from "lit"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { GatewayBrowserClient } from "../../../api/gateway.ts"; import type { TaskSummary } from "../../../lib/tasks/data.ts"; +import { renderBackgroundTasksStatusRow } from "./chat-background-tasks-status.ts"; import { createBackgroundTasksProps, handleBackgroundTasksEvent, renderBackgroundTasksRail, - renderBackgroundTasksStatusRow, type BackgroundTasksHost, type BackgroundTasksProps, } from "./chat-background-tasks.ts"; @@ -215,6 +215,7 @@ describe("background tasks rail rendering", () => { render( html`${renderBackgroundTasksRail({ agentId: "main", + statusRowId: "chat-tasks-status-test", collapsed: false, narrowLayout: false, connected: true, @@ -258,6 +259,7 @@ describe("background tasks rail rendering", () => { render( html`${renderBackgroundTasksRail({ agentId: "main", + statusRowId: "chat-tasks-status-test", collapsed: false, narrowLayout: false, connected: true, @@ -303,6 +305,7 @@ describe("background tasks rail rendering", () => { render( html`${renderBackgroundTasksRail({ agentId: "main", + statusRowId: "chat-tasks-status-test", collapsed: false, narrowLayout: false, connected: true, @@ -332,6 +335,7 @@ describe("running-tasks status row", () => { function makeProps(overrides: Partial): BackgroundTasksProps { return { agentId: "main", + statusRowId: "chat-tasks-status-test", collapsed: true, narrowLayout: false, connected: true, @@ -423,6 +427,57 @@ describe("running-tasks status row", () => { expect(onToggleCollapsed).not.toHaveBeenCalled(); }); + it("anchors a hover preview of the latest tasks, active first, capped at five", () => { + const container = document.createElement("div"); + document.body.append(container); + render( + html`${renderBackgroundTasksStatusRow( + makeProps({ + tasks: [ + makeTask({ id: "a1", title: "Active one", updatedAt: 9_000 }), + makeTask({ id: "a2", status: "queued", title: "Queued two", updatedAt: 8_000 }), + makeTask({ id: "f1", status: "completed", title: "Finished one", updatedAt: 7_000 }), + makeTask({ id: "f2", status: "failed", title: "Finished two", updatedAt: 6_000 }), + makeTask({ id: "f3", status: "completed", title: "Finished three", updatedAt: 5_000 }), + makeTask({ id: "f4", status: "completed", title: "Finished four", updatedAt: 4_000 }), + ], + }), + )}`, + container, + ); + + const preview = container.querySelector("wa-tooltip.chat-tasks-status__preview"); + expect(preview?.getAttribute("for")).toBe("chat-tasks-status-test"); + expect(container.querySelector(".chat-tasks-status")?.id).toBe("chat-tasks-status-test"); + const titles = [...container.querySelectorAll(".chat-tasks-preview__title")].map((el) => + el.textContent?.trim(), + ); + expect(titles).toEqual([ + "Active one", + "Queued two", + "Finished one", + "Finished two", + "Finished three", + ]); + expect(container.querySelector(".chat-tasks-preview__more")?.textContent?.trim()).toBe( + "+1 more", + ); + }); + + it("sizes the preview to the task list without an overflow line", () => { + const container = document.createElement("div"); + document.body.append(container); + render( + html`${renderBackgroundTasksStatusRow( + makeProps({ tasks: [makeTask({ id: "t1", title: "Only task" })] }), + )}`, + container, + ); + + expect(container.querySelectorAll(".chat-tasks-preview__row").length).toBe(1); + expect(container.querySelector(".chat-tasks-preview__more")).toBeNull(); + }); + it("renders nothing without active tasks", () => { const container = document.createElement("div"); document.body.append(container); diff --git a/ui/src/pages/chat/components/chat-background-tasks.ts b/ui/src/pages/chat/components/chat-background-tasks.ts index eaa7d9a79437..9d9651436fa2 100644 --- a/ui/src/pages/chat/components/chat-background-tasks.ts +++ b/ui/src/pages/chat/components/chat-background-tasks.ts @@ -28,6 +28,7 @@ import { paneSessionAgentId } from "./chat-session-workspace.ts"; export type BackgroundTasksProps = { agentId: string; + statusRowId: string; collapsed: boolean; /** Pane too narrow for a side rail: presentation moves to a bottom strip * (mirrors the workspace rail's narrow mode). */ @@ -59,6 +60,9 @@ type BackgroundTasksState = { loading: boolean; pendingReload: boolean; requestId: number; + // wa-tooltip anchors by document id, so the status row's id must stay unique + // per pane: two panes on the same agent would otherwise cross-anchor. + statusRowId: string; tasks: TaskSummary[] | null; }; @@ -79,12 +83,15 @@ export type BackgroundTasksHost = { const ACTIVE_TASKS_LIMIT = 200; const RECENT_TASKS_LIMIT = 100; +let nextStatusRowId = 0; + function getBackgroundTasksState(host: BackgroundTasksHost): BackgroundTasksState { const agentId = paneSessionAgentId(host); const current = host.backgroundTasksState; if (current?.agentId === agentId) { return current; } + nextStatusRowId += 1; const next: BackgroundTasksState = { agentId, cancellingTaskIds: new Set(), @@ -97,6 +104,7 @@ function getBackgroundTasksState(host: BackgroundTasksHost): BackgroundTasksStat loading: false, pendingReload: false, requestId: 0, + statusRowId: `chat-tasks-status-${nextStatusRowId}`, tasks: null, }; host.backgroundTasksState = next; @@ -291,6 +299,7 @@ export function createBackgroundTasksProps( } return { agentId: state.agentId, + statusRowId: state.statusRowId, collapsed: state.collapsed, narrowLayout: opts.narrowLayout === true, connected: host.connected, @@ -318,67 +327,6 @@ function backgroundTasksActiveCount(props: BackgroundTasksProps | undefined): nu return props?.tasks?.filter(isActiveTask).length ?? 0; } -type BackgroundTasksStatus = { count: number; startedMs: number | null }; - -/** Summary for the bottom-of-thread status row: active-task count plus the - * oldest active start time so the row ticks one elapsed label, not one per - * task. `startedMs` is null when no active task has a usable timestamp. */ -function activeBackgroundTasksStatus( - props: BackgroundTasksProps | undefined, -): BackgroundTasksStatus | null { - const active = props?.tasks?.filter(isActiveTask) ?? []; - if (active.length === 0) { - return null; - } - let startedMs: number | null = null; - for (const task of active) { - const started = taskTimestampMs(task.startedAt ?? task.createdAt); - if (started > 0 && (startedMs === null || started < startedMs)) { - startedMs = started; - } - } - return { count: active.length, startedMs }; -} - -/** Post-turn status row in the chat thread: once the agent turn settles while - * background tasks keep running, the running work stays visible next to a - * free composer. The link opens the tasks rail (noop when already open). */ -export function renderBackgroundTasksStatusRow( - backgroundTasks: BackgroundTasksProps | undefined, -): TemplateResult | typeof nothing { - const status = activeBackgroundTasksStatus(backgroundTasks); - // Disconnected snapshots are stale: task events cannot arrive, so a ticking - // "running" claim would be a lie. The rail owns the disconnected state. - if (!backgroundTasks?.connected || !status) { - return nothing; - } - const label = - status.count === 1 - ? t("chat.backgroundTasks.statusRunningOne") - : t("chat.backgroundTasks.statusRunningMany", { count: String(status.count) }); - const openRail = () => { - if (backgroundTasks.collapsed) { - backgroundTasks.onToggleCollapsed(); - } - }; - return html` -
- - ${status.startedMs !== null - ? html` - - - - ` - : nothing} - -
- `; -} - export function renderBackgroundTasksToggle( backgroundTasks: BackgroundTasksProps | undefined, ): TemplateResult | typeof nothing { @@ -408,7 +356,8 @@ export function renderBackgroundTasksToggle( // Status tone drives the meta line's colored word and the running pulse dot; // pill chips read too heavy at rail width, so tone is typographic only. -const STATUS_TONES = { +// Shared with the status row's hover preview (chat-background-tasks-status.ts). +export const STATUS_TONES = { queued: "warn", running: "warn", completed: "ok", diff --git a/ui/src/pages/chat/components/chat-thread.ts b/ui/src/pages/chat/components/chat-thread.ts index fc0ec9e720ad..7b1e59e24658 100644 --- a/ui/src/pages/chat/components/chat-thread.ts +++ b/ui/src/pages/chat/components/chat-thread.ts @@ -49,10 +49,8 @@ import { PinnedMessages } from "../pinned-messages.ts"; import type { RealtimeTalkConversationEntry } from "../realtime-talk-conversation.ts"; import { getOrCreateSessionCacheValue } from "../session-cache.ts"; import { getToolTitlesVersion } from "../tool-titles.ts"; -import { - renderBackgroundTasksStatusRow, - type BackgroundTasksProps, -} from "./chat-background-tasks.ts"; +import { renderBackgroundTasksStatusRow } from "./chat-background-tasks-status.ts"; +import type { BackgroundTasksProps } from "./chat-background-tasks.ts"; import { renderChatDivider } from "./chat-divider.ts"; import { getAssistantAttachmentAvailabilityRenderVersion, diff --git a/ui/src/styles/chat/tool-cards.css b/ui/src/styles/chat/tool-cards.css index 5bf2d9e92355..8c3df747609a 100644 --- a/ui/src/styles/chat/tool-cards.css +++ b/ui/src/styles/chat/tool-cards.css @@ -1287,6 +1287,60 @@ text-decoration-color: currentColor; } +/* Hover preview on the status row: the latest tasks in a read-only card. The + tooltip body is content-sized (width: max-content up to --max-width), so a + single task stays one compact line instead of a fixed-size panel. */ +wa-tooltip.chat-tasks-status__preview { + --max-width: min(360px, calc(100vw - 24px)); + font-family: var(--font-body); +} + +wa-tooltip.chat-tasks-status__preview::part(body) { + padding: 8px 10px; + border: 1px solid color-mix(in srgb, var(--border-strong) 84%, transparent); + border-radius: var(--radius-md); + background: color-mix(in srgb, var(--card) 94%, black 6%); + box-shadow: var(--shadow-md); + color: var(--text); + font-size: var(--control-ui-text-xs); + line-height: 1.35; +} + +.chat-tasks-preview { + display: flex; + flex-direction: column; + gap: 6px; +} + +.chat-tasks-preview__row { + display: flex; + align-items: center; + gap: 8px; +} + +.chat-tasks-preview__title { + flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--text); + font-weight: 550; +} + +.chat-tasks-preview__meta { + display: inline-flex; + flex: none; + align-items: baseline; + gap: 5px; + color: var(--muted); + font-variant-numeric: tabular-nums; +} + +.chat-tasks-preview__more { + color: var(--muted); +} + @keyframes chatTasksStatusBreath { 0%, 100% {