From 60c2a9055037a31c43fc03392b2806031e574413 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Wed, 29 Apr 2026 13:05:52 -0700 Subject: [PATCH] fix(ui): gate control ui raw copy --- scripts/control-ui-i18n.ts | 337 +- ui/src/i18n/.i18n/ar.meta.json | 105 +- ui/src/i18n/.i18n/de.meta.json | 105 +- ui/src/i18n/.i18n/es.meta.json | 108 +- ui/src/i18n/.i18n/fa.meta.json | 105 +- ui/src/i18n/.i18n/fr.meta.json | 105 +- ui/src/i18n/.i18n/id.meta.json | 105 +- ui/src/i18n/.i18n/it.meta.json | 105 +- ui/src/i18n/.i18n/ja-JP.meta.json | 105 +- ui/src/i18n/.i18n/ko.meta.json | 105 +- ui/src/i18n/.i18n/nl.meta.json | 105 +- ui/src/i18n/.i18n/pl.meta.json | 105 +- ui/src/i18n/.i18n/pt-BR.meta.json | 106 +- ui/src/i18n/.i18n/raw-copy-baseline.json | 4443 ++++++++++++++++++++++ ui/src/i18n/.i18n/th.meta.json | 105 +- ui/src/i18n/.i18n/tr.meta.json | 105 +- ui/src/i18n/.i18n/uk.meta.json | 105 +- ui/src/i18n/.i18n/vi.meta.json | 105 +- ui/src/i18n/.i18n/zh-CN.meta.json | 109 +- ui/src/i18n/.i18n/zh-TW.meta.json | 106 +- ui/src/i18n/locales/ar.ts | 133 + ui/src/i18n/locales/de.ts | 151 +- ui/src/i18n/locales/en.ts | 133 + ui/src/i18n/locales/es.ts | 153 +- ui/src/i18n/locales/fa.ts | 133 + ui/src/i18n/locales/fr.ts | 173 +- ui/src/i18n/locales/id.ts | 171 +- ui/src/i18n/locales/it.ts | 133 + ui/src/i18n/locales/ja-JP.ts | 171 +- ui/src/i18n/locales/ko.ts | 167 +- ui/src/i18n/locales/nl.ts | 133 + ui/src/i18n/locales/pl.ts | 167 +- ui/src/i18n/locales/pt-BR.ts | 157 +- ui/src/i18n/locales/th.ts | 169 +- ui/src/i18n/locales/tr.ts | 181 +- ui/src/i18n/locales/uk.ts | 177 +- ui/src/i18n/locales/vi.ts | 133 + ui/src/i18n/locales/zh-CN.ts | 157 +- ui/src/i18n/locales/zh-TW.ts | 171 +- ui/src/ui/app-render.helpers.ts | 31 +- ui/src/ui/app-render.ts | 16 +- ui/src/ui/markdown.ts | 5 +- ui/src/ui/views/cron-quick-create.ts | 123 +- ui/src/ui/views/sessions.ts | 137 +- 44 files changed, 9522 insertions(+), 432 deletions(-) create mode 100644 ui/src/i18n/.i18n/raw-copy-baseline.json diff --git a/scripts/control-ui-i18n.ts b/scripts/control-ui-i18n.ts index ff0622c256d..b2f26e3f0bf 100644 --- a/scripts/control-ui-i18n.ts +++ b/scripts/control-ui-i18n.ts @@ -1,11 +1,12 @@ import { spawn } from "node:child_process"; import { createHash } from "node:crypto"; import { existsSync } from "node:fs"; -import { mkdir, readFile, stat, writeFile } from "node:fs/promises"; +import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises"; import { homedir } from "node:os"; import path from "node:path"; import { createInterface } from "node:readline"; import { fileURLToPath, pathToFileURL } from "node:url"; +import * as ts from "typescript"; import { formatErrorMessage } from "../src/infra/errors.ts"; interface TranslationMap { @@ -57,6 +58,27 @@ type TranslationBatchItem = { textHash: string; }; +type RawCopyFinding = { + kind: "html-attribute" | "html-text" | "object-property"; + line: number; + name: string; + path: string; + text: string; +}; + +type RawCopyBaselineEntry = { + count: number; + kind: RawCopyFinding["kind"]; + name: string; + path: string; + text: string; +}; + +type RawCopyBaseline = { + version: number; + entries: RawCopyBaselineEntry[]; +}; + const CONTROL_UI_I18N_WORKFLOW = 1; const DEFAULT_OPENAI_MODEL = "gpt-5.5"; const DEFAULT_ANTHROPIC_MODEL = "claude-opus-4-6"; @@ -68,6 +90,9 @@ const LOCALES_DIR = path.join(ROOT, "ui", "src", "i18n", "locales"); const I18N_ASSETS_DIR = path.join(ROOT, "ui", "src", "i18n", ".i18n"); const SOURCE_LOCALE_PATH = path.join(LOCALES_DIR, "en.ts"); const SOURCE_LOCALE = "en"; +const CONTROL_UI_SOURCE_DIR = path.join(ROOT, "ui", "src", "ui"); +const RAW_COPY_BASELINE_PATH = path.join(I18N_ASSETS_DIR, "raw-copy-baseline.json"); +const RAW_COPY_BASELINE_VERSION = 1; const MAX_BATCH_ITEMS = 20; const DEFAULT_BATCH_CHAR_BUDGET = 2_000; const TRANSLATE_MAX_ATTEMPTS = 2; @@ -422,6 +447,20 @@ function renderTranslationMemory(entries: Map): return `${ordered.map((entry) => JSON.stringify(entry)).join("\n")}\n`; } +function buildTranslationMemoryByTextHash( + entries: Map, + locale: string, +): Map { + const byTextHash = new Map(); + for (const entry of entries.values()) { + if (entry.tgt_lang !== locale || !entry.text_hash || !entry.translated.trim()) { + continue; + } + byTextHash.set(entry.text_hash, entry); + } + return byTextHash; +} + function buildGlossaryPrompt(glossary: readonly GlossaryEntry[]): string { if (glossary.length === 0) { return ""; @@ -488,6 +527,283 @@ function logProgress(message: string) { process.stdout.write(`control-ui-i18n: ${message}\n`); } +function toRepoPath(filePath: string): string { + return path.relative(ROOT, filePath).split(path.sep).join("/"); +} + +function normalizeRawCopyText(raw: string): string { + return raw + .replace(/\\n/g, " ") + .replace(/\s+/g, " ") + .replace(/·/giu, "·") + .trim(); +} + +function hasHumanLetters(text: string): boolean { + return /\p{L}/u.test(text); +} + +function lineNumberForOffset(source: string, offset: number): number { + let line = 1; + for (let index = 0; index < offset && index < source.length; index += 1) { + if (source.charCodeAt(index) === 10) { + line += 1; + } + } + return line; +} + +function parseDoubleQuotedString(raw: string): string { + try { + return JSON.parse(`"${raw}"`) as string; + } catch { + return raw; + } +} + +function pushRawCopyFinding( + findings: RawCopyFinding[], + params: Omit & { text: string }, +) { + const text = normalizeRawCopyText(params.text); + if (!text || !hasHumanLetters(text)) { + return; + } + findings.push({ + ...params, + text, + }); +} + +async function walkControlUiSourceFiles(dir: string): Promise { + const entries = await readdir(dir, { withFileTypes: true }); + const files: string[] = []; + for (const entry of entries) { + if (entry.name === "test-helpers") { + continue; + } + const fullPath = path.join(dir, entry.name); + if (entry.isDirectory()) { + files.push(...(await walkControlUiSourceFiles(fullPath))); + continue; + } + if (!entry.isFile() || !/\.tsx?$/u.test(entry.name)) { + continue; + } + if (/\.(?:test|browser\.test|node\.test)\.tsx?$/u.test(entry.name)) { + continue; + } + files.push(fullPath); + } + return files; +} + +function collectRawCopyFromSource(params: { + filePath: string; + source: string; + sourceFile: ts.SourceFile; +}): RawCopyFinding[] { + const { filePath, source, sourceFile } = params; + const repoPath = toRepoPath(filePath); + const findings: RawCopyFinding[] = []; + const attrPattern = + /\b(aria-label|placeholder|title)\s*=\s*"((?:(?!\$\{)[^"\\]|\\.)*?\p{L}(?:(?!\$\{)[^"\\]|\\.)*?)"/gu; + for (const match of source.matchAll(attrPattern)) { + const rawText = match[2]; + if (!rawText) { + continue; + } + pushRawCopyFinding(findings, { + kind: "html-attribute", + line: lineNumberForOffset(source, match.index ?? 0), + name: match[1] ?? "attribute", + path: repoPath, + text: parseDoubleQuotedString(rawText), + }); + } + + const propertyPattern = + /\b(label|title|subtitle|description|help|placeholder)\s*:\s*"((?:[^"\\]|\\.)*?\p{L}(?:[^"\\]|\\.)*?)"/gu; + for (const match of source.matchAll(propertyPattern)) { + const rawText = match[2]; + if (!rawText) { + continue; + } + pushRawCopyFinding(findings, { + kind: "object-property", + line: lineNumberForOffset(source, match.index ?? 0), + name: match[1] ?? "property", + path: repoPath, + text: parseDoubleQuotedString(rawText), + }); + } + + const textPattern = />\s*([^<>{}]*?\p{L}[^<>{}]*?)\s* { + if (ts.isTaggedTemplateExpression(node) && node.tag.getText(sourceFile) === "html") { + const template = node.template; + const chunks: Array<{ offset: number; text: string }> = []; + if (ts.isNoSubstitutionTemplateLiteral(template)) { + chunks.push({ + offset: template.getStart(sourceFile) + 1, + text: template.text, + }); + } else { + chunks.push({ + offset: template.head.getStart(sourceFile) + 1, + text: template.head.text, + }); + for (const span of template.templateSpans) { + chunks.push({ + offset: span.literal.getStart(sourceFile) + 1, + text: span.literal.text, + }); + } + } + for (const chunk of chunks) { + for (const match of chunk.text.matchAll(textPattern)) { + const rawText = match[1]; + if (!rawText) { + continue; + } + pushRawCopyFinding(findings, { + kind: "html-text", + line: lineNumberForOffset(source, chunk.offset + (match.index ?? 0)), + name: "text", + path: repoPath, + text: rawText, + }); + } + } + } + ts.forEachChild(node, visit); + }; + visit(sourceFile); + + return findings; +} + +async function collectControlUiRawCopyFindings(): Promise { + const files = await walkControlUiSourceFiles(CONTROL_UI_SOURCE_DIR); + const findings: RawCopyFinding[] = []; + for (const filePath of files.toSorted((left, right) => left.localeCompare(right))) { + const source = await readFile(filePath, "utf8"); + const sourceFile = ts.createSourceFile( + filePath, + source, + ts.ScriptTarget.Latest, + true, + filePath.endsWith(".tsx") ? ts.ScriptKind.TSX : ts.ScriptKind.TS, + ); + findings.push(...collectRawCopyFromSource({ filePath, source, sourceFile })); + } + return findings; +} + +function summarizeRawCopyFindings(findings: RawCopyFinding[]): RawCopyBaselineEntry[] { + const counts = new Map(); + for (const finding of findings) { + const key = [finding.path, finding.kind, finding.name, finding.text].join("\u0000"); + const existing = counts.get(key); + if (existing) { + existing.count += 1; + continue; + } + counts.set(key, { + count: 1, + kind: finding.kind, + name: finding.name, + path: finding.path, + text: finding.text, + }); + } + return [...counts.values()].toSorted( + (left, right) => + left.path.localeCompare(right.path) || + left.kind.localeCompare(right.kind) || + left.name.localeCompare(right.name) || + left.text.localeCompare(right.text), + ); +} + +function formatRawCopyBaseline(entries: RawCopyBaselineEntry[]): string { + return `${JSON.stringify( + { + version: RAW_COPY_BASELINE_VERSION, + entries, + } satisfies RawCopyBaseline, + null, + 2, + )}\n`; +} + +function formatRawCopyBaselineDiff( + current: RawCopyBaselineEntry[], + expected: RawCopyBaselineEntry[], +) { + const keyFor = (entry: RawCopyBaselineEntry) => + [entry.path, entry.kind, entry.name, entry.text].join("\u0000"); + const currentByKey = new Map(current.map((entry) => [keyFor(entry), entry])); + const expectedByKey = new Map(expected.map((entry) => [keyFor(entry), entry])); + const added = current.filter((entry) => { + const expectedEntry = expectedByKey.get(keyFor(entry)); + return !expectedEntry || expectedEntry.count !== entry.count; + }); + const removed = expected.filter((entry) => { + const currentEntry = currentByKey.get(keyFor(entry)); + return !currentEntry || currentEntry.count !== entry.count; + }); + const lines: string[] = []; + for (const entry of added.slice(0, 20)) { + lines.push( + `+ ${entry.path} ${entry.kind}:${entry.name} x${entry.count} ${JSON.stringify(entry.text)}`, + ); + } + for (const entry of removed.slice(0, 20)) { + lines.push( + `- ${entry.path} ${entry.kind}:${entry.name} x${entry.count} ${JSON.stringify(entry.text)}`, + ); + } + const extra = added.length + removed.length - lines.length; + if (extra > 0) { + lines.push(`... ${extra} more baseline delta(s)`); + } + return lines.join("\n"); +} + +async function syncControlUiRawCopyBaseline(options: { checkOnly: boolean; write: boolean }) { + const findings = await collectControlUiRawCopyFindings(); + const entries = summarizeRawCopyFindings(findings); + const expected = formatRawCopyBaseline(entries); + const current = existsSync(RAW_COPY_BASELINE_PATH) + ? await readFile(RAW_COPY_BASELINE_PATH, "utf8") + : ""; + if (!options.checkOnly && options.write && current !== expected) { + await mkdir(I18N_ASSETS_DIR, { recursive: true }); + await writeFile(RAW_COPY_BASELINE_PATH, expected, "utf8"); + } + if (options.checkOnly && current !== expected) { + let currentEntries: RawCopyBaselineEntry[] = []; + try { + const parsed = JSON.parse(current) as Partial; + currentEntries = Array.isArray(parsed.entries) ? parsed.entries : []; + } catch { + currentEntries = []; + } + const diff = formatRawCopyBaselineDiff(entries, currentEntries); + throw new Error( + [ + "control-ui raw-copy baseline drift detected.", + diff, + "Move user-facing strings into ui/src/i18n/locales/en.ts, or update the baseline with `node --import tsx scripts/control-ui-i18n.ts sync --write` when the raw string is intentional.", + ] + .filter(Boolean) + .join("\n"), + ); + } + logProgress(`raw-copy: baseline entries=${entries.length}`); +} + function isPromptTimeoutError(error: Error): boolean { return error.message.toLowerCase().includes("timed out"); } @@ -1030,6 +1346,7 @@ async function syncLocale( const glossaryFilePath = glossaryPath(entry); const glossary = await loadGlossary(glossaryFilePath); const tm = await loadTranslationMemory(tmPath(entry)); + const tmByTextHash = buildTranslationMemoryByTextHash(tm, entry.locale); const allowTranslate = hasTranslationProvider(); const nextFlat = new Map(); @@ -1040,6 +1357,7 @@ async function syncLocale( const textHash = hashText(text); const segmentCacheKey = cacheKey(key, textHash, entry.locale); const cached = tm.get(segmentCacheKey); + const cachedByText = tmByTextHash.get(textHash); const existing = existingFlat.get(key); const shouldRefreshFallback = previousFallbackKeys.has(key); @@ -1051,6 +1369,17 @@ async function syncLocale( continue; } + if (cachedByText && (shouldRefreshFallback || existing === undefined)) { + nextFlat.set(key, cachedByText.translated); + tm.set(segmentCacheKey, { + ...cachedByText, + cache_key: segmentCacheKey, + segment_id: key, + source_path: `ui/src/i18n/locales/${entry.fileName}`, + }); + continue; + } + if (existing !== undefined && !(allowTranslate && shouldRefreshFallback)) { nextFlat.set(key, existing); if (shouldRefreshFallback) { @@ -1281,6 +1610,12 @@ async function verifyRuntimeLocaleConfig() { async function main() { const args = parseArgs(process.argv.slice(2)); await verifyRuntimeLocaleConfig(); + if (args.command === "check" || (args.command === "sync" && args.write && !args.localeFilter)) { + await syncControlUiRawCopyBaseline({ + checkOnly: args.command === "check", + write: args.write, + }); + } const entries = args.localeFilter ? LOCALE_ENTRIES.filter((entry) => entry.locale === args.localeFilter) diff --git a/ui/src/i18n/.i18n/ar.meta.json b/ui/src/i18n/.i18n/ar.meta.json index e8c61ae4064..dac3502f445 100644 --- a/ui/src/i18n/.i18n/ar.meta.json +++ b/ui/src/i18n/.i18n/ar.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:26:43.775Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:41.033Z", "locale": "ar", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/de.meta.json b/ui/src/i18n/.i18n/de.meta.json index 37ece271517..47eeddaea4b 100644 --- a/ui/src/i18n/.i18n/de.meta.json +++ b/ui/src/i18n/.i18n/de.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:24:36.089Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:33.970Z", "locale": "de", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/es.meta.json b/ui/src/i18n/.i18n/es.meta.json index 93918ad0dcb..01d0f37da26 100644 --- a/ui/src/i18n/.i18n/es.meta.json +++ b/ui/src/i18n/.i18n/es.meta.json @@ -1,11 +1,109 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:25:04.646Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.next", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.thinking", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.unknown", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:35.408Z", "locale": "es", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 889, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fa.meta.json b/ui/src/i18n/.i18n/fa.meta.json index 268ea52d07c..d5cae37c8ef 100644 --- a/ui/src/i18n/.i18n/fa.meta.json +++ b/ui/src/i18n/.i18n/fa.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:29:06.276Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:55.119Z", "locale": "fa", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fr.meta.json b/ui/src/i18n/.i18n/fr.meta.json index 47bd1573096..a40f642e2e1 100644 --- a/ui/src/i18n/.i18n/fr.meta.json +++ b/ui/src/i18n/.i18n/fr.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:25:34.318Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:39.587Z", "locale": "fr", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/id.meta.json b/ui/src/i18n/.i18n/id.meta.json index b27357f61ef..6bb084a6490 100644 --- a/ui/src/i18n/.i18n/id.meta.json +++ b/ui/src/i18n/.i18n/id.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:27:41.106Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:46.741Z", "locale": "id", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/it.meta.json b/ui/src/i18n/.i18n/it.meta.json index 66efd5374a1..25ee9be4c91 100644 --- a/ui/src/i18n/.i18n/it.meta.json +++ b/ui/src/i18n/.i18n/it.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:26:51.753Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:42.451Z", "locale": "it", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ja-JP.meta.json b/ui/src/i18n/.i18n/ja-JP.meta.json index d4d306bf68f..f2711aec6b2 100644 --- a/ui/src/i18n/.i18n/ja-JP.meta.json +++ b/ui/src/i18n/.i18n/ja-JP.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:25:24.869Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:36.798Z", "locale": "ja-JP", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ko.meta.json b/ui/src/i18n/.i18n/ko.meta.json index e5de16514a7..fd754caa26c 100644 --- a/ui/src/i18n/.i18n/ko.meta.json +++ b/ui/src/i18n/.i18n/ko.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:25:40.100Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:38.201Z", "locale": "ko", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/nl.meta.json b/ui/src/i18n/.i18n/nl.meta.json index b9f7fed1833..7e68d2b7e3d 100644 --- a/ui/src/i18n/.i18n/nl.meta.json +++ b/ui/src/i18n/.i18n/nl.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:28:57.177Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:53.618Z", "locale": "nl", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pl.meta.json b/ui/src/i18n/.i18n/pl.meta.json index 4ddfb3e046f..862c460eb32 100644 --- a/ui/src/i18n/.i18n/pl.meta.json +++ b/ui/src/i18n/.i18n/pl.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:27:39.429Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:48.420Z", "locale": "pl", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pt-BR.meta.json b/ui/src/i18n/.i18n/pt-BR.meta.json index ed90a8a9d83..eb04e944548 100644 --- a/ui/src/i18n/.i18n/pt-BR.meta.json +++ b/ui/src/i18n/.i18n/pt-BR.meta.json @@ -1,11 +1,107 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:24:26.140Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.defaultName", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:32.446Z", "locale": "pt-BR", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 891, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/raw-copy-baseline.json b/ui/src/i18n/.i18n/raw-copy-baseline.json new file mode 100644 index 00000000000..2041f05fa34 --- /dev/null +++ b/ui/src/i18n/.i18n/raw-copy-baseline.json @@ -0,0 +1,4443 @@ +{ + "version": 1, + "entries": [ + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/app-render.ts", + "text": "⌘K" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/app-render.ts", + "text": "OpenClaw" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/app-render.ts", + "text": "Discord" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/app-render.ts", + "text": "iMessage" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/app-render.ts", + "text": "Signal" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/app-render.ts", + "text": "Slack" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/app-render.ts", + "text": "Telegram" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/app-render.ts", + "text": "WhatsApp" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/app-settings.ts", + "text": "This connection does not have the operator.read scope. Some features may be unavailable." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/app-settings.ts", + "text": "Gateway Error" + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/app-settings.ts", + "text": "Missing operator.read scope" + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/app-settings.ts", + "text": "Skills with missing dependencies" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/chat/build-chat-items.ts", + "text": "Compaction" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/chat-queue.ts", + "text": "Remove queued message" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/chat-queue.ts", + "text": "Steer queued message" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/chat-queue.ts", + "text": "Steer now" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/chat-queue.ts", + "text": "Steer" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/chat-queue.ts", + "text": "Steered" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/chat-welcome.ts", + "text": "for commands" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/chat-welcome.ts", + "text": "Ready to chat" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/chat-welcome.ts", + "text": "Type a message below ·" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/context-notice.ts", + "text": "Compact recommended session context" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/context-notice.ts", + "text": "Compact session context" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Delete message" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Open in canvas" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Delete" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Open in canvas" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Show message context details" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Context" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "JSON" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Voice note" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Unknown date" + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/chat/grouped-render.ts", + "text": "Unknown date" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "Export chat" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "New session" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "Queue message" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "Stop generating" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "Export" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "New session" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "Queue" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/run-controls.ts", + "text": "Stop" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/session-controls.ts", + "text": "Chat model" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/session-controls.ts", + "text": "Chat thinking level" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/side-result-render.ts", + "text": "BTW side result" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/side-result-render.ts", + "text": "Dismiss BTW result" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/side-result-render.ts", + "text": "Dismiss" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/side-result-render.ts", + "text": "BTW" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/side-result-render.ts", + "text": "Not saved to chat history" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/chat/slash-commands.ts", + "text": "Abort and restart with a new message" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/chat/slash-commands.ts", + "text": "Clear chat history" + }, + { + "count": 1, + "kind": "object-property", + "name": "help", + "path": "ui/src/ui/chat/slash-commands.ts", + "text": "book" + }, + { + "count": 1, + "kind": "object-property", + "name": "help", + "path": "ui/src/ui/chat/slash-commands.ts", + "text": "tools" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/chat/tool-cards.ts", + "text": "Open tool details in side panel" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/chat/tool-cards.ts", + "text": "Open in the side panel" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/tool-cards.ts", + "text": "Completed" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/chat/tool-cards.ts", + "text": "Raw details" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/chat/tool-cards.ts", + "text": "Tool input" + }, + { + "count": 2, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/chat/tool-cards.ts", + "text": "Tool output" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/components/dashboard-header.ts", + "text": "OpenClaw" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/navigation.ts", + "text": "agent" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/navigation.ts", + "text": "chat" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/navigation.ts", + "text": "control" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/navigation.ts", + "text": "settings" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Open Files tab" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "×" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Fallbacks" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Model Selection" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Not set" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Overview" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Primary Model" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Runtime" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Skills Filter" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Workspace" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "Workspace paths and identity metadata." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-overview.ts", + "text": "You have unsaved config changes." + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Tool preview" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Search skills" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Remove per-agent allowlist and use all skills" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Access" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "All skills are enabled. Disabling any skill will create a per-agent allowlist." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Available Right Now" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Could not load available tools for this session." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Could not load runtime tool catalog. Showing built-in fallback list instead." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Current Session" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Default Presets" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Disable All" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Enable All" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Enabled" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "enabled." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Filter" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Global tools.allow is set. Agent overrides cannot enable tools that are globally blocked." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Inherit" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Link to This Tool" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Live" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Load skills for this agent to view workspace-specific entries." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Load the gateway config to adjust tool profiles." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Load the gateway config to set per-agent skills." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Loading available tools…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Loading runtime tool catalog…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "No skills found." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "No tools are available for this session right now." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Profile" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Profile + per-tool overrides for this agent." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Quick Presets" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Reset" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Session" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Skills" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Source" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Status" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Switch chat to this agent to view its live runtime tools." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "This agent is using an explicit allowlist in config. Tool overrides are managed in the Config tab." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "This agent uses a custom skill allowlist." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "Tool Access" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/agents-panels-tools-skills.ts", + "text": "What this agent can use in the current chat session." + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Control canvases" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Control web browser" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Create or overwrite files" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Fetch web content" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Gateway control" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Image understanding" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "List agents" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "List sessions" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Make precise edits" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Manage background processes" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Nodes + devices" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Patch files (OpenAI)" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Read file contents" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Read memory files" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Run shell commands" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Schedule tasks" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Search the web" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Semantic search" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Send messages" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Send to session" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Session history" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Session status" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Spawn sub-agent" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Agents" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "agents_list" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "apply_patch" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Automation" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "browser" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "canvas" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Coding" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "cron" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "edit" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "exec" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Files" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Full" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "gateway" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "image" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Media" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Memory" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "memory_get" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "memory_search" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "message" + }, + { + "count": 2, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Messaging" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Minimal" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "nodes" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Nodes" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "process" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "read" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Runtime" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "session_status" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Sessions" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "sessions_history" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "sessions_list" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "sessions_send" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "sessions_spawn" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "UI" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "Web" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "web_fetch" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "web_search" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/agents-utils.ts", + "text": "write" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.config.ts", + "text": "Channel config schema unavailable." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.config.ts", + "text": "Loading config schema…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.config.ts", + "text": "Schema unavailable. Use Raw." + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.discord.ts", + "text": "Bot status and channel configuration." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.discord.ts", + "text": "Discord" + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.googlechat.ts", + "text": "Chat API webhook status and channel configuration." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.googlechat.ts", + "text": "Google Chat" + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.imessage.ts", + "text": "macOS bridge status and channel configuration." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.imessage.ts", + "text": "iMessage" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "https://example.com" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "https://example.com/avatar.jpg" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "https://example.com/banner.jpg" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "satoshi" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "Satoshi Nakamoto" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "you@example.com" + }, + { + "count": 1, + "kind": "object-property", + "name": "placeholder", + "path": "ui/src/ui/views/channels.nostr-profile-form.ts", + "text": "you@getalby.com" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.nostr.ts", + "text": "Decentralized DMs via Nostr relays (NIP-04)." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.nostr.ts", + "text": "NIP-05" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.nostr.ts", + "text": "Nostr" + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.signal.ts", + "text": "signal-cli status and channel configuration." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.signal.ts", + "text": "Signal" + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.slack.ts", + "text": "Socket mode status and channel configuration." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.slack.ts", + "text": "Slack" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.telegram.ts", + "text": "Bot status and channel configuration." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/channels.telegram.ts", + "text": "Telegram" + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.telegram.ts", + "text": "Bot status and channel configuration." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.telegram.ts", + "text": "Telegram" + }, + { + "count": 1, + "kind": "object-property", + "name": "subtitle", + "path": "ui/src/ui/views/channels.whatsapp.ts", + "text": "Link WhatsApp Web and monitor connection health." + }, + { + "count": 1, + "kind": "object-property", + "name": "title", + "path": "ui/src/ui/views/channels.whatsapp.ts", + "text": "WhatsApp" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Attach file" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Close search" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Command arguments" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Exit focus mode" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Loading chat" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Remove attachment" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Search messages" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/chat.ts", + "text": "Slash commands" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/chat.ts", + "text": "Search messages..." + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/chat.ts", + "text": "Attach file" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/chat.ts", + "text": "Exit focus mode" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/chat.ts", + "text": "Unpin" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "×" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "close" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "Enter" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "Esc" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "fill" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "instant" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "navigate" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "No matching messages" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "run" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "select" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/chat.ts", + "text": "Tab" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/command-palette.ts", + "text": "esc" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Key" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Remove entry" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Remove item" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Reset to default" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Add" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Add Entry" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Custom entries" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "No custom entries." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "No items yet. Click \"Add\" to create one." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Select..." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Unsupported array schema. Use Raw mode." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.node.ts", + "text": "Unsupported schema node. Use Raw mode." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Schema unavailable." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Unsupported schema. Use Raw." + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Agent Communication Protocol runtime and streaming settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Agent configurations, models, and identities" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "AI model configurations and providers" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "API keys and authentication profiles" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Audio input/output settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Auto-update settings and release channel" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Broadcast and notification settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Browser automation settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Canvas rendering and display" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "CLI banner and startup behavior" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Custom slash commands" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Environment variables passed to the gateway process" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Gateway metadata and version information" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Gateway server settings (port, auth, binding)" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Instrumentation, OpenTelemetry, and cache-trace settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Key bindings and shortcuts" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Log levels and output configuration" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Message handling and routing settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Messaging channels (Telegram, Discord, Slack, etc.)" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Model Context Protocol server definitions" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Plugin management and extensions" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Scheduled tasks and automation" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Secret provider configuration" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Service discovery and networking" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Session management and persistence" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Setup wizard state and history" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Skill packs and capabilities" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Tool configurations (browser, search, etc.)" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "User interface preferences" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Voice and speech settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Web server and API settings" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Webhooks and event hooks" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "ACP" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Agents" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Audio" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Authentication" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Bindings" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Broadcast" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Browser" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Canvas Host" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Channels" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "CLI" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Commands" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Cron" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Diagnostics" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Discovery" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Environment Variables" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Gateway" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Hooks" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Logging" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "MCP" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Messages" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Metadata" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Models" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Plugins" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Secrets" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Session" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Setup Wizard" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Skills" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Talk" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Tools" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "UI" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Updates" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-form.render.ts", + "text": "Web" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Balanced default for daily use." + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Highest context budget for repo work." + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Lean follow-ups for shared bots." + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Smallest context budget and lowest cost." + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Code Agent" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Minimal" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Personal Assistant" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-presets.ts", + "text": "Team Bot" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Assistant identity" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Your local chat identity" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/config-quick.ts", + "text": "JD or 🦞" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Assistant" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Avatar is browser-local" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Avatar text / emoji" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Bootstrap Context" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Browse →" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Choose a built-in profile to replace the current custom values." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Choose how much workspace context OpenClaw injects into each run. These profiles do not change your model, tools, channels, or theme." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Choose image" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Clear avatar" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Clear override" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Configure →" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Connect →" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Current" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Custom" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Custom bootstrap settings are active." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Device auth" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Discard" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Exec policy" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Fast mode" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Gateway auth" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Manage →" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Mode" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Model" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "No channels configured" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Pending" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Profiles only change bootstrap size and follow-up reinjection behavior." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Roundness" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Save Profile writes it as the default. Apply Now writes it and reloads the current session." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Saved" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Selected" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Stored in this browser only." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Stores a Control UI override. Clear it to return to IDENTITY.md." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Theme" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Thinking" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config-quick.ts", + "text": "User" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Bootstrap Per File" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Bootstrap Total" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Claw" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Dash" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Default" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Follow-up Turns" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Full" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Knot" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "None" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Round" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config-quick.ts", + "text": "Slight" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/config.ts", + "text": "Clear search" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/config.ts", + "text": "Search settings" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/config.ts", + "text": "Toggle raw config redaction" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/config.ts", + "text": "https://tweakcn.com/editor/theme?theme=... or amethyst-haze" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/config.ts", + "text": "Raw config (JSON/JSON5)" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/config.ts", + "text": "Search settings..." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Adjust corner radius across the UI." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Assistant" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Browser support" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Changes detected (JSON diff not available)" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Choose a theme family." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Clear" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Click" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Connection" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Don't remind again" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Form" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Gateway" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Import" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Import from tweakcn" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Loaded" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Loading schema…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "No changes" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Not available in this browser." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Notifications are blocked. Update your browser site permissions to allow notifications." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Open tweakcn.com, choose or create a theme, click Share, then paste the copied theme link here. Share links, editor URLs, registry URLs, theme IDs, and default theme names like amethyst-haze are accepted." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Peek" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Permission" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Push Notifications" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Quick Settings" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Raw" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Raw mode disabled (snapshot cannot safely round-trip raw text)." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Roundness" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Send test" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Status" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Subscribe to receive browser push notifications from your gateway." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Theme" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Theme link or ID" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "to add one browser-local tweakcn theme. In tweakcn, use Share and paste the copied link here." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Unsubscribe" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "View pending changes" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Your config contains fields the form editor can't safely represent. Use Raw mode to edit those entries." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/config.ts", + "text": "Your configuration is invalid. Some settings may not work as expected." + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config.ts", + "text": "Black & red" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config.ts", + "text": "Chocolate blueprint" + }, + { + "count": 1, + "kind": "object-property", + "name": "description", + "path": "ui/src/ui/views/config.ts", + "text": "Chroma family" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Acp" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Agents" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "AI & Agents" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Approvals" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Audio" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Authentication" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Automation" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Bindings" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Broadcast" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Browser" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "CanvasHost" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Channels" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Claw" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Cli" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Commands" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Communication" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Core" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Cron" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Dash" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Diagnostics" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Discovery" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Environment" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Gateway" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Hooks" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Infrastructure" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Knot" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Logging" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Mcp" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Media" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Memory" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Messages" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Meta" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Models" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "NodeHost" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Other" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Plugins" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Secrets" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Session" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Setup Wizard" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Skills" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Talk" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Theme" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Tools" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "UI" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Updates" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/config.ts", + "text": "Web" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/cron.ts", + "text": "+1555... or chat id" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/cron.ts", + "text": "Account ID for multi-account setups" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/cron.ts", + "text": "agent:main:main" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/cron.ts", + "text": "default" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "+ New" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Announce (via channel)" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Consecutive errors before alerting." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Control when this job sends repeated-failure alerts." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Custom per-job settings" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Disable for this job" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Inherit global setting" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Light context" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Minimum seconds between alerts." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Optional channel account ID for multi-account setups." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Optional recipient override for failure alerts." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Optional routing key for job delivery and wake routing." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Run if due" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Use lightweight bootstrap context for this agent job." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/cron.ts", + "text": "Webhook (HTTP POST)" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/debug.ts", + "text": "openclaw security audit --deep" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": ", then reload this tab." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Claims" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Close" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Contradictions" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Copy archive path" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Corrections or revisions" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Dreams" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Enable" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Ended on:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Id:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Import details" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Imported Insights" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Imported Insights and Memory Palace are provided by the bundled" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Labels:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Loading imported insights…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Loading memory palace…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Loading wiki page…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Memory Palace" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Memory palace is not populated yet" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Memory Wiki is not enabled" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "memory-wiki" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Messages:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "No imported insights yet" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Open Config" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Open questions" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Open source page" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Open wiki page" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Page details" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "plugin." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "plugins.entries.memory-wiki.enabled = true" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Potentially useful signals" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "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." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Risk reasons:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Run a ChatGPT import with apply to surface clustered imported insights here." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Started with:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "These are imported insights clustered from external history; use them to review what imports surfaced before any of it graduates into durable memory." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "This is the compiled memory wiki surface the system can search and reason over; use it to inspect actual memory pages, claims, open questions, and contradictions rather than raw imported source chats." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "This is the raw dream diary the system writes while replaying and consolidating memory; use it to inspect what the memory system is noticing, and where it still looks noisy or thin." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Wiki page:" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "z" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/dreaming.ts", + "text": "Z" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/login-gate.ts", + "text": "ws://127.0.0.1:18789" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/login-gate.ts", + "text": "OpenClaw" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/logs.ts", + "text": "Search logs" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/logs.ts", + "text": "Auto-follow" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/logs.ts", + "text": "Filter" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/logs.ts", + "text": "Gateway file logs (JSONL)." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/logs.ts", + "text": "Log output truncated; showing latest chunk." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/logs.ts", + "text": "Logs" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/logs.ts", + "text": "No log entries." + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/markdown-sidebar.ts", + "text": "Close sidebar" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "title", + "path": "ui/src/ui/views/markdown-sidebar.ts", + "text": "Close sidebar" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/markdown-sidebar.ts", + "text": "No content available" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/markdown-sidebar.ts", + "text": "Rendered Markdown" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/markdown-sidebar.ts", + "text": "Sanitized rich-text preview for quick reading." + }, + { + "count": 3, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/markdown-sidebar.ts", + "text": "View Raw Text" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Add pattern" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Allowlist" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Allowlist and approval policy for" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Ask" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Ask fallback" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Auto-allow skill CLIs" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Case-insensitive glob patterns." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Defaults" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Enabled" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Exec approvals" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "exec host=gateway/node" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Fallback" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Gateway" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Gateway edits local approvals; node edits the selected node." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Host" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Load exec approvals to edit allowlists." + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Mode" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "No allowlist entries yet." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "No nodes advertise exec approvals yet." + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Node" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Pattern" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Remove" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Scope" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Security" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Select node" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Target" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Use default" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Allowlist" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Always" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Deny" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Full" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "Off" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/nodes-exec-approvals.ts", + "text": "On miss" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Any node" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Approve" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Binding" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Devices" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "No agents found." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "No nodes found." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "No nodes with system.run available." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "No paired devices." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Nodes" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Paired" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Paired devices and live links." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Pairing requests + role tokens." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Pending" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Reject" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Revoke" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Rotate" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Tokens" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Tokens: none" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/nodes.ts", + "text": "Use default" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/overview.ts", + "text": "OPENCLAW_GATEWAY_TOKEN" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/overview.ts", + "text": "ws://100.x.y.z:18789" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "?token=" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": ". Query parameters (" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": ") may appear in server logs." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "#token=<token>" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "→ set token" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "→ tokenized URL" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "Auth token must be passed as a URL fragment:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "openclaw dashboard --no-open" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "openclaw devices list" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/overview.ts", + "text": "openclaw doctor --generate-gateway-token" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/sessions.ts", + "text": "Previous" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills-grouping.ts", + "text": "Built-in Skills" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills-grouping.ts", + "text": "Extra Skills" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills-grouping.ts", + "text": "Installed Skills" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills-grouping.ts", + "text": "Other Skills" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills-grouping.ts", + "text": "Workspace Skills" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills-shared.ts", + "text": "bundled" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills-shared.ts", + "text": "disabled" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/skills.ts", + "text": "Filter installed skills" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "placeholder", + "path": "ui/src/ui/views/skills.ts", + "text": "Search ClawHub skills…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "API key" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "ClawHub" + }, + { + "count": 2, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Close" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Get your key:" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Installed skills and their status." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Missing requirements" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "No skills found on ClawHub." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Save key" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Search and install skills from the registry" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Searching…" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Skill not found." + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Skills" + }, + { + "count": 1, + "kind": "html-text", + "name": "text", + "path": "ui/src/ui/views/skills.ts", + "text": "Source:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills.ts", + "text": "All" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills.ts", + "text": "Disabled" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills.ts", + "text": "Needs Setup" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/skills.ts", + "text": "Ready" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "agent:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "channel:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "has:errors" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "has:tools" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "maxCost:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "minTokens:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "model:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "provider:" + }, + { + "count": 1, + "kind": "object-property", + "name": "label", + "path": "ui/src/ui/views/usage-query.ts", + "text": "tool:" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/usage-render-details.ts", + "text": "Filter by role" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/usage-render-details.ts", + "text": "Filter by tool" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/usage-render-overview.ts", + "text": "Remove days filter" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/usage-render-overview.ts", + "text": "Remove hours filter" + }, + { + "count": 1, + "kind": "html-attribute", + "name": "aria-label", + "path": "ui/src/ui/views/usage-render-overview.ts", + "text": "Remove session filter" + } + ] +} diff --git a/ui/src/i18n/.i18n/th.meta.json b/ui/src/i18n/.i18n/th.meta.json index e7c8e8b3273..6c554aabda7 100644 --- a/ui/src/i18n/.i18n/th.meta.json +++ b/ui/src/i18n/.i18n/th.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:27:45.085Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:50.212Z", "locale": "th", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/tr.meta.json b/ui/src/i18n/.i18n/tr.meta.json index df416d60933..b13d1929b0f 100644 --- a/ui/src/i18n/.i18n/tr.meta.json +++ b/ui/src/i18n/.i18n/tr.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:26:27.062Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:43.889Z", "locale": "tr", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/uk.meta.json b/ui/src/i18n/.i18n/uk.meta.json index 0aa33ab3ae5..648b3cd357d 100644 --- a/ui/src/i18n/.i18n/uk.meta.json +++ b/ui/src/i18n/.i18n/uk.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:26:42.042Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:45.305Z", "locale": "uk", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/vi.meta.json b/ui/src/i18n/.i18n/vi.meta.json index 1e72b9190e7..3188447b575 100644 --- a/ui/src/i18n/.i18n/vi.meta.json +++ b/ui/src/i18n/.i18n/vi.meta.json @@ -1,11 +1,106 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:28:22.314Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:51.949Z", "locale": "vi", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 892, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-CN.meta.json b/ui/src/i18n/.i18n/zh-CN.meta.json index f8c2e04b896..34758322d51 100644 --- a/ui/src/i18n/.i18n/zh-CN.meta.json +++ b/ui/src/i18n/.i18n/zh-CN.meta.json @@ -1,11 +1,110 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:08:28.139Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.next", + "common.none", + "cron.quickCreate.defaultName", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.thinking", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.unknown", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:29.270Z", "locale": "zh-CN", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 888, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-TW.meta.json b/ui/src/i18n/.i18n/zh-TW.meta.json index 7150cff77c9..83848d5cd01 100644 --- a/ui/src/i18n/.i18n/zh-TW.meta.json +++ b/ui/src/i18n/.i18n/zh-TW.meta.json @@ -1,11 +1,107 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T19:24:31.857Z", + "fallbackKeys": [ + "chat.commandPaletteTitle", + "chat.dismissUpdateBanner", + "chat.docsOpensInNewTab", + "chat.gatewayStatus", + "chat.openCommandPalette", + "chat.runningVersion", + "chat.settings", + "chat.updateAvailable", + "chat.updateNow", + "chat.updating", + "common.back", + "common.colorMode", + "common.colorModeOption", + "common.copied", + "common.copyCode", + "common.create", + "common.dark", + "common.delete", + "common.dismiss", + "common.none", + "cron.quickCreate.defaultName", + "cron.quickCreate.delivery.isolated.description", + "cron.quickCreate.delivery.isolated.label", + "cron.quickCreate.delivery.notify.description", + "cron.quickCreate.delivery.notify.label", + "cron.quickCreate.delivery.silent.description", + "cron.quickCreate.delivery.silent.label", + "cron.quickCreate.howHeading", + "cron.quickCreate.howHint", + "cron.quickCreate.nameOptional", + "cron.quickCreate.namePlaceholder", + "cron.quickCreate.promptPlaceholder", + "cron.quickCreate.schedules.everyEvening.description", + "cron.quickCreate.schedules.everyEvening.label", + "cron.quickCreate.schedules.everyMorning.description", + "cron.quickCreate.schedules.everyMorning.label", + "cron.quickCreate.schedules.hourly.description", + "cron.quickCreate.schedules.hourly.label", + "cron.quickCreate.schedules.once.description", + "cron.quickCreate.schedules.once.label", + "cron.quickCreate.schedules.weekdays.description", + "cron.quickCreate.schedules.weekdays.label", + "cron.quickCreate.schedules.weekly.description", + "cron.quickCreate.schedules.weekly.label", + "cron.quickCreate.steps.how", + "cron.quickCreate.steps.what", + "cron.quickCreate.steps.when", + "cron.quickCreate.title", + "cron.quickCreate.whatHeading", + "cron.quickCreate.whatHint", + "cron.quickCreate.whenHeading", + "cron.quickCreate.whenHint", + "sessionsView.autoThreshold", + "sessionsView.branchFromCheckpoint", + "sessionsView.checkpoint", + "sessionsView.checkpoints", + "sessionsView.compaction", + "sessionsView.customOption", + "sessionsView.defaultOption", + "sessionsView.deleteSelected", + "sessionsView.fast", + "sessionsView.full", + "sessionsView.global", + "sessionsView.hideCheckpoints", + "sessionsView.inherit", + "sessionsView.key", + "sessionsView.kind", + "sessionsView.label", + "sessionsView.limit", + "sessionsView.loadingCheckpoints", + "sessionsView.manual", + "sessionsView.minutesPlaceholder", + "sessionsView.noCheckpoints", + "sessionsView.noSessions", + "sessionsView.noSummary", + "sessionsView.offExplicit", + "sessionsView.on", + "sessionsView.optionalPlaceholder", + "sessionsView.overflowRetry", + "sessionsView.reasoning", + "sessionsView.restoreCheckpoint", + "sessionsView.searchPlaceholder", + "sessionsView.selectAllOnPage", + "sessionsView.selected", + "sessionsView.selectSession", + "sessionsView.showCheckpoints", + "sessionsView.store", + "sessionsView.stream", + "sessionsView.subtitle", + "sessionsView.timeoutRetry", + "sessionsView.tokenDeltaUnavailable", + "sessionsView.tokenRange", + "sessionsView.tokensBefore", + "sessionsView.updated", + "sessionsView.verbose" + ], + "generatedAt": "2026-04-29T19:56:30.746Z", "locale": "zh-TW", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", - "totalKeys": 881, - "translatedKeys": 881, + "sourceHash": "c7d0317c304e6a9d3505e9058a0a0aeb2a3a0eb1fc45d31d12b2602be4cbddcf", + "totalKeys": 986, + "translatedKeys": 891, "workflow": 1 } diff --git a/ui/src/i18n/locales/ar.ts b/ui/src/i18n/locales/ar.ts index 167c0f028ab..d2db592fa04 100644 --- a/ui/src/i18n/locales/ar.ts +++ b/ui/src/i18n/locales/ar.ts @@ -21,15 +21,27 @@ export const ar: TranslationMap = { call: "اتصال", confirm: "تأكيد", cancel: "إلغاء", + next: "التالي", + back: "Back", + create: "Create", + copy: "نسخ", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "إلغاء التحديد", enabled: "مفعّل", disabled: "معطّل", + none: "none", na: "غير متوفر", never: "أبدًا", configured: "مهيأ", running: "قيد التشغيل", linked: "مرتبط", mode: "الوضع", + system: "النظام", + light: "خفيف", + dark: "Dark", baseUrl: "عنوان URL الأساسي", lastStart: "آخر بدء", lastProbe: "آخر فحص", @@ -49,6 +61,8 @@ export const ar: TranslationMap = { version: "الإصدار", docs: "المستندات", theme: "السمة", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "الموارد", search: "بحث", save: "حفظ", @@ -139,6 +153,57 @@ export const ar: TranslationMap = { lastInput: "آخر إدخال {time}", reason: "السبب {reason}", }, + sessionsView: { + title: "الجلسات", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "نشط", + limit: "Limit", + global: "Global", + unknown: "غير معروف", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "الرموز", + compaction: "Compaction", + thinking: "التفكير", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "متوقف", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "لا توجد وكلاء", copyId: "نسخ المعرّف", @@ -823,6 +888,7 @@ export const ar: TranslationMap = { chat: { disconnected: "تم قطع الاتصال بـ Gateway.", refreshTitle: "تحديث بيانات الدردشة", + settings: "Chat settings", thinkingToggle: "تبديل مخرجات تفكير/عمل المساعد", toolCallsToggle: "تبديل استدعاءات الأدوات ونتائج الأدوات", focusToggle: "تبديل وضع التركيز (إخفاء الشريط الجانبي + رأس الصفحة)", @@ -830,6 +896,15 @@ export const ar: TranslationMap = { showCronSessions: "إظهار جلسات cron", showCronSessionsHidden: "إظهار جلسات cron ({count} مخفية)", onboardingDisabled: "معطل أثناء الإعداد", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "English (الإنجليزية)", @@ -853,6 +928,64 @@ export const ar: TranslationMap = { fa: "فارسی (الفارسية)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "الأتمتة", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "مفعّل", yes: "نعم", diff --git a/ui/src/i18n/locales/de.ts b/ui/src/i18n/locales/de.ts index 3a4c0723134..7aeb9604393 100644 --- a/ui/src/i18n/locales/de.ts +++ b/ui/src/i18n/locales/de.ts @@ -16,20 +16,32 @@ export const de: TranslationMap = { connected: "Verbunden", refresh: "Aktualisieren", reload: "Neu laden", - reset: "Reset", + reset: "Zurücksetzen", probe: "Prüfen", call: "Anrufen", confirm: "Bestätigen", cancel: "Abbrechen", + next: "Nächste", + back: "Back", + create: "Create", + copy: "Kopieren", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Auswahl aufheben", enabled: "Aktiviert", disabled: "Deaktiviert", + none: "none", na: "k. A.", never: "never", configured: "Konfiguriert", running: "Wird ausgeführt", linked: "Verknüpft", mode: "Modus", + system: "System", + light: "Leicht", + dark: "Dark", baseUrl: "Basis-URL", lastStart: "Letzter Start", lastProbe: "Letzte Prüfung", @@ -49,6 +61,8 @@ export const de: TranslationMap = { version: "Version", docs: "Dokumentation", theme: "Design", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Ressourcen", search: "Suchen", save: "Speichern", @@ -143,6 +157,57 @@ export const de: TranslationMap = { lastInput: "Letzte Eingabe {time}", reason: "Grund {reason}", }, + sessionsView: { + title: "Sitzungen", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Aktiv", + limit: "Limit", + global: "Global", + unknown: "Unbekannt", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokens", + compaction: "Compaction", + thinking: "Denken", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "aus", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -155,7 +220,7 @@ export const de: TranslationMap = { selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { overview: "Overview", - files: "Files", + files: "Dateien", tools: "Tools", skills: "Skills", channels: "Channels", @@ -191,7 +256,7 @@ export const de: TranslationMap = { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", jobs: "Jobs", - nextWake: "Next wake", + nextWake: "Nächstes Aufwachen", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -239,7 +304,7 @@ export const de: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Ausführen", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -249,7 +314,7 @@ export const de: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Ereignisprotokoll", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -265,7 +330,7 @@ export const de: TranslationMap = { labels: { host: "Host", agent: "Agent", - session: "Session", + session: "Sitzung", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -298,7 +363,7 @@ export const de: TranslationMap = { sessions: "Sitzungen", usage: "Nutzung", cron: "Cron-Aufgaben", - skills: "Fähigkeiten", + skills: "Skills", nodes: "Geräte", chat: "Chat", config: "Konfiguration", @@ -349,7 +414,7 @@ export const de: TranslationMap = { toggleTokenVisibility: "Token-Sichtbarkeit umschalten", showPassword: "Passwort anzeigen", hidePassword: "Passwort ausblenden", - togglePasswordVisibility: "Passwort-Sichtbarkeit umschalten", + togglePasswordVisibility: "Sichtbarkeit des Passworts umschalten", }, snapshot: { title: "Aufnahme", @@ -829,7 +894,7 @@ export const de: TranslationMap = { passwordPlaceholder: "optional", showToken: "Token anzeigen", hideToken: "Token ausblenden", - toggleTokenVisibility: "Sichtbarkeit des Tokens umschalten", + toggleTokenVisibility: "Token-Sichtbarkeit umschalten", showPassword: "Passwort anzeigen", hidePassword: "Passwort ausblenden", togglePasswordVisibility: "Sichtbarkeit des Passworts umschalten", @@ -837,6 +902,7 @@ export const de: TranslationMap = { chat: { disconnected: "Verbindung zum Gateway getrennt.", refreshTitle: "Chat-Daten aktualisieren", + settings: "Chat settings", thinkingToggle: "Ausgabe des Assistenten ein-/ausblenden", toolCallsToggle: "Tool-Aufrufe und Tool-Ergebnisse umschalten", focusToggle: "Fokusmodus ein-/ausschalten (Seitenleiste + Kopfzeile ausblenden)", @@ -844,6 +910,15 @@ export const de: TranslationMap = { showCronSessions: "Cron-Sitzungen anzeigen", showCronSessionsHidden: "Cron-Sitzungen anzeigen ({count} ausgeblendet)", onboardingDisabled: "Während der Einrichtung deaktiviert", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Englisch", @@ -867,6 +942,64 @@ export const de: TranslationMap = { fa: "فارسی (Persisch)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automatisierung", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Aktiviert", yes: "Ja", diff --git a/ui/src/i18n/locales/en.ts b/ui/src/i18n/locales/en.ts index 114bd9e50ce..e4cfa7875b7 100644 --- a/ui/src/i18n/locales/en.ts +++ b/ui/src/i18n/locales/en.ts @@ -20,15 +20,27 @@ export const en: TranslationMap = { call: "Call", confirm: "Confirm", cancel: "Cancel", + next: "Next", + back: "Back", + create: "Create", + copy: "Copy", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Unselect", enabled: "Enabled", disabled: "Disabled", + none: "none", na: "n/a", never: "never", configured: "Configured", running: "Running", linked: "Linked", mode: "Mode", + system: "System", + light: "Light", + dark: "Dark", baseUrl: "Base URL", lastStart: "Last start", lastProbe: "Last probe", @@ -48,6 +60,8 @@ export const en: TranslationMap = { version: "Version", docs: "Docs", theme: "Theme", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Resources", search: "Search", save: "Save", @@ -138,6 +152,57 @@ export const en: TranslationMap = { lastInput: "Last input {time}", reason: "Reason {reason}", }, + sessionsView: { + title: "Sessions", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Active", + limit: "Limit", + global: "Global", + unknown: "Unknown", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokens", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "off", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -825,6 +890,7 @@ export const en: TranslationMap = { chat: { disconnected: "Disconnected from gateway.", refreshTitle: "Refresh chat data", + settings: "Chat settings", thinkingToggle: "Toggle assistant thinking/working output", toolCallsToggle: "Toggle tool calls and tool results", focusToggle: "Toggle focus mode (hide sidebar + page header)", @@ -832,6 +898,15 @@ export const en: TranslationMap = { showCronSessions: "Show cron sessions", showCronSessionsHidden: "Show cron sessions ({count} hidden)", onboardingDisabled: "Disabled during setup", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "English", @@ -855,6 +930,64 @@ export const en: TranslationMap = { fa: "فارسی (Persian)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automation", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Enabled", yes: "Yes", diff --git a/ui/src/i18n/locales/es.ts b/ui/src/i18n/locales/es.ts index 7e4fd7f7192..97e11f8894e 100644 --- a/ui/src/i18n/locales/es.ts +++ b/ui/src/i18n/locales/es.ts @@ -4,7 +4,7 @@ import type { TranslationMap } from "../lib/types.ts"; export const es: TranslationMap = { common: { health: "Estado", - ok: "Correcto", + ok: "OK", yes: "Sí", no: "No", active: "Activo", @@ -16,20 +16,32 @@ export const es: TranslationMap = { connected: "Conectado", refresh: "Actualizar", reload: "Recargar", - reset: "Reset", + reset: "Restablecer", probe: "Probar", call: "Llamada", confirm: "Confirmar", cancel: "Cancelar", + next: "Next", + back: "Back", + create: "Create", + copy: "Copiar", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Deseleccionar", enabled: "Habilitado", disabled: "Deshabilitado", + none: "none", na: "n/d", never: "never", configured: "Configurado", running: "En ejecución", linked: "Vinculado", mode: "Modo", + system: "Sistema", + light: "Ligero", + dark: "Dark", baseUrl: "URL base", lastStart: "Último inicio", lastProbe: "Última prueba", @@ -49,6 +61,8 @@ export const es: TranslationMap = { version: "Versión", docs: "Documentación", theme: "Tema", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Recursos", search: "Buscar", save: "Guardar", @@ -140,6 +154,57 @@ export const es: TranslationMap = { lastInput: "Última entrada {time}", reason: "Motivo {reason}", }, + sessionsView: { + title: "Sesiones", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Activo", + limit: "Limit", + global: "Global", + unknown: "Unknown", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokens", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "apagado", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -152,8 +217,8 @@ export const es: TranslationMap = { selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { overview: "Overview", - files: "Files", - tools: "Tools", + files: "Archivos", + tools: "Herramientas", skills: "Skills", channels: "Channels", cronJobs: "Cron Jobs", @@ -246,7 +311,7 @@ export const es: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Registro de eventos", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -261,8 +326,8 @@ export const es: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "Agente", + session: "Sesión", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -295,7 +360,7 @@ export const es: TranslationMap = { sessions: "Sesiones", usage: "Uso", cron: "Tareas Cron", - skills: "Habilidades", + skills: "Skills", nodes: "Nodos", chat: "Chat", config: "Configuración", @@ -635,7 +700,7 @@ export const es: TranslationMap = { clear: "Borrar", clearAll: "Borrar todo", remove: "Quitar filtro", - all: "Todos", + all: "Todas", days: "Días", hours: "Horas", session: "Sesión", @@ -836,6 +901,7 @@ export const es: TranslationMap = { chat: { disconnected: "Desconectado de la puerta de enlace.", refreshTitle: "Actualizar datos del chat", + settings: "Chat settings", thinkingToggle: "Alternar salida de pensamiento/trabajo del asistente", toolCallsToggle: "Alternar llamadas a herramientas y resultados de herramientas", focusToggle: "Alternar modo de enfoque (ocultar barra lateral + cabecera)", @@ -843,6 +909,15 @@ export const es: TranslationMap = { showCronSessions: "Mostrar sesiones de cron", showCronSessionsHidden: "Mostrar sesiones de cron ({count} ocultas)", onboardingDisabled: "Deshabilitado durante el inicio guiado", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Inglés (English)", @@ -866,6 +941,64 @@ export const es: TranslationMap = { fa: "فارسی (persa)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automatización", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Habilitado", yes: "Sí", @@ -910,7 +1043,7 @@ export const es: TranslationMap = { oldestFirst: "Más antiguas primero", status: "Estado", delivery: "Entrega", - clear: "Limpiar", + clear: "Borrar", allStatuses: "Todos los estados", allDelivery: "Todas las entregas", selectJobHint: "Selecciona una tarea para ver su historial de ejecuciones.", diff --git a/ui/src/i18n/locales/fa.ts b/ui/src/i18n/locales/fa.ts index 1f99c87b62e..b36f7180fe9 100644 --- a/ui/src/i18n/locales/fa.ts +++ b/ui/src/i18n/locales/fa.ts @@ -21,15 +21,27 @@ export const fa: TranslationMap = { call: "فراخوانی", confirm: "تأیید", cancel: "لغو", + next: "بعدی", + back: "Back", + create: "Create", + copy: "کپی", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "لغو انتخاب", enabled: "فعال", disabled: "غیرفعال", + none: "none", na: "n/a", never: "هرگز", configured: "پیکربندی‌شده", running: "در حال اجرا", linked: "پیوندشده", mode: "حالت", + system: "سیستم", + light: "سبک", + dark: "Dark", baseUrl: "URL پایه", lastStart: "آخرین شروع", lastProbe: "آخرین بررسی", @@ -49,6 +61,8 @@ export const fa: TranslationMap = { version: "نسخه", docs: "مستندات", theme: "پوسته", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "منابع", search: "جستجو", save: "ذخیره", @@ -141,6 +155,57 @@ export const fa: TranslationMap = { lastInput: "آخرین ورودی {time}", reason: "دلیل {reason}", }, + sessionsView: { + title: "نشست‌ها", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "فعال", + limit: "Limit", + global: "Global", + unknown: "نامشخص", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "توکن‌ها", + compaction: "Compaction", + thinking: "تفکر", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "خاموش", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "هیچ عاملی وجود ندارد", copyId: "کپی شناسه", @@ -832,6 +897,7 @@ export const fa: TranslationMap = { chat: { disconnected: "اتصال از Gateway قطع شد.", refreshTitle: "تازه‌سازی داده‌های چت", + settings: "Chat settings", thinkingToggle: "تغییر وضعیت خروجی فکر/کار دستیار", toolCallsToggle: "تغییر وضعیت نمایش فراخوانی‌های ابزار و نتایج ابزار", focusToggle: "تغییر وضعیت حالت تمرکز (پنهان کردن نوار کناری + سرصفحه صفحه)", @@ -839,6 +905,15 @@ export const fa: TranslationMap = { showCronSessions: "نمایش نشست‌های cron", showCronSessionsHidden: "نمایش نشست‌های cron ({count} پنهان)", onboardingDisabled: "در طول راه‌اندازی غیرفعال است", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "English (انگلیسی)", @@ -862,6 +937,64 @@ export const fa: TranslationMap = { fa: "فارسی", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "اتوماسیون", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "فعال", yes: "بله", diff --git a/ui/src/i18n/locales/fr.ts b/ui/src/i18n/locales/fr.ts index acf24a5137a..c347a13870f 100644 --- a/ui/src/i18n/locales/fr.ts +++ b/ui/src/i18n/locales/fr.ts @@ -16,20 +16,32 @@ export const fr: TranslationMap = { connected: "Connecté", refresh: "Actualiser", reload: "Recharger", - reset: "Reset", + reset: "Réinitialiser", probe: "Sonder", call: "Appeler", confirm: "Confirmer", cancel: "Annuler", + next: "Prochaine", + back: "Back", + create: "Create", + copy: "Copier", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Désélectionner", enabled: "Activé", disabled: "Désactivé", + none: "none", na: "n/d", never: "never", configured: "Configuré", running: "En cours d’exécution", linked: "Lié", mode: "Mode", + system: "Système", + light: "Léger", + dark: "Dark", baseUrl: "URL de base", lastStart: "Dernier démarrage", lastProbe: "Dernière sonde", @@ -49,6 +61,8 @@ export const fr: TranslationMap = { version: "Version", docs: "Documentation", theme: "Thème", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Ressources", search: "Rechercher", save: "Enregistrer", @@ -142,6 +156,57 @@ export const fr: TranslationMap = { lastInput: "Dernière entrée {time}", reason: "Raison {reason}", }, + sessionsView: { + title: "Sessions", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Actif", + limit: "Limit", + global: "Global", + unknown: "Inconnu", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Jetons", + compaction: "Compaction", + thinking: "Réflexion", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "désactivé", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -153,12 +218,12 @@ export const fr: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", + overview: "Aperçu", + files: "Fichiers", + tools: "Outils", skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + channels: "Canaux", + cronJobs: "Tâches cron", }, context: { title: "Agent Context", @@ -174,7 +239,7 @@ export const fr: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "Canaux", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -189,8 +254,8 @@ export const fr: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "Tâches", + nextWake: "Prochain réveil", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -229,8 +294,8 @@ export const fr: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", - health: "Health", + status: "Statut", + health: "Santé", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -238,7 +303,7 @@ export const fr: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Exécuter", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -248,7 +313,7 @@ export const fr: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Journal des événements", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -458,12 +523,12 @@ export const fr: TranslationMap = { placeholder: "Saisissez une commande…", noResults: "Aucun résultat", categories: { - search: "Recherche", + search: "Rechercher", navigation: "Navigation", skills: "Skills", }, items: { - overview: "Vue d’ensemble", + overview: "Aperçu", sessions: "Sessions", scheduled: "Planifié", skills: "Skills", @@ -516,7 +581,7 @@ export const fr: TranslationMap = { reset: "Réinitialiser", clearGrounded: "Effacer les éléments ancrés", repairCache: "Réparer le cache des rêves", - working: "En cours…", + working: "Traitement…", }, phase: { light: "Léger", @@ -746,7 +811,7 @@ export const fr: TranslationMap = { shown: "{count} affichées", total: "{count} au total", avg: "moy.", - all: "Toutes", + all: "Tous", recent: "Consultées récemment", recentShort: "Récentes", sort: "Trier", @@ -830,14 +895,15 @@ export const fr: TranslationMap = { passwordPlaceholder: "facultatif", showToken: "Afficher le jeton", hideToken: "Masquer le jeton", - toggleTokenVisibility: "Afficher/masquer la visibilité du jeton", + toggleTokenVisibility: "Basculer la visibilité du jeton", showPassword: "Afficher le mot de passe", hidePassword: "Masquer le mot de passe", - togglePasswordVisibility: "Afficher/masquer la visibilité du mot de passe", + togglePasswordVisibility: "Basculer la visibilité du mot de passe", }, chat: { disconnected: "Déconnecté du Gateway.", refreshTitle: "Actualiser les données du chat", + settings: "Chat settings", thinkingToggle: "Afficher/masquer la sortie de réflexion/travail de l’assistant", toolCallsToggle: "Afficher/masquer les appels d’outil et les résultats d’outil", focusToggle: "Activer/désactiver le mode focus (masquer la barre latérale + l’en-tête de page)", @@ -845,6 +911,15 @@ export const fr: TranslationMap = { showCronSessions: "Afficher les sessions cron", showCronSessionsHidden: "Afficher les sessions cron ({count} masquées)", onboardingDisabled: "Désactivé pendant la configuration", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Anglais", @@ -868,6 +943,64 @@ export const fr: TranslationMap = { fa: "فارسی (persan)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automatisation", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Activé", yes: "Oui", @@ -886,7 +1019,7 @@ export const fr: TranslationMap = { enabled: "Activé", schedule: "Planification", lastRun: "Dernière exécution", - all: "Toutes", + all: "Tous", sort: "Trier", nextRun: "Prochaine exécution", recentlyUpdated: "Récemment mises à jour", diff --git a/ui/src/i18n/locales/id.ts b/ui/src/i18n/locales/id.ts index 3cb6050cb91..56dbc8769b3 100644 --- a/ui/src/i18n/locales/id.ts +++ b/ui/src/i18n/locales/id.ts @@ -16,20 +16,32 @@ export const id: TranslationMap = { connected: "Terhubung", refresh: "Muat ulang", reload: "Muat ulang", - reset: "Reset", + reset: "Atur Ulang", probe: "Probe", call: "Panggil", confirm: "Konfirmasi", cancel: "Batal", + next: "Berikutnya", + back: "Back", + create: "Create", + copy: "Salin", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Batalkan pilihan", enabled: "Diaktifkan", disabled: "Dinonaktifkan", + none: "none", na: "t/a", never: "never", configured: "Dikonfigurasi", running: "Berjalan", linked: "Ditautkan", mode: "Mode", + system: "Sistem", + light: "Ringan", + dark: "Dark", baseUrl: "URL Dasar", lastStart: "Terakhir dimulai", lastProbe: "Probe terakhir", @@ -49,6 +61,8 @@ export const id: TranslationMap = { version: "Versi", docs: "Dokumen", theme: "Tema", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Sumber daya", search: "Cari", save: "Simpan", @@ -60,7 +74,7 @@ export const id: TranslationMap = { hideAdvanced: "Sembunyikan Lanjutan", unsavedChanges: "Anda memiliki perubahan yang belum disimpan", secondsAgo: "{count} dtk lalu", - working: "Memproses…", + working: "Sedang bekerja…", showQr: "Tampilkan QR", relink: "Tautkan ulang", waitForScan: "Tunggu pemindaian", @@ -140,6 +154,57 @@ export const id: TranslationMap = { lastInput: "Input terakhir {time}", reason: "Alasan {reason}", }, + sessionsView: { + title: "Sesi", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Aktif", + limit: "Limit", + global: "Global", + unknown: "Tidak diketahui", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Token", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "nonaktif", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -151,12 +216,12 @@ export const id: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", + overview: "Ikhtisar", + files: "File", + tools: "Alat", skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + channels: "Saluran", + cronJobs: "Tugas Cron", }, context: { title: "Agent Context", @@ -172,7 +237,7 @@ export const id: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "Saluran", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -187,8 +252,8 @@ export const id: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "Tugas", + nextWake: "Bangun berikutnya", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -228,7 +293,7 @@ export const id: TranslationMap = { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", status: "Status", - health: "Health", + health: "Kesehatan", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -236,7 +301,7 @@ export const id: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Jalankan", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -246,7 +311,7 @@ export const id: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Log Peristiwa", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -261,8 +326,8 @@ export const id: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "Agen", + session: "Sesi", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -486,7 +551,7 @@ export const id: TranslationMap = { advanced: "Lanjutan", }, header: { - refresh: "Segarkan", + refresh: "Muat ulang", refreshing: "Menyegarkan…", on: "Dreaming Aktif", off: "Dreaming Nonaktif", @@ -509,7 +574,7 @@ export const id: TranslationMap = { scene: { backfill: "Isi ulang", dedupeDiary: "Buku Harian Dedupe", - reset: "Setel ulang", + reset: "Atur Ulang", clearGrounded: "Hapus yang Ditahankan", repairCache: "Perbaiki Cache Mimpi", working: "Sedang bekerja…", @@ -765,7 +830,7 @@ export const id: TranslationMap = { noTimeline: "Tidak ada data linimasa", noDataInRange: "Tidak ada data dalam rentang", usageOverTime: "Penggunaan dari Waktu ke Waktu", - reset: "Reset", + reset: "Atur Ulang", perTurn: "Per Giliran", cumulative: "Kumulatif", turnRange: "Giliran {start}–{end} dari {total}", @@ -831,6 +896,7 @@ export const id: TranslationMap = { chat: { disconnected: "Terputus dari gateway.", refreshTitle: "Refresh data chat", + settings: "Chat settings", thinkingToggle: "Alihkan output berpikir/bekerja asisten", toolCallsToggle: "Alihkan panggilan alat dan hasil alat", focusToggle: "Alihkan mode fokus (sembunyikan bilah samping + header halaman)", @@ -838,6 +904,15 @@ export const id: TranslationMap = { showCronSessions: "Tampilkan sesi cron", showCronSessionsHidden: "Tampilkan sesi cron ({count} disembunyikan)", onboardingDisabled: "Dinonaktifkan selama penyiapan", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Inggris", @@ -861,6 +936,64 @@ export const id: TranslationMap = { fa: "فارسی (Persia)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Otomatisasi", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Diaktifkan", yes: "Ya", @@ -1046,7 +1179,7 @@ export const id: TranslationMap = { }, runEntry: { noSummary: "Tidak ada ringkasan.", - runAt: "Dijalankan pada", + runAt: "Jalankan pada", openRunChat: "Buka chat proses", next: "Berikutnya {rel}", due: "Jatuh tempo {rel}", diff --git a/ui/src/i18n/locales/it.ts b/ui/src/i18n/locales/it.ts index 07e24c695a0..5813e670a82 100644 --- a/ui/src/i18n/locales/it.ts +++ b/ui/src/i18n/locales/it.ts @@ -21,15 +21,27 @@ export const it: TranslationMap = { call: "Chiama", confirm: "Conferma", cancel: "Annulla", + next: "Prossimo", + back: "Back", + create: "Create", + copy: "Copia", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Deseleziona", enabled: "Abilitato", disabled: "Disabilitato", + none: "none", na: "n/d", never: "mai", configured: "Configurato", running: "In esecuzione", linked: "Collegato", mode: "Modalità", + system: "Sistema", + light: "Leggera", + dark: "Dark", baseUrl: "URL di base", lastStart: "Ultimo avvio", lastProbe: "Ultimo probe", @@ -49,6 +61,8 @@ export const it: TranslationMap = { version: "Versione", docs: "Docs", theme: "Tema", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Risorse", search: "Cerca", save: "Salva", @@ -140,6 +154,57 @@ export const it: TranslationMap = { lastInput: "Ultimo input {time}", reason: "Motivo {reason}", }, + sessionsView: { + title: "Sessioni", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Attivo", + limit: "Limit", + global: "Global", + unknown: "Sconosciuto", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Token", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "off", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "Nessun agente", copyId: "Copia ID", @@ -836,6 +901,7 @@ export const it: TranslationMap = { chat: { disconnected: "Disconnesso dal gateway.", refreshTitle: "Aggiorna dati chat", + settings: "Chat settings", thinkingToggle: "Attiva/disattiva output di pensiero/elaborazione dell'assistente", toolCallsToggle: "Attiva/disattiva chiamate agli strumenti e risultati strumenti", focusToggle: "Attiva/disattiva modalità focus (nascondi barra laterale + intestazione pagina)", @@ -843,6 +909,15 @@ export const it: TranslationMap = { showCronSessions: "Mostra sessioni cron", showCronSessionsHidden: "Mostra sessioni cron ({count} nascoste)", onboardingDisabled: "Disabilitato durante la configurazione", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "English (Inglese)", @@ -866,6 +941,64 @@ export const it: TranslationMap = { fa: "فارسی (Persiano)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automazione", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Abilitato", yes: "Sì", diff --git a/ui/src/i18n/locales/ja-JP.ts b/ui/src/i18n/locales/ja-JP.ts index 7b7d23795f9..110d3a9b586 100644 --- a/ui/src/i18n/locales/ja-JP.ts +++ b/ui/src/i18n/locales/ja-JP.ts @@ -16,20 +16,32 @@ export const ja_JP: TranslationMap = { connected: "接続済み", refresh: "更新", reload: "再読み込み", - reset: "Reset", + reset: "リセット", probe: "プローブ", call: "通話", confirm: "確認", cancel: "キャンセル", + next: "次回", + back: "Back", + create: "Create", + copy: "コピー", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "選択解除", enabled: "有効", disabled: "無効", + none: "none", na: "n/a", never: "never", configured: "設定済み", running: "実行中", linked: "リンク済み", mode: "モード", + system: "システム", + light: "浅い", + dark: "Dark", baseUrl: "ベース URL", lastStart: "前回の起動", lastProbe: "前回のプローブ", @@ -49,6 +61,8 @@ export const ja_JP: TranslationMap = { version: "バージョン", docs: "ドキュメント", theme: "テーマ", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "リソース", search: "検索", save: "保存", @@ -91,7 +105,7 @@ export const ja_JP: TranslationMap = { name: "名前", displayName: "表示名", about: "概要", - advanced: "詳細設定", + advanced: "詳細", profilePicturePreview: "プロフィール画像のプレビュー", account: "アカウント", username: "ユーザー名", @@ -143,6 +157,57 @@ export const ja_JP: TranslationMap = { lastInput: "最後の入力 {time}", reason: "理由 {reason}", }, + sessionsView: { + title: "セッション", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "有効", + limit: "Limit", + global: "Global", + unknown: "不明", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "トークン", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "オフ", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -154,12 +219,12 @@ export const ja_JP: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", + overview: "概要", + files: "ファイル", + tools: "ツール", skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + channels: "チャンネル", + cronJobs: "Cron ジョブ", }, context: { title: "Agent Context", @@ -175,7 +240,7 @@ export const ja_JP: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "チャンネル", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -190,8 +255,8 @@ export const ja_JP: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "ジョブ", + nextWake: "次回のウェイク", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -230,8 +295,8 @@ export const ja_JP: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", - health: "Health", + status: "ステータス", + health: "健全性", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -239,7 +304,7 @@ export const ja_JP: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "実行", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -249,7 +314,7 @@ export const ja_JP: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "イベントログ", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -264,8 +329,8 @@ export const ja_JP: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "エージェント", + session: "セッション", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -278,7 +343,7 @@ export const ja_JP: TranslationMap = { connectedSource: "接続済み: {id}", connected: "接続済み", channelSource: "チャネル: {id}", - channel: "チャネル", + channel: "チャンネル", builtIn: "組み込み", }, nav: { @@ -834,6 +899,7 @@ export const ja_JP: TranslationMap = { chat: { disconnected: "Gateway から切断されました。", refreshTitle: "チャットデータを更新", + settings: "Chat settings", thinkingToggle: "アシスタントの思考 / 作業出力の表示を切り替え", toolCallsToggle: "ツール呼び出しとツール結果の表示を切り替え", focusToggle: "フォーカスモードを切り替え(サイドバー + ページヘッダーを非表示)", @@ -841,6 +907,15 @@ export const ja_JP: TranslationMap = { showCronSessions: "Cron セッションを表示", showCronSessionsHidden: "Cron セッションを表示({count} 件を非表示中)", onboardingDisabled: "セットアップ中は無効", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "英語", @@ -864,6 +939,64 @@ export const ja_JP: TranslationMap = { fa: "فارسی(ペルシア語)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "自動化", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "有効", yes: "はい", @@ -944,7 +1077,7 @@ export const ja_JP: TranslationMap = { every: "毎", at: "時刻", cronOption: "Cron", - runAt: "実行時刻", + runAt: "実行日時", unit: "単位", minutes: "分", hours: "時間", @@ -997,7 +1130,7 @@ export const ja_JP: TranslationMap = { to: "宛先", toPlaceholder: "+1555... または chat id", toHelp: "任意の受信者上書きです(chat id、電話番号、または user id)。", - advanced: "詳細設定", + advanced: "詳細", advancedHelp: "配信保証、スケジュールのジッター、モデル制御の任意の上書き設定。", deleteAfterRun: "実行後に削除", deleteAfterRunHelp: "自動でクリーンアップしたい単発のリマインダーに最適です。", diff --git a/ui/src/i18n/locales/ko.ts b/ui/src/i18n/locales/ko.ts index 5bcb87ddbc5..753d944579b 100644 --- a/ui/src/i18n/locales/ko.ts +++ b/ui/src/i18n/locales/ko.ts @@ -16,20 +16,32 @@ export const ko: TranslationMap = { connected: "연결됨", refresh: "새로고침", reload: "다시 로드", - reset: "Reset", + reset: "재설정", probe: "프로브", call: "호출", confirm: "확인", cancel: "취소", + next: "다음", + back: "Back", + create: "Create", + copy: "복사", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "선택 해제", enabled: "사용", disabled: "사용 안 함", + none: "none", na: "해당 없음", never: "never", configured: "구성됨", running: "실행 중", linked: "연결됨", mode: "모드", + system: "시스템", + light: "얕음", + dark: "Dark", baseUrl: "기본 URL", lastStart: "마지막 시작", lastProbe: "마지막 프로브", @@ -49,6 +61,8 @@ export const ko: TranslationMap = { version: "버전", docs: "문서", theme: "테마", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "리소스", search: "검색", save: "저장", @@ -139,6 +153,57 @@ export const ko: TranslationMap = { lastInput: "마지막 입력 {time}", reason: "사유 {reason}", }, + sessionsView: { + title: "세션", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "활성", + limit: "Limit", + global: "Global", + unknown: "알 수 없음", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "토큰", + compaction: "Compaction", + thinking: "생각 수준", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "꺼짐", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -150,12 +215,12 @@ export const ko: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", + overview: "개요", + files: "파일", + tools: "도구", skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + channels: "채널", + cronJobs: "Cron 작업", }, context: { title: "Agent Context", @@ -171,7 +236,7 @@ export const ko: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "채널", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -186,8 +251,8 @@ export const ko: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "작업", + nextWake: "다음 실행", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -226,8 +291,8 @@ export const ko: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", - health: "Health", + status: "상태", + health: "상태", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -235,7 +300,7 @@ export const ko: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "실행", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -245,7 +310,7 @@ export const ko: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "이벤트 로그", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -260,8 +325,8 @@ export const ko: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "에이전트", + session: "세션", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -485,7 +550,7 @@ export const ko: TranslationMap = { advanced: "고급", }, header: { - refresh: "새로 고침", + refresh: "새로고침", refreshing: "새로 고치는 중…", on: "드리밍 켜짐", off: "드리밍 꺼짐", @@ -827,6 +892,7 @@ export const ko: TranslationMap = { chat: { disconnected: "Gateway와 연결이 끊어졌습니다.", refreshTitle: "채팅 데이터 새로고침", + settings: "Chat settings", thinkingToggle: "어시스턴트 생각/작업 출력 전환", toolCallsToggle: "도구 호출 및 도구 결과 전환", focusToggle: "집중 모드 전환(사이드바 + 페이지 헤더 숨기기)", @@ -834,6 +900,15 @@ export const ko: TranslationMap = { showCronSessions: "Cron 세션 표시", showCronSessionsHidden: "Cron 세션 표시({count}개 숨김)", onboardingDisabled: "설정 중에는 비활성화됨", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "영어", @@ -857,6 +932,64 @@ export const ko: TranslationMap = { fa: "فارسی (페르시아어)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "자동화", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "사용", yes: "예", @@ -937,7 +1070,7 @@ export const ko: TranslationMap = { every: "매", at: "시간", cronOption: "Cron", - runAt: "실행 시간", + runAt: "실행 시각", unit: "단위", minutes: "분", hours: "시간", diff --git a/ui/src/i18n/locales/nl.ts b/ui/src/i18n/locales/nl.ts index 9ad8d29a47d..1d23e8a3c48 100644 --- a/ui/src/i18n/locales/nl.ts +++ b/ui/src/i18n/locales/nl.ts @@ -21,15 +21,27 @@ export const nl: TranslationMap = { call: "Aanroepen", confirm: "Bevestigen", cancel: "Annuleren", + next: "Volgende", + back: "Back", + create: "Create", + copy: "Kopiëren", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Deselecteren", enabled: "Ingeschakeld", disabled: "Uitgeschakeld", + none: "none", na: "n.v.t.", never: "nooit", configured: "Geconfigureerd", running: "Actief", linked: "Gekoppeld", mode: "Modus", + system: "Systeem", + light: "Licht", + dark: "Dark", baseUrl: "Basis-URL", lastStart: "Laatste start", lastProbe: "Laatste probe", @@ -49,6 +61,8 @@ export const nl: TranslationMap = { version: "Versie", docs: "Docs", theme: "Thema", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Bronnen", search: "Zoeken", save: "Opslaan", @@ -142,6 +156,57 @@ export const nl: TranslationMap = { lastInput: "Laatste invoer {time}", reason: "Reden {reason}", }, + sessionsView: { + title: "Sessies", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Actief", + limit: "Limit", + global: "Global", + unknown: "Onbekend", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokens", + compaction: "Compaction", + thinking: "Denken", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "uit", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "Geen agents", copyId: "ID kopiëren", @@ -834,6 +899,7 @@ export const nl: TranslationMap = { chat: { disconnected: "Verbinding met Gateway verbroken.", refreshTitle: "Chatgegevens vernieuwen", + settings: "Chat settings", thinkingToggle: "Denken-/werken-output van assistent schakelen", toolCallsToggle: "Tool-aanroepen en toolresultaten schakelen", focusToggle: "Focusmodus schakelen (zijbalk + paginakop verbergen)", @@ -841,6 +907,15 @@ export const nl: TranslationMap = { showCronSessions: "Cron-sessies weergeven", showCronSessionsHidden: "Cron-sessies weergeven ({count} verborgen)", onboardingDisabled: "Uitgeschakeld tijdens configuratie", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "English (Engels)", @@ -864,6 +939,64 @@ export const nl: TranslationMap = { fa: "فارسی (Perzisch)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automatisering", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Ingeschakeld", yes: "Ja", diff --git a/ui/src/i18n/locales/pl.ts b/ui/src/i18n/locales/pl.ts index 5df9466cd67..50e1b44a991 100644 --- a/ui/src/i18n/locales/pl.ts +++ b/ui/src/i18n/locales/pl.ts @@ -16,20 +16,32 @@ export const pl: TranslationMap = { connected: "Połączono", refresh: "Odśwież", reload: "Przeładuj", - reset: "Reset", + reset: "Resetuj", probe: "Sprawdź", call: "Połączenie", confirm: "Potwierdź", cancel: "Anuluj", + next: "Następne", + back: "Back", + create: "Create", + copy: "Kopiuj", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Odznacz", enabled: "Włączone", disabled: "Wyłączone", + none: "none", na: "n/d", never: "never", configured: "Skonfigurowano", running: "Uruchomiono", linked: "Połączono", mode: "Tryb", + system: "System", + light: "Lekki", + dark: "Dark", baseUrl: "Bazowy URL", lastStart: "Ostatnie uruchomienie", lastProbe: "Ostatnie sprawdzenie", @@ -49,6 +61,8 @@ export const pl: TranslationMap = { version: "Wersja", docs: "Dokumentacja", theme: "Motyw", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Zasoby", search: "Szukaj", save: "Zapisz", @@ -87,7 +101,7 @@ export const pl: TranslationMap = { profilePicture: "Zdjęcie profilowe", noProfile: "Nie ustawiono profilu.", noProfileHint: "Kliknij „Edytuj profil”, aby dodać swoje imię, bio i awatar.", - name: "Imię", + name: "Nazwa", displayName: "Nazwa wyświetlana", about: "O mnie", advanced: "Zaawansowane", @@ -141,6 +155,57 @@ export const pl: TranslationMap = { lastInput: "Ostatnie wejście {time}", reason: "Powód {reason}", }, + sessionsView: { + title: "Sesje", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Aktywny", + limit: "Limit", + global: "Global", + unknown: "Nieznane", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokeny", + compaction: "Compaction", + thinking: "Myślenie", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "wył.", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -152,12 +217,12 @@ export const pl: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", + overview: "Przegląd", + files: "Pliki", + tools: "Narzędzia", skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + channels: "Kanały", + cronJobs: "Zadania Cron", }, context: { title: "Agent Context", @@ -173,7 +238,7 @@ export const pl: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "Kanały", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -188,8 +253,8 @@ export const pl: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "Zadania", + nextWake: "Następne wybudzenie", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -229,7 +294,7 @@ export const pl: TranslationMap = { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", status: "Status", - health: "Health", + health: "Stan", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -237,7 +302,7 @@ export const pl: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Uruchom", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -247,7 +312,7 @@ export const pl: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Dziennik zdarzeń", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -263,7 +328,7 @@ export const pl: TranslationMap = { labels: { host: "Host", agent: "Agent", - session: "Session", + session: "Sesja", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -514,7 +579,7 @@ export const pl: TranslationMap = { reset: "Resetuj", clearGrounded: "Wyczyść uziemione", repairCache: "Napraw pamięć podręczną snów", - working: "Przetwarzanie…", + working: "Praca…", }, phase: { light: "Lekki", @@ -836,6 +901,7 @@ export const pl: TranslationMap = { chat: { disconnected: "Rozłączono z Gateway.", refreshTitle: "Odśwież dane czatu", + settings: "Chat settings", thinkingToggle: "Przełącz wyświetlanie myślenia/pracy asystenta", toolCallsToggle: "Przełącz wyświetlanie wywołań narzędzi i wyników narzędzi", focusToggle: "Przełącz tryb skupienia (ukryj pasek boczny i nagłówek strony)", @@ -843,6 +909,15 @@ export const pl: TranslationMap = { showCronSessions: "Pokaż sesje Cron", showCronSessionsHidden: "Pokaż sesje Cron ({count} ukrytych)", onboardingDisabled: "Wyłączone podczas konfiguracji", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Angielski (English)", @@ -866,6 +941,64 @@ export const pl: TranslationMap = { fa: "فارسی (perski)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automatyzacja", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Włączone", yes: "Tak", @@ -909,7 +1042,7 @@ export const pl: TranslationMap = { newestFirst: "Od najnowszych", oldestFirst: "Od najstarszych", status: "Status", - delivery: "Dostarczenie", + delivery: "Dostarczanie", clear: "Wyczyść", allStatuses: "Wszystkie statusy", allDelivery: "Wszystkie stany dostarczenia", @@ -919,7 +1052,7 @@ export const pl: TranslationMap = { runStatusOk: "OK", runStatusError: "Błąd", runStatusSkipped: "Pominięto", - runStatusUnknown: "Nieznany", + runStatusUnknown: "Nieznane", deliveryDelivered: "Dostarczono", deliveryNotDelivered: "Nie dostarczono", deliveryUnknown: "Nieznane", diff --git a/ui/src/i18n/locales/pt-BR.ts b/ui/src/i18n/locales/pt-BR.ts index ebfe4d60dce..5c802710fc2 100644 --- a/ui/src/i18n/locales/pt-BR.ts +++ b/ui/src/i18n/locales/pt-BR.ts @@ -16,20 +16,32 @@ export const pt_BR: TranslationMap = { connected: "Conectado", refresh: "Atualizar", reload: "Recarregar", - reset: "Reset", + reset: "Redefinir", probe: "Sondar", call: "Ligar", confirm: "Confirmar", cancel: "Cancelar", + next: "Próxima", + back: "Back", + create: "Create", + copy: "Copiar", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Desmarcar", enabled: "Ativado", disabled: "Desativado", + none: "none", na: "n/d", never: "never", configured: "Configurado", running: "Em execução", linked: "Vinculado", mode: "Modo", + system: "Sistema", + light: "Leve", + dark: "Dark", baseUrl: "URL base", lastStart: "Última inicialização", lastProbe: "Última sondagem", @@ -49,6 +61,8 @@ export const pt_BR: TranslationMap = { version: "Versão", docs: "Documentação", theme: "Tema", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Recursos", search: "Pesquisar", save: "Salvar", @@ -140,6 +154,57 @@ export const pt_BR: TranslationMap = { lastInput: "Última entrada {time}", reason: "Motivo {reason}", }, + sessionsView: { + title: "Sessões", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Ativo", + limit: "Limit", + global: "Global", + unknown: "Desconhecido", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokens", + compaction: "Compaction", + thinking: "Pensamento", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "desligado", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -152,8 +217,8 @@ export const pt_BR: TranslationMap = { selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { overview: "Overview", - files: "Files", - tools: "Tools", + files: "Arquivos", + tools: "Ferramentas", skills: "Skills", channels: "Channels", cronJobs: "Cron Jobs", @@ -187,8 +252,8 @@ export const pt_BR: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "Tarefas", + nextWake: "Próxima ativação", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -236,7 +301,7 @@ export const pt_BR: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Executar", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -261,8 +326,8 @@ export const pt_BR: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "Agente", + session: "Sessão", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -295,7 +360,7 @@ export const pt_BR: TranslationMap = { sessions: "Sessões", usage: "Uso", cron: "Tarefas Cron", - skills: "Habilidades", + skills: "Skills", nodes: "Nós", chat: "Chat", config: "Configuração", @@ -421,7 +486,7 @@ export const pt_BR: TranslationMap = { }, cards: { cost: "Custo", - skills: "Habilidades", + skills: "Skills", recentSessions: "Sessões Recentes", modelAuth: "Autenticação de modelo", modelAuthOk: "{count} ok", @@ -512,7 +577,7 @@ export const pt_BR: TranslationMap = { reset: "Redefinir", clearGrounded: "Limpar Grounded", repairCache: "Reparar cache de sonhos", - working: "Trabalhando…", + working: "Processando…", }, phase: { light: "Leve", @@ -632,7 +697,7 @@ export const pt_BR: TranslationMap = { clear: "Limpar", clearAll: "Limpar tudo", remove: "Remover filtro", - all: "Todos", + all: "Todas", days: "Dias", hours: "Horas", session: "Sessão", @@ -833,6 +898,7 @@ export const pt_BR: TranslationMap = { chat: { disconnected: "Desconectado do gateway.", refreshTitle: "Atualizar dados do chat", + settings: "Chat settings", thinkingToggle: "Alternar saída de pensamento/trabalho do assistente", toolCallsToggle: "Alternar chamadas de ferramenta e resultados de ferramenta", focusToggle: "Alternar modo de foco (ocultar barra lateral + cabeçalho da página)", @@ -840,6 +906,15 @@ export const pt_BR: TranslationMap = { showCronSessions: "Mostrar sessões de cron", showCronSessionsHidden: "Mostrar sessões de cron ({count} ocultas)", onboardingDisabled: "Desativado durante a integração", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Inglês", @@ -863,6 +938,64 @@ export const pt_BR: TranslationMap = { fa: "فارسی (Persa)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automation", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Ativado", yes: "Sim", diff --git a/ui/src/i18n/locales/th.ts b/ui/src/i18n/locales/th.ts index ffc267f4ea9..c04209fad0a 100644 --- a/ui/src/i18n/locales/th.ts +++ b/ui/src/i18n/locales/th.ts @@ -16,20 +16,32 @@ export const th: TranslationMap = { connected: "เชื่อมต่อแล้ว", refresh: "รีเฟรช", reload: "โหลดใหม่", - reset: "Reset", + reset: "รีเซ็ต", probe: "ตรวจสอบ", call: "โทร", confirm: "ยืนยัน", cancel: "ยกเลิก", + next: "ถัดไป", + back: "Back", + create: "Create", + copy: "คัดลอก", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "ยกเลิกการเลือก", enabled: "เปิดใช้งาน", disabled: "ปิดใช้งาน", + none: "none", na: "n/a", never: "never", configured: "กำหนดค่าแล้ว", running: "กำลังทำงาน", linked: "เชื่อมโยงแล้ว", mode: "โหมด", + system: "ระบบ", + light: "ตื้น", + dark: "Dark", baseUrl: "Base URL", lastStart: "เริ่มต้นล่าสุด", lastProbe: "ตรวจสอบล่าสุด", @@ -49,6 +61,8 @@ export const th: TranslationMap = { version: "เวอร์ชัน", docs: "เอกสาร", theme: "ธีม", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "ทรัพยากร", search: "ค้นหา", save: "บันทึก", @@ -138,6 +152,57 @@ export const th: TranslationMap = { lastInput: "อินพุตล่าสุด {time}", reason: "เหตุผล {reason}", }, + sessionsView: { + title: "เซสชัน", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "ใช้งานอยู่", + limit: "Limit", + global: "Global", + unknown: "ไม่ทราบ", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "โทเค็น", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "ปิด", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -149,12 +214,12 @@ export const th: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", + overview: "ภาพรวม", + files: "ไฟล์", tools: "Tools", - skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + skills: "ทักษะ", + channels: "ช่องทาง", + cronJobs: "งาน Cron", }, context: { title: "Agent Context", @@ -170,7 +235,7 @@ export const th: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "ช่องทาง", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -185,8 +250,8 @@ export const th: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "งาน", + nextWake: "ปลุกครั้งถัดไป", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -225,8 +290,8 @@ export const th: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", - health: "Health", + status: "สถานะ", + health: "สถานะ", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -234,7 +299,7 @@ export const th: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "รัน", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -244,7 +309,7 @@ export const th: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "บันทึกเหตุการณ์", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -259,8 +324,8 @@ export const th: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "เอเจนต์", + session: "เซสชัน", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -729,7 +794,7 @@ export const th: TranslationMap = { total: "ทั้งหมด {count}", avg: "เฉลี่ย", all: "ทั้งหมด", - recent: "ดูล่า��ุด", + recent: "ดูล่าสุด", recentShort: "ล่าสุด", sort: "เรียงลำดับ", ascending: "น้อยไปมาก", @@ -818,6 +883,7 @@ export const th: TranslationMap = { chat: { disconnected: "ตัดการเชื่อมต่อจากเกตเวย์แล้ว", refreshTitle: "รีเฟรชข้อมูลแชต", + settings: "Chat settings", thinkingToggle: "สลับการแสดงผลการคิด/การทำงานของผู้ช่วย", toolCallsToggle: "สลับการแสดงการเรียกใช้ tool และผลลัพธ์ของ tool", focusToggle: "สลับโหมดโฟกัส (ซ่อนแถบด้านข้าง + ส่วนหัวหน้า)", @@ -825,6 +891,15 @@ export const th: TranslationMap = { showCronSessions: "แสดงเซสชัน cron", showCronSessionsHidden: "แสดงเซสชัน cron (ซ่อนอยู่ {count})", onboardingDisabled: "ปิดใช้งานระหว่างการตั้งค่า", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "อังกฤษ", @@ -848,6 +923,64 @@ export const th: TranslationMap = { fa: "فارسی (เปอร์เซีย)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "ระบบอัตโนมัติ", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "เปิดใช้งาน", yes: "ใช่", @@ -987,7 +1120,7 @@ export const th: TranslationMap = { staggerUnit: "หน่วย stagger", staggerPlaceholder: "30", seconds: "วินาที", - model: "โมเดล", + model: "Model", modelPlaceholder: "openai/gpt-5.2", modelHelp: "เริ่มพิมพ์เพื่อเลือกโมเดลที่รู้จัก หรือป้อนโมเดลแบบกำหนดเอง", thinking: "Thinking", @@ -1030,7 +1163,7 @@ export const th: TranslationMap = { }, runEntry: { noSummary: "ไม่มีสรุป", - runAt: "รันเมื่อ", + runAt: "ทำงานเมื่อ", openRunChat: "เปิดแชตการรัน", next: "ถัดไป {rel}", due: "ครบกำหนด {rel}", diff --git a/ui/src/i18n/locales/tr.ts b/ui/src/i18n/locales/tr.ts index ea72e058502..ed6300ee09f 100644 --- a/ui/src/i18n/locales/tr.ts +++ b/ui/src/i18n/locales/tr.ts @@ -16,20 +16,32 @@ export const tr: TranslationMap = { connected: "Bağlandı", refresh: "Yenile", reload: "Yeniden yükle", - reset: "Reset", + reset: "Sıfırla", probe: "Sına", call: "Ara", confirm: "Onayla", cancel: "İptal", + next: "Sonraki", + back: "Back", + create: "Create", + copy: "Kopyala", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Seçimi kaldır", enabled: "Etkin", disabled: "Devre dışı", + none: "none", na: "yok", never: "never", configured: "Yapılandırıldı", running: "Çalışıyor", linked: "Bağlandı", mode: "Mod", + system: "Sistem", + light: "Hafif", + dark: "Dark", baseUrl: "Temel URL", lastStart: "Son başlatma", lastProbe: "Son sınama", @@ -49,6 +61,8 @@ export const tr: TranslationMap = { version: "Sürüm", docs: "Dokümanlar", theme: "Tema", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Kaynaklar", search: "Ara", save: "Kaydet", @@ -142,6 +156,57 @@ export const tr: TranslationMap = { lastInput: "Son giriş {time}", reason: "Neden {reason}", }, + sessionsView: { + title: "Oturumlar", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Etkin", + limit: "Limit", + global: "Global", + unknown: "Bilinmiyor", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Tokenlar", + compaction: "Compaction", + thinking: "Düşünme", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "kapalı", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -153,12 +218,12 @@ export const tr: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", + overview: "Genel Bakış", + files: "Dosyalar", + tools: "Araçlar", skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + channels: "Kanallar", + cronJobs: "Cron İşleri", }, context: { title: "Agent Context", @@ -174,7 +239,7 @@ export const tr: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "Kanallar", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -189,8 +254,8 @@ export const tr: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "İşler", + nextWake: "Sonraki uyandırma", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -229,8 +294,8 @@ export const tr: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", - health: "Health", + status: "Durum", + health: "Sağlık", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -238,7 +303,7 @@ export const tr: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Çalıştır", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -248,7 +313,7 @@ export const tr: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Olay Günlüğü", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -263,8 +328,8 @@ export const tr: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "Aracı", + session: "Oturum", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -275,7 +340,7 @@ export const tr: TranslationMap = { }, agentTools: { connectedSource: "Bağlı: {id}", - connected: "Bağlı", + connected: "Bağlandı", channelSource: "Kanal: {id}", channel: "Kanal", builtIn: "Yerleşik", @@ -343,7 +408,7 @@ export const tr: TranslationMap = { language: "Dil", connectHint: "Bağlantı değişikliklerini uygulamak için Bağlan'a tıklayın.", trustedProxy: "Güvenilir proxy üzerinden kimlik doğrulandı.", - showToken: "Token'ı göster", + showToken: "Tokenı göster", hideToken: "Token'ı gizle", toggleTokenVisibility: "Token görünürlüğünü değiştir", showPassword: "Parolayı göster", @@ -459,7 +524,7 @@ export const tr: TranslationMap = { placeholder: "Bir komut yazın…", noResults: "Sonuç yok", categories: { - search: "Arama", + search: "Ara", navigation: "Navigation", skills: "Skills", }, @@ -469,7 +534,7 @@ export const tr: TranslationMap = { scheduled: "Zamanlanmış", skills: "Skills", settings: "Ayarlar", - agents: "Ajanlar", + agents: "Aracılar", shellCommand: "Shell Komutu", debugMode: "Hata Ayıklama Modu", }, @@ -551,7 +616,7 @@ export const tr: TranslationMap = { }, stats: { shortTerm: "Kısa vadeli", - grounded: "Temellendirililmiş", + grounded: "Temellendirilmiş", signals: "Sinyaller", promoted: "Yükseltilenler", phaseHits: "Aşama İsabetleri", @@ -639,7 +704,7 @@ export const tr: TranslationMap = { remove: "Filtreyi kaldır", all: "Tümü", days: "Günler", - hours: "Saatler", + hours: "Saat", session: "Oturum", agent: "Aracı", channel: "Kanal", @@ -827,7 +892,7 @@ export const tr: TranslationMap = { subtitle: "Gateway Kontrol Paneli", passwordPlaceholder: "isteğe bağlı", showToken: "Tokenı göster", - hideToken: "Tokenı gizle", + hideToken: "Token'ı gizle", toggleTokenVisibility: "Token görünürlüğünü değiştir", showPassword: "Parolayı göster", hidePassword: "Parolayı gizle", @@ -836,6 +901,7 @@ export const tr: TranslationMap = { chat: { disconnected: "Gateway bağlantısı kesildi.", refreshTitle: "Sohbet verilerini yenile", + settings: "Chat settings", thinkingToggle: "Asistanın düşünme/çalışma çıktısını aç/kapat", toolCallsToggle: "Araç çağrılarını ve araç sonuçlarını aç/kapat", focusToggle: "Odak modunu aç/kapat (kenar çubuğunu + sayfa başlığını gizle)", @@ -843,6 +909,15 @@ export const tr: TranslationMap = { showCronSessions: "Cron oturumlarını göster", showCronSessionsHidden: "Cron oturumlarını göster ({count} gizli)", onboardingDisabled: "Kurulum sırasında devre dışı", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "İngilizce", @@ -866,6 +941,64 @@ export const tr: TranslationMap = { fa: "فارسی (Farsça)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Otomasyon", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Etkin", yes: "Evet", @@ -950,7 +1083,7 @@ export const tr: TranslationMap = { unit: "Birim", minutes: "Dakika", hours: "Saat", - days: "Gün", + days: "Günler", expression: "İfade", expressionPlaceholder: "0 7 * * *", everyAmountPlaceholder: "30", @@ -1069,7 +1202,7 @@ export const tr: TranslationMap = { agentMessageRequired: "Aracı mesajı gerekli.", timeoutInvalid: "Ayarlanırsa zaman aşımı 0 saniyeden büyük olmalıdır.", webhookUrlRequired: "Webhook URL gerekli.", - webhookUrlInvalid: "Webhook URL http:// veya https:// ile ba��lamalıdır.", + webhookUrlInvalid: "Webhook URL http:// veya https:// ile başlamalıdır.", invalidRunTime: "Geçersiz çalıştırma zamanı.", invalidIntervalAmount: "Geçersiz aralık miktarı.", cronExprRequiredShort: "Cron ifadesi gerekli.", diff --git a/ui/src/i18n/locales/uk.ts b/ui/src/i18n/locales/uk.ts index 1a6056e1214..988cea229d3 100644 --- a/ui/src/i18n/locales/uk.ts +++ b/ui/src/i18n/locales/uk.ts @@ -16,20 +16,32 @@ export const uk: TranslationMap = { connected: "Підключено", refresh: "Оновити", reload: "Перезавантажити", - reset: "Reset", + reset: "Скинути", probe: "Перевірити", call: "Виклик", confirm: "Підтвердити", cancel: "Скасувати", + next: "Наступний", + back: "Back", + create: "Create", + copy: "Копіювати", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Зняти вибір", enabled: "Увімкнено", disabled: "Вимкнено", + none: "none", na: "н/д", never: "never", configured: "Налаштовано", running: "Запущено", linked: "Пов’язано", mode: "Режим", + system: "Система", + light: "Легкий", + dark: "Dark", baseUrl: "Базовий URL", lastStart: "Останній запуск", lastProbe: "Остання перевірка", @@ -49,6 +61,8 @@ export const uk: TranslationMap = { version: "Версія", docs: "Документація", theme: "Тема", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Ресурси", search: "Пошук", save: "Зберегти", @@ -60,7 +74,7 @@ export const uk: TranslationMap = { hideAdvanced: "Сховати додаткові", unsavedChanges: "У вас є незбережені зміни", secondsAgo: "{count} с тому", - working: "Виконується…", + working: "Обробка…", showQr: "Показати QR", relink: "Пов’язати знову", waitForScan: "Очікування сканування", @@ -87,7 +101,7 @@ export const uk: TranslationMap = { profilePicture: "Зображення профілю", noProfile: "Профіль не налаштовано.", noProfileHint: 'Натисніть "Edit Profile", щоб додати своє ім’я, біографію та аватар.', - name: "Ім’я", + name: "Назва", displayName: "Відображуване ім’я", about: "Про себе", advanced: "Додатково", @@ -141,6 +155,57 @@ export const uk: TranslationMap = { lastInput: "Останнє введення {time}", reason: "Причина {reason}", }, + sessionsView: { + title: "Сеанси", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Активно", + limit: "Limit", + global: "Global", + unknown: "Невідомо", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Токени", + compaction: "Compaction", + thinking: "Обмірковування", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "вимкнено", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -152,12 +217,12 @@ export const uk: TranslationMap = { selectTitle: "Select an agent", selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { - overview: "Overview", - files: "Files", - tools: "Tools", - skills: "Skills", - channels: "Channels", - cronJobs: "Cron Jobs", + overview: "Огляд", + files: "Файли", + tools: "Інструменти", + skills: "Навички", + channels: "Канали", + cronJobs: "Завдання Cron", }, context: { title: "Agent Context", @@ -173,7 +238,7 @@ export const uk: TranslationMap = { schedulingSubtitle: "Workspace and scheduling targets.", }, channels: { - title: "Channels", + title: "Канали", subtitle: "Gateway-wide channel status snapshot.", lastRefresh: "Last refresh: {time}", loadHint: "Load channels to see live status.", @@ -188,8 +253,8 @@ export const uk: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "Завдання", + nextWake: "Наступне пробудження", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -228,8 +293,8 @@ export const uk: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", - health: "Health", + status: "Статус", + health: "Стан", lastHeartbeat: "Last heartbeat", security: { audit: "Security audit", @@ -237,7 +302,7 @@ export const uk: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "Запустити", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -247,7 +312,7 @@ export const uk: TranslationMap = { paramsJson: "Params (JSON)", modelsTitle: "Models", modelsSubtitle: "Catalog from models.list.", - eventLogTitle: "Event Log", + eventLogTitle: "Журнал подій", eventLogSubtitle: "Latest gateway events.", noEvents: "No events yet.", }, @@ -262,8 +327,8 @@ export const uk: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "Агент", + session: "Сеанс", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -352,7 +417,7 @@ export const uk: TranslationMap = { snapshot: { title: "Знімок", subtitle: "Остання інформація рукостискання шлюзу.", - status: "Стан", + status: "Статус", uptime: "Час роботи", tickInterval: "Інтервал тіку", lastChannelsRefresh: "Останнє оновлення каналів", @@ -486,7 +551,7 @@ export const uk: TranslationMap = { tabs: { scene: "Сцена", diary: "Щоденник", - advanced: "Розширені", + advanced: "Додатково", }, header: { refresh: "Оновити", @@ -557,7 +622,7 @@ export const uk: TranslationMap = { phaseHits: "Збіги фаз", }, trace: { - shortTerm: "Короткострокові", + shortTerm: "Короткостроково", grounded: "Заземлене", signals: "Сигнали", promoted: "Підвищено", @@ -835,6 +900,7 @@ export const uk: TranslationMap = { chat: { disconnected: "Відключено від шлюзу.", refreshTitle: "Оновити дані чату", + settings: "Chat settings", thinkingToggle: "Перемкнути показ мислення/роботи асистента", toolCallsToggle: "Перемкнути виклики інструментів і результати інструментів", focusToggle: "Перемкнути режим фокусу (сховати бічну панель і заголовок сторінки)", @@ -842,6 +908,15 @@ export const uk: TranslationMap = { showCronSessions: "Показати сеанси Cron", showCronSessionsHidden: "Показати сеанси Cron ({count} приховано)", onboardingDisabled: "Вимкнено під час налаштування", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "Англійська", @@ -865,6 +940,64 @@ export const uk: TranslationMap = { fa: "فارسی (перська)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Автоматизація", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Увімкнено", yes: "Так", @@ -1054,7 +1187,7 @@ export const uk: TranslationMap = { }, runEntry: { noSummary: "Немає підсумку.", - runAt: "Час запуску", + runAt: "Запустити о", openRunChat: "Відкрити чат запуску", next: "Наступний {rel}", due: "Має відбутися {rel}", diff --git a/ui/src/i18n/locales/vi.ts b/ui/src/i18n/locales/vi.ts index ff8aff6218d..aeff43ae8bf 100644 --- a/ui/src/i18n/locales/vi.ts +++ b/ui/src/i18n/locales/vi.ts @@ -21,15 +21,27 @@ export const vi: TranslationMap = { call: "Gọi", confirm: "Xác nhận", cancel: "Hủy", + next: "Tiếp theo", + back: "Back", + create: "Create", + copy: "Sao chép", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "Bỏ chọn", enabled: "Đã bật", disabled: "Đã tắt", + none: "none", na: "n/a", never: "không bao giờ", configured: "Đã cấu hình", running: "Đang chạy", linked: "Đã liên kết", mode: "Chế độ", + system: "Hệ thống", + light: "Nhẹ", + dark: "Dark", baseUrl: "URL cơ sở", lastStart: "Lần khởi động gần nhất", lastProbe: "Lần thăm dò gần nhất", @@ -49,6 +61,8 @@ export const vi: TranslationMap = { version: "Phiên bản", docs: "Tài liệu", theme: "Giao diện", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "Tài nguyên", search: "Tìm kiếm", save: "Lưu", @@ -140,6 +154,57 @@ export const vi: TranslationMap = { lastInput: "Đầu vào gần nhất {time}", reason: "Lý do {reason}", }, + sessionsView: { + title: "Phiên", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "Đang hoạt động", + limit: "Limit", + global: "Global", + unknown: "Không rõ", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Token", + compaction: "Compaction", + thinking: "Suy nghĩ", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "tắt", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "Không có agent", copyId: "Sao chép ID", @@ -828,6 +893,7 @@ export const vi: TranslationMap = { chat: { disconnected: "Đã ngắt kết nối khỏi gateway.", refreshTitle: "Làm mới dữ liệu trò chuyện", + settings: "Chat settings", thinkingToggle: "Bật/tắt đầu ra suy nghĩ/đang xử lý của trợ lý", toolCallsToggle: "Bật/tắt lượt gọi công cụ và kết quả công cụ", focusToggle: "Bật/tắt chế độ tập trung (ẩn thanh bên + tiêu đề trang)", @@ -835,6 +901,15 @@ export const vi: TranslationMap = { showCronSessions: "Hiển thị phiên cron", showCronSessionsHidden: "Hiển thị phiên cron ({count} bị ẩn)", onboardingDisabled: "Đã tắt trong quá trình thiết lập", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "English (Tiếng Anh)", @@ -858,6 +933,64 @@ export const vi: TranslationMap = { fa: "فارسی (Tiếng Ba Tư)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Tự động hóa", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "Đã bật", yes: "Có", diff --git a/ui/src/i18n/locales/zh-CN.ts b/ui/src/i18n/locales/zh-CN.ts index 2c2645a9183..d130d762ddf 100644 --- a/ui/src/i18n/locales/zh-CN.ts +++ b/ui/src/i18n/locales/zh-CN.ts @@ -21,15 +21,27 @@ export const zh_CN: TranslationMap = { call: "调用", confirm: "确认", cancel: "取消", + next: "Next", + back: "Back", + create: "Create", + copy: "复制", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "取消选择", enabled: "已启用", disabled: "已禁用", + none: "none", na: "不适用", never: "从未", configured: "已配置", running: "运行中", linked: "已关联", mode: "模式", + system: "系统", + light: "浅睡", + dark: "Dark", baseUrl: "基础 URL", lastStart: "上次启动", lastProbe: "上次探测", @@ -49,6 +61,8 @@ export const zh_CN: TranslationMap = { version: "版本", docs: "文档", theme: "主题", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "资源", search: "搜索", save: "保存", @@ -138,6 +152,57 @@ export const zh_CN: TranslationMap = { lastInput: "上次输入 {time}", reason: "原因 {reason}", }, + sessionsView: { + title: "会话", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "活跃", + limit: "Limit", + global: "Global", + unknown: "Unknown", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Token", + compaction: "Compaction", + thinking: "Thinking", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "关闭", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "无代理", copyId: "复制 ID", @@ -152,7 +217,7 @@ export const zh_CN: TranslationMap = { overview: "概览", files: "文件", tools: "工具", - skills: "技能", + skills: "Skills", channels: "频道", cronJobs: "Cron Jobs", }, @@ -273,7 +338,7 @@ export const zh_CN: TranslationMap = { connectedSource: "已连接:{id}", connected: "已连接", channelSource: "频道:{id}", - channel: "频道", + channel: "渠道", builtIn: "内置", }, nav: { @@ -293,7 +358,7 @@ export const zh_CN: TranslationMap = { sessions: "会话", usage: "使用情况", cron: "定时任务", - skills: "技能", + skills: "Skills", nodes: "节点", chat: "聊天", config: "配置", @@ -360,7 +425,7 @@ export const zh_CN: TranslationMap = { instancesHint: "过去 5 分钟内的在线信号。", sessions: "会话", sessionsHint: "网关跟踪的最近会话密钥。", - cron: "定时任务", + cron: "Cron", cronNext: "下次唤醒 {time}", }, notes: { @@ -412,8 +477,8 @@ export const zh_CN: TranslationMap = { copyCommandAria: "复制命令:{command}", }, cards: { - cost: "费用", - skills: "技能", + cost: "成本", + skills: "Skills", recentSessions: "最近会话", modelAuth: "模型认证", modelAuthOk: "{count} 正常", @@ -448,13 +513,13 @@ export const zh_CN: TranslationMap = { categories: { search: "搜索", navigation: "导航", - skills: "技能", + skills: "Skills", }, items: { overview: "概览", sessions: "会话", scheduled: "已计划", - skills: "技能", + skills: "Skills", settings: "设置", agents: "代理", shellCommand: "Shell 命令", @@ -817,6 +882,7 @@ export const zh_CN: TranslationMap = { chat: { disconnected: "已断开与网关的连接。", refreshTitle: "刷新聊天数据", + settings: "Chat settings", thinkingToggle: "切换助手思考/工作输出", toolCallsToggle: "切换工具调用和工具结果", focusToggle: "切换专注模式 (隐藏侧边栏 + 页面页眉)", @@ -824,6 +890,15 @@ export const zh_CN: TranslationMap = { showCronSessions: "显示定时任务会话", showCronSessionsHidden: "显示定时任务会话 (已隐藏 {count} 个)", onboardingDisabled: "引导期间禁用", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "英语", @@ -847,6 +922,64 @@ export const zh_CN: TranslationMap = { fa: "فارسی(波斯语)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automation", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "已启用", yes: "是", @@ -869,7 +1002,7 @@ export const zh_CN: TranslationMap = { sort: "排序", nextRun: "下次运行", recentlyUpdated: "最近更新", - name: "名称", + name: "姓名", direction: "方向", ascending: "升序", descending: "降序", @@ -915,14 +1048,14 @@ export const zh_CN: TranslationMap = { requiredSr: "必填", basics: "基本信息", basicsSub: "命名、选择助手并设置启用状态。", - fieldName: "名称", + fieldName: "姓名", description: "描述", agentId: "代理 ID", namePlaceholder: "晨间简报", descriptionPlaceholder: "此任务的可选说明", agentPlaceholder: "main 或 ops", agentHelp: "输入以选择已知代理,或输入自定义 ID。", - schedule: "调度", + schedule: "计划", scheduleSub: "控制任务运行时间。", every: "每隔", at: "指定时间", @@ -967,7 +1100,7 @@ export const zh_CN: TranslationMap = { noneInternal: "无(仅内部)", deliveryHelp: "发布将摘要发送到聊天。无保持执行仅内部。", webhookUrl: "Webhook URL", - channel: "频道", + channel: "渠道", webhookPlaceholder: "https://example.com/cron", channelHelp: "选择接收摘要的已连接频道。", webhookHelp: "将运行摘要发送到 Webhook 端点。", diff --git a/ui/src/i18n/locales/zh-TW.ts b/ui/src/i18n/locales/zh-TW.ts index e9980ace208..04e478865f6 100644 --- a/ui/src/i18n/locales/zh-TW.ts +++ b/ui/src/i18n/locales/zh-TW.ts @@ -4,7 +4,7 @@ import type { TranslationMap } from "../lib/types.ts"; export const zh_TW: TranslationMap = { common: { health: "健康狀況", - ok: "正常", + ok: "OK", yes: "是", no: "否", active: "啟用中", @@ -14,22 +14,34 @@ export const zh_TW: TranslationMap = { offline: "離線", connect: "連接", connected: "已連線", - refresh: "刷新", + refresh: "重新整理", reload: "重新載入", - reset: "Reset", + reset: "重設", probe: "探測", call: "呼叫", confirm: "確認", cancel: "取消", + next: "下一次", + back: "Back", + create: "Create", + copy: "複製", + copied: "Copied!", + copyCode: "Copy code", + delete: "Delete", + dismiss: "Dismiss", unselect: "取消選取", enabled: "已啟用", disabled: "已禁用", + none: "none", na: "不適用", never: "never", configured: "已設定", running: "執行中", linked: "已連結", mode: "模式", + system: "系統", + light: "淺層", + dark: "Dark", baseUrl: "基礎 URL", lastStart: "上次啟動", lastProbe: "上次探測", @@ -49,6 +61,8 @@ export const zh_TW: TranslationMap = { version: "版本", docs: "文檔", theme: "主題", + colorMode: "Color mode", + colorModeOption: "Color mode: {mode}", resources: "資源", search: "搜尋", save: "儲存", @@ -138,6 +152,57 @@ export const zh_TW: TranslationMap = { lastInput: "上次輸入 {time}", reason: "原因 {reason}", }, + sessionsView: { + title: "工作階段", + subtitle: "Active session keys and per-session overrides.", + store: "Store: {path}", + active: "啟用中", + limit: "Limit", + global: "Global", + unknown: "未知", + minutesPlaceholder: "min", + searchPlaceholder: "Filter by key, agent, label, kind…", + selected: "{count} selected", + deleteSelected: "Delete", + selectAllOnPage: "Select all on page", + selectSession: "Select session", + optionalPlaceholder: "(optional)", + key: "Key", + label: "Label", + kind: "Kind", + updated: "Updated", + tokens: "Token", + compaction: "Compaction", + thinking: "思考", + fast: "Fast", + verbose: "Verbose", + reasoning: "Reasoning", + noSessions: "No sessions found.", + inherit: "inherit", + defaultOption: "Default ({value})", + offExplicit: "off (explicit)", + on: "on", + off: "關閉", + full: "full", + stream: "stream", + customOption: "{value} (custom)", + manual: "manual", + autoThreshold: "auto-threshold", + overflowRetry: "overflow retry", + timeoutRetry: "timeout retry", + tokenRange: "{before} → {after} tokens", + tokensBefore: "{count} tokens before", + tokenDeltaUnavailable: "token delta unavailable", + checkpoints: "{count} checkpoints", + checkpoint: "{count} checkpoint", + showCheckpoints: "Show checkpoints", + hideCheckpoints: "Hide checkpoints", + loadingCheckpoints: "Loading checkpoints…", + noCheckpoints: "No compaction checkpoints recorded for this session.", + noSummary: "No summary captured.", + branchFromCheckpoint: "Branch from checkpoint", + restoreCheckpoint: "Restore checkpoint", + }, agents: { noAgents: "No agents", copyId: "Copy ID", @@ -150,8 +215,8 @@ export const zh_TW: TranslationMap = { selectSubtitle: "Pick an agent to inspect its workspace and tools.", tabs: { overview: "Overview", - files: "Files", - tools: "Tools", + files: "檔案", + tools: "工具", skills: "Skills", channels: "Channels", cronJobs: "Cron Jobs", @@ -185,8 +250,8 @@ export const zh_TW: TranslationMap = { cronPanel: { schedulerTitle: "Scheduler", schedulerSubtitle: "Gateway cron status.", - jobs: "Jobs", - nextWake: "Next wake", + jobs: "工作", + nextWake: "下次喚醒", agentJobsTitle: "Agent Cron Jobs", agentJobsSubtitle: "Scheduled jobs targeting this agent.", noJobs: "No jobs assigned.", @@ -225,7 +290,7 @@ export const zh_TW: TranslationMap = { debug: { snapshotsTitle: "Snapshots", snapshotsSubtitle: "Status, health, and heartbeat data.", - status: "Status", + status: "狀態", health: "Health", lastHeartbeat: "Last heartbeat", security: { @@ -234,7 +299,7 @@ export const zh_TW: TranslationMap = { warnings: "{count} warnings", noCriticalIssues: "No critical issues", info: "{count} info", - runPrefix: "Run", + runPrefix: "執行", runSuffix: "for details.", }, manualRpcTitle: "Manual RPC", @@ -259,8 +324,8 @@ export const zh_TW: TranslationMap = { deny: "Deny", labels: { host: "Host", - agent: "Agent", - session: "Session", + agent: "代理", + session: "工作階段", cwd: "CWD", resolved: "Resolved", security: "Security", @@ -290,10 +355,10 @@ export const zh_TW: TranslationMap = { overview: "概覽", channels: "頻道", instances: "實例", - sessions: "會話", + sessions: "工作階段", usage: "使用情況", cron: "定時任務", - skills: "技能", + skills: "Skills", nodes: "節點", chat: "聊天", config: "配置", @@ -358,9 +423,9 @@ export const zh_TW: TranslationMap = { stats: { instances: "實例", instancesHint: "過去 5 分鐘內的在線信號。", - sessions: "會話", + sessions: "工作階段", sessionsHint: "網關跟蹤的最近會話密鑰。", - cron: "定時任務", + cron: "Cron", cronNext: "下次喚醒 {time}", }, notes: { @@ -412,8 +477,8 @@ export const zh_TW: TranslationMap = { copyCommandAria: "複製指令:{command}", }, cards: { - cost: "費用", - skills: "技能", + cost: "成本", + skills: "Skills", recentSessions: "最近會話", modelAuth: "模型驗證", modelAuthOk: "{count} 正常", @@ -448,13 +513,13 @@ export const zh_TW: TranslationMap = { categories: { search: "搜尋", navigation: "導覽", - skills: "技能", + skills: "Skills", }, items: { overview: "概覽", sessions: "工作階段", scheduled: "已排程", - skills: "技能", + skills: "Skills", settings: "設定", agents: "代理", shellCommand: "Shell 指令", @@ -818,6 +883,7 @@ export const zh_TW: TranslationMap = { chat: { disconnected: "已斷開與網關的連接。", refreshTitle: "刷新聊天數據", + settings: "Chat settings", thinkingToggle: "切換助手思考/工作輸出", toolCallsToggle: "切換工具呼叫與工具結果", focusToggle: "切換專注模式 (隱藏側邊欄 + 頁面頁眉)", @@ -825,6 +891,15 @@ export const zh_TW: TranslationMap = { showCronSessions: "顯示定時任務會話", showCronSessionsHidden: "顯示定時任務會話 (已隱藏 {count} 個)", onboardingDisabled: "引導期間禁用", + gatewayStatus: "Gateway status: {status}", + commandPaletteTitle: "Search or jump to… (⌘K)", + openCommandPalette: "Open command palette", + docsOpensInNewTab: "{label} (opens in new tab)", + updateAvailable: "Update available:", + runningVersion: "running v{version}", + updating: "Updating…", + updateNow: "Update now", + dismissUpdateBanner: "Dismiss update banner", }, languages: { en: "英文", @@ -848,6 +923,64 @@ export const zh_TW: TranslationMap = { fa: "فارسی(波斯文)", }, cron: { + quickCreate: { + schedules: { + everyMorning: { + label: "Every morning", + description: "Daily at 8:00 AM", + }, + everyEvening: { + label: "Every evening", + description: "Daily at 6:00 PM", + }, + hourly: { + label: "Hourly", + description: "Every hour", + }, + weekdays: { + label: "Weekdays", + description: "Mon–Fri at 9:00 AM", + }, + weekly: { + label: "Weekly", + description: "Every Monday at 9:00 AM", + }, + once: { + label: "Run once", + description: "One-time, delete after run", + }, + }, + delivery: { + notify: { + label: "Notify me", + description: "Deliver results to chat", + }, + silent: { + label: "Silent", + description: "Run without notification", + }, + isolated: { + label: "Independent session", + description: "Run in its own session", + }, + }, + steps: { + what: "What", + when: "When", + how: "How", + }, + defaultName: "Automation", + whatHeading: "What should it do?", + whatHint: "Describe the task in natural language. The agent will run this prompt each time.", + promptPlaceholder: "e.g., Check my inbox for urgent emails and summarize them...", + nameOptional: "Name (optional)", + namePlaceholder: "e.g., Morning inbox check", + whenHeading: "When should it run?", + whenHint: "Pick a schedule. You can fine-tune it later.", + howHeading: "How should it work?", + howHint: "Choose how results are delivered.", + title: "New Automation", + }, summary: { enabled: "已啟用", yes: "是", diff --git a/ui/src/ui/app-render.helpers.ts b/ui/src/ui/app-render.helpers.ts index aa1e73ba9a1..4f7c6b9ea47 100644 --- a/ui/src/ui/app-render.helpers.ts +++ b/ui/src/ui/app-render.helpers.ts @@ -437,8 +437,8 @@ export function renderChatMobileToggle(state: AppViewState) { trigger: e.currentTarget as HTMLElement, }); }} - title="Chat settings" - aria-label="Chat settings" + title=${t("chat.settings")} + aria-label=${t("chat.settings")} aria-expanded=${mobileControlsOpen} aria-controls=${controlsDropdownId} > @@ -599,11 +599,11 @@ function countHiddenCronSessions(sessionKey: string, sessions: SessionsListResul return sessions.sessions.filter((s) => isCronSessionKey(s.key) && s.key !== sessionKey).length; } -type ThemeModeOption = { id: ThemeMode; label: string; short: string }; +type ThemeModeOption = { id: ThemeMode; labelKey: string; short: string }; const THEME_MODE_OPTIONS: ThemeModeOption[] = [ - { id: "system", label: "System", short: "SYS" }, - { id: "light", label: "Light", short: "LIGHT" }, - { id: "dark", label: "Dark", short: "DARK" }, + { id: "system", labelKey: "common.system", short: "SYS" }, + { id: "light", labelKey: "common.light", short: "LIGHT" }, + { id: "dark", labelKey: "common.dark", short: "DARK" }, ]; export function renderTopbarThemeModeToggle(state: AppViewState) { @@ -625,23 +625,24 @@ export function renderTopbarThemeModeToggle(state: AppViewState) { }; return html` -
- ${THEME_MODE_OPTIONS.map( - (opt) => html` +
+ ${THEME_MODE_OPTIONS.map((opt) => { + const label = t(opt.labelKey); + return html` - `, - )} + `; + })}
`; } @@ -657,8 +658,8 @@ export function renderSidebarConnectionStatus(state: AppViewState) { class="sidebar-version__status ${toneClass}" role="img" aria-live="polite" - aria-label="Gateway status: ${label}" - title="Gateway status: ${label}" + aria-label=${t("chat.gatewayStatus", { status: label })} + title=${t("chat.gatewayStatus", { status: label })} > `; } diff --git a/ui/src/ui/app-render.ts b/ui/src/ui/app-render.ts index 5a05fa72c10..810e4e36aa8 100644 --- a/ui/src/ui/app-render.ts +++ b/ui/src/ui/app-render.ts @@ -1366,8 +1366,8 @@ export function renderApp(state: AppViewState) { @click=${() => { state.paletteOpen = !state.paletteOpen; }} - title="Search or jump to… (⌘K)" - aria-label="Open command palette" + title=${t("chat.commandPaletteTitle")} + aria-label=${t("chat.openCommandPalette")} > ${t("common.search")} ⌘K @@ -1461,7 +1461,7 @@ export function renderApp(state: AppViewState) { href="https://docs.openclaw.ai" target=${EXTERNAL_LINK_TARGET} rel=${buildExternalLinkRel()} - title="${t("common.docs")} (opens in new tab)" + title=${t("chat.docsOpensInNewTab", { label: t("common.docs") })} > ${!navCollapsed @@ -1503,20 +1503,20 @@ export function renderApp(state: AppViewState) { state.updateAvailable.latestVersion !== state.updateAvailable.currentVersion && !isUpdateBannerDismissed(state.updateAvailable) ? html` @@ -467,9 +488,9 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { const thinking = rawThinking ? normalizeThinkingOptionValue(rawThinking) : ""; const thinkLevels = withCurrentLabeledOption(resolveThinkLevelOptions(row), thinking); const fastMode = row.fastMode === true ? "on" : row.fastMode === false ? "off" : ""; - const fastLevels = withCurrentLabeledOption(FAST_LEVELS, fastMode); + const fastLevels = withCurrentLabeledOption(buildFastLevelOptions(), fastMode); const verbose = row.verboseLevel ?? ""; - const verboseLevels = withCurrentLabeledOption(VERBOSE_LEVELS, verbose); + const verboseLevels = withCurrentLabeledOption(buildVerboseLevelOptions(), verbose); const reasoning = row.reasoningLevel ?? ""; const reasoningLevels = withCurrentOption(REASONING_LEVELS, reasoning); const latestCheckpoint = row.latestCompactionCheckpoint; @@ -513,7 +534,7 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { type="checkbox" .checked=${props.selectedKeys.has(row.key)} @change=${() => props.onToggleSelect(row.key)} - aria-label="Select session" + aria-label=${t("sessionsView.selectSession")} /> @@ -553,7 +574,7 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { { const value = normalizeOptionalString((e.target as HTMLInputElement).value) ?? null; @@ -570,8 +591,10 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) {
${checkpointCount > 0 - ? `${checkpointCount} checkpoint${checkpointCount === 1 ? "" : "s"}` - : "none"} + ? checkpointCount === 1 + ? t("sessionsView.checkpoint", { count: String(checkpointCount) }) + : t("sessionsView.checkpoints", { count: String(checkpointCount) }) + : t("common.none")} ${latestCheckpoint ? html` @@ -586,7 +609,7 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { ?disabled=${props.checkpointLoadingKey === row.key} @click=${() => props.onToggleCheckpointDetails(row.key)} > - ${isExpanded ? "Hide checkpoints" : "Show checkpoints"} + ${isExpanded ? t("sessionsView.hideCheckpoints") : t("sessionsView.showCheckpoints")}
@@ -655,7 +678,7 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { ${reasoningLevels.map( (level) => html``, )} @@ -669,13 +692,11 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { style="padding: 14px 16px; border-top: 1px solid var(--border); background: var(--surface-2, rgba(127, 127, 127, 0.05));" > ${props.checkpointLoadingKey === row.key - ? html`
Loading checkpoints…
` + ? html`
${t("sessionsView.loadingCheckpoints")}
` : checkpointError ? html`
${checkpointError}
` : checkpointItems.length === 0 - ? html`
- No compaction checkpoints recorded for this session. -
` + ? html`
${t("sessionsView.noCheckpoints")}
` : html`
${checkpointItems.map( @@ -698,7 +719,7 @@ function renderRows(row: GatewaySessionRow, props: SessionsProps) { ? html`
${checkpoint.summary}
` - : html`
No summary captured.
`} + : html`
${t("sessionsView.noSummary")}
`}