From b760fa0df9d931d92dd8fd42febc7490e63a1d9c Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Sat, 20 Jun 2026 05:04:25 -0700 Subject: [PATCH] FN-6769: localize remaining dashboard strings Localize the remaining dashboard UI clusters and refresh the generated i18n resources. - Replace hardcoded labels across agent, plugin, mission, workflow node, research, document, activity, and miscellaneous dashboard components with app namespace translations. - Add and synchronize locale catalog entries for English, Spanish, French, Korean, Simplified Chinese, and Traditional Chinese. - Update i18n lint configuration and generated resource types, with a patch changeset for the published CLI package. Files changed: .changeset/fn-6769-i18n-cluster.md | 5 + i18next.config.ts | 47 +-- .../dashboard/app/components/ActiveAgentsPanel.tsx | 2 +- packages/dashboard/app/components/ActivityFeed.tsx | 12 +- .../dashboard/app/components/ActivityLogModal.tsx | 4 +- packages/dashboard/app/components/AddNodeModal.tsx | 4 +- .../dashboard/app/components/AgentDetailView.tsx | 6 +- .../app/components/AgentGenerationModal.tsx | 2 +- .../dashboard/app/components/AgentImportModal.tsx | 4 +- .../app/components/AgentOnboardingModal.tsx | 4 +- .../app/components/AgentPromptsManager.tsx | 2 +- .../dashboard/app/components/AgentRunHistory.tsx | 2 +- .../dashboard/app/components/AgentsOverviewBar.tsx | 2 +- .../dashboard/app/components/BranchGroupCard.tsx | 4 +- .../dashboard/app/components/CliBinaryPanel.tsx | 8 +- .../app/components/CursorCliProviderCard.tsx | 4 +- .../dashboard/app/components/DashboardLoader.tsx | 4 +- .../dashboard/app/components/DevServerView.tsx | 8 +- .../dashboard/app/components/DocumentsView.tsx | 6 +- .../dashboard/app/components/ErrorBoundary.tsx | 9 +- .../dashboard/app/components/ExecutorStatusBar.tsx | 5 +- .../dashboard/app/components/GitHubStarPrompt.tsx | 14 +- .../dashboard/app/components/GitManagerModal.tsx | 4 +- .../dashboard/app/components/GroupTaskModal.tsx | 2 +- packages/dashboard/app/components/Header.tsx | 4 +- .../dashboard/app/components/HermesRuntimeCard.tsx | 2 +- packages/dashboard/app/components/InsightsView.tsx | 2 +- .../dashboard/app/components/IssueMentionPopup.tsx | 5 +- packages/dashboard/app/components/MailboxView.tsx | 6 +- .../components/MilestoneSliceInterviewModal.tsx | 2 +- .../app/components/MissionInterviewModal.tsx | 2 +- .../dashboard/app/components/MissionManager.tsx | 8 +- .../app/components/ModelOnboardingModal.tsx | 2 +- .../dashboard/app/components/NodeDetailModal.tsx | 2 +- .../app/components/PiExtensionsManager.tsx | 10 +- .../dashboard/app/components/ProjectSelector.tsx | 6 +- packages/dashboard/app/components/QuickChatFAB.tsx | 44 +-- packages/dashboard/app/components/ResearchView.tsx | 2 +- packages/dashboard/app/components/RoutineCard.tsx | 6 +- .../dashboard/app/components/RoutineEditor.tsx | 2 +- packages/dashboard/app/components/RoutingTab.tsx | 2 +- packages/dashboard/app/components/ScheduleCard.tsx | 6 +- packages/dashboard/app/components/ScheduleForm.tsx | 2 +- packages/dashboard/app/components/ScriptsModal.tsx | 2 +- .../app/components/StashConflictModal.tsx | 4 +- .../dashboard/app/components/TerminalModal.tsx | 2 +- .../app/components/nodes/WorkflowNodeTypes.tsx | 47 +-- packages/i18n/locales/en/app.json | 274 +++++++-------- packages/i18n/locales/es/app.json | 144 ++++++-- packages/i18n/locales/fr/app.json | 144 ++++++-- packages/i18n/locales/ko/app.json | 144 ++++++-- packages/i18n/locales/zh-CN/app.json | 144 ++++++-- packages/i18n/locales/zh-TW/app.json | 144 ++++++-- packages/i18n/src/resources.d.ts | 375 +++++++++++++++++++-- 54 files changed, 1261 insertions(+), 442 deletions(-) Fusion-Task-Id: FN-6769 Fusion-Task-Lineage: a8733dc9-3b48-47e6-88c4-020f83ab41de --- .changeset/fn-6769-i18n-cluster.md | 5 + i18next.config.ts | 47 +-- .../app/components/ActiveAgentsPanel.tsx | 2 +- .../dashboard/app/components/ActivityFeed.tsx | 12 +- .../app/components/ActivityLogModal.tsx | 4 +- .../dashboard/app/components/AddNodeModal.tsx | 4 +- .../app/components/AgentDetailView.tsx | 6 +- .../app/components/AgentGenerationModal.tsx | 2 +- .../app/components/AgentImportModal.tsx | 4 +- .../app/components/AgentOnboardingModal.tsx | 4 +- .../app/components/AgentPromptsManager.tsx | 2 +- .../app/components/AgentRunHistory.tsx | 2 +- .../app/components/AgentsOverviewBar.tsx | 2 +- .../app/components/BranchGroupCard.tsx | 4 +- .../app/components/CliBinaryPanel.tsx | 8 +- .../app/components/CursorCliProviderCard.tsx | 4 +- .../app/components/DashboardLoader.tsx | 4 +- .../app/components/DevServerView.tsx | 8 +- .../app/components/DocumentsView.tsx | 6 +- .../app/components/ErrorBoundary.tsx | 9 +- .../app/components/ExecutorStatusBar.tsx | 5 +- .../app/components/GitHubStarPrompt.tsx | 14 +- .../app/components/GitManagerModal.tsx | 4 +- .../app/components/GroupTaskModal.tsx | 2 +- packages/dashboard/app/components/Header.tsx | 4 +- .../app/components/HermesRuntimeCard.tsx | 2 +- .../dashboard/app/components/InsightsView.tsx | 2 +- .../app/components/IssueMentionPopup.tsx | 5 +- .../dashboard/app/components/MailboxView.tsx | 6 +- .../MilestoneSliceInterviewModal.tsx | 2 +- .../app/components/MissionInterviewModal.tsx | 2 +- .../app/components/MissionManager.tsx | 8 +- .../app/components/ModelOnboardingModal.tsx | 2 +- .../app/components/NodeDetailModal.tsx | 2 +- .../app/components/PiExtensionsManager.tsx | 10 +- .../app/components/ProjectSelector.tsx | 6 +- .../dashboard/app/components/QuickChatFAB.tsx | 44 +- .../dashboard/app/components/ResearchView.tsx | 2 +- .../dashboard/app/components/RoutineCard.tsx | 6 +- .../app/components/RoutineEditor.tsx | 2 +- .../dashboard/app/components/RoutingTab.tsx | 2 +- .../dashboard/app/components/ScheduleCard.tsx | 6 +- .../dashboard/app/components/ScheduleForm.tsx | 2 +- .../dashboard/app/components/ScriptsModal.tsx | 2 +- .../app/components/StashConflictModal.tsx | 4 +- .../app/components/TerminalModal.tsx | 2 +- .../components/nodes/WorkflowNodeTypes.tsx | 47 ++- packages/i18n/locales/en/app.json | 274 ++++++------- packages/i18n/locales/es/app.json | 144 ++++++- packages/i18n/locales/fr/app.json | 144 ++++++- packages/i18n/locales/ko/app.json | 144 ++++++- packages/i18n/locales/zh-CN/app.json | 144 ++++++- packages/i18n/locales/zh-TW/app.json | 144 ++++++- packages/i18n/src/resources.d.ts | 375 +++++++++++++++++- 54 files changed, 1261 insertions(+), 442 deletions(-) create mode 100644 .changeset/fn-6769-i18n-cluster.md diff --git a/.changeset/fn-6769-i18n-cluster.md b/.changeset/fn-6769-i18n-cluster.md new file mode 100644 index 0000000000..d801c0f3aa --- /dev/null +++ b/.changeset/fn-6769-i18n-cluster.md @@ -0,0 +1,5 @@ +--- +"@runfusion/fusion": patch +--- + +Localize remaining plugin, agent, mission, node, research, document, activity, and miscellaneous dashboard strings and remove their i18n lint deferrals. diff --git a/i18next.config.ts b/i18next.config.ts index 961e7ac2aa..1794aef2a7 100644 --- a/i18next.config.ts +++ b/i18next.config.ts @@ -8,65 +8,20 @@ import { const DEFERRED_I18N_LINT_FILES = [ // FNXC:i18n-LintBaseline 2026-06-19-00:00: // These exact files still carry pre-existing user-facing copy debt after FN-6749 restored the guardrail scope and token suppression. - // Deferral split: 23 settings section files -> FN-6771, 21 workflow/task/setup/PR files -> FN-6770, and 36 plugin/agent/mission/misc files -> FN-6769. + // Deferral split after FN-6769: 23 settings section files -> FN-6771 and workflow/task/setup/PR files -> FN-6770. // Keep the deferral file-scoped and remove entries as those follow-ups localize each cluster. "packages/dashboard/app/components/WorkflowSelector.tsx", "packages/dashboard/app/components/WorkflowResultsTab.tsx", "packages/dashboard/app/components/WorkflowNodeEditor.tsx", - "packages/dashboard/app/components/TerminalModal.tsx", "packages/dashboard/app/components/TaskDetailModal.tsx", "packages/dashboard/app/components/TaskComments.tsx", "packages/dashboard/app/components/TaskChatTab.tsx", - "packages/dashboard/app/components/StashConflictModal.tsx", "packages/dashboard/app/components/SetupWizardModal.tsx", "packages/dashboard/app/components/SettingsModal.tsx", - "packages/dashboard/app/components/ScriptsModal.tsx", - "packages/dashboard/app/components/ScheduleForm.tsx", - "packages/dashboard/app/components/ScheduleCard.tsx", - "packages/dashboard/app/components/RoutingTab.tsx", - "packages/dashboard/app/components/RoutineEditor.tsx", - "packages/dashboard/app/components/RoutineCard.tsx", - "packages/dashboard/app/components/ResearchView.tsx", - "packages/dashboard/app/components/QuickChatFAB.tsx", "packages/dashboard/app/components/PullRequestView.tsx", - "packages/dashboard/app/components/ProjectSelector.tsx", "packages/dashboard/app/components/PrPanel.tsx", "packages/dashboard/app/components/PrCreateModal.tsx", - "packages/dashboard/app/components/PiExtensionsManager.tsx", - "packages/dashboard/app/components/NodeDetailModal.tsx", - "packages/dashboard/app/components/ModelOnboardingModal.tsx", - "packages/dashboard/app/components/MissionManager.tsx", - "packages/dashboard/app/components/MissionInterviewModal.tsx", - "packages/dashboard/app/components/MilestoneSliceInterviewModal.tsx", - "packages/dashboard/app/components/MailboxView.tsx", - "packages/dashboard/app/components/IssueMentionPopup.tsx", - "packages/dashboard/app/components/InsightsView.tsx", - "packages/dashboard/app/components/HermesRuntimeCard.tsx", - "packages/dashboard/app/components/Header.tsx", - "packages/dashboard/app/components/GroupTaskModal.tsx", - "packages/dashboard/app/components/GitManagerModal.tsx", - "packages/dashboard/app/components/GitHubStarPrompt.tsx", - "packages/dashboard/app/components/ExecutorStatusBar.tsx", - "packages/dashboard/app/components/ErrorBoundary.tsx", - "packages/dashboard/app/components/DocumentsView.tsx", - "packages/dashboard/app/components/DevServerView.tsx", - "packages/dashboard/app/components/DashboardLoader.tsx", - "packages/dashboard/app/components/CursorCliProviderCard.tsx", - "packages/dashboard/app/components/CliBinaryPanel.tsx", - "packages/dashboard/app/components/BranchGroupCard.tsx", "packages/dashboard/app/components/Board.tsx", - "packages/dashboard/app/components/AgentsOverviewBar.tsx", - "packages/dashboard/app/components/AgentRunHistory.tsx", - "packages/dashboard/app/components/AgentPromptsManager.tsx", - "packages/dashboard/app/components/AgentOnboardingModal.tsx", - "packages/dashboard/app/components/AgentImportModal.tsx", - "packages/dashboard/app/components/AgentGenerationModal.tsx", - "packages/dashboard/app/components/AgentDetailView.tsx", - "packages/dashboard/app/components/AddNodeModal.tsx", - "packages/dashboard/app/components/ActivityLogModal.tsx", - "packages/dashboard/app/components/ActivityFeed.tsx", - "packages/dashboard/app/components/ActiveAgentsPanel.tsx", - "packages/dashboard/app/components/nodes/WorkflowNodeTypes.tsx", "packages/dashboard/app/components/settings/sections/WorktreesSection.tsx", "packages/dashboard/app/components/settings/sections/SchedulingSection.tsx", "packages/dashboard/app/components/settings/sections/ScheduledEvalsSection.tsx", diff --git a/packages/dashboard/app/components/ActiveAgentsPanel.tsx b/packages/dashboard/app/components/ActiveAgentsPanel.tsx index 109e702670..421956b909 100644 --- a/packages/dashboard/app/components/ActiveAgentsPanel.tsx +++ b/packages/dashboard/app/components/ActiveAgentsPanel.tsx @@ -153,7 +153,7 @@ function LiveAgentCard({ agent, projectId, onSelect, onOpenTaskLogs }: LiveAgent
- + {formatElapsed(elapsed)} {nextHeartbeatLabel && ( diff --git a/packages/dashboard/app/components/ActivityFeed.tsx b/packages/dashboard/app/components/ActivityFeed.tsx index 21f71e920d..40ecc41424 100644 --- a/packages/dashboard/app/components/ActivityFeed.tsx +++ b/packages/dashboard/app/components/ActivityFeed.tsx @@ -1,4 +1,5 @@ import { memo, useCallback, useMemo } from "react"; +import { useTranslation } from "react-i18next"; import "./ActivityFeed.css"; import { GitMerge, @@ -149,8 +150,11 @@ function ActivityFeedInner({ isLoading = false, error = null, projectNames = {}, - emptyMessage = "No recent activity", + emptyMessage, }: ActivityFeedProps) { + const { t } = useTranslation("app"); + const resolvedEmptyMessage = emptyMessage ?? t("activityFeed.noRecentActivity", "No recent activity"); + const getProjectName = useCallback((projectId: string): string => { return projectNames[projectId] || projectId; }, [projectNames]); @@ -206,9 +210,9 @@ function ActivityFeedInner({
-

{emptyMessage}

+

{resolvedEmptyMessage}

- Activity will appear here when tasks are created, moved, or completed + {t("activityFeed.emptyHint", "Activity will appear here when tasks are created, moved, or completed")}
@@ -222,7 +226,7 @@ function ActivityFeedInner({
{group.date} - {group.entries.length} event{group.entries.length !== 1 ? "s" : ""} + {t("activityFeed.eventCount", { count: group.entries.length, defaultValue_one: "{{count}} event", defaultValue_other: "{{count}} events" })}
diff --git a/packages/dashboard/app/components/ActivityLogModal.tsx b/packages/dashboard/app/components/ActivityLogModal.tsx index d649465105..a64d432f70 100644 --- a/packages/dashboard/app/components/ActivityLogModal.tsx +++ b/packages/dashboard/app/components/ActivityLogModal.tsx @@ -314,12 +314,12 @@ export function ActivityLogModal({ {t("activityLog.activeFilters", "Active filters:")} {filteredProjectId !== "all" && ( - Project: {projects.find(p => p.id === filteredProjectId)?.name || filteredProjectId} + {t("activityLog.projectFilterBadge", "Project: {{project}}", { project: projects.find(p => p.id === filteredProjectId)?.name || filteredProjectId })} )} {filteredType !== "all" && ( - Type: {EVENT_TYPE_LABELS[filteredType]} + {t("activityLog.typeFilterBadge", "Type: {{type}}", { type: EVENT_TYPE_LABELS[filteredType] })} )}
diff --git a/packages/dashboard/app/components/AgentPromptsManager.tsx b/packages/dashboard/app/components/AgentPromptsManager.tsx index d257a8c4b9..e0998f9903 100644 --- a/packages/dashboard/app/components/AgentPromptsManager.tsx +++ b/packages/dashboard/app/components/AgentPromptsManager.tsx @@ -526,7 +526,7 @@ export function AgentPromptsManager({ />
- {templateForm.prompt.length} characters + {t("agents.charactersCount", "{{count}} characters", { count: templateForm.prompt.length })}
diff --git a/packages/dashboard/app/components/AgentRunHistory.tsx b/packages/dashboard/app/components/AgentRunHistory.tsx index d478a85c98..f0b851d07f 100644 --- a/packages/dashboard/app/components/AgentRunHistory.tsx +++ b/packages/dashboard/app/components/AgentRunHistory.tsx @@ -103,7 +103,7 @@ export function AgentRunHistory({ agentId, projectId, onRunClick }: AgentRunHist )} {usage && ( - {((usage.inputTokens + usage.outputTokens) / 1000).toFixed(1)}k tokens + {t("agents.kTokens", "{{count}}k tokens", { count: Number(((usage.inputTokens + usage.outputTokens) / 1000).toFixed(1)) })} )} {run.triggerDetail && ( diff --git a/packages/dashboard/app/components/AgentsOverviewBar.tsx b/packages/dashboard/app/components/AgentsOverviewBar.tsx index ef96fad07d..5042067720 100644 --- a/packages/dashboard/app/components/AgentsOverviewBar.tsx +++ b/packages/dashboard/app/components/AgentsOverviewBar.tsx @@ -29,7 +29,7 @@ export function AgentsOverviewBar({ const runningCount = activeAgents.filter((a) => a.state === "running").length; return ( -
+
diff --git a/packages/dashboard/app/components/ExecutorStatusBar.tsx b/packages/dashboard/app/components/ExecutorStatusBar.tsx index 267af6eaee..22439ca58e 100644 --- a/packages/dashboard/app/components/ExecutorStatusBar.tsx +++ b/packages/dashboard/app/components/ExecutorStatusBar.tsx @@ -241,14 +241,15 @@ export function ExecutorStatusBar({ tasks, projectId, taskStuckTimeoutMs, staleH {t("executor.overlapQueue", "Overlap queue")} - {highestOverlapBlocker.blockerId} · {highestOverlapBlocker.entry.overlapBlockedTodoCount} todo{highestOverlapBlocker.entry.escalation ? t("executor.escalatedSuffix", " (escalated)") : ""} + {t("executor.overlapSummary", "{{blockerId}} · {{count}} todo", { blockerId: highestOverlapBlocker.blockerId, count: highestOverlapBlocker.entry.overlapBlockedTodoCount })}{highestOverlapBlocker.entry.escalation ? t("executor.escalatedSuffix", " (escalated)") : ""} diff --git a/packages/dashboard/app/components/GitHubStarPrompt.tsx b/packages/dashboard/app/components/GitHubStarPrompt.tsx index a0deb1aa9e..dc5d25d9d4 100644 --- a/packages/dashboard/app/components/GitHubStarPrompt.tsx +++ b/packages/dashboard/app/components/GitHubStarPrompt.tsx @@ -1,4 +1,5 @@ import { Star, X } from "lucide-react"; +import { useTranslation } from "react-i18next"; import "./GitHubStarPrompt.css"; const GITHUB_REPO_URL = "https://github.com/Runfusion/Fusion"; @@ -9,30 +10,31 @@ interface GitHubStarPromptProps { } export function GitHubStarPrompt({ onStar, onDismiss }: GitHubStarPromptProps) { + const { t } = useTranslation("app"); + const handleStar = () => { onStar?.(); onDismiss(); }; return ( -
+

- If Fusion has saved you time, a GitHub star goes a long way. It helps other developers discover the - project and keeps the team motivated to ship improvements. + {t("githubStarPrompt.body", "If Fusion has saved you time, a GitHub star goes a long way. It helps other developers discover the project and keeps the team motivated to ship improvements.")}

diff --git a/packages/dashboard/app/components/GitManagerModal.tsx b/packages/dashboard/app/components/GitManagerModal.tsx index 30df55031e..a99df3b6c3 100644 --- a/packages/dashboard/app/components/GitManagerModal.tsx +++ b/packages/dashboard/app/components/GitManagerModal.tsx @@ -732,7 +732,7 @@ export function GitManagerModal({ isOpen, onClose, tasks: _tasks, addToast, proj const handleDropStash = useCallback(async (index: number) => { const shouldDrop = await confirmContext.confirm({ title: t("git.dropStashTitle", "Drop Stash"), - message: t("git.dropStashMessage", "Drop stash@{{{index}}}? This cannot be undone.", { index }), + message: t("git.dropStashMessage", { index }), danger: true, }); if (!shouldDrop) return; @@ -2238,7 +2238,7 @@ function StashesPanel({
- stash@{`{${stash.index}}`} + {t("git.stashRef", "stash@{{index}}", { index: `{${stash.index}}` })} {stash.message}
{stash.branch && ( diff --git a/packages/dashboard/app/components/GroupTaskModal.tsx b/packages/dashboard/app/components/GroupTaskModal.tsx index b269980bb4..fc152295d4 100644 --- a/packages/dashboard/app/components/GroupTaskModal.tsx +++ b/packages/dashboard/app/components/GroupTaskModal.tsx @@ -147,7 +147,7 @@ export function GroupTaskModal({ isOpen, onClose, groupId, projectId, onOpenMemb {group.prUrl && (
- PR #{group.prNumber ?? "—"} ({group.prState}) + {t("groups.prLinkLabel", "PR #{{number}} ({{state}})", { number: group.prNumber ?? "—", state: group.prState })}
)} diff --git a/packages/dashboard/app/components/Header.tsx b/packages/dashboard/app/components/Header.tsx index a845e5d693..dc7575cf3b 100644 --- a/packages/dashboard/app/components/Header.tsx +++ b/packages/dashboard/app/components/Header.tsx @@ -748,7 +748,7 @@ export function Header({ height={24} viewBox="0 0 128 128" fill="none" - aria-label="Fusion logo" + aria-label={t("header.fusionLogo")} role="img" > -

Fusion

+

{t("appName", "Fusion")}

{/* Mobile Project Switch - dropdown trigger next to logo when at least one project exists (mobile only) */} diff --git a/packages/dashboard/app/components/HermesRuntimeCard.tsx b/packages/dashboard/app/components/HermesRuntimeCard.tsx index 09dbfd11f0..bc13a0bb85 100644 --- a/packages/dashboard/app/components/HermesRuntimeCard.tsx +++ b/packages/dashboard/app/components/HermesRuntimeCard.tsx @@ -227,7 +227,7 @@ export function HermesRuntimeCard() { > Nous Research ) : (
-
diff --git a/packages/dashboard/app/components/ScheduleForm.tsx b/packages/dashboard/app/components/ScheduleForm.tsx index 5e4406ecc9..a6f1a919a2 100644 --- a/packages/dashboard/app/components/ScheduleForm.tsx +++ b/packages/dashboard/app/components/ScheduleForm.tsx @@ -519,7 +519,7 @@ export function ScheduleForm({ schedule, onSubmit, onCancel, scope: formScope, p ) : ( {scheduleType === "custom" ? ( - <>{t("schedule.cronHelp", "min hour day month weekday — ")} crontab.guru + <>{t("schedule.cronHelp", "min hour day month weekday — ")} {t("schedule.crontabGuru", "crontab.guru")} ) : ( t("schedule.cronAutoFilled", "Auto-filled from preset: {{cron}}", { cron: cronExpression }) )} diff --git a/packages/dashboard/app/components/ScriptsModal.tsx b/packages/dashboard/app/components/ScriptsModal.tsx index ae54ab264d..ab86d2478b 100644 --- a/packages/dashboard/app/components/ScriptsModal.tsx +++ b/packages/dashboard/app/components/ScriptsModal.tsx @@ -181,7 +181,7 @@ export function ScriptsModal({ isOpen, onClose, addToast, projectId, onRunScript className="modal scripts-modal" role="dialog" aria-modal="true" - aria-label="Scripts" + aria-label={t("scripts.title", "Scripts")} > {/* Header */}
diff --git a/packages/dashboard/app/components/StashConflictModal.tsx b/packages/dashboard/app/components/StashConflictModal.tsx index aa66b71237..2cb9a3c949 100644 --- a/packages/dashboard/app/components/StashConflictModal.tsx +++ b/packages/dashboard/app/components/StashConflictModal.tsx @@ -103,7 +103,7 @@ export default function StashConflictModal({ const modalElement = modalRef.current; if (modalElement) { const focusable = getFocusableElements(modalElement); - const preferred = focusable.find((element) => element.getAttribute("aria-label") === "Copy stash reference") ?? focusable[0]; + const preferred = focusable.find((element) => element.getAttribute("aria-label") === t("stash.copyReference")) ?? focusable[0]; if (preferred) { preferred.focus(); } else { @@ -241,7 +241,7 @@ export default function StashConflictModal({ ) : null}
{stashDescriptor} -
diff --git a/packages/dashboard/app/components/TerminalModal.tsx b/packages/dashboard/app/components/TerminalModal.tsx index f0b64c94b7..9870fbd1f1 100644 --- a/packages/dashboard/app/components/TerminalModal.tsx +++ b/packages/dashboard/app/components/TerminalModal.tsx @@ -1637,7 +1637,7 @@ export function TerminalModal({ isOpen, onClose, initialCommand, initialCommandG FNXC:Terminal 2026-06-16-23:38: Touch users need literal ANSI arrow sequences for shell history and cursor movement. These shortcuts bypass sticky Ctrl/Alt modifiers so mobile navigation matches physical keyboard arrow keys exactly. */} -
+
{ARROW_SHORTCUT_KEYS.map((arrow) => (
{isEmpty && (
diff --git a/packages/i18n/locales/en/app.json b/packages/i18n/locales/en/app.json index 675a073e78..41915ceeef 100644 --- a/packages/i18n/locales/en/app.json +++ b/packages/i18n/locales/en/app.json @@ -31,6 +31,12 @@ "update": "Update", "yes": "Yes" }, + "activityFeed": { + "emptyHint": "Activity will appear here when tasks are created, moved, or completed", + "eventCount_one": "{{count}} event", + "eventCount_other": "{{count}} events", + "noRecentActivity": "No recent activity" + }, "activityLog": { "activeFilters": "Active filters:", "allEvents": "All Events", @@ -64,6 +70,7 @@ "noActivityRecorded": "No activity recorded yet", "noMatchingActivity": "No activity matches the current filters", "notMerged": "Not merged", + "projectFilterBadge": "Project: {{project}}", "refresh": "Refresh", "time": { "daysAgo_one": "{{count}}d ago", @@ -74,7 +81,8 @@ "minutesAgo_one": "{{count}}m ago", "minutesAgo_other": "{{count}}m ago" }, - "title": "Activity Log" + "title": "Activity Log", + "typeFilterBadge": "Type: {{type}}" }, "agentError": { "copied": "Copied", @@ -354,6 +362,7 @@ "bundleTitle": "Bundle", "cacheHitRatio": "Cache Hit Ratio", "cacheReadTokens": "Cache Read", + "cacheWindowSummary": "{{percent}}% ({{cached}} / {{written}} / {{input}} / {{tasks}})", "cacheWriteTokens": "Cache Write", "cancel": "Cancel", "cancelCustomInterval": "Cancel custom interval", @@ -361,6 +370,8 @@ "chainOfCommand": "Chain of Command", "change": "Change", "changeRole": "Click to change role", + "charactersCount_one": "{{count}} characters", + "charactersCount_other": "{{count}} characters", "chooseFile": "Choose File", "clearAgents": "Clear agents", "clearSkills": "Clear skills", @@ -408,6 +419,7 @@ "deleteTitle": "Delete Agent", "deletionNotAvailable": "Deletion is not available while the agent is running.", "deletionPermanent": "This will permanently delete the agent and all associated data.", + "detailLoadingLabel": "Agent detail loading", "details": "Details", "dialogAriaLabel": "Create new agent", "dialogTitle": "New Agent", @@ -452,6 +464,7 @@ "from": "From", "generateHint": "Describe your agent's role and let AI generate a specification", "generateWithAI": "Generate with AI", + "generateWithAiLabel": "Generate agent with AI", "generation": { "collapse": "Collapse", "expand": "Expand", @@ -536,9 +549,12 @@ "importingAgentsAndSkills": "Importing {{agentCount}} agent{{agentPlural}} and {{skillCount}} skill{{skillPlural}}...", "importingSkills_one": "Importing {{count}} skill{{plural}}...", "importingSkills_other": "Importing {{count}} skill{{plural}}...", + "importReportsTo": " · reports to {{agent}}", + "importSkills": " · skills: {{skills}}", "inbox": "Inbox", "inheritingProjectDefault": "Inheriting project default", "inheritProjectDefault": "Inherit project default", + "inlineInstructions": "Inline Instructions", "inlineMemoryFieldHint": "This memory is embedded directly in the agent's context.", "inlineMemoryHint": "Short-form memory injected on every heartbeat.", "inlineMemoryLabel": "Inline Memory", @@ -564,6 +580,8 @@ "intentPrompt": "What do you want this agent to do?", "interval": "Interval", "interviewDraftApplied": "Interview draft applied", + "kTokens_one": "{{count}}k tokens", + "kTokens_other": "{{count}}k tokens", "last24h": "Last 24h", "last7d": "Last 7 days", "lastHeartbeat": "Last heartbeat", @@ -733,7 +751,7 @@ "startInterview": "Start interview", "startOnboarding": "Start onboarding", "thinking": "Thinking...", - "title": "AI Interview", + "title": "Agent Onboarding", "updatedDraftReady": "Updated draft ready for review", "yes": "yes" }, @@ -753,6 +771,7 @@ "output": "Output", "outputTokens": "Output", "overview": "Overview", + "overviewLabel": "Agents overview", "parsing": "Parsing…", "pause": "Pause", "pauseAction": "Pause", @@ -1037,7 +1056,6 @@ "templateCompact": "Compact", "templateDefault": "Default", "thinkingHigh": "High", - "thinkingXhigh": "Very High", "thinkingLevel": "Thinking level", "thinkingLow": "Low", "thinkingMedium": "Medium", @@ -1045,6 +1063,7 @@ "thinkingOff": "Off", "thinkingXhigh": "Very High", "throughput": "Throughput", + "timeSinceLastHeartbeat": "Time since last heartbeat", "title": "Agents", "titleLabel": "Title", "titlePlaceholder": "e.g. Senior Engineer", @@ -1091,6 +1110,7 @@ }, "testMode": "Test mode — no real AI calls" }, + "appName": "Fusion", "approval": { "dismissBanner": "Dismiss approval notification banner", "needAttention_one": "{{count}} approval {{noun}} need your attention", @@ -1175,6 +1195,9 @@ "openPr": "Open PR", "unavailable": "Branch group unavailable" }, + "branchGroups": { + "prNumber": "PR #{{number}}" + }, "capacity": { "dismiss": "Dismiss capacity warning", "risk": "Capacity risk:", @@ -1322,9 +1345,13 @@ "thinking": "Thinking", "thinkingLabel": "Thinking", "thinkingStatus": "Thinking…", + "toolArgsLabel": "args", + "toolArgsPreview": "args: {{summary}}", "toolCalls": "Tool calls", "toolCallsCount_one": "{{count}} tool calls", "toolCallsCount_other": "{{count}} tool calls", + "toolResultLabel": "result", + "toolResultPreview": "result: {{summary}}", "typeMessage": "Type a message...", "unreadMessages": "Unread messages", "untitledSession": "Untitled", @@ -1353,9 +1380,11 @@ "versionMismatchSuffix": "Update to stay in sync." }, "cliBinary": { + "binaryLabel": "Binary:", "checking": "Checking…", "copied": "Copied", "copy": "Copy", + "expectedVersion": "(expected {{version}})", "failedExit": "Install failed (exit {{code}})", "heading": "CLI Binary", "help": "Installing the global CLI lets you run fn and fusion from any terminal. Automations and scripts work without it via npx, but a global install is faster and more convenient.", @@ -1363,13 +1392,15 @@ "installWithNpm": "Install with npm", "notOnPath": "Neither fn nor fusion was found on PATH.", "orCopyLabel": "Or copy and run yourself:", + "pathLabel": "Path:", "refresh": "Refresh", "reinstall": "Reinstall", "stateCheckDisabled": "Check disabled", "stateInstalled": "Installed", "stateMissing": "Not installed", "stateVersionMismatch": "Version mismatch", - "succeededDuration": "Install succeeded in {{duration}}s" + "succeededDuration": "Install succeeded in {{duration}}s", + "versionLabel": "Version:" }, "cliChat": { "queued_one": "{{count}} message queued — will send when the agent is ready", @@ -1509,7 +1540,6 @@ "title": "Heartbeat control" }, "orgChart": { - "description": "Read-only view of the running agent hierarchy.", "empty": "No agents are reporting in yet.", "error": "Unable to load org chart", "loading": "Loading org chart…", @@ -1637,17 +1667,24 @@ "uniqueModels": "Unique models" }, "productivity": { + "averageDuration": "Average", "byLanguage": "Files by language", "commits": "Commits", + "completedTasks": "Completed tasks", + "durationTitle": "Task duration", + "durationUnavailable": "Task duration is unavailable until completed tasks have active execution time recorded", "hoursSaved": "Human hours saved", "hoursSavedEstimate": "estimate from lines changed", "hoursSavedUnavailable": "Estimated human hours saved is unavailable until commit diff stats exist", "languagePie": "Language share", "loc": "Lines changed", "locUnavailable": "LOC is unavailable until commit diff stats are recorded", + "medianDuration": "Median", "modifiedFiles": "Files modified", "outcomesTitle": "Outcomes", + "p90Duration": "P90", "pullRequests": "Pull requests", + "totalDuration": "Total active", "volumeHint": "volume, not outcome", "volumeTitle": "Volume (proxy)" }, @@ -1694,6 +1731,7 @@ "ecosystem": "Ecosystem", "github": "GitHub", "missionControl": "Mission Control", + "nodes": "Nodes", "overview": "Overview", "productivity": "Productivity", "reliability": "Reliability", @@ -1910,6 +1948,8 @@ "clear": "Clear", "command": "Command", "configuration": "Configuration", + "configurationLabel": "Dev server configuration", + "controlsHeaderLabel": "Dev server controls header", "embedded": "Embedded", "embeddedPreviewDisabled": "Embedded preview is disabled. Open your app in a separate browser tab.", "enterFullscreen": "Enter fullscreen logs", @@ -1928,6 +1968,7 @@ "loadingOlderLogs": "Loading older logs…", "loadOlderLogs": "Load older logs", "logs": "Logs", + "logsLabel": "Dev server logs", "lostConnection": "Lost log stream connection.", "manual": "Manual", "matchCount_one": "{{count}} match", @@ -1946,6 +1987,7 @@ "preview": "Preview", "previewBlocked": "Preview blocked", "previewFailed": "Preview failed", + "previewLabel": "Dev server preview", "previewUrlOverride": "Preview URL Override", "refreshPreview": "Refresh preview", "restart": "Restart", @@ -2124,14 +2166,17 @@ "noTaskDocuments": "No task documents yet.", "openTask": "Open task", "plain": "Plain", + "projectFilePreviewLabel": "Project file content preview", "projectFiles": "project files", "projectFilesTab": "Project Files", + "projectMarkdownFilesLabel": "Project markdown files", "resultCount_one": "{{count}} result{{plural}}", "resultCount_other": "{{count}} result{{plural}}", "retry": "Retry", "retryLoading": "Retry loading documents", "searchProjectFiles": "Search project markdown files…", "searchTaskDocuments": "Search task documents…", + "sectionsLabel": "Documents sections", "selectFile": "Select a Markdown file to view its content.", "showHidden": "Show hidden project files", "showHiddenFiles": "Show hidden files", @@ -2185,6 +2230,12 @@ "failedToLoadFile": "Failed to load file", "failedToSaveFile": "Failed to save file" }, + "errorBoundary": { + "genericError": "Something went wrong", + "reloadPage": "Reload page", + "retry": "Retry", + "sectionError": "This section encountered an error" + }, "evals": { "allRuns": "All runs", "disabledTitle": "Scheduled evals are disabled", @@ -2223,6 +2274,8 @@ "overlapBottleneck_one": "{{status}} overlap bottleneck {{blockerId}}: {{count}} todo blocked via blockedBy (threshold {{threshold}})", "overlapBottleneck_other": "{{status}} overlap bottleneck {{blockerId}}: {{count}} todo blocked via blockedBy (threshold {{threshold}})", "overlapQueue": "Overlap queue", + "overlapSummary_one": "{{blockerId}} · {{count}} todo", + "overlapSummary_other": "{{blockerId}} · {{count}} todo", "queued": "Queued", "running": "Running", "secondsAgo_one": "{{count}}s ago", @@ -2233,7 +2286,8 @@ "stateRunning": "Running", "status": "Executor status", "stuck": "Stuck", - "temporary": "Temporary" + "temporary": "Temporary", + "todoStatus": "todo" }, "fileBrowser": { "back": "Back to file list", @@ -2640,6 +2694,7 @@ "stashDropped": "Stash dropped", "stashMessagePlaceholder": "Stash message (optional)", "stashPopped": "Stash popped", + "stashRef": "stash@{{index}}", "statusLabelBranch": "Branch", "statusLabelCommit": "Commit", "statusLabelIntegrationBranch": "Integration branch", @@ -2693,6 +2748,13 @@ "worktreesTotal_one": "{{count}} total", "worktreesTotal_other": "{{count}} total" }, + "githubStarPrompt": { + "body": "If Fusion has saved you time, a GitHub star goes a long way. It helps other developers discover the project and keeps the team motivated to ship improvements.", + "dismissLabel": "Dismiss GitHub star prompt", + "regionLabel": "GitHub star prompt", + "starOnGitHub": "Star on GitHub", + "title": "Enjoying Fusion?" + }, "goals": { "activeCount_one": "{{count}} active goals", "activeCount_other": "{{count}} active goals", @@ -2729,6 +2791,9 @@ "unlinkMissionError": "Unable to unlink mission right now. Please try again.", "updateError": "Unable to update goal status right now. Please try again." }, + "groups": { + "prLinkLabel": "PR #{{number}} ({{state}})" + }, "groupTask": { "abandonGroup": "Abandon group", "ariaLabel": "Branch group details", @@ -2767,6 +2832,7 @@ "documentsView": "Documents view", "engineOptions": "Engine options", "evalsView": "Evals", + "fusionLogo": "Fusion logo", "gitManager": "Git Manager", "goalsView": "Goals", "importFromGitHub": "Import from GitHub", @@ -2786,7 +2852,6 @@ "moreHeaderActions": "More header actions", "moreViews": "More views", "noBaseBranch": "No base branch", - "nodes": "Nodes", "noScriptsAddOne": "No scripts — add one…", "noScriptsConfigured": "No scripts configured", "noWorkingBranch": "No working branch", @@ -2927,6 +2992,7 @@ "archiveTitle": "Archive this insight", "archiving": "Archiving \"{{title}}\"...", "backlogHealth": "Backlog Health", + "categoriesLabel": "Insight categories", "configureModel": "Configure insight generation model", "configureModelTitle": "Configure model", "createTaskLabel": "Create task from this insight", @@ -3017,6 +3083,9 @@ "verificationCriteria": "Verification Criteria", "yes": "Yes" }, + "issues": { + "noIssuesFound": "No issues found" + }, "lane": { "collapse": "Collapse {{name}} lane", "expand": "Expand {{name}} lane" @@ -3129,8 +3198,7 @@ "unpauseUnavailable": "Unpause action is unavailable", "useProjectDefault": "Use project default", "viewOptions": "View options", - "workflowLabel": "Workflow", - "workflowSelectLabel": "Select workflow" + "workflowLabel": "Workflow" }, "mailbox": { "agent": "Agent", @@ -3199,6 +3267,7 @@ "replyingTo": "Replying to", "replyingToMessage": "Replying to message", "replyLoadFailed": "Failed to load replied message. Click to retry.", + "resizeMessageListPane": "Resize message list pane", "selectMessageToRead": "Select a message to read", "system": "System", "timeDaysAgo_one": "{{count}}d ago", @@ -3212,6 +3281,7 @@ "to": "To", "toLabel": "To:", "toPrefix": "To: {{recipient}}", + "toRecipient": "To: {{recipient}}", "typeAgentToAgent": "Agent ↔ Agent", "typeAgentToUser": "Agent → You", "typeSystem": "System", @@ -3387,11 +3457,13 @@ "missions": { "acceptance": "Acceptance:", "acceptanceCriteriaOptional": "Acceptance criteria (optional)", + "acceptanceCriteriaPrefix": "AC:", "actionGenerating": "Generating…", "actionResume": "Resume", "actionRetry": "Retry", "actionReview": "Review", "activateSlice": "Activate slice", + "activityCount": "{{visible}} of {{total}}", "activityTime": "Activity {{time}}", "actual": "Actual: {{value}}", "addAssertion": "Add assertion", @@ -3518,6 +3590,7 @@ "filterSlices": "Slice & milestone events", "filterStateChanges": "State changes", "filterTasks": "Task events", + "fixLineageButton": "🔗 Fix", "generatedFixFeatures": "Generated fix features:", "generatedFixFeaturesTitle": "Generated Fix Features", "generatedFromFeature": "Generated from feature: {{id}}", @@ -3545,6 +3618,8 @@ "linkButton": "Link", "linkedCount_one": "{{count}} linked", "linkedCount_other": "{{count}} linked", + "linkedCountShort_one": "({{count}} linked)", + "linkedCountShort_other": "({{count}} linked)", "linkedFeaturesCount_one": "{{count}} linked feature", "linkedFeaturesCount_other": "{{count}} linked features", "linkedFeaturesLabel": "Linked Features", @@ -3605,6 +3680,7 @@ "planStateNeedsUpdate": "Needs update", "planStateNotPlanned": "Not planned", "planStatePlanned": "Planned", + "planTargetTitle": "Plan {{targetLabel}}: {{targetTitle}}", "planTitle": "Plan Mission with AI", "prepareQuestion": "Preparing next question...", "progressText_one": "Question {{count}} of ~6", @@ -3711,6 +3787,7 @@ "updateButton": "Update", "updated": "Mission updated", "validateFeature": "Validate feature", + "validationRoundAttempts": "impl #{{implementation}} · reviewer #{{reviewer}}", "validationRoundsCount_one": "{{count}} round", "validationRoundsCount_other": "{{count}} rounds", "validationRoundsLabel_one": "Validation rounds ({{count}})", @@ -3775,7 +3852,6 @@ "options": { "default": "Default", "high": "High", - "xhigh": "Very High", "low": "Low", "medium": "Medium", "minimal": "Minimal", @@ -3827,10 +3903,12 @@ "board": "Board", "chat": "Chat", "chatUnreadAriaLabel": "Unread chat response", + "collapseSidebar": "Collapse sidebar", "commandCenter": "Command Center", "devServer": "Dev Server", "documents": "Documents", "evals": "Evals", + "expandSidebar": "Expand sidebar", "files": "Files", "gitManager": "Git Manager", "goals": "Goals", @@ -3845,16 +3923,17 @@ "missions": "Missions", "more": "More", "moreSheetTitle": "Navigate", - "nodes": "Nodes", "noScriptsAddOne": "No scripts — add one…", "planning": "Planning", "primaryNavAriaLabel": "Primary navigation", "projects": "Projects", "research": "Research", + "resizeSidebar": "Resize sidebar", "scriptsSubmenuAriaLabel": "Scripts submenu", "secrets": "Secrets", "settings": "Settings", "showScriptsAriaLabel": "Show scripts", + "sidebarAriaLabel": "Sidebar navigation", "skills": "Skills", "stashRecovery": "Stash Recovery", "tasks": "Tasks", @@ -3960,12 +4039,14 @@ "discoverBeforeAdding": "Discover remote projects before adding this node.", "discoveredCount_one": "Discovered {{count}} remote project{{plural}}", "discoveredCount_other": "Discovered {{count}} remote project{{plural}}", + "discoveredRemoteProjectsLabel": "Discovered remote projects", "discovering": "Discovering...", "discoverRemoteProjects": "Discover Remote Projects", "discoveryFailed": "Failed to discover remote projects", "dismissError": "Dismiss error", "docker": "Docker", "dockerBadge": "Managed Docker node", + "dockerConfigMeta": "Config v{{version}} • Updated {{updated}}", "dockerConfigSaveFailed": "Failed to save Docker config", "dockerConfigSaveSuccess": "Docker config saved", "dockerConfiguration": "Docker Configuration", @@ -4083,6 +4164,7 @@ "name": "Build Server", "optional": "Optional" }, + "projectPathMappingsLabel": "Project path mappings", "provideManually": "Provide key manually", "pulling": "Pulling...", "pullSettings": "Pull Settings", @@ -4281,6 +4363,9 @@ "testFailed": "Test failed — see status above.", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "{{extensions}} ext, {{skills}} skill, {{prompts}} prompt, {{themes}} theme" + }, "piManager": { "addButton": "Add", "discoveredDescription": "Installed extensions resolved from packages and configured paths.", @@ -4884,6 +4969,7 @@ "createTask": "Create Task", "createTaskButton": "Create Task", "createTaskTitle": "Create task from finding", + "currentDefaults": "Current defaults: provider {{provider}}, max sources {{maxSources}}", "defaultFindingHeading": "Research finding", "descriptionLabel": "Description", "disabled": "Research is disabled for this project.", @@ -4906,6 +4992,7 @@ "noRunsYet": "No research runs yet", "noSourcesAvailable": "No enabled research sources are available for this project.", "noSummaryYet": "No summary yet.", + "notSet": "(not set)", "openAuthSettings": "Open Authentication Settings", "openResearchSettings": "Open Research Settings", "priorityHigh": "High", @@ -4966,6 +5053,7 @@ "intro": "View the effective execution node and control per-task node override.", "localNoConfiguration": "Local (no routing configured)", "lockedWhileActive": "Routing is locked while this task is active. Node override cannot be changed until the task is no longer active.", + "nodeOptionLabel": "{{name}} ({{type}}) — {{status}}", "nodeUnavailable": "node unavailable or unknown", "overrideCleared": "Node override cleared", "overrideSection": "Node Override", @@ -4983,6 +5071,9 @@ "unhealthy": "Unhealthy", "useProjectDefault": "Use project default" }, + "runtimes": { + "nousResearchLogoAlt": "Nous Research" + }, "schedule": { "actionAiPrompt": "AI Prompt", "actionCommand": "Command", @@ -5048,6 +5139,7 @@ "cronPresetMonthly": "Every month (1st)", "cronPresetWeekly": "Every week (Monday)", "cronRequired": "Cron expression is required for custom schedules", + "crontabGuru": "crontab.guru", "delete": "Delete", "deleteError": "Failed to delete routine", "deleteMessage": "Delete schedule {{name}}? This cannot be undone.", @@ -5102,6 +5194,7 @@ "globalScope": "Global", "globalScoped": "This schedule will be created at global scope.", "globalScopeTitle": "Global scope", + "lastLabel": "Last:", "loadRoutinesError": "Failed to load routines", "manualTriggerInfo": "This routine will be triggered manually via the dashboard or API.", "modeAriaLabel": "Execution mode", @@ -5124,6 +5217,7 @@ "newAutomation": "New Automation", "newRoutineHeading": "New Routine", "newTitle": "New Schedule", + "nextLabel": "Next:", "noActiveProject": "No active project. Schedules will be created at global scope.", "noAutomations": "No automations yet", "noStepsEmpty": "No steps added yet. Add a command or AI prompt step to get started.", @@ -5154,6 +5248,7 @@ "runNameNow": "Run {{name}} now", "running": "Running…", "runNow": "Run now", + "runsLabel": "Runs:", "saveChanges": "Save Changes", "saveStep": "Save Step", "saving": "Saving…", @@ -5233,6 +5328,9 @@ "webhookSecretLabel": "Webhook Secret (optional)", "webhookSecretPlaceholder": "Optional — leave empty for unauthenticated webhooks" }, + "scripts": { + "title": "Scripts" + }, "scriptsModal": { "addScript": "Add Script", "addScriptsHint": "Add scripts to quickly run common commands from the dashboard.", @@ -5660,6 +5758,7 @@ "enabling": "Enabling…", "notConnected": "✗ Not connected", "probing": "Probing local CLI…", + "providerName": "Cursor — via Cursor CLI", "test": "Test", "testing": "Testing…" }, @@ -5695,6 +5794,7 @@ "githubConnectionFailed": "Connection failed or timed out.", "githubOauthConnected": "GitHub OAuth is connected. You can import issues and track pull requests.", "githubOauthNotConnected": "GitHub OAuth isn't connected yet. You can set it up in Settings → Authentication, or continue now and connect later.", + "githubProvider": "GitHub", "githubSkipped": "GitHub was skipped. You can connect anytime from Settings → Authentication.", "goBackToStep": "Go back to {{label}}", "goToDashboard": "Go to Dashboard", @@ -5954,6 +6054,9 @@ "saving": "Saving…", "view": "View" }, + "stash": { + "copyReference": "Copy stash reference" + }, "stashRecovery": { "applied": "Applied", "apply": "Apply", @@ -6710,7 +6813,6 @@ "subtaskButton": "Subtask", "thinkingDefault": "Default ({{level}})", "thinkingHigh": "High", - "thinkingXhigh": "Very High", "thinkingLabel": "Thinking", "thinkingLow": "Low", "thinkingMedium": "Medium", @@ -6971,6 +7073,7 @@ "workflowCheck": "Workflow check" }, "terminal": { + "arrowKeysLabel": "Terminal arrow keys", "clear": "Clear", "clearTerminal": "Clear terminal", "closeTab": "Close tab", @@ -7289,6 +7392,7 @@ "foreachSequential": "Sequential", "foreachShared": "Shared worktree", "foreachWorktree": "Per-step worktree", + "gateBadge": "gate", "gateBlocks": "Gate (blocks)", "gateMode": "Gate mode", "insertTemplate": "Insert template {{name}}", @@ -7345,6 +7449,7 @@ "startEntryColumn": "Entry column", "startEntryColumnAuto": "— Auto (first column)", "startNote": "The start node marks where a task enters the workflow.", + "stepBadge": "step", "stepExecuteLabel": "Step execute", "templateFilterLabel": "Filter templates", "templateFilterPlaceholder": "Filter templates", @@ -7353,6 +7458,7 @@ "templatesFragments": "Fragments", "templatesPluginSteps": "Plugin steps", "templatesSection": "Templates", + "timeoutMs": "{{timeout}}ms", "trivialGraphHint": "This workflow only runs start → end. Add steps from the palette above to build it out." }, "workflows": { @@ -7418,14 +7524,6 @@ "templateSectionBuiltin": "Built-in workflows", "templateSectionYours": "Your workflows" }, - "workflowSwitcher": { - "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", - "done": "Done", - "inProgress": "In Progress", - "label": "Workflow", - "todo": "Todo", - "triggerAria": "Select workflow. Current workflow: {{name}}" - }, "workflowSelector": { "switchActiveMessage": "This task has an active session. Switching workflows aborts it and re-homes the card into the new workflow's entry column. Continue?", "switchActiveTitle": "Switch workflow?", @@ -7485,6 +7583,14 @@ "widget": "Widget", "widgetDefault": "Default" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workspace": { "projectRoot": "Project Root", "selectWorkspace": "Select workspace", @@ -7500,133 +7606,5 @@ "installRequestTitle": "Worktrunk install request", "sha256": "SHA-256", "version": "Version" - }, - "workflowEditor": { - "cliAgent": { - "executorOption": "CLI agent", - "adapterLabel": "CLI adapter", - "adapterPlaceholder": "— select adapter —", - "adapterNote": "Drives a CLI coding agent in an engine-owned terminal for this step.", - "tier": { - "native": "native", - "hybrid": "hybrid", - "generic": "generic" - }, - "autonomyLabel": "Elevated autonomy (bypass approvals)", - "autonomyNote": "Elevated autonomy requires a per-project approval before the agent can launch. Until approved, launches with elevated posture fail.", - "notifyLabel": "Waiting-on-input notification", - "notify": { - "banner": "In-app banner", - "bannerNotify": "Banner + push notification" - }, - "notifyNote": "How you are alerted when the agent pauses waiting for input on this step." - } - }, - "cliTerminal": { - "replayIdle": "Session idle", - "replayEnded": "Session ended", - "readOnly": "Read-only", - "postureResolved": "Resolved posture", - "postureBaseline": "Baseline", - "adapterSettings": "Adapter settings", - "advancePrompt": "This session looks idle — advance to review?", - "advance": "Advance", - "notYet": "Not yet", - "mobileInputPlaceholder": "Type to send to the session…", - "mobileSend": "Send", - "mobileKeyEsc": "Send Escape", - "mobileKeyTab": "Send Tab", - "mobileKeyCtrlC": "Send Ctrl-C", - "mobileKeyCtrl": "Sticky Ctrl modifier", - "mobileKeyArrowUp": "Cursor up", - "mobileKeyArrowDown": "Cursor down", - "mobileKeyArrowLeft": "Cursor left", - "mobileKeyArrowRight": "Cursor right" - }, - "commandCenter": { - "heading": "Command Center", - "loading": "Loading command center...", - "empty": "No usage data yet. Run some agents to populate the Command Center.", - "areaPending": "This area renders once metrics data is available.", - "tablistLabel": "Command Center sections", - "tabs": { - "overview": "Overview", - "tokens": "Tokens", - "tools": "Tools", - "activity": "Activity", - "productivity": "Productivity", - "nodes": "Nodes", - "reliability": "Reliability", - "ecosystem": "Ecosystem", - "missionControl": "Mission Control" - }, - "overview": { - "tokensCost": "Tokens & cost", - "autonomy": "Autonomy ratio", - "activeNodes": "Active nodes", - "tasksDone": "Tasks done", - "uniqueModels": "Unique models", - "openSignals": "Open signals", - "liveStrip": "Live activity", - "liveStripPending": "Live Mission Control loads with active sessions." - }, - "range": { - "last24h": "Last 24h", - "last7d": "Last 7 days", - "last30d": "Last 30 days", - "allTime": "All time", - "custom": "Custom range", - "dialogLabel": "Select date range", - "from": "From", - "to": "To", - "invalidRange": "Start date must be on or before end date" - }, - "controls": { - "title": "Operator controls", - "orgChart": { - "title": "Agent org chart", - "description": "Read-only view of the running agent hierarchy.", - "loading": "Loading org chart…", - "empty": "No agents are reporting in yet.", - "error": "Unable to load org chart" - }, - "heartbeat": { - "title": "Heartbeat control", - "description": "Pause or resume the scheduling heartbeat.", - "pause": "Pause heartbeat", - "resume": "Resume heartbeat", - "disabledByStop": "Start the AI engine before resuming the heartbeat." - }, - "engine": { - "title": "AI engine", - "description": "Stopping the engine halts all AI work." - }, - "concurrency": { - "title": "Concurrency", - "description": "Tune live scheduler capacity.", - "maxConcurrent": "Max concurrent tasks", - "maxTriageConcurrent": "Max triage concurrent", - "maxWorktrees": "Max worktrees", - "error": "Unable to load concurrency settings" - }, - "theme": { - "title": "Theme", - "description": "Switch the dashboard theme with live color previews." - }, - "status": { - "running": "Running", - "paused": "Paused", - "stopped": "Stopped", - "loading": "Loading…", - "saving": "Saving…", - "saved": "Saved", - "saveError": "Save failed", - "ready": "Ready", - "error": "Unable to load live scheduler status", - "lastActivity": "Last activity", - "maxConcurrent": "Max concurrent", - "noActivity": "No recent activity" - } - } } } diff --git a/packages/i18n/locales/es/app.json b/packages/i18n/locales/es/app.json index 4284d55a9c..1d56fffd61 100644 --- a/packages/i18n/locales/es/app.json +++ b/packages/i18n/locales/es/app.json @@ -31,6 +31,12 @@ "update": "Actualizar", "yes": "Sí" }, + "activityFeed": { + "emptyHint": "", + "eventCount_one": "", + "eventCount_other": "", + "noRecentActivity": "" + }, "activityLog": { "activeFilters": "Filtros activos:", "allEvents": "Todos los eventos", @@ -64,6 +70,7 @@ "noActivityRecorded": "Sin actividad grabada aún", "noMatchingActivity": "Ninguna actividad coincide con los filtros actuales", "notMerged": "No fusionado", + "projectFilterBadge": "", "refresh": "Actualizar", "time": { "daysAgo_one": "", @@ -74,7 +81,8 @@ "minutesAgo_one": "", "minutesAgo_other": "" }, - "title": "Registro de actividad" + "title": "Registro de actividad", + "typeFilterBadge": "" }, "agentError": { "copied": "Copiado", @@ -354,6 +362,7 @@ "bundleTitle": "Paquete", "cacheHitRatio": "Tasa de caché", "cacheReadTokens": "Lectura caché", + "cacheWindowSummary": "", "cacheWriteTokens": "Escritura caché", "cancel": "Cancelar", "cancelCustomInterval": "Cancelar intervalo personalizado", @@ -361,6 +370,8 @@ "chainOfCommand": "Cadena de mando", "change": "Cambiar", "changeRole": "Haz clic para cambiar el rol", + "charactersCount_one": "", + "charactersCount_other": "", "chooseFile": "Elegir archivo", "clearAgents": "Borrar agentes", "clearSkills": "Borrar habilidades", @@ -408,6 +419,7 @@ "deleteTitle": "Eliminar agente", "deletionNotAvailable": "La eliminación no está disponible mientras el agente está en ejecución.", "deletionPermanent": "Esto eliminará permanentemente el agente y todos los datos asociados.", + "detailLoadingLabel": "", "details": "Detalles", "dialogAriaLabel": "Crear nuevo agente", "dialogTitle": "Nuevo agente", @@ -452,6 +464,7 @@ "from": "De", "generateHint": "Describe el rol de tu agente y deja que la IA genere una especificación", "generateWithAI": "Generar con IA", + "generateWithAiLabel": "", "generation": { "collapse": "Contraer", "expand": "Expandir", @@ -536,9 +549,12 @@ "importingAgentsAndSkills": "Importando {{agentCount}} agente{{agentPlural}} y {{skillCount}} habilidad{{skillPlural}}...", "importingSkills_one": "", "importingSkills_other": "", + "importReportsTo": "", + "importSkills": "", "inbox": "Bandeja de entrada", "inheritingProjectDefault": "Heredando el valor predeterminado del proyecto", "inheritProjectDefault": "Heredar predeterminado del proyecto", + "inlineInstructions": "", "inlineMemoryFieldHint": "Esta memoria está integrada directamente en el contexto del agente.", "inlineMemoryHint": "Memoria corta inyectada en cada heartbeat.", "inlineMemoryLabel": "Memoria en línea", @@ -564,6 +580,8 @@ "intentPrompt": "¿Qué desea que haga este agente?", "interval": "Intervalo", "interviewDraftApplied": "Borrador de entrevista aplicado", + "kTokens_one": "", + "kTokens_other": "", "last24h": "Últimas 24h", "last7d": "Últimos 7 días", "lastHeartbeat": "Última: {{time}}", @@ -753,6 +771,7 @@ "output": "Salida", "outputTokens": "Tokens de salida", "overview": "Descripción general", + "overviewLabel": "", "parsing": "Analizando…", "pause": "Pausar", "pauseAction": "Pausar", @@ -1037,7 +1056,6 @@ "templateCompact": "Compacto", "templateDefault": "Predeterminado", "thinkingHigh": "Alto", - "thinkingXhigh": "Muy alto", "thinkingLevel": "Nivel de pensamiento", "thinkingLow": "Bajo", "thinkingMedium": "Medio", @@ -1045,6 +1063,7 @@ "thinkingOff": "Desactivado", "thinkingXhigh": "Muy alto", "throughput": "Rendimiento", + "timeSinceLastHeartbeat": "", "title": "Agentes", "titleLabel": "Título", "titlePlaceholder": "p. ej. Revisor de código senior", @@ -1091,6 +1110,7 @@ }, "testMode": "Modo de prueba — sin llamadas reales de IA" }, + "appName": "", "approval": { "dismissBanner": "Descartar pancarta de notificación de aprobación", "needAttention_one": "", @@ -1175,6 +1195,9 @@ "openPr": "Abrir PR", "unavailable": "Grupo de ramas no disponible" }, + "branchGroups": { + "prNumber": "" + }, "capacity": { "dismiss": "Descartar advertencia de capacidad", "risk": "Riesgo de capacidad:", @@ -1322,9 +1345,13 @@ "thinking": "Pensando", "thinkingLabel": "Pensando", "thinkingStatus": "Pensando…", + "toolArgsLabel": "", + "toolArgsPreview": "", "toolCalls": "Llamadas a herramientas", "toolCallsCount_one": "", "toolCallsCount_other": "", + "toolResultLabel": "", + "toolResultPreview": "", "typeMessage": "Escribe un mensaje...", "unreadMessages": "Mensajes no leídos", "untitledSession": "Sin título", @@ -1353,9 +1380,11 @@ "versionMismatchSuffix": "Actualiza para mantenerte sincronizado." }, "cliBinary": { + "binaryLabel": "", "checking": "Verificando…", "copied": "Copiado", "copy": "Copiar", + "expectedVersion": "", "failedExit": "Instalación fallida (código de salida {{code}})", "heading": "Binario CLI", "help": "Instalar la CLI global le permite ejecutar fn y fusion desde cualquier terminal. Las automatizaciones y scripts funcionan sin ella a través de npx, pero una instalación global es más rápida y conveniente.", @@ -1363,13 +1392,15 @@ "installWithNpm": "Instalar con npm", "notOnPath": "Ni fn ni fusion se encontraron en PATH.", "orCopyLabel": "O copie y ejecute usted mismo:", + "pathLabel": "", "refresh": "Actualizar", "reinstall": "Reinstalar", "stateCheckDisabled": "Verificación deshabilitada", "stateInstalled": "Instalado", "stateMissing": "No instalado", "stateVersionMismatch": "Versión no coincide", - "succeededDuration": "Instalación exitosa en {{duration}} s" + "succeededDuration": "Instalación exitosa en {{duration}} s", + "versionLabel": "" }, "cliChat": { "queued_one": "", @@ -1509,7 +1540,6 @@ "title": "" }, "orgChart": { - "description": "", "empty": "", "error": "", "loading": "", @@ -1637,17 +1667,24 @@ "uniqueModels": "" }, "productivity": { + "averageDuration": "", "byLanguage": "", "commits": "", + "completedTasks": "", + "durationTitle": "", + "durationUnavailable": "", "hoursSaved": "", "hoursSavedEstimate": "", "hoursSavedUnavailable": "", "languagePie": "", "loc": "", "locUnavailable": "", + "medianDuration": "", "modifiedFiles": "", "outcomesTitle": "", + "p90Duration": "", "pullRequests": "", + "totalDuration": "", "volumeHint": "", "volumeTitle": "" }, @@ -1694,6 +1731,7 @@ "ecosystem": "", "github": "", "missionControl": "", + "nodes": "", "overview": "", "productivity": "", "reliability": "", @@ -1910,6 +1948,8 @@ "clear": "Borrar", "command": "Comando", "configuration": "Configuración", + "configurationLabel": "", + "controlsHeaderLabel": "", "embedded": "Integrado", "embeddedPreviewDisabled": "La vista previa integrada está deshabilitada. Abra su aplicación en una pestaña del navegador separada.", "enterFullscreen": "Entrar en registros de pantalla completa", @@ -1928,6 +1968,7 @@ "loadingOlderLogs": "Cargando registros más antiguos…", "loadOlderLogs": "Cargar registros más antiguos", "logs": "Registros", + "logsLabel": "", "lostConnection": "Conexión de flujo de registro perdida.", "manual": "Manual", "matchCount_one": "", @@ -1946,6 +1987,7 @@ "preview": "Vista previa", "previewBlocked": "Vista previa bloqueada", "previewFailed": "Vista previa fallida", + "previewLabel": "", "previewUrlOverride": "Anular URL de vista previa", "refreshPreview": "Actualizar vista previa", "restart": "Reiniciar", @@ -2124,14 +2166,17 @@ "noTaskDocuments": "Sin documentos de tarea aún.", "openTask": "Abrir tarea", "plain": "Bruto", + "projectFilePreviewLabel": "", "projectFiles": "archivos del proyecto", "projectFilesTab": "Archivos del proyecto", + "projectMarkdownFilesLabel": "", "resultCount_one": "", "resultCount_other": "", "retry": "Reintentar", "retryLoading": "Reintentar cargar documentos", "searchProjectFiles": "Buscar archivos markdown del proyecto…", "searchTaskDocuments": "Buscar documentos de tareas…", + "sectionsLabel": "", "selectFile": "Seleccione un archivo markdown para ver su contenido.", "showHidden": "Mostrar archivos de proyecto ocultos", "showHiddenFiles": "Mostrar archivos ocultos", @@ -2185,6 +2230,12 @@ "failedToLoadFile": "Error al cargar el archivo", "failedToSaveFile": "Error al guardar el archivo" }, + "errorBoundary": { + "genericError": "", + "reloadPage": "", + "retry": "", + "sectionError": "" + }, "evals": { "allRuns": "Todas las ejecuciones", "disabledTitle": "Las evaluaciones programadas están deshabilitadas", @@ -2223,6 +2274,8 @@ "overlapBottleneck_one": "", "overlapBottleneck_other": "", "overlapQueue": "Cola de superposición", + "overlapSummary_one": "", + "overlapSummary_other": "", "queued": "En cola", "running": "En ejecución", "secondsAgo_one": "", @@ -2233,7 +2286,8 @@ "stateRunning": "Ejecutando", "status": "Estado del ejecutor", "stuck": "Atascado", - "temporary": "Temporal" + "temporary": "Temporal", + "todoStatus": "" }, "fileBrowser": { "back": "Volver a la lista de archivos", @@ -2640,6 +2694,7 @@ "stashDropped": "Stash eliminado", "stashMessagePlaceholder": "Mensaje del stash (opcional)", "stashPopped": "Stash aplicado y eliminado", + "stashRef": "", "statusLabelBranch": "Rama", "statusLabelCommit": "Commit", "statusLabelIntegrationBranch": "Rama de integración", @@ -2693,6 +2748,13 @@ "worktreesTotal_one": "", "worktreesTotal_other": "" }, + "githubStarPrompt": { + "body": "", + "dismissLabel": "", + "regionLabel": "", + "starOnGitHub": "", + "title": "" + }, "goals": { "activeCount_one": "", "activeCount_other": "", @@ -2729,6 +2791,9 @@ "unlinkMissionError": "", "updateError": "No se puede actualizar el estado del objetivo ahora. Por favor, intenta de nuevo." }, + "groups": { + "prLinkLabel": "" + }, "groupTask": { "abandonGroup": "", "ariaLabel": "Detalles del grupo de ramas", @@ -2767,6 +2832,7 @@ "documentsView": "Vista documentos", "engineOptions": "Opciones del motor", "evalsView": "Evaluaciones", + "fusionLogo": "", "gitManager": "Gestor Git", "goalsView": "Objetivos", "importFromGitHub": "Importar desde GitHub", @@ -2786,7 +2852,6 @@ "moreHeaderActions": "Más acciones de encabezado", "moreViews": "Más vistas", "noBaseBranch": "Sin rama base", - "nodes": "Nodos", "noScriptsAddOne": "Sin scripts — agregar uno…", "noScriptsConfigured": "Sin scripts configurados", "noWorkingBranch": "Sin rama de trabajo", @@ -2927,6 +2992,7 @@ "archiveTitle": "Archivar esta información", "archiving": "Archivando \"{{title}}\"...", "backlogHealth": "Salud del trabajo pendiente", + "categoriesLabel": "", "configureModel": "Configurar el modelo de generación de información", "configureModelTitle": "Configurar modelo", "createTaskLabel": "Crear tarea desde esta información", @@ -3017,6 +3083,9 @@ "verificationCriteria": "Criterios de verificación", "yes": "Sí" }, + "issues": { + "noIssuesFound": "" + }, "lane": { "collapse": "", "expand": "" @@ -3129,8 +3198,7 @@ "unpauseUnavailable": "La acción de reanudar no está disponible", "useProjectDefault": "Usar predeterminado del proyecto", "viewOptions": "Opciones de vista", - "workflowLabel": "", - "workflowSelectLabel": "" + "workflowLabel": "" }, "mailbox": { "agent": "Agente", @@ -3199,6 +3267,7 @@ "replyingTo": "Respondiendo a {{preview}}", "replyingToMessage": "Respondiendo al mensaje", "replyLoadFailed": "Error al cargar el mensaje de respuesta. Haz clic para reintentar.", + "resizeMessageListPane": "", "selectMessageToRead": "Seleccione un mensaje para leer", "system": "Sistema", "timeDaysAgo_one": "", @@ -3212,6 +3281,7 @@ "to": "Para", "toLabel": "Para:", "toPrefix": "Para: {{recipient}}", + "toRecipient": "", "typeAgentToAgent": "Agente ↔ Agente", "typeAgentToUser": "Agente → Usted", "typeSystem": "Sistema", @@ -3387,11 +3457,13 @@ "missions": { "acceptance": "Criterios de aceptación:", "acceptanceCriteriaOptional": "Criterios de aceptación (opcional)", + "acceptanceCriteriaPrefix": "", "actionGenerating": "Generando…", "actionResume": "Reanudar", "actionRetry": "Reintentar", "actionReview": "Revisar", "activateSlice": "Activar el segmento", + "activityCount": "", "activityTime": "Actividad {{time}}", "actual": "Actual: {{value}}", "addAssertion": "Añadir aserción", @@ -3518,6 +3590,7 @@ "filterSlices": "Eventos de segmento e hito", "filterStateChanges": "Cambios de estado", "filterTasks": "Eventos de tarea", + "fixLineageButton": "", "generatedFixFeatures": "Funcionalidades de corrección generadas:", "generatedFixFeaturesTitle": "Funcionalidades de corrección generadas", "generatedFromFeature": "Generado desde la funcionalidad: {{id}}", @@ -3545,6 +3618,8 @@ "linkButton": "Vincular", "linkedCount_one": "", "linkedCount_other": "", + "linkedCountShort_one": "", + "linkedCountShort_other": "", "linkedFeaturesCount_one": "", "linkedFeaturesCount_other": "", "linkedFeaturesLabel": "Funcionalidades vinculadas", @@ -3605,6 +3680,7 @@ "planStateNeedsUpdate": "Necesita actualización", "planStateNotPlanned": "Sin planificar", "planStatePlanned": "Planificado", + "planTargetTitle": "", "planTitle": "Planificar una misión con IA", "prepareQuestion": "Preparando la siguiente pregunta...", "progressText_one": "", @@ -3711,6 +3787,7 @@ "updateButton": "Actualizar", "updated": "Misión actualizada", "validateFeature": "Validar la funcionalidad", + "validationRoundAttempts": "", "validationRoundsCount_one": "", "validationRoundsCount_other": "", "validationRoundsLabel_one": "", @@ -3775,7 +3852,6 @@ "options": { "default": "Predeterminado", "high": "Alto", - "xhigh": "Muy alto", "low": "Bajo", "medium": "Medio", "minimal": "Mínimo", @@ -3827,10 +3903,12 @@ "board": "Tablero", "chat": "Chat", "chatUnreadAriaLabel": "Respuesta de chat no leída", + "collapseSidebar": "", "commandCenter": "", "devServer": "Servidor de desarrollo", "documents": "Documentos", "evals": "Evaluaciones", + "expandSidebar": "", "files": "Archivos", "gitManager": "Gestor Git", "goals": "Objetivos", @@ -3845,16 +3923,17 @@ "missions": "Misiones", "more": "Más", "moreSheetTitle": "Navegar", - "nodes": "Nodos", "noScriptsAddOne": "Sin scripts — agregar uno…", "planning": "Planificación", "primaryNavAriaLabel": "Navegación principal", "projects": "Proyectos", "research": "Investigación", + "resizeSidebar": "", "scriptsSubmenuAriaLabel": "Submenú de scripts", "secrets": "Secretos", "settings": "Configuración", "showScriptsAriaLabel": "Mostrar scripts", + "sidebarAriaLabel": "", "skills": "Habilidades", "stashRecovery": "Recuperación de stash", "tasks": "Tareas", @@ -3960,12 +4039,14 @@ "discoverBeforeAdding": "Descubra proyectos remotos antes de agregar este nodo.", "discoveredCount_one": "", "discoveredCount_other": "", + "discoveredRemoteProjectsLabel": "", "discovering": "Descubriendo...", "discoverRemoteProjects": "Descubrir proyectos remotos", "discoveryFailed": "No se pudieron descubrir proyectos remotos", "dismissError": "Descartar error", "docker": "Docker", "dockerBadge": "Nodo Docker administrado", + "dockerConfigMeta": "", "dockerConfigSaveFailed": "Error al guardar la configuración de Docker", "dockerConfigSaveSuccess": "Configuración de Docker guardada", "dockerConfiguration": "Configuración de Docker", @@ -4083,6 +4164,7 @@ "name": "Servidor de compilación", "optional": "Opcional" }, + "projectPathMappingsLabel": "", "provideManually": "Proporcionar clave manualmente", "pulling": "Descargando…", "pullSettings": "Descargar ajustes", @@ -4281,6 +4363,9 @@ "testFailed": "La prueba falló — consulta el estado anterior.", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "" + }, "piManager": { "addButton": "Añadir", "discoveredDescription": "Extensiones instaladas resueltas desde paquetes y rutas configuradas.", @@ -4884,6 +4969,7 @@ "createTask": "Crear tarea", "createTaskButton": "Crear tarea", "createTaskTitle": "Crear tarea desde hallazgo", + "currentDefaults": "", "defaultFindingHeading": "Hallazgo de investigación", "descriptionLabel": "Descripción", "disabled": "La investigación está desactivada para este proyecto.", @@ -4906,6 +4992,7 @@ "noRunsYet": "Aún no hay ejecuciones", "noSourcesAvailable": "No hay fuentes de investigación habilitadas disponibles para este proyecto.", "noSummaryYet": "Sin resumen por ahora.", + "notSet": "", "openAuthSettings": "Abrir configuración de autenticación", "openResearchSettings": "Abrir configuración de investigación", "priorityHigh": "Alto", @@ -4966,6 +5053,7 @@ "intro": "Ver el nodo de ejecución efectivo y controlar la anulación del nodo por tarea.", "localNoConfiguration": "Local (sin enrutamiento configurado)", "lockedWhileActive": "El enrutamiento está bloqueado mientras esta tarea está activa. No se puede cambiar la anulación del nodo hasta que la tarea ya no esté activa.", + "nodeOptionLabel": "", "nodeUnavailable": "nodo no disponible o desconocido", "overrideCleared": "Anulación de nodo borrada", "overrideSection": "Anulación de nodo", @@ -4983,6 +5071,9 @@ "unhealthy": "No saludable", "useProjectDefault": "Usar predeterminado del proyecto" }, + "runtimes": { + "nousResearchLogoAlt": "" + }, "schedule": { "actionAiPrompt": "Indicación de IA", "actionCommand": "Comando", @@ -5048,6 +5139,7 @@ "cronPresetMonthly": "Cada mes (día 1)", "cronPresetWeekly": "Cada semana (lunes)", "cronRequired": "Se requiere expresión cron para horarios personalizados", + "crontabGuru": "", "delete": "Eliminar", "deleteError": "Error al eliminar rutina", "deleteMessage": "¿Eliminar la programación {{name}}? Esta acción no se puede deshacer.", @@ -5102,6 +5194,7 @@ "globalScope": "Automatizaciones globales (a nivel de usuario)", "globalScoped": "Este horario se creará en alcance global.", "globalScopeTitle": "Alcance global", + "lastLabel": "", "loadRoutinesError": "Error al cargar rutinas", "manualTriggerInfo": "Esta rutina se activará manualmente desde el panel o la API.", "modeAriaLabel": "Modo de ejecución", @@ -5124,6 +5217,7 @@ "newAutomation": "Nueva automatización", "newRoutineHeading": "Nueva rutina", "newTitle": "Nueva programación", + "nextLabel": "", "noActiveProject": "Sin proyecto activo. Los horarios se crearán en alcance global.", "noAutomations": "Sin automatizaciones aún", "noStepsEmpty": "Aún no se han añadido pasos. Agregue un comando o un paso de prompt de IA para comenzar.", @@ -5154,6 +5248,7 @@ "runNameNow": "Ejecutar {{name}} ahora", "running": "Ejecutando…", "runNow": "Ejecutar ahora", + "runsLabel": "", "saveChanges": "Guardar cambios", "saveStep": "Guardar paso", "saving": "Guardando…", @@ -5233,6 +5328,9 @@ "webhookSecretLabel": "Secreto del webhook (opcional)", "webhookSecretPlaceholder": "Opcional: deja vacío para webhooks sin autenticación" }, + "scripts": { + "title": "" + }, "scriptsModal": { "addScript": "Añadir script", "addScriptsHint": "Agregue scripts para ejecutar rápidamente comandos comunes desde el panel de control.", @@ -5660,6 +5758,7 @@ "enabling": "Activando…", "notConnected": "✗ No conectado", "probing": "Sondeo de CLI local…", + "providerName": "", "test": "Probar", "testing": "Probando…" }, @@ -5695,6 +5794,7 @@ "githubConnectionFailed": "La conexión falló o expiró.", "githubOauthConnected": "GitHub OAuth está conectado. Puedes importar issues y rastrear pull requests.", "githubOauthNotConnected": "GitHub OAuth no está conectado aún. Puedes configurarlo en Ajustes → Autenticación, o continuar ahora y conectarte más tarde.", + "githubProvider": "", "githubSkipped": "Se omitió GitHub. Puedes conectarte en cualquier momento desde Ajustes → Autenticación.", "goBackToStep": "Volver a {{label}}", "goToDashboard": "Ir al panel", @@ -5954,6 +6054,9 @@ "saving": "Guardando…", "view": "Ver" }, + "stash": { + "copyReference": "" + }, "stashRecovery": { "applied": "Aplicado", "apply": "Aplicar", @@ -6710,7 +6813,6 @@ "subtaskButton": "Subtarea", "thinkingDefault": "Predeterminado ({{level}})", "thinkingHigh": "Alto", - "thinkingXhigh": "Muy alto", "thinkingLabel": "Pensamiento", "thinkingLow": "Bajo", "thinkingMedium": "Medio", @@ -6971,6 +7073,7 @@ "workflowCheck": "Verificación de flujo de trabajo" }, "terminal": { + "arrowKeysLabel": "", "clear": "Limpiar", "clearTerminal": "Limpiar terminal", "closeTab": "Cerrar pestaña", @@ -7289,6 +7392,7 @@ "foreachSequential": "Secuencial", "foreachShared": "Árbol de trabajo compartido", "foreachWorktree": "Árbol de trabajo por paso", + "gateBadge": "", "gateBlocks": "Compuerta (bloquea)", "gateMode": "Modo de compuerta", "insertTemplate": "Insertar plantilla {{name}}", @@ -7345,6 +7449,7 @@ "startEntryColumn": "", "startEntryColumnAuto": "", "startNote": "", + "stepBadge": "", "stepExecuteLabel": "Ejecutar paso", "templateFilterLabel": "Filtrar plantillas", "templateFilterPlaceholder": "Filtrar plantillas", @@ -7353,6 +7458,7 @@ "templatesFragments": "Fragmentos", "templatesPluginSteps": "Pasos de plugin", "templatesSection": "Plantillas", + "timeoutMs": "", "trivialGraphHint": "Este flujo de trabajo solo ejecuta inicio → fin. Añade pasos desde la paleta superior para construirlo." }, "workflows": { @@ -7418,14 +7524,6 @@ "templateSectionBuiltin": "Flujos de trabajo integrados", "templateSectionYours": "Tus flujos de trabajo" }, - "workflowSwitcher": { - "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", - "done": "Done", - "inProgress": "In Progress", - "label": "Workflow", - "todo": "Todo", - "triggerAria": "Select workflow. Current workflow: {{name}}" - }, "workflowSelector": { "switchActiveMessage": "", "switchActiveTitle": "", @@ -7485,6 +7583,14 @@ "widget": "", "widgetDefault": "" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workspace": { "projectRoot": "Raíz del proyecto", "selectWorkspace": "Seleccionar espacio de trabajo", diff --git a/packages/i18n/locales/fr/app.json b/packages/i18n/locales/fr/app.json index f57d82347b..7c08271aa5 100644 --- a/packages/i18n/locales/fr/app.json +++ b/packages/i18n/locales/fr/app.json @@ -31,6 +31,12 @@ "update": "Mettre à jour", "yes": "Oui" }, + "activityFeed": { + "emptyHint": "", + "eventCount_one": "", + "eventCount_other": "", + "noRecentActivity": "" + }, "activityLog": { "activeFilters": "Filtres actifs :", "allEvents": "Tous les événements", @@ -64,6 +70,7 @@ "noActivityRecorded": "Aucune activité enregistrée", "noMatchingActivity": "Aucune activité ne correspond aux filtres actuels", "notMerged": "Non fusionné", + "projectFilterBadge": "", "refresh": "Actualiser", "time": { "daysAgo_one": "", @@ -74,7 +81,8 @@ "minutesAgo_one": "", "minutesAgo_other": "" }, - "title": "Journal d'activité" + "title": "Journal d'activité", + "typeFilterBadge": "" }, "agentError": { "copied": "Copié", @@ -354,6 +362,7 @@ "bundleTitle": "Bundle", "cacheHitRatio": "Taux de cache", "cacheReadTokens": "Lecture cache", + "cacheWindowSummary": "", "cacheWriteTokens": "Écriture cache", "cancel": "Annuler", "cancelCustomInterval": "Annuler l'intervalle personnalisé", @@ -361,6 +370,8 @@ "chainOfCommand": "Chaîne de commandement", "change": "Modifier", "changeRole": "Cliquer pour changer le rôle", + "charactersCount_one": "", + "charactersCount_other": "", "chooseFile": "Choisir un fichier", "clearAgents": "Effacer les agents", "clearSkills": "Effacer les compétences", @@ -408,6 +419,7 @@ "deleteTitle": "Supprimer l'agent", "deletionNotAvailable": "La suppression n'est pas disponible pendant l'exécution de l'agent.", "deletionPermanent": "Cela supprimera définitivement l'agent et toutes les données associées.", + "detailLoadingLabel": "", "details": "Détails", "dialogAriaLabel": "Créer un nouvel agent", "dialogTitle": "Nouvel agent", @@ -452,6 +464,7 @@ "from": "De", "generateHint": "Décrivez le rôle de votre agent et laissez l'IA générer une spécification", "generateWithAI": "Générer avec l'IA", + "generateWithAiLabel": "", "generation": { "collapse": "Réduire", "expand": "Développer", @@ -536,9 +549,12 @@ "importingAgentsAndSkills": "Importation de {{agentCount}} agent{{agentPlural}} et {{skillCount}} compétence{{skillPlural}}...", "importingSkills_one": "", "importingSkills_other": "", + "importReportsTo": "", + "importSkills": "", "inbox": "Boîte de réception", "inheritingProjectDefault": "Héritant du défaut du projet", "inheritProjectDefault": "Hériter du défaut du projet", + "inlineInstructions": "", "inlineMemoryFieldHint": "Cette mémoire est intégrée directement dans le contexte de l'agent.", "inlineMemoryHint": "Mémoire courte injectée à chaque heartbeat.", "inlineMemoryLabel": "Mémoire inline", @@ -564,6 +580,8 @@ "intentPrompt": "Que voulez-vous que cet agent fasse?", "interval": "Intervalle", "interviewDraftApplied": "Brouillon d'entretien appliqué", + "kTokens_one": "", + "kTokens_other": "", "last24h": "Dernières 24h", "last7d": "7 derniers jours", "lastHeartbeat": "Dernière : {{time}}", @@ -753,6 +771,7 @@ "output": "Sortie", "outputTokens": "Jetons de sortie", "overview": "Aperçu", + "overviewLabel": "", "parsing": "Analyse en cours…", "pause": "Pause", "pauseAction": "Mettre en pause", @@ -1037,7 +1056,6 @@ "templateCompact": "Compact", "templateDefault": "Défaut", "thinkingHigh": "Élevé", - "thinkingXhigh": "Très élevé", "thinkingLevel": "Niveau de réflexion", "thinkingLow": "Faible", "thinkingMedium": "Moyen", @@ -1045,6 +1063,7 @@ "thinkingOff": "Désactivé", "thinkingXhigh": "Très élevé", "throughput": "Débit", + "timeSinceLastHeartbeat": "", "title": "Agents", "titleLabel": "Titre", "titlePlaceholder": "ex. Relecteur de code senior", @@ -1091,6 +1110,7 @@ }, "testMode": "Mode test — pas d'appels IA réels" }, + "appName": "", "approval": { "dismissBanner": "Ignorer la bannière de notification d'approbation", "needAttention_one": "", @@ -1175,6 +1195,9 @@ "openPr": "Ouvrir PR", "unavailable": "Groupe de branches indisponible" }, + "branchGroups": { + "prNumber": "" + }, "capacity": { "dismiss": "Ignorer l'avertissement de capacité", "risk": "Risque de capacité :", @@ -1322,9 +1345,13 @@ "thinking": "Réflexion", "thinkingLabel": "Réflexion", "thinkingStatus": "Réflexion en cours…", + "toolArgsLabel": "", + "toolArgsPreview": "", "toolCalls": "Appels d'outils", "toolCallsCount_one": "", "toolCallsCount_other": "", + "toolResultLabel": "", + "toolResultPreview": "", "typeMessage": "Tapez un message…", "unreadMessages": "Messages non lus", "untitledSession": "Sans titre", @@ -1353,9 +1380,11 @@ "versionMismatchSuffix": "Mettez à jour pour rester synchronisé." }, "cliBinary": { + "binaryLabel": "", "checking": "Vérification…", "copied": "Copié", "copy": "Copier", + "expectedVersion": "", "failedExit": "Installation échouée (code de sortie {{code}})", "heading": "Binaire CLI", "help": "L'installation du CLI global vous permet d'exécuter fn et fusion depuis n'importe quel terminal. Les automatisations et les scripts fonctionnent sans cela via npx, mais une installation globale est plus rapide et plus pratique.", @@ -1363,13 +1392,15 @@ "installWithNpm": "Installer avec npm", "notOnPath": "Ni fn ni fusion n'ont été trouvés sur PATH.", "orCopyLabel": "Ou copiez et exécutez vous-même :", + "pathLabel": "", "refresh": "Actualiser", "reinstall": "Réinstaller", "stateCheckDisabled": "Vérification désactivée", "stateInstalled": "Installé", "stateMissing": "Non installé", "stateVersionMismatch": "Incohérence de version", - "succeededDuration": "Installation réussie en {{duration}} s" + "succeededDuration": "Installation réussie en {{duration}} s", + "versionLabel": "" }, "cliChat": { "queued_one": "", @@ -1509,7 +1540,6 @@ "title": "" }, "orgChart": { - "description": "", "empty": "", "error": "", "loading": "", @@ -1637,17 +1667,24 @@ "uniqueModels": "" }, "productivity": { + "averageDuration": "", "byLanguage": "", "commits": "", + "completedTasks": "", + "durationTitle": "", + "durationUnavailable": "", "hoursSaved": "", "hoursSavedEstimate": "", "hoursSavedUnavailable": "", "languagePie": "", "loc": "", "locUnavailable": "", + "medianDuration": "", "modifiedFiles": "", "outcomesTitle": "", + "p90Duration": "", "pullRequests": "", + "totalDuration": "", "volumeHint": "", "volumeTitle": "" }, @@ -1694,6 +1731,7 @@ "ecosystem": "", "github": "", "missionControl": "", + "nodes": "", "overview": "", "productivity": "", "reliability": "", @@ -1910,6 +1948,8 @@ "clear": "Effacer", "command": "Commande", "configuration": "Configuration", + "configurationLabel": "", + "controlsHeaderLabel": "", "embedded": "Intégré", "embeddedPreviewDisabled": "L'aperçu intégré est désactivé. Ouvrez votre application dans un onglet de navigateur séparé.", "enterFullscreen": "Passer en mode plein écran pour les journaux", @@ -1928,6 +1968,7 @@ "loadingOlderLogs": "Chargement des anciens journaux…", "loadOlderLogs": "Charger les anciens journaux", "logs": "Journaux", + "logsLabel": "", "lostConnection": "Connexion au flux de journaux perdue.", "manual": "Manuel", "matchCount_one": "", @@ -1946,6 +1987,7 @@ "preview": "Aperçu", "previewBlocked": "Aperçu bloqué", "previewFailed": "Aperçu échoué", + "previewLabel": "", "previewUrlOverride": "Remplacer l'URL d'aperçu", "refreshPreview": "Actualiser l'aperçu", "restart": "Redémarrer", @@ -2124,14 +2166,17 @@ "noTaskDocuments": "Aucun document de tâche pour le moment.", "openTask": "Ouvrir la tâche", "plain": "Brut", + "projectFilePreviewLabel": "", "projectFiles": "fichiers du projet", "projectFilesTab": "Fichiers du projet", + "projectMarkdownFilesLabel": "", "resultCount_one": "", "resultCount_other": "", "retry": "Réessayer", "retryLoading": "Réessayer de charger les documents", "searchProjectFiles": "Rechercher les fichiers markdown du projet…", "searchTaskDocuments": "Rechercher les documents des tâches…", + "sectionsLabel": "", "selectFile": "Sélectionnez un fichier markdown pour voir son contenu.", "showHidden": "Afficher les fichiers projet cachés", "showHiddenFiles": "Afficher les fichiers cachés", @@ -2185,6 +2230,12 @@ "failedToLoadFile": "Échec du chargement du fichier", "failedToSaveFile": "Échec de l'enregistrement du fichier" }, + "errorBoundary": { + "genericError": "", + "reloadPage": "", + "retry": "", + "sectionError": "" + }, "evals": { "allRuns": "Toutes les exécutions", "disabledTitle": "Les évaluations programmées sont désactivées", @@ -2223,6 +2274,8 @@ "overlapBottleneck_one": "", "overlapBottleneck_other": "", "overlapQueue": "File de chevauchement", + "overlapSummary_one": "", + "overlapSummary_other": "", "queued": "En attente", "running": "En cours", "secondsAgo_one": "", @@ -2233,7 +2286,8 @@ "stateRunning": "En cours d'exécution", "status": "État de l'exécuteur", "stuck": "Bloqué", - "temporary": "Temporaire" + "temporary": "Temporaire", + "todoStatus": "" }, "fileBrowser": { "back": "Retour à la liste des fichiers", @@ -2640,6 +2694,7 @@ "stashDropped": "Remise supprimée", "stashMessagePlaceholder": "Message de remise (facultatif)", "stashPopped": "Remise dépilée", + "stashRef": "", "statusLabelBranch": "Branche", "statusLabelCommit": "Commit", "statusLabelIntegrationBranch": "Branche d'intégration", @@ -2693,6 +2748,13 @@ "worktreesTotal_one": "", "worktreesTotal_other": "" }, + "githubStarPrompt": { + "body": "", + "dismissLabel": "", + "regionLabel": "", + "starOnGitHub": "", + "title": "" + }, "goals": { "activeCount_one": "", "activeCount_other": "", @@ -2729,6 +2791,9 @@ "unlinkMissionError": "", "updateError": "Impossible de mettre à jour le statut de l'objectif pour le moment. Veuillez réessayer." }, + "groups": { + "prLinkLabel": "" + }, "groupTask": { "abandonGroup": "", "ariaLabel": "Détails du groupe de branches", @@ -2767,6 +2832,7 @@ "documentsView": "Vue documents", "engineOptions": "Options du moteur", "evalsView": "Évaluations", + "fusionLogo": "", "gitManager": "Gestionnaire Git", "goalsView": "Objectifs", "importFromGitHub": "Importer depuis GitHub", @@ -2786,7 +2852,6 @@ "moreHeaderActions": "Plus d'actions dans l'en-tête", "moreViews": "Plus de vues", "noBaseBranch": "Aucune branche de base", - "nodes": "Nœuds", "noScriptsAddOne": "Aucun script — en ajouter un…", "noScriptsConfigured": "Aucun script configuré", "noWorkingBranch": "Aucune branche de travail", @@ -2927,6 +2992,7 @@ "archiveTitle": "Archiver cet insight", "archiving": "Archivage de \"{{title}}\"...", "backlogHealth": "Santé du backlog", + "categoriesLabel": "", "configureModel": "Configurer le modèle de génération d'insights", "configureModelTitle": "Configurer le modèle", "createTaskLabel": "Créer une tâche à partir de cet insight", @@ -3017,6 +3083,9 @@ "verificationCriteria": "Critères de vérification", "yes": "Oui" }, + "issues": { + "noIssuesFound": "" + }, "lane": { "collapse": "", "expand": "" @@ -3129,8 +3198,7 @@ "unpauseUnavailable": "L'action Reprendre est indisponible", "useProjectDefault": "Utiliser le défaut du projet", "viewOptions": "Options d'affichage", - "workflowLabel": "", - "workflowSelectLabel": "" + "workflowLabel": "" }, "mailbox": { "agent": "Agent", @@ -3199,6 +3267,7 @@ "replyingTo": "Répondre à {{preview}}", "replyingToMessage": "Répondre au message", "replyLoadFailed": "Échec du chargement du message de réponse. Cliquez pour réessayer.", + "resizeMessageListPane": "", "selectMessageToRead": "Sélectionnez un message à lire", "system": "Système", "timeDaysAgo_one": "", @@ -3212,6 +3281,7 @@ "to": "À", "toLabel": "À :", "toPrefix": "À : {{recipient}}", + "toRecipient": "", "typeAgentToAgent": "Agent ↔ Agent", "typeAgentToUser": "Agent → Vous", "typeSystem": "Système", @@ -3387,11 +3457,13 @@ "missions": { "acceptance": "Critères d'acceptation :", "acceptanceCriteriaOptional": "Critères d'acceptation (facultatifs)", + "acceptanceCriteriaPrefix": "", "actionGenerating": "Génération…", "actionResume": "Reprendre", "actionRetry": "Réessayer", "actionReview": "Réviser", "activateSlice": "Activer le découpage", + "activityCount": "", "activityTime": "Activité {{time}}", "actual": "Réel : {{value}}", "addAssertion": "Ajouter une assertion", @@ -3518,6 +3590,7 @@ "filterSlices": "Événements de découpage et jalon", "filterStateChanges": "Changements d'état", "filterTasks": "Événements de tâche", + "fixLineageButton": "", "generatedFixFeatures": "Fonctionnalités de correction générées :", "generatedFixFeaturesTitle": "Fonctionnalités de correction générées", "generatedFromFeature": "Généré depuis la fonctionnalité : {{id}}", @@ -3545,6 +3618,8 @@ "linkButton": "Lier", "linkedCount_one": "", "linkedCount_other": "", + "linkedCountShort_one": "", + "linkedCountShort_other": "", "linkedFeaturesCount_one": "", "linkedFeaturesCount_other": "", "linkedFeaturesLabel": "Fonctionnalités liées", @@ -3605,6 +3680,7 @@ "planStateNeedsUpdate": "Nécessite une mise à jour", "planStateNotPlanned": "Non planifié", "planStatePlanned": "Planifié", + "planTargetTitle": "", "planTitle": "Planifier une mission avec l'IA", "prepareQuestion": "Préparation de la prochaine question...", "progressText_one": "", @@ -3711,6 +3787,7 @@ "updateButton": "Mettre à jour", "updated": "Mission mise à jour", "validateFeature": "Valider la fonctionnalité", + "validationRoundAttempts": "", "validationRoundsCount_one": "", "validationRoundsCount_other": "", "validationRoundsLabel_one": "", @@ -3775,7 +3852,6 @@ "options": { "default": "Défaut", "high": "Élevé", - "xhigh": "Très élevé", "low": "Faible", "medium": "Moyen", "minimal": "Minimal", @@ -3827,10 +3903,12 @@ "board": "Tableau", "chat": "Chat", "chatUnreadAriaLabel": "Réponse non lue", + "collapseSidebar": "", "commandCenter": "", "devServer": "Serveur de dev", "documents": "Documents", "evals": "Évaluations", + "expandSidebar": "", "files": "Fichiers", "gitManager": "Gestionnaire Git", "goals": "Objectifs", @@ -3845,16 +3923,17 @@ "missions": "Missions", "more": "Plus", "moreSheetTitle": "Naviguer", - "nodes": "Nœuds", "noScriptsAddOne": "Aucun script — en ajouter un…", "planning": "Planification", "primaryNavAriaLabel": "Navigation principale", "projects": "Projets", "research": "Recherche", + "resizeSidebar": "", "scriptsSubmenuAriaLabel": "Sous-menu des scripts", "secrets": "Secrets", "settings": "Paramètres", "showScriptsAriaLabel": "Afficher les scripts", + "sidebarAriaLabel": "", "skills": "Compétences", "stashRecovery": "Récupération de stash", "tasks": "Tâches", @@ -3960,12 +4039,14 @@ "discoverBeforeAdding": "Découvrez les projets distants avant d'ajouter ce nœud.", "discoveredCount_one": "", "discoveredCount_other": "", + "discoveredRemoteProjectsLabel": "", "discovering": "Découverte...", "discoverRemoteProjects": "Découvrir les projets distants", "discoveryFailed": "Échec de la découverte des projets distants", "dismissError": "Ignorer l'erreur", "docker": "Docker", "dockerBadge": "Nœud Docker géré", + "dockerConfigMeta": "", "dockerConfigSaveFailed": "Échec de l'enregistrement de la config Docker", "dockerConfigSaveSuccess": "Configuration Docker enregistrée", "dockerConfiguration": "Configuration Docker", @@ -4083,6 +4164,7 @@ "name": "Serveur de construction", "optional": "Optionnel" }, + "projectPathMappingsLabel": "", "provideManually": "Fournir manuellement la clé", "pulling": "Récupération…", "pullSettings": "Récupérer les paramètres", @@ -4281,6 +4363,9 @@ "testFailed": "Le test a échoué — voir le statut ci-dessus.", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "" + }, "piManager": { "addButton": "Ajouter", "discoveredDescription": "Extensions installées résolues à partir de paquets et de chemins configurés.", @@ -4884,6 +4969,7 @@ "createTask": "Créer une tâche", "createTaskButton": "Créer une tâche", "createTaskTitle": "Créer une tâche à partir du résultat", + "currentDefaults": "", "defaultFindingHeading": "Résultat de recherche", "descriptionLabel": "Description", "disabled": "La recherche est désactivée pour ce projet.", @@ -4906,6 +4992,7 @@ "noRunsYet": "Aucune exécution pour l'instant", "noSourcesAvailable": "Aucune source de recherche activée n'est disponible pour ce projet.", "noSummaryYet": "Pas de résumé pour l'instant.", + "notSet": "", "openAuthSettings": "Ouvrir les paramètres d'authentification", "openResearchSettings": "Ouvrir les paramètres de recherche", "priorityHigh": "Élevé", @@ -4966,6 +5053,7 @@ "intro": "Affichez le nœud d'exécution effectif et contrôlez la substitution de nœud par tâche.", "localNoConfiguration": "Local (pas de routage configuré)", "lockedWhileActive": "Le routage est verrouillé pendant que cette tâche est active. La substitution du nœud ne peut pas être modifiée tant que la tâche reste active.", + "nodeOptionLabel": "", "nodeUnavailable": "nœud indisponible ou inconnu", "overrideCleared": "Substitution du nœud effacée", "overrideSection": "Substitution du nœud", @@ -4983,6 +5071,9 @@ "unhealthy": "Défaillant", "useProjectDefault": "Utiliser le défaut du projet" }, + "runtimes": { + "nousResearchLogoAlt": "" + }, "schedule": { "actionAiPrompt": "Invite IA", "actionCommand": "Commande", @@ -5048,6 +5139,7 @@ "cronPresetMonthly": "Tous les mois (1er)", "cronPresetWeekly": "Toutes les semaines (lundi)", "cronRequired": "L'expression cron est requise pour les calendriers personnalisés", + "crontabGuru": "", "delete": "Supprimer", "deleteError": "Impossible de supprimer la routine", "deleteMessage": "Supprimer l'horaire {{name}} ? Cette action ne peut pas être annulée.", @@ -5102,6 +5194,7 @@ "globalScope": "Automatisations globales (au niveau de l'utilisateur)", "globalScoped": "Ce calendrier sera créé à portée mondiale.", "globalScopeTitle": "Portée mondiale", + "lastLabel": "", "loadRoutinesError": "Impossible de charger les routines", "manualTriggerInfo": "Cette routine sera déclenchée manuellement via le tableau de bord ou l'API.", "modeAriaLabel": "Mode d'exécution", @@ -5124,6 +5217,7 @@ "newAutomation": "Nouvelle automatisation", "newRoutineHeading": "Nouvelle routine", "newTitle": "Nouveau calendrier", + "nextLabel": "", "noActiveProject": "Aucun projet actif. Les calendriers seront créés à portée mondiale.", "noAutomations": "Pas encore d'automatisations", "noStepsEmpty": "Aucune étape ajoutée pour l'instant. Ajoutez une commande ou une étape d'invite IA pour commencer.", @@ -5154,6 +5248,7 @@ "runNameNow": "Exécuter {{name}} maintenant", "running": "Exécution…", "runNow": "Exécuter maintenant", + "runsLabel": "", "saveChanges": "Enregistrer les modifications", "saveStep": "Enregistrer l'étape", "saving": "Enregistrement…", @@ -5233,6 +5328,9 @@ "webhookSecretLabel": "Secret webhook (facultatif)", "webhookSecretPlaceholder": "Facultatif — laisser vide pour les webhooks non authentifiés" }, + "scripts": { + "title": "" + }, "scriptsModal": { "addScript": "Ajouter un script", "addScriptsHint": "Ajoutez des scripts pour exécuter rapidement les commandes courantes depuis le tableau de bord.", @@ -5660,6 +5758,7 @@ "enabling": "Activation…", "notConnected": "✗ Non connecté", "probing": "Sonde CLI local…", + "providerName": "", "test": "Tester", "testing": "Test en cours…" }, @@ -5695,6 +5794,7 @@ "githubConnectionFailed": "La connexion a échoué ou expiré.", "githubOauthConnected": "GitHub OAuth est connecté. Vous pouvez importer des tickets et suivre les pull requests.", "githubOauthNotConnected": "GitHub OAuth n'est pas encore connecté. Configurez-le dans Paramètres → Authentification, ou continuez maintenant et connectez-vous plus tard.", + "githubProvider": "", "githubSkipped": "GitHub a été ignoré. Vous pouvez vous connecter à tout moment depuis Paramètres → Authentification.", "goBackToStep": "Retour à {{label}}", "goToDashboard": "Aller au tableau de bord", @@ -5954,6 +6054,9 @@ "saving": "Enregistrement…", "view": "Afficher" }, + "stash": { + "copyReference": "" + }, "stashRecovery": { "applied": "Appliqué", "apply": "Appliquer", @@ -6710,7 +6813,6 @@ "subtaskButton": "Sous-tâche", "thinkingDefault": "Défaut ({{level}})", "thinkingHigh": "Élevé", - "thinkingXhigh": "Très élevé", "thinkingLabel": "Réflexion", "thinkingLow": "Faible", "thinkingMedium": "Moyen", @@ -6971,6 +7073,7 @@ "workflowCheck": "Vérification du workflow" }, "terminal": { + "arrowKeysLabel": "", "clear": "Effacer", "clearTerminal": "Effacer le terminal", "closeTab": "Fermer l'onglet", @@ -7289,6 +7392,7 @@ "foreachSequential": "Séquentiel", "foreachShared": "Arbre de travail partagé", "foreachWorktree": "Arbre de travail par étape", + "gateBadge": "", "gateBlocks": "Barrière (bloque)", "gateMode": "Mode de barrière", "insertTemplate": "Insérer le modèle {{name}}", @@ -7345,6 +7449,7 @@ "startEntryColumn": "", "startEntryColumnAuto": "", "startNote": "", + "stepBadge": "", "stepExecuteLabel": "Exécution de l'étape", "templateFilterLabel": "Filtrer les modèles", "templateFilterPlaceholder": "Filtrer les modèles", @@ -7353,6 +7458,7 @@ "templatesFragments": "Fragments", "templatesPluginSteps": "Étapes de plugin", "templatesSection": "Modèles", + "timeoutMs": "", "trivialGraphHint": "Ce workflow ne fait qu'exécuter début → fin. Ajoutez des étapes depuis la palette ci-dessus pour le développer." }, "workflows": { @@ -7418,14 +7524,6 @@ "templateSectionBuiltin": "Workflows intégrés", "templateSectionYours": "Vos workflows" }, - "workflowSwitcher": { - "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", - "done": "Done", - "inProgress": "In Progress", - "label": "Workflow", - "todo": "Todo", - "triggerAria": "Select workflow. Current workflow: {{name}}" - }, "workflowSelector": { "switchActiveMessage": "", "switchActiveTitle": "", @@ -7485,6 +7583,14 @@ "widget": "", "widgetDefault": "" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workspace": { "projectRoot": "Racine du projet", "selectWorkspace": "Sélectionner l'espace de travail", diff --git a/packages/i18n/locales/ko/app.json b/packages/i18n/locales/ko/app.json index 8ae6056e12..3cd8d3b64e 100644 --- a/packages/i18n/locales/ko/app.json +++ b/packages/i18n/locales/ko/app.json @@ -31,6 +31,12 @@ "update": "업데이트", "yes": "예" }, + "activityFeed": { + "emptyHint": "", + "eventCount_one": "", + "eventCount_other": "", + "noRecentActivity": "" + }, "activityLog": { "activeFilters": "활성 필터:", "allEvents": "모든 이벤트", @@ -64,6 +70,7 @@ "noActivityRecorded": "아직 기록된 활동이 없습니다", "noMatchingActivity": "현재 필터에 일치하는 활동이 없습니다", "notMerged": "병합되지 않음", + "projectFilterBadge": "", "refresh": "새로고침", "time": { "daysAgo_one": "", @@ -74,7 +81,8 @@ "minutesAgo_one": "", "minutesAgo_other": "" }, - "title": "활동 로그" + "title": "활동 로그", + "typeFilterBadge": "" }, "agentError": { "copied": "복사됨", @@ -354,6 +362,7 @@ "bundleTitle": "번들", "cacheHitRatio": "캐시 적중률", "cacheReadTokens": "캐시 읽기", + "cacheWindowSummary": "", "cacheWriteTokens": "캐시 쓰기", "cancel": "취소", "cancelCustomInterval": "사용자 정의 간격 취소", @@ -361,6 +370,8 @@ "chainOfCommand": "명령 체계", "change": "변경", "changeRole": "클릭하여 역할 변경", + "charactersCount_one": "", + "charactersCount_other": "", "chooseFile": "파일 선택", "clearAgents": "에이전트 초기화", "clearSkills": "스킬 초기화", @@ -408,6 +419,7 @@ "deleteTitle": "에이전트 삭제", "deletionNotAvailable": "에이전트가 실행 중일 때는 삭제할 수 없습니다.", "deletionPermanent": "에이전트와 모든 관련 데이터가 영구적으로 삭제됩니다.", + "detailLoadingLabel": "", "details": "세부 정보", "dialogAriaLabel": "새 에이전트 만들기", "dialogTitle": "새 에이전트", @@ -452,6 +464,7 @@ "from": "보낸 사람", "generateHint": "에이전트의 역할을 설명하면 AI가 사양을 생성합니다", "generateWithAI": "AI로 생성", + "generateWithAiLabel": "", "generation": { "collapse": "접기", "expand": "펼치기", @@ -536,9 +549,12 @@ "importingAgentsAndSkills": "에이전트 {{agentCount}}개{{agentPlural}}와 스킬 {{skillCount}}개{{skillPlural}} 가져오는 중...", "importingSkills_one": "", "importingSkills_other": "", + "importReportsTo": "", + "importSkills": "", "inbox": "받은 편지함", "inheritingProjectDefault": "프로젝트 기본값을 상속 중", "inheritProjectDefault": "프로젝트 기본값 상속", + "inlineInstructions": "", "inlineMemoryFieldHint": "이 메모리는 에이전트 컨텍스트에 직접 포함됩니다.", "inlineMemoryHint": "매 하트비트마다 주입되는 단기 메모리입니다.", "inlineMemoryLabel": "인라인 메모리", @@ -564,6 +580,8 @@ "intentPrompt": "이 에이전트가 무엇을 수행하길 원하시나요?", "interval": "간격", "interviewDraftApplied": "인터뷰 초안이 적용되었습니다", + "kTokens_one": "", + "kTokens_other": "", "last24h": "최근 24시간", "last7d": "최근 7일", "lastHeartbeat": "마지막 하트비트", @@ -753,6 +771,7 @@ "output": "출력", "outputTokens": "출력", "overview": "개요", + "overviewLabel": "", "parsing": "파싱 중…", "pause": "일시정지", "pauseAction": "일시정지", @@ -1037,7 +1056,6 @@ "templateCompact": "간결", "templateDefault": "기본", "thinkingHigh": "높음", - "thinkingXhigh": "매우 높음", "thinkingLevel": "사고 수준", "thinkingLow": "낮음", "thinkingMedium": "보통", @@ -1045,6 +1063,7 @@ "thinkingOff": "끄기", "thinkingXhigh": "매우 높음", "throughput": "처리량", + "timeSinceLastHeartbeat": "", "title": "에이전트", "titleLabel": "직함", "titlePlaceholder": "예) 시니어 엔지니어", @@ -1091,6 +1110,7 @@ }, "testMode": "테스트 모드 — 실제 AI 호출 없음" }, + "appName": "", "approval": { "dismissBanner": "승인 알림 배너 닫기", "needAttention_one": "", @@ -1175,6 +1195,9 @@ "openPr": "PR 열기", "unavailable": "브랜치 그룹을 사용할 수 없습니다" }, + "branchGroups": { + "prNumber": "" + }, "capacity": { "dismiss": "용량 경고 닫기", "risk": "용량 위험:", @@ -1322,9 +1345,13 @@ "thinking": "생각 중", "thinkingLabel": "생각 중", "thinkingStatus": "생각 중…", + "toolArgsLabel": "", + "toolArgsPreview": "", "toolCalls": "도구 호출", "toolCallsCount_one": "", "toolCallsCount_other": "", + "toolResultLabel": "", + "toolResultPreview": "", "typeMessage": "메시지를 입력하세요...", "unreadMessages": "읽지 않은 메시지", "untitledSession": "제목 없음", @@ -1353,9 +1380,11 @@ "versionMismatchSuffix": "최신 버전으로 업데이트하여 동기화를 유지하세요." }, "cliBinary": { + "binaryLabel": "", "checking": "확인 중…", "copied": "복사됨", "copy": "복사", + "expectedVersion": "", "failedExit": "설치 실패 (종료 코드: {{code}})", "heading": "CLI 바이너리", "help": "전역 CLI를 설치하면 어느 터미널에서나 fn 및 fusion을 실행할 수 있습니다. 자동화 및 스크립트는 npx로도 작동하지만, 전역 설치가 더 빠르고 편리합니다.", @@ -1363,13 +1392,15 @@ "installWithNpm": "npm으로 설치", "notOnPath": "fn 또는 fusion이 PATH에서 발견되지 않았습니다.", "orCopyLabel": "또는 직접 복사하여 실행:", + "pathLabel": "", "refresh": "새로 고침", "reinstall": "재설치", "stateCheckDisabled": "확인 비활성화됨", "stateInstalled": "설치됨", "stateMissing": "설치되지 않음", "stateVersionMismatch": "버전 불일치", - "succeededDuration": "{{duration}}초 만에 설치 완료" + "succeededDuration": "{{duration}}초 만에 설치 완료", + "versionLabel": "" }, "cliChat": { "queued_one": "", @@ -1509,7 +1540,6 @@ "title": "" }, "orgChart": { - "description": "", "empty": "", "error": "", "loading": "", @@ -1637,17 +1667,24 @@ "uniqueModels": "" }, "productivity": { + "averageDuration": "", "byLanguage": "", "commits": "", + "completedTasks": "", + "durationTitle": "", + "durationUnavailable": "", "hoursSaved": "", "hoursSavedEstimate": "", "hoursSavedUnavailable": "", "languagePie": "", "loc": "", "locUnavailable": "", + "medianDuration": "", "modifiedFiles": "", "outcomesTitle": "", + "p90Duration": "", "pullRequests": "", + "totalDuration": "", "volumeHint": "", "volumeTitle": "" }, @@ -1694,6 +1731,7 @@ "ecosystem": "", "github": "", "missionControl": "", + "nodes": "", "overview": "", "productivity": "", "reliability": "", @@ -1910,6 +1948,8 @@ "clear": "지우기", "command": "명령", "configuration": "설정", + "configurationLabel": "", + "controlsHeaderLabel": "", "embedded": "임베드됨", "embeddedPreviewDisabled": "임베드 미리 보기가 비활성화되어 있습니다. 별도의 브라우저 탭에서 앱을 여세요.", "enterFullscreen": "전체 화면 로그 보기", @@ -1928,6 +1968,7 @@ "loadingOlderLogs": "이전 로그 로드 중…", "loadOlderLogs": "이전 로그 불러오기", "logs": "로그", + "logsLabel": "", "lostConnection": "로그 스트림 연결이 끊겼습니다.", "manual": "수동", "matchCount_one": "", @@ -1946,6 +1987,7 @@ "preview": "미리 보기", "previewBlocked": "미리 보기 차단됨", "previewFailed": "미리 보기 실패", + "previewLabel": "", "previewUrlOverride": "미리 보기 URL 재정의", "refreshPreview": "미리 보기 새로 고침", "restart": "재시작", @@ -2124,14 +2166,17 @@ "noTaskDocuments": "아직 작업 문서가 없습니다.", "openTask": "작업 열기", "plain": "일반 텍스트", + "projectFilePreviewLabel": "", "projectFiles": "프로젝트 파일", "projectFilesTab": "프로젝트 파일", + "projectMarkdownFilesLabel": "", "resultCount_one": "", "resultCount_other": "", "retry": "다시 시도", "retryLoading": "문서 다시 불러오기", "searchProjectFiles": "프로젝트 마크다운 파일 검색…", "searchTaskDocuments": "작업 문서 검색…", + "sectionsLabel": "", "selectFile": "마크다운 파일을 선택하여 내용을 확인하세요.", "showHidden": "숨겨진 프로젝트 파일 표시", "showHiddenFiles": "숨김 파일 표시", @@ -2185,6 +2230,12 @@ "failedToLoadFile": "파일 불러오기 실패", "failedToSaveFile": "파일 저장 실패" }, + "errorBoundary": { + "genericError": "", + "reloadPage": "", + "retry": "", + "sectionError": "" + }, "evals": { "allRuns": "전체 실행", "disabledTitle": "예약 평가가 비활성화되어 있습니다", @@ -2223,6 +2274,8 @@ "overlapBottleneck_one": "", "overlapBottleneck_other": "", "overlapQueue": "중복 대기열", + "overlapSummary_one": "", + "overlapSummary_other": "", "queued": "대기 중", "running": "실행 중", "secondsAgo_one": "", @@ -2233,7 +2286,8 @@ "stateRunning": "실행 중", "status": "실행기 상태", "stuck": "중단됨", - "temporary": "임시" + "temporary": "임시", + "todoStatus": "" }, "fileBrowser": { "back": "파일 목록으로 돌아가기", @@ -2640,6 +2694,7 @@ "stashDropped": "스태시 삭제됨", "stashMessagePlaceholder": "스태시 메시지 (선택 사항)", "stashPopped": "스태시 팝됨", + "stashRef": "", "statusLabelBranch": "브랜치", "statusLabelCommit": "커밋", "statusLabelIntegrationBranch": "통합 브랜치", @@ -2693,6 +2748,13 @@ "worktreesTotal_one": "", "worktreesTotal_other": "" }, + "githubStarPrompt": { + "body": "", + "dismissLabel": "", + "regionLabel": "", + "starOnGitHub": "", + "title": "" + }, "goals": { "activeCount_one": "", "activeCount_other": "", @@ -2729,6 +2791,9 @@ "unlinkMissionError": "", "updateError": "현재 목표 상태를 업데이트할 수 없습니다. 다시 시도해 주세요." }, + "groups": { + "prLinkLabel": "" + }, "groupTask": { "abandonGroup": "", "ariaLabel": "브랜치 그룹 세부 정보", @@ -2767,6 +2832,7 @@ "documentsView": "문서 보기", "engineOptions": "엔진 옵션", "evalsView": "평가", + "fusionLogo": "", "gitManager": "Git 관리자", "goalsView": "목표", "importFromGitHub": "GitHub에서 가져오기", @@ -2786,7 +2852,6 @@ "moreHeaderActions": "추가 헤더 작업", "moreViews": "더 많은 보기", "noBaseBranch": "베이스 브랜치 없음", - "nodes": "노드", "noScriptsAddOne": "스크립트 없음 — 추가하세요…", "noScriptsConfigured": "구성된 스크립트 없음", "noWorkingBranch": "작업 브랜치 없음", @@ -2927,6 +2992,7 @@ "archiveTitle": "이 인사이트 보관", "archiving": "\"{{title}}\" 보관 중...", "backlogHealth": "백로그 상태", + "categoriesLabel": "", "configureModel": "인사이트 생성 모델 구성", "configureModelTitle": "모델 구성", "createTaskLabel": "이 인사이트에서 작업 생성", @@ -3017,6 +3083,9 @@ "verificationCriteria": "검증 기준", "yes": "예" }, + "issues": { + "noIssuesFound": "" + }, "lane": { "collapse": "", "expand": "" @@ -3129,8 +3198,7 @@ "unpauseUnavailable": "재개 작업을 사용할 수 없습니다", "useProjectDefault": "프로젝트 기본값 사용", "viewOptions": "보기 옵션", - "workflowLabel": "", - "workflowSelectLabel": "" + "workflowLabel": "" }, "mailbox": { "agent": "에이전트", @@ -3199,6 +3267,7 @@ "replyingTo": "답장 대상", "replyingToMessage": "메시지에 답장 중", "replyLoadFailed": "답장한 메시지를 불러오는 데 실패했습니다. 다시 시도하려면 클릭하세요.", + "resizeMessageListPane": "", "selectMessageToRead": "읽을 메시지를 선택하세요", "system": "시스템", "timeDaysAgo_one": "", @@ -3212,6 +3281,7 @@ "to": "받는 사람", "toLabel": "받는 사람:", "toPrefix": "받는 사람: {{recipient}}", + "toRecipient": "", "typeAgentToAgent": "에이전트 ↔ 에이전트", "typeAgentToUser": "에이전트 → 나", "typeSystem": "시스템", @@ -3387,11 +3457,13 @@ "missions": { "acceptance": "수락 기준:", "acceptanceCriteriaOptional": "수락 기준 (선택 사항)", + "acceptanceCriteriaPrefix": "", "actionGenerating": "생성 중…", "actionResume": "재개", "actionRetry": "재시도", "actionReview": "검토", "activateSlice": "슬라이스 활성화", + "activityCount": "", "activityTime": "활동 {{time}}", "actual": "실제: {{value}}", "addAssertion": "어설션 추가", @@ -3518,6 +3590,7 @@ "filterSlices": "슬라이스 및 마일스톤 이벤트", "filterStateChanges": "상태 변경", "filterTasks": "작업 이벤트", + "fixLineageButton": "", "generatedFixFeatures": "생성된 수정 기능:", "generatedFixFeaturesTitle": "생성된 수정 기능", "generatedFromFeature": "기능에서 생성됨: {{id}}", @@ -3545,6 +3618,8 @@ "linkButton": "연결", "linkedCount_one": "", "linkedCount_other": "", + "linkedCountShort_one": "", + "linkedCountShort_other": "", "linkedFeaturesCount_one": "", "linkedFeaturesCount_other": "", "linkedFeaturesLabel": "연결된 기능", @@ -3605,6 +3680,7 @@ "planStateNeedsUpdate": "업데이트 필요", "planStateNotPlanned": "계획되지 않음", "planStatePlanned": "계획됨", + "planTargetTitle": "", "planTitle": "AI로 미션 계획", "prepareQuestion": "다음 질문 준비 중...", "progressText_one": "", @@ -3711,6 +3787,7 @@ "updateButton": "업데이트", "updated": "미션이 업데이트되었습니다", "validateFeature": "기능 검증", + "validationRoundAttempts": "", "validationRoundsCount_one": "", "validationRoundsCount_other": "", "validationRoundsLabel_one": "", @@ -3775,7 +3852,6 @@ "options": { "default": "기본값", "high": "높음", - "xhigh": "매우 높음", "low": "낮음", "medium": "중간", "minimal": "최소", @@ -3827,10 +3903,12 @@ "board": "보드", "chat": "채팅", "chatUnreadAriaLabel": "읽지 않은 채팅 응답", + "collapseSidebar": "", "commandCenter": "", "devServer": "개발 서버", "documents": "문서", "evals": "평가", + "expandSidebar": "", "files": "파일", "gitManager": "Git 관리자", "goals": "목표", @@ -3845,16 +3923,17 @@ "missions": "미션", "more": "더 보기", "moreSheetTitle": "탐색", - "nodes": "노드", "noScriptsAddOne": "스크립트 없음 — 추가하세요…", "planning": "계획", "primaryNavAriaLabel": "기본 탐색", "projects": "프로젝트", "research": "연구", + "resizeSidebar": "", "scriptsSubmenuAriaLabel": "스크립트 하위 메뉴", "secrets": "시크릿", "settings": "설정", "showScriptsAriaLabel": "스크립트 표시", + "sidebarAriaLabel": "", "skills": "스킬", "stashRecovery": "스태시 복구", "tasks": "작업", @@ -3960,12 +4039,14 @@ "discoverBeforeAdding": "이 노드를 추가하기 전에 원격 프로젝트를 검색하세요.", "discoveredCount_one": "", "discoveredCount_other": "", + "discoveredRemoteProjectsLabel": "", "discovering": "검색 중...", "discoverRemoteProjects": "원격 프로젝트 검색", "discoveryFailed": "원격 프로젝트 검색에 실패했습니다", "dismissError": "오류 닫기", "docker": "Docker", "dockerBadge": "관리형 Docker 노드", + "dockerConfigMeta": "", "dockerConfigSaveFailed": "Docker 구성 저장에 실패했습니다", "dockerConfigSaveSuccess": "Docker 구성이 저장되었습니다", "dockerConfiguration": "Docker 구성", @@ -4083,6 +4164,7 @@ "name": "빌드 서버", "optional": "선택 사항" }, + "projectPathMappingsLabel": "", "provideManually": "키를 직접 입력", "pulling": "가져오는 중...", "pullSettings": "설정 가져오기", @@ -4281,6 +4363,9 @@ "testFailed": "테스트에 실패했습니다 — 위의 상태를 확인하세요.", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "" + }, "piManager": { "addButton": "추가", "discoveredDescription": "패키지 및 구성된 경로에서 확인된 설치된 확장 프로그램.", @@ -4884,6 +4969,7 @@ "createTask": "작업 생성", "createTaskButton": "작업 생성", "createTaskTitle": "발견 항목에서 작업 생성", + "currentDefaults": "", "defaultFindingHeading": "리서치 발견 항목", "descriptionLabel": "설명", "disabled": "이 프로젝트에서는 리서치가 비활성화되어 있습니다.", @@ -4906,6 +4992,7 @@ "noRunsYet": "아직 리서치 실행이 없습니다", "noSourcesAvailable": "이 프로젝트에 사용 가능한 활성화된 리서치 소스가 없습니다.", "noSummaryYet": "아직 요약이 없습니다.", + "notSet": "", "openAuthSettings": "인증 설정 열기", "openResearchSettings": "리서치 설정 열기", "priorityHigh": "높음", @@ -4966,6 +5053,7 @@ "intro": "유효 실행 노드를 확인하고 작업별 노드 재정의를 제어합니다.", "localNoConfiguration": "로컬 (라우팅 미구성)", "lockedWhileActive": "이 작업이 활성화된 동안에는 라우팅이 잠겨 있습니다. 작업이 더 이상 활성 상태가 아닐 때까지 노드 재정의를 변경할 수 없습니다.", + "nodeOptionLabel": "", "nodeUnavailable": "노드를 사용할 수 없거나 알 수 없음", "overrideCleared": "노드 재정의가 초기화되었습니다", "overrideSection": "노드 재정의", @@ -4983,6 +5071,9 @@ "unhealthy": "비정상", "useProjectDefault": "프로젝트 기본값 사용" }, + "runtimes": { + "nousResearchLogoAlt": "" + }, "schedule": { "actionAiPrompt": "AI 프롬프트", "actionCommand": "명령어", @@ -5048,6 +5139,7 @@ "cronPresetMonthly": "매월 (1일)", "cronPresetWeekly": "매주 (월요일)", "cronRequired": "사용자 지정 스케줄에는 cron 표현식이 필요합니다", + "crontabGuru": "", "delete": "삭제", "deleteError": "루틴 삭제에 실패했습니다", "deleteMessage": "스케줄 {{name}}을(를) 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", @@ -5102,6 +5194,7 @@ "globalScope": "전체", "globalScoped": "이 스케줄은 전체 범위에서 생성됩니다.", "globalScopeTitle": "전체 범위", + "lastLabel": "", "loadRoutinesError": "루틴 불러오기 실패", "manualTriggerInfo": "이 루틴은 대시보드 또는 API를 통해 수동으로 트리거됩니다.", "modeAriaLabel": "실행 모드", @@ -5124,6 +5217,7 @@ "newAutomation": "새 자동화", "newRoutineHeading": "새 루틴", "newTitle": "새 스케줄", + "nextLabel": "", "noActiveProject": "활성 프로젝트 없음. 스케줄은 전체 범위에서 생성됩니다.", "noAutomations": "아직 자동화가 없습니다", "noStepsEmpty": "추가된 단계가 없습니다. 명령어 또는 AI 프롬프트 단계를 추가하여 시작하세요.", @@ -5154,6 +5248,7 @@ "runNameNow": "{{name}} 지금 실행", "running": "실행 중…", "runNow": "지금 실행", + "runsLabel": "", "saveChanges": "변경사항 저장", "saveStep": "단계 저장", "saving": "저장 중…", @@ -5233,6 +5328,9 @@ "webhookSecretLabel": "Webhook 시크릿 (선택 사항)", "webhookSecretPlaceholder": "선택 사항 — 미인증 웹훅은 비워두세요" }, + "scripts": { + "title": "" + }, "scriptsModal": { "addScript": "스크립트 추가", "addScriptsHint": "대시보드에서 자주 사용하는 명령어를 빠르게 실행할 스크립트를 추가하세요.", @@ -5660,6 +5758,7 @@ "enabling": "활성화 중…", "notConnected": "✗ 연결되지 않음", "probing": "로컬 CLI를 확인하는 중…", + "providerName": "", "test": "테스트", "testing": "테스트 중…" }, @@ -5695,6 +5794,7 @@ "githubConnectionFailed": "연결에 실패하거나 시간이 초과되었습니다.", "githubOauthConnected": "GitHub OAuth가 연결되었습니다. 이슈를 가져오고 풀 리퀘스트를 추적할 수 있습니다.", "githubOauthNotConnected": "GitHub OAuth가 아직 연결되지 않았습니다. 설정 → 인증에서 설정하거나, 지금 계속하고 나중에 연결할 수 있습니다.", + "githubProvider": "", "githubSkipped": "GitHub를 건너뛰었습니다. 설정 → 인증에서 언제든지 연결할 수 있습니다.", "goBackToStep": "{{label}}(으)로 돌아가기", "goToDashboard": "대시보드로 이동", @@ -5954,6 +6054,9 @@ "saving": "저장 중…", "view": "보기" }, + "stash": { + "copyReference": "" + }, "stashRecovery": { "applied": "적용됨", "apply": "적용", @@ -6710,7 +6813,6 @@ "subtaskButton": "하위 작업", "thinkingDefault": "기본값 ({{level}})", "thinkingHigh": "높음", - "thinkingXhigh": "매우 높음", "thinkingLabel": "사고", "thinkingLow": "낮음", "thinkingMedium": "중간", @@ -6971,6 +7073,7 @@ "workflowCheck": "워크플로우 확인" }, "terminal": { + "arrowKeysLabel": "", "clear": "지우기", "clearTerminal": "터미널 지우기", "closeTab": "탭 닫기", @@ -7289,6 +7392,7 @@ "foreachSequential": "순차", "foreachShared": "공유 워크트리", "foreachWorktree": "단계별 워크트리", + "gateBadge": "", "gateBlocks": "게이트(차단)", "gateMode": "게이트 모드", "insertTemplate": "{{name}} 템플릿 삽입", @@ -7345,6 +7449,7 @@ "startEntryColumn": "", "startEntryColumnAuto": "", "startNote": "", + "stepBadge": "", "stepExecuteLabel": "단계 실행", "templateFilterLabel": "템플릿 필터", "templateFilterPlaceholder": "템플릿 필터", @@ -7353,6 +7458,7 @@ "templatesFragments": "조각", "templatesPluginSteps": "플러그인 단계", "templatesSection": "템플릿", + "timeoutMs": "", "trivialGraphHint": "이 워크플로는 시작 → 끝만 실행합니다. 위 팔레트에서 단계를 추가하여 구성하세요." }, "workflows": { @@ -7418,14 +7524,6 @@ "templateSectionBuiltin": "기본 제공 워크플로", "templateSectionYours": "내 워크플로" }, - "workflowSwitcher": { - "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", - "done": "Done", - "inProgress": "In Progress", - "label": "Workflow", - "todo": "Todo", - "triggerAria": "Select workflow. Current workflow: {{name}}" - }, "workflowSelector": { "switchActiveMessage": "", "switchActiveTitle": "", @@ -7485,6 +7583,14 @@ "widget": "", "widgetDefault": "" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workspace": { "projectRoot": "프로젝트 루트", "selectWorkspace": "워크스페이스 선택", diff --git a/packages/i18n/locales/zh-CN/app.json b/packages/i18n/locales/zh-CN/app.json index 050a2eaf45..9ff6201f5d 100644 --- a/packages/i18n/locales/zh-CN/app.json +++ b/packages/i18n/locales/zh-CN/app.json @@ -31,6 +31,12 @@ "update": "更新", "yes": "是" }, + "activityFeed": { + "emptyHint": "", + "eventCount_one": "", + "eventCount_other": "", + "noRecentActivity": "" + }, "activityLog": { "activeFilters": "活跃过滤器:", "allEvents": "所有事件", @@ -64,6 +70,7 @@ "noActivityRecorded": "尚未记录活动", "noMatchingActivity": "没有活动与当前过滤器匹配", "notMerged": "未合并", + "projectFilterBadge": "", "refresh": "刷新", "time": { "daysAgo_one": "", @@ -74,7 +81,8 @@ "minutesAgo_one": "", "minutesAgo_other": "" }, - "title": "活动日志" + "title": "活动日志", + "typeFilterBadge": "" }, "agentError": { "copied": "已复制", @@ -354,6 +362,7 @@ "bundleTitle": "代码包", "cacheHitRatio": "缓存命中率", "cacheReadTokens": "缓存读取", + "cacheWindowSummary": "", "cacheWriteTokens": "缓存写入", "cancel": "取消", "cancelCustomInterval": "取消自定义间隔", @@ -361,6 +370,8 @@ "chainOfCommand": "指挥链", "change": "更改", "changeRole": "点击更改角色", + "charactersCount_one": "", + "charactersCount_other": "", "chooseFile": "选择文件", "clearAgents": "清除代理", "clearSkills": "清除技能", @@ -408,6 +419,7 @@ "deleteTitle": "删除智能体", "deletionNotAvailable": "代理运行时无法删除。", "deletionPermanent": "这将永久删除代理及其所有相关数据。", + "detailLoadingLabel": "", "details": "详情", "dialogAriaLabel": "创建新代理", "dialogTitle": "新代理", @@ -452,6 +464,7 @@ "from": "来自", "generateHint": "描述代理的角色,让 AI 生成规格说明", "generateWithAI": "使用 AI 生成", + "generateWithAiLabel": "", "generation": { "collapse": "折叠", "expand": "展开", @@ -536,9 +549,12 @@ "importingAgentsAndSkills": "正在导入 {{agentCount}} 个 Agent 和 {{skillCount}} 个技能...", "importingSkills_one": "", "importingSkills_other": "", + "importReportsTo": "", + "importSkills": "", "inbox": "收件箱", "inheritingProjectDefault": "继承项目默认值", "inheritProjectDefault": "继承项目默认", + "inlineInstructions": "", "inlineMemoryFieldHint": "此记忆直接嵌入代理的上下文中。", "inlineMemoryHint": "每次心跳时注入的简短记忆。", "inlineMemoryLabel": "内联记忆", @@ -564,6 +580,8 @@ "intentPrompt": "您希望此代理执行什么操作?", "interval": "间隔", "interviewDraftApplied": "访谈草稿已应用", + "kTokens_one": "", + "kTokens_other": "", "last24h": "最近 24 小时", "last7d": "最近 7 天", "lastHeartbeat": "上次:{{time}}", @@ -753,6 +771,7 @@ "output": "输出", "outputTokens": "输出令牌", "overview": "概览", + "overviewLabel": "", "parsing": "正在解析…", "pause": "暂停", "pauseAction": "暂停", @@ -1037,7 +1056,6 @@ "templateCompact": "紧凑", "templateDefault": "默认", "thinkingHigh": "高", - "thinkingXhigh": "极高", "thinkingLevel": "思考级别", "thinkingLow": "低", "thinkingMedium": "中", @@ -1045,6 +1063,7 @@ "thinkingOff": "关闭", "thinkingXhigh": "极高", "throughput": "吞吐量", + "timeSinceLastHeartbeat": "", "title": "智能体", "titleLabel": "标题", "titlePlaceholder": "例如:高级代码审查员", @@ -1091,6 +1110,7 @@ }, "testMode": "测试模式 — 无实际 AI 调用" }, + "appName": "", "approval": { "dismissBanner": "关闭审批通知横幅", "needAttention_one": "", @@ -1175,6 +1195,9 @@ "openPr": "打开 PR", "unavailable": "分支组不可用" }, + "branchGroups": { + "prNumber": "" + }, "capacity": { "dismiss": "关闭容量警告", "risk": "容量风险:", @@ -1322,9 +1345,13 @@ "thinking": "思考中", "thinkingLabel": "思考", "thinkingStatus": "思考中……", + "toolArgsLabel": "", + "toolArgsPreview": "", "toolCalls": "工具调用", "toolCallsCount_one": "", "toolCallsCount_other": "", + "toolResultLabel": "", + "toolResultPreview": "", "typeMessage": "输入消息...", "unreadMessages": "未读消息", "untitledSession": "无标题", @@ -1353,9 +1380,11 @@ "versionMismatchSuffix": "更新以保持同步。" }, "cliBinary": { + "binaryLabel": "", "checking": "检查中…", "copied": "已复制", "copy": "复制", + "expectedVersion": "", "failedExit": "安装失败(退出代码 {{code}})", "heading": "CLI 二进制文件", "help": "安装全局 CLI 可以让您从任何终端运行 fn 和 fusion。自动化和脚本可以通过 npx 工作而不需要它,但全局安装更快更方便。", @@ -1363,13 +1392,15 @@ "installWithNpm": "使用 npm 安装", "notOnPath": "在 PATH 上未找到 fn 或 fusion。", "orCopyLabel": "或自行复制并运行:", + "pathLabel": "", "refresh": "刷新", "reinstall": "重新安装", "stateCheckDisabled": "检查已禁用", "stateInstalled": "已安装", "stateMissing": "未安装", "stateVersionMismatch": "版本不匹配", - "succeededDuration": "安装成功,耗时 {{duration}} 秒" + "succeededDuration": "安装成功,耗时 {{duration}} 秒", + "versionLabel": "" }, "cliChat": { "queued_one": "", @@ -1509,7 +1540,6 @@ "title": "" }, "orgChart": { - "description": "", "empty": "", "error": "", "loading": "", @@ -1637,17 +1667,24 @@ "uniqueModels": "" }, "productivity": { + "averageDuration": "", "byLanguage": "", "commits": "", + "completedTasks": "", + "durationTitle": "", + "durationUnavailable": "", "hoursSaved": "", "hoursSavedEstimate": "", "hoursSavedUnavailable": "", "languagePie": "", "loc": "", "locUnavailable": "", + "medianDuration": "", "modifiedFiles": "", "outcomesTitle": "", + "p90Duration": "", "pullRequests": "", + "totalDuration": "", "volumeHint": "", "volumeTitle": "" }, @@ -1694,6 +1731,7 @@ "ecosystem": "", "github": "", "missionControl": "", + "nodes": "", "overview": "", "productivity": "", "reliability": "", @@ -1910,6 +1948,8 @@ "clear": "清除", "command": "命令", "configuration": "配置", + "configurationLabel": "", + "controlsHeaderLabel": "", "embedded": "嵌入式", "embeddedPreviewDisabled": "嵌入式预览已禁用。在单独的浏览器标签页中打开您的应用程序。", "enterFullscreen": "进入日志全屏", @@ -1928,6 +1968,7 @@ "loadingOlderLogs": "加载较早的日志中…", "loadOlderLogs": "加载较早的日志", "logs": "日志", + "logsLabel": "", "lostConnection": "日志流连接已断开。", "manual": "手动", "matchCount_one": "", @@ -1946,6 +1987,7 @@ "preview": "预览", "previewBlocked": "预览被阻止", "previewFailed": "预览失败", + "previewLabel": "", "previewUrlOverride": "预览URL覆盖", "refreshPreview": "刷新预览", "restart": "重启", @@ -2124,14 +2166,17 @@ "noTaskDocuments": "还没有任务文档。", "openTask": "打开任务", "plain": "纯文本", + "projectFilePreviewLabel": "", "projectFiles": "项目文件", "projectFilesTab": "项目文件", + "projectMarkdownFilesLabel": "", "resultCount_one": "", "resultCount_other": "", "retry": "重试", "retryLoading": "重试加载文档", "searchProjectFiles": "搜索项目Markdown文件…", "searchTaskDocuments": "搜索任务文档…", + "sectionsLabel": "", "selectFile": "选择Markdown文件以查看其内容。", "showHidden": "显示隐藏的项目文件", "showHiddenFiles": "显示隐藏文件", @@ -2185,6 +2230,12 @@ "failedToLoadFile": "加载文件失败", "failedToSaveFile": "保存文件失败" }, + "errorBoundary": { + "genericError": "", + "reloadPage": "", + "retry": "", + "sectionError": "" + }, "evals": { "allRuns": "所有运行", "disabledTitle": "定时评估已禁用", @@ -2223,6 +2274,8 @@ "overlapBottleneck_one": "", "overlapBottleneck_other": "", "overlapQueue": "重叠队列", + "overlapSummary_one": "", + "overlapSummary_other": "", "queued": "已排队", "running": "运行中", "secondsAgo_one": "", @@ -2233,7 +2286,8 @@ "stateRunning": "运行中", "status": "执行器状态", "stuck": "卡顿", - "temporary": "临时" + "temporary": "临时", + "todoStatus": "" }, "fileBrowser": { "back": "返回文件列表", @@ -2640,6 +2694,7 @@ "stashDropped": "储藏已丢弃", "stashMessagePlaceholder": "储藏信息(可选)", "stashPopped": "已弹出储藏", + "stashRef": "", "statusLabelBranch": "分支", "statusLabelCommit": "提交", "statusLabelIntegrationBranch": "集成分支", @@ -2693,6 +2748,13 @@ "worktreesTotal_one": "", "worktreesTotal_other": "" }, + "githubStarPrompt": { + "body": "", + "dismissLabel": "", + "regionLabel": "", + "starOnGitHub": "", + "title": "" + }, "goals": { "activeCount_one": "", "activeCount_other": "", @@ -2729,6 +2791,9 @@ "unlinkMissionError": "", "updateError": "现在无法更新目标状态。请重试。" }, + "groups": { + "prLinkLabel": "" + }, "groupTask": { "abandonGroup": "", "ariaLabel": "分支组详情", @@ -2767,6 +2832,7 @@ "documentsView": "文档视图", "engineOptions": "引擎选项", "evalsView": "评估", + "fusionLogo": "", "gitManager": "Git 管理", "goalsView": "目标", "importFromGitHub": "从 GitHub 导入", @@ -2786,7 +2852,6 @@ "moreHeaderActions": "更多标题栏操作", "moreViews": "更多视图", "noBaseBranch": "无基础分支", - "nodes": "节点", "noScriptsAddOne": "暂无脚本,添加一个…", "noScriptsConfigured": "未配置脚本", "noWorkingBranch": "无工作分支", @@ -2927,6 +2992,7 @@ "archiveTitle": "存档此洞察", "archiving": "正在存档\"{{title}}\"...", "backlogHealth": "积压健康", + "categoriesLabel": "", "configureModel": "配置洞察生成模型", "configureModelTitle": "配置模型", "createTaskLabel": "从此洞察创建任务", @@ -3017,6 +3083,9 @@ "verificationCriteria": "验证标准", "yes": "是" }, + "issues": { + "noIssuesFound": "" + }, "lane": { "collapse": "", "expand": "" @@ -3129,8 +3198,7 @@ "unpauseUnavailable": "恢复操作不可用", "useProjectDefault": "使用项目默认", "viewOptions": "视图选项", - "workflowLabel": "", - "workflowSelectLabel": "" + "workflowLabel": "" }, "mailbox": { "agent": "代理", @@ -3199,6 +3267,7 @@ "replyingTo": "回复 {{preview}}", "replyingToMessage": "回复消息", "replyLoadFailed": "加载回复消息失败。点击重试。", + "resizeMessageListPane": "", "selectMessageToRead": "选择要阅读的消息", "system": "系统", "timeDaysAgo_one": "", @@ -3212,6 +3281,7 @@ "to": "至", "toLabel": "至:", "toPrefix": "至:{{recipient}}", + "toRecipient": "", "typeAgentToAgent": "代理 ↔ 代理", "typeAgentToUser": "代理 → 你", "typeSystem": "系统", @@ -3387,11 +3457,13 @@ "missions": { "acceptance": "验收标准:", "acceptanceCriteriaOptional": "验收标准(可选)", + "acceptanceCriteriaPrefix": "", "actionGenerating": "生成中…", "actionResume": "继续", "actionRetry": "重试", "actionReview": "审核", "activateSlice": "激活切片", + "activityCount": "", "activityTime": "活动 {{time}}", "actual": "实际:{{value}}", "addAssertion": "添加断言", @@ -3518,6 +3590,7 @@ "filterSlices": "切片和里程碑事件", "filterStateChanges": "状态变更", "filterTasks": "任务事件", + "fixLineageButton": "", "generatedFixFeatures": "已生成修复功能:", "generatedFixFeaturesTitle": "已生成修复功能", "generatedFromFeature": "从功能生成:{{id}}", @@ -3545,6 +3618,8 @@ "linkButton": "链接", "linkedCount_one": "", "linkedCount_other": "", + "linkedCountShort_one": "", + "linkedCountShort_other": "", "linkedFeaturesCount_one": "", "linkedFeaturesCount_other": "", "linkedFeaturesLabel": "关联功能", @@ -3605,6 +3680,7 @@ "planStateNeedsUpdate": "需要更新", "planStateNotPlanned": "未规划", "planStatePlanned": "已规划", + "planTargetTitle": "", "planTitle": "用 AI 规划任务", "prepareQuestion": "准备下一个问题...", "progressText_one": "", @@ -3711,6 +3787,7 @@ "updateButton": "更新", "updated": "任务已更新", "validateFeature": "验证功能", + "validationRoundAttempts": "", "validationRoundsCount_one": "", "validationRoundsCount_other": "", "validationRoundsLabel_one": "", @@ -3775,7 +3852,6 @@ "options": { "default": "默认值", "high": "高", - "xhigh": "极高", "low": "低", "medium": "中等", "minimal": "最小", @@ -3827,10 +3903,12 @@ "board": "看板", "chat": "聊天", "chatUnreadAriaLabel": "未读聊天回复", + "collapseSidebar": "", "commandCenter": "", "devServer": "开发服务器", "documents": "文档", "evals": "评估", + "expandSidebar": "", "files": "文件", "gitManager": "Git 管理器", "goals": "目标", @@ -3845,16 +3923,17 @@ "missions": "任务集", "more": "更多", "moreSheetTitle": "导航", - "nodes": "节点", "noScriptsAddOne": "无脚本 — 添加一个…", "planning": "规划", "primaryNavAriaLabel": "主导航", "projects": "项目", "research": "研究", + "resizeSidebar": "", "scriptsSubmenuAriaLabel": "脚本子菜单", "secrets": "密钥", "settings": "设置", "showScriptsAriaLabel": "显示脚本", + "sidebarAriaLabel": "", "skills": "技能", "stashRecovery": "储藏恢复", "tasks": "任务", @@ -3960,12 +4039,14 @@ "discoverBeforeAdding": "在添加此节点之前发现远程项目。", "discoveredCount_one": "", "discoveredCount_other": "", + "discoveredRemoteProjectsLabel": "", "discovering": "正在发现...", "discoverRemoteProjects": "发现远程项目", "discoveryFailed": "无法发现远程项目", "dismissError": "关闭错误", "docker": "Docker", "dockerBadge": "托管 Docker 节点", + "dockerConfigMeta": "", "dockerConfigSaveFailed": "保存 Docker 配置失败", "dockerConfigSaveSuccess": "Docker 配置已保存", "dockerConfiguration": "Docker 配置", @@ -4083,6 +4164,7 @@ "name": "构建服务器", "optional": "可选" }, + "projectPathMappingsLabel": "", "provideManually": "手动提供密钥", "pulling": "拉取中…", "pullSettings": "拉取设置", @@ -4281,6 +4363,9 @@ "testFailed": "测试失败——查看上面的状态。", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "" + }, "piManager": { "addButton": "添加", "discoveredDescription": "从包和配置的路径解析的已安装扩展。", @@ -4884,6 +4969,7 @@ "createTask": "创建任务", "createTaskButton": "创建任务", "createTaskTitle": "从发现创建任务", + "currentDefaults": "", "defaultFindingHeading": "研究发现", "descriptionLabel": "描述", "disabled": "此项目的研究功能已禁用。", @@ -4906,6 +4992,7 @@ "noRunsYet": "尚无研究运行", "noSourcesAvailable": "此项目没有可用的已启用研究来源。", "noSummaryYet": "尚无总结。", + "notSet": "", "openAuthSettings": "打开身份验证设置", "openResearchSettings": "打开研究设置", "priorityHigh": "高", @@ -4966,6 +5053,7 @@ "intro": "查看有效执行节点并控制每个任务的节点覆盖。", "localNoConfiguration": "本地(未配置路由)", "lockedWhileActive": "此任务处于活动状态时路由被锁定。在任务不再活动之前,无法更改节点覆盖。", + "nodeOptionLabel": "", "nodeUnavailable": "节点不可用或未知", "overrideCleared": "节点覆盖已清除", "overrideSection": "节点覆盖", @@ -4983,6 +5071,9 @@ "unhealthy": "不健康", "useProjectDefault": "使用项目默认值" }, + "runtimes": { + "nousResearchLogoAlt": "" + }, "schedule": { "actionAiPrompt": "AI 提示", "actionCommand": "命令", @@ -5048,6 +5139,7 @@ "cronPresetMonthly": "每月(1日)", "cronPresetWeekly": "每周(周一)", "cronRequired": "自定义日程需要 cron 表达式", + "crontabGuru": "", "delete": "删除", "deleteError": "删除例程失败", "deleteMessage": "删除计划 {{name}}?此操作无法撤销。", @@ -5102,6 +5194,7 @@ "globalScope": "全局(用户级)自动化", "globalScoped": "此日程将在全球范围内创建。", "globalScopeTitle": "全球范围", + "lastLabel": "", "loadRoutinesError": "加载例程失败", "manualTriggerInfo": "此例程将通过控制台或 API 手动触发。", "modeAriaLabel": "执行模式", @@ -5124,6 +5217,7 @@ "newAutomation": "新自动化", "newRoutineHeading": "新建例程", "newTitle": "新日程", + "nextLabel": "", "noActiveProject": "没有活跃的项目。日程将在全球范围内创建。", "noAutomations": "还没有自动化", "noStepsEmpty": "尚未添加步骤。添加命令或 AI 提示步骤以开始。", @@ -5154,6 +5248,7 @@ "runNameNow": "立即运行 {{name}}", "running": "运行中…", "runNow": "立即运行", + "runsLabel": "", "saveChanges": "保存更改", "saveStep": "保存步骤", "saving": "保存中…", @@ -5233,6 +5328,9 @@ "webhookSecretLabel": "Webhook 密钥(可选)", "webhookSecretPlaceholder": "可选——无需身份验证的 webhook 请留空" }, + "scripts": { + "title": "" + }, "scriptsModal": { "addScript": "添加脚本", "addScriptsHint": "添加脚本可从仪表板快速运行常用命令。", @@ -5660,6 +5758,7 @@ "enabling": "启用中…", "notConnected": "✗ 未连接", "probing": "探测本地 CLI…", + "providerName": "", "test": "测试", "testing": "测试中…" }, @@ -5695,6 +5794,7 @@ "githubConnectionFailed": "连接失败或超时。", "githubOauthConnected": "GitHub OAuth 已连接。您可以导入问题并跟踪拉取请求。", "githubOauthNotConnected": "GitHub OAuth 尚未连接。您可以在设置 → 身份验证中进行设置,或者现在继续,稍后再连接。", + "githubProvider": "", "githubSkipped": "已跳过 GitHub。您随时可以从设置 → 身份验证进行连接。", "goBackToStep": "返回{{label}}", "goToDashboard": "前往仪表板", @@ -5954,6 +6054,9 @@ "saving": "保存中…", "view": "查看" }, + "stash": { + "copyReference": "" + }, "stashRecovery": { "applied": "已应用", "apply": "应用", @@ -6710,7 +6813,6 @@ "subtaskButton": "子任务", "thinkingDefault": "默认({{level}})", "thinkingHigh": "高", - "thinkingXhigh": "极高", "thinkingLabel": "思考", "thinkingLow": "低", "thinkingMedium": "中", @@ -6971,6 +7073,7 @@ "workflowCheck": "工作流检查" }, "terminal": { + "arrowKeysLabel": "", "clear": "清空", "clearTerminal": "清空终端", "closeTab": "关闭标签页", @@ -7289,6 +7392,7 @@ "foreachSequential": "顺序", "foreachShared": "共享工作树", "foreachWorktree": "每步骤工作树", + "gateBadge": "", "gateBlocks": "关卡(阻断)", "gateMode": "关卡模式", "insertTemplate": "插入模板 {{name}}", @@ -7345,6 +7449,7 @@ "startEntryColumn": "", "startEntryColumnAuto": "", "startNote": "", + "stepBadge": "", "stepExecuteLabel": "步骤执行", "templateFilterLabel": "筛选模板", "templateFilterPlaceholder": "筛选模板", @@ -7353,6 +7458,7 @@ "templatesFragments": "片段", "templatesPluginSteps": "插件步骤", "templatesSection": "模板", + "timeoutMs": "", "trivialGraphHint": "此工作流仅运行开始→结束。从上方面板添加步骤以构建工作流。" }, "workflows": { @@ -7418,14 +7524,6 @@ "templateSectionBuiltin": "内置工作流", "templateSectionYours": "我的工作流" }, - "workflowSwitcher": { - "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", - "done": "Done", - "inProgress": "In Progress", - "label": "Workflow", - "todo": "Todo", - "triggerAria": "Select workflow. Current workflow: {{name}}" - }, "workflowSelector": { "switchActiveMessage": "", "switchActiveTitle": "", @@ -7485,6 +7583,14 @@ "widget": "", "widgetDefault": "" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workspace": { "projectRoot": "项目根目录", "selectWorkspace": "选择工作区", diff --git a/packages/i18n/locales/zh-TW/app.json b/packages/i18n/locales/zh-TW/app.json index 6488b76c2b..76e4d08205 100644 --- a/packages/i18n/locales/zh-TW/app.json +++ b/packages/i18n/locales/zh-TW/app.json @@ -31,6 +31,12 @@ "update": "更新", "yes": "是" }, + "activityFeed": { + "emptyHint": "", + "eventCount_one": "", + "eventCount_other": "", + "noRecentActivity": "" + }, "activityLog": { "activeFilters": "活躍過濾器:", "allEvents": "所有事件", @@ -64,6 +70,7 @@ "noActivityRecorded": "尚未記錄活動", "noMatchingActivity": "沒有活動與目前過濾器匹配", "notMerged": "未合併", + "projectFilterBadge": "", "refresh": "重新整理", "time": { "daysAgo_one": "", @@ -74,7 +81,8 @@ "minutesAgo_one": "", "minutesAgo_other": "" }, - "title": "活動日誌" + "title": "活動日誌", + "typeFilterBadge": "" }, "agentError": { "copied": "已複製", @@ -354,6 +362,7 @@ "bundleTitle": "程式碼套件", "cacheHitRatio": "快取命中率", "cacheReadTokens": "快取讀取", + "cacheWindowSummary": "", "cacheWriteTokens": "快取寫入", "cancel": "取消", "cancelCustomInterval": "取消自訂間隔", @@ -361,6 +370,8 @@ "chainOfCommand": "指揮鏈", "change": "變更", "changeRole": "點擊以變更角色", + "charactersCount_one": "", + "charactersCount_other": "", "chooseFile": "選擇檔案", "clearAgents": "清除代理", "clearSkills": "清除技能", @@ -408,6 +419,7 @@ "deleteTitle": "刪除智能體", "deletionNotAvailable": "代理執行時無法刪除。", "deletionPermanent": "這將永久刪除代理及其所有相關資料。", + "detailLoadingLabel": "", "details": "詳情", "dialogAriaLabel": "建立新代理程式", "dialogTitle": "新代理程式", @@ -452,6 +464,7 @@ "from": "來自", "generateHint": "描述代理程式的角色,讓 AI 生成規格說明", "generateWithAI": "使用 AI 生成", + "generateWithAiLabel": "", "generation": { "collapse": "摺疊", "expand": "展開", @@ -536,9 +549,12 @@ "importingAgentsAndSkills": "正在匯入 {{agentCount}} 個 Agent 和 {{skillCount}} 個技能...", "importingSkills_one": "", "importingSkills_other": "", + "importReportsTo": "", + "importSkills": "", "inbox": "收件匣", "inheritingProjectDefault": "繼承專案預設值", "inheritProjectDefault": "繼承專案預設", + "inlineInstructions": "", "inlineMemoryFieldHint": "此記憶直接嵌入代理的上下文中。", "inlineMemoryHint": "每次心跳時注入的簡短記憶。", "inlineMemoryLabel": "內聯記憶", @@ -564,6 +580,8 @@ "intentPrompt": "您希望此代理執行什麼操作?", "interval": "間隔", "interviewDraftApplied": "訪談草稿已套用", + "kTokens_one": "", + "kTokens_other": "", "last24h": "最近 24 小時", "last7d": "最近 7 天", "lastHeartbeat": "上次:{{time}}", @@ -753,6 +771,7 @@ "output": "輸出", "outputTokens": "輸出令牌", "overview": "概覽", + "overviewLabel": "", "parsing": "正在解析…", "pause": "暫停", "pauseAction": "暫停", @@ -1037,7 +1056,6 @@ "templateCompact": "緊湊", "templateDefault": "預設", "thinkingHigh": "高", - "thinkingXhigh": "極高", "thinkingLevel": "思考級別", "thinkingLow": "低", "thinkingMedium": "中", @@ -1045,6 +1063,7 @@ "thinkingOff": "關閉", "thinkingXhigh": "極高", "throughput": "吞吐量", + "timeSinceLastHeartbeat": "", "title": "智能體", "titleLabel": "標題", "titlePlaceholder": "例如:資深程式碼審查員", @@ -1091,6 +1110,7 @@ }, "testMode": "測試模式 — 無實際 AI 呼叫" }, + "appName": "", "approval": { "dismissBanner": "關閉審批通知橫幅", "needAttention_one": "", @@ -1175,6 +1195,9 @@ "openPr": "開啟 PR", "unavailable": "分支群組無法使用" }, + "branchGroups": { + "prNumber": "" + }, "capacity": { "dismiss": "關閉容量警告", "risk": "容量風險:", @@ -1322,9 +1345,13 @@ "thinking": "思考中", "thinkingLabel": "思考", "thinkingStatus": "思考中……", + "toolArgsLabel": "", + "toolArgsPreview": "", "toolCalls": "工具呼叫", "toolCallsCount_one": "", "toolCallsCount_other": "", + "toolResultLabel": "", + "toolResultPreview": "", "typeMessage": "輸入訊息...", "unreadMessages": "未讀訊息", "untitledSession": "未命名", @@ -1353,9 +1380,11 @@ "versionMismatchSuffix": "更新以保持同步。" }, "cliBinary": { + "binaryLabel": "", "checking": "檢查中…", "copied": "已複製", "copy": "複製", + "expectedVersion": "", "failedExit": "安裝失敗(結束代碼 {{code}})", "heading": "CLI 二進制檔", "help": "安裝全域 CLI 可讓您從任何終端執行 fn 和 fusion。自動化和指令可以通過 npx 運作而不需要它,但全域安裝更快更方便。", @@ -1363,13 +1392,15 @@ "installWithNpm": "使用 npm 安裝", "notOnPath": "在 PATH 上找不到 fn 或 fusion。", "orCopyLabel": "或自行複製並執行:", + "pathLabel": "", "refresh": "重新整理", "reinstall": "重新安裝", "stateCheckDisabled": "檢查已停用", "stateInstalled": "已安裝", "stateMissing": "未安裝", "stateVersionMismatch": "版本不符", - "succeededDuration": "安裝成功,耗時 {{duration}} 秒" + "succeededDuration": "安裝成功,耗時 {{duration}} 秒", + "versionLabel": "" }, "cliChat": { "queued_one": "", @@ -1509,7 +1540,6 @@ "title": "" }, "orgChart": { - "description": "", "empty": "", "error": "", "loading": "", @@ -1637,17 +1667,24 @@ "uniqueModels": "" }, "productivity": { + "averageDuration": "", "byLanguage": "", "commits": "", + "completedTasks": "", + "durationTitle": "", + "durationUnavailable": "", "hoursSaved": "", "hoursSavedEstimate": "", "hoursSavedUnavailable": "", "languagePie": "", "loc": "", "locUnavailable": "", + "medianDuration": "", "modifiedFiles": "", "outcomesTitle": "", + "p90Duration": "", "pullRequests": "", + "totalDuration": "", "volumeHint": "", "volumeTitle": "" }, @@ -1694,6 +1731,7 @@ "ecosystem": "", "github": "", "missionControl": "", + "nodes": "", "overview": "", "productivity": "", "reliability": "", @@ -1910,6 +1948,8 @@ "clear": "清除", "command": "指令", "configuration": "設定", + "configurationLabel": "", + "controlsHeaderLabel": "", "embedded": "嵌入式", "embeddedPreviewDisabled": "嵌入式預覽已停用。在單獨的瀏覽器分頁中開啟您的應用程式。", "enterFullscreen": "進入日誌全螢幕", @@ -1928,6 +1968,7 @@ "loadingOlderLogs": "載入較早的日誌中…", "loadOlderLogs": "載入較早的日誌", "logs": "日誌", + "logsLabel": "", "lostConnection": "日誌串流連線已斷開。", "manual": "手動", "matchCount_one": "", @@ -1946,6 +1987,7 @@ "preview": "預覽", "previewBlocked": "預覽被阻止", "previewFailed": "預覽失敗", + "previewLabel": "", "previewUrlOverride": "預覽URL覆蓋", "refreshPreview": "重新整理預覽", "restart": "重新啟動", @@ -2124,14 +2166,17 @@ "noTaskDocuments": "還沒有工作文件。", "openTask": "開啟工作", "plain": "純文字", + "projectFilePreviewLabel": "", "projectFiles": "專案檔案", "projectFilesTab": "專案檔案", + "projectMarkdownFilesLabel": "", "resultCount_one": "", "resultCount_other": "", "retry": "重試", "retryLoading": "重試載入文件", "searchProjectFiles": "搜尋專案 Markdown 檔案…", "searchTaskDocuments": "搜尋工作文件…", + "sectionsLabel": "", "selectFile": "選取 Markdown 檔案以檢視其內容。", "showHidden": "顯示隱藏的專案檔案", "showHiddenFiles": "顯示隱藏檔案", @@ -2185,6 +2230,12 @@ "failedToLoadFile": "載入檔案失敗", "failedToSaveFile": "儲存檔案失敗" }, + "errorBoundary": { + "genericError": "", + "reloadPage": "", + "retry": "", + "sectionError": "" + }, "evals": { "allRuns": "所有運行", "disabledTitle": "定時評估已禁用", @@ -2223,6 +2274,8 @@ "overlapBottleneck_one": "", "overlapBottleneck_other": "", "overlapQueue": "重疊隊列", + "overlapSummary_one": "", + "overlapSummary_other": "", "queued": "已排隊", "running": "執行中", "secondsAgo_one": "", @@ -2233,7 +2286,8 @@ "stateRunning": "執行中", "status": "執行器狀態", "stuck": "卡住", - "temporary": "暫時" + "temporary": "暫時", + "todoStatus": "" }, "fileBrowser": { "back": "返回檔案清單", @@ -2640,6 +2694,7 @@ "stashDropped": "儲藏已丟棄", "stashMessagePlaceholder": "儲藏訊息(可選)", "stashPopped": "已彈出儲藏", + "stashRef": "", "statusLabelBranch": "分支", "statusLabelCommit": "提交", "statusLabelIntegrationBranch": "整合分支", @@ -2693,6 +2748,13 @@ "worktreesTotal_one": "", "worktreesTotal_other": "" }, + "githubStarPrompt": { + "body": "", + "dismissLabel": "", + "regionLabel": "", + "starOnGitHub": "", + "title": "" + }, "goals": { "activeCount_one": "", "activeCount_other": "", @@ -2729,6 +2791,9 @@ "unlinkMissionError": "", "updateError": "現在無法更新目標狀態。請重試。" }, + "groups": { + "prLinkLabel": "" + }, "groupTask": { "abandonGroup": "", "ariaLabel": "分支群組詳情", @@ -2767,6 +2832,7 @@ "documentsView": "文件檢視", "engineOptions": "引擎選項", "evalsView": "評估", + "fusionLogo": "", "gitManager": "Git 管理員", "goalsView": "目標", "importFromGitHub": "從 GitHub 匯入", @@ -2786,7 +2852,6 @@ "moreHeaderActions": "更多頁首動作", "moreViews": "更多檢視", "noBaseBranch": "無基礎分支", - "nodes": "節點", "noScriptsAddOne": "尚無指令碼,請新增…", "noScriptsConfigured": "未設定指令碼", "noWorkingBranch": "無工作分支", @@ -2927,6 +2992,7 @@ "archiveTitle": "存檔此洞察", "archiving": "正在存檔\"{{title}}\"...", "backlogHealth": "待辦事項健康狀況", + "categoriesLabel": "", "configureModel": "設定洞察生成模型", "configureModelTitle": "設定模型", "createTaskLabel": "從此洞察建立任務", @@ -3017,6 +3083,9 @@ "verificationCriteria": "驗證標準", "yes": "是" }, + "issues": { + "noIssuesFound": "" + }, "lane": { "collapse": "", "expand": "" @@ -3129,8 +3198,7 @@ "unpauseUnavailable": "恢復操作無法使用", "useProjectDefault": "使用專案預設", "viewOptions": "檢視選項", - "workflowLabel": "", - "workflowSelectLabel": "" + "workflowLabel": "" }, "mailbox": { "agent": "代理", @@ -3199,6 +3267,7 @@ "replyingTo": "回復 {{preview}}", "replyingToMessage": "回覆訊息", "replyLoadFailed": "載入回覆訊息失敗。點擊重試。", + "resizeMessageListPane": "", "selectMessageToRead": "選擇要閱讀的訊息", "system": "系統", "timeDaysAgo_one": "", @@ -3212,6 +3281,7 @@ "to": "至", "toLabel": "至:", "toPrefix": "至:{{recipient}}", + "toRecipient": "", "typeAgentToAgent": "代理 ↔ 代理", "typeAgentToUser": "代理 → 你", "typeSystem": "系統", @@ -3387,11 +3457,13 @@ "missions": { "acceptance": "驗收標準:", "acceptanceCriteriaOptional": "驗收標準(選填)", + "acceptanceCriteriaPrefix": "", "actionGenerating": "生成中…", "actionResume": "繼續", "actionRetry": "重試", "actionReview": "審核", "activateSlice": "啟動切片", + "activityCount": "", "activityTime": "活動 {{time}}", "actual": "實際:{{value}}", "addAssertion": "新增斷言", @@ -3518,6 +3590,7 @@ "filterSlices": "切片和里程碑事件", "filterStateChanges": "狀態變更", "filterTasks": "任務事件", + "fixLineageButton": "", "generatedFixFeatures": "已生成修復功能:", "generatedFixFeaturesTitle": "已生成修復功能", "generatedFromFeature": "從功能生成:{{id}}", @@ -3545,6 +3618,8 @@ "linkButton": "連結", "linkedCount_one": "", "linkedCount_other": "", + "linkedCountShort_one": "", + "linkedCountShort_other": "", "linkedFeaturesCount_one": "", "linkedFeaturesCount_other": "", "linkedFeaturesLabel": "關聯功能", @@ -3605,6 +3680,7 @@ "planStateNeedsUpdate": "需要更新", "planStateNotPlanned": "未規劃", "planStatePlanned": "已規劃", + "planTargetTitle": "", "planTitle": "用 AI 規劃任務", "prepareQuestion": "準備下一個問題...", "progressText_one": "", @@ -3711,6 +3787,7 @@ "updateButton": "更新", "updated": "任務已更新", "validateFeature": "驗證功能", + "validationRoundAttempts": "", "validationRoundsCount_one": "", "validationRoundsCount_other": "", "validationRoundsLabel_one": "", @@ -3775,7 +3852,6 @@ "options": { "default": "預設值", "high": "高", - "xhigh": "極高", "low": "低", "medium": "中等", "minimal": "最小", @@ -3827,10 +3903,12 @@ "board": "看板", "chat": "聊天", "chatUnreadAriaLabel": "未讀聊天回覆", + "collapseSidebar": "", "commandCenter": "", "devServer": "開發伺服器", "documents": "文件", "evals": "評估", + "expandSidebar": "", "files": "檔案", "gitManager": "Git 管理員", "goals": "目標", @@ -3845,16 +3923,17 @@ "missions": "任務集", "more": "更多", "moreSheetTitle": "導覽", - "nodes": "節點", "noScriptsAddOne": "無腳本 — 新增一個…", "planning": "規劃", "primaryNavAriaLabel": "主導覽", "projects": "專案", "research": "研究", + "resizeSidebar": "", "scriptsSubmenuAriaLabel": "腳本子選單", "secrets": "密鑰", "settings": "設定", "showScriptsAriaLabel": "顯示腳本", + "sidebarAriaLabel": "", "skills": "技能", "stashRecovery": "暫存恢復", "tasks": "任務", @@ -3960,12 +4039,14 @@ "discoverBeforeAdding": "在新增此節點之前探索遠端專案。", "discoveredCount_one": "", "discoveredCount_other": "", + "discoveredRemoteProjectsLabel": "", "discovering": "正在探索...", "discoverRemoteProjects": "探索遠端專案", "discoveryFailed": "無法探索遠端專案", "dismissError": "關閉錯誤", "docker": "Docker", "dockerBadge": "受管 Docker 節點", + "dockerConfigMeta": "", "dockerConfigSaveFailed": "儲存 Docker 設定失敗", "dockerConfigSaveSuccess": "Docker 設定已儲存", "dockerConfiguration": "Docker 設定", @@ -4083,6 +4164,7 @@ "name": "建置伺服器", "optional": "選用" }, + "projectPathMappingsLabel": "", "provideManually": "手動提供金鑰", "pulling": "拉取中…", "pullSettings": "拉取設定", @@ -4281,6 +4363,9 @@ "testFailed": "測試失敗——查看上面的狀態。", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "" + }, "piManager": { "addButton": "新增", "discoveredDescription": "從套件和設定的路徑解析的已安裝擴充功能。", @@ -4884,6 +4969,7 @@ "createTask": "建立工作", "createTaskButton": "建立任務", "createTaskTitle": "從發現建立任務", + "currentDefaults": "", "defaultFindingHeading": "研究發現", "descriptionLabel": "描述", "disabled": "此專案的研究功能已停用。", @@ -4906,6 +4992,7 @@ "noRunsYet": "尚無研究執行", "noSourcesAvailable": "此專案沒有可用的已啟用研究來源。", "noSummaryYet": "尚無摘要。", + "notSet": "", "openAuthSettings": "開啟驗證設定", "openResearchSettings": "開啟研究設定", "priorityHigh": "高", @@ -4966,6 +5053,7 @@ "intro": "檢視有效執行節點並控制每個工作的節點覆寫。", "localNoConfiguration": "本機(未設定路由)", "lockedWhileActive": "此工作為作用中時路由被鎖定。在工作不再作用中之前,無法更改節點覆寫。", + "nodeOptionLabel": "", "nodeUnavailable": "節點不可用或不明", "overrideCleared": "節點覆寫已清除", "overrideSection": "節點覆寫", @@ -4983,6 +5071,9 @@ "unhealthy": "不健康", "useProjectDefault": "使用專案預設值" }, + "runtimes": { + "nousResearchLogoAlt": "" + }, "schedule": { "actionAiPrompt": "AI 提示", "actionCommand": "命令", @@ -5048,6 +5139,7 @@ "cronPresetMonthly": "每月(1日)", "cronPresetWeekly": "每週(週一)", "cronRequired": "自訂排程需要 cron 表達式", + "crontabGuru": "", "delete": "刪除", "deleteError": "刪除例行程序失敗", "deleteMessage": "刪除排程 {{name}}?此操作無法復原。", @@ -5102,6 +5194,7 @@ "globalScope": "全域(使用者級)自動化", "globalScoped": "此排程將在全域範圍內建立。", "globalScopeTitle": "全域範圍", + "lastLabel": "", "loadRoutinesError": "載入例行程序失敗", "manualTriggerInfo": "此例行程序將透過控制台或 API 手動觸發。", "modeAriaLabel": "執行模式", @@ -5124,6 +5217,7 @@ "newAutomation": "新自動化", "newRoutineHeading": "新增例行程序", "newTitle": "新排程", + "nextLabel": "", "noActiveProject": "沒有活躍的專案。排程將在全域範圍內建立。", "noAutomations": "還沒有自動化", "noStepsEmpty": "尚未新增步驟。新增命令或 AI 提示步驟以開始。", @@ -5154,6 +5248,7 @@ "runNameNow": "立即執行 {{name}}", "running": "執行中…", "runNow": "立即執行", + "runsLabel": "", "saveChanges": "儲存變更", "saveStep": "保存步驟", "saving": "儲存中…", @@ -5233,6 +5328,9 @@ "webhookSecretLabel": "Webhook 密鑰(可選)", "webhookSecretPlaceholder": "可選——無需驗證的 webhook 請留空" }, + "scripts": { + "title": "" + }, "scriptsModal": { "addScript": "新增指令碼", "addScriptsHint": "新增指令碼可從儀表板快速執行常用命令。", @@ -5660,6 +5758,7 @@ "enabling": "啟用中…", "notConnected": "✗ 未連接", "probing": "探測本地 CLI…", + "providerName": "", "test": "測試", "testing": "測試中…" }, @@ -5695,6 +5794,7 @@ "githubConnectionFailed": "連接失敗或逾時。", "githubOauthConnected": "GitHub OAuth 已連接。您可以匯入問題並追蹤拉取請求。", "githubOauthNotConnected": "GitHub OAuth 尚未連接。您可以在設定 → 驗證中進行設定,或者現在繼續,稍後再連接。", + "githubProvider": "", "githubSkipped": "已略過 GitHub。您隨時可以從設定 → 驗證進行連接。", "goBackToStep": "返回{{label}}", "goToDashboard": "前往儀表板", @@ -5954,6 +6054,9 @@ "saving": "儲存中…", "view": "檢視" }, + "stash": { + "copyReference": "" + }, "stashRecovery": { "applied": "已套用", "apply": "應用", @@ -6710,7 +6813,6 @@ "subtaskButton": "子任務", "thinkingDefault": "預設({{level}})", "thinkingHigh": "高", - "thinkingXhigh": "極高", "thinkingLabel": "思考", "thinkingLow": "低", "thinkingMedium": "中", @@ -6971,6 +7073,7 @@ "workflowCheck": "工作流程檢查" }, "terminal": { + "arrowKeysLabel": "", "clear": "清空", "clearTerminal": "清空終端", "closeTab": "關閉分頁", @@ -7289,6 +7392,7 @@ "foreachSequential": "循序", "foreachShared": "共用工作樹", "foreachWorktree": "每步驟工作樹", + "gateBadge": "", "gateBlocks": "關卡(阻擋)", "gateMode": "關卡模式", "insertTemplate": "插入範本 {{name}}", @@ -7345,6 +7449,7 @@ "startEntryColumn": "", "startEntryColumnAuto": "", "startNote": "", + "stepBadge": "", "stepExecuteLabel": "執行步驟", "templateFilterLabel": "篩選範本", "templateFilterPlaceholder": "篩選範本", @@ -7353,6 +7458,7 @@ "templatesFragments": "片段", "templatesPluginSteps": "外掛步驟", "templatesSection": "範本", + "timeoutMs": "", "trivialGraphHint": "這個工作流程只會執行 start → end。請從上方的選盤新增步驟來建構它。" }, "workflows": { @@ -7418,14 +7524,6 @@ "templateSectionBuiltin": "內建工作流程", "templateSectionYours": "你的工作流程" }, - "workflowSwitcher": { - "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", - "done": "Done", - "inProgress": "In Progress", - "label": "Workflow", - "todo": "Todo", - "triggerAria": "Select workflow. Current workflow: {{name}}" - }, "workflowSelector": { "switchActiveMessage": "", "switchActiveTitle": "", @@ -7485,6 +7583,14 @@ "widget": "", "widgetDefault": "" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workspace": { "projectRoot": "項目根目錄", "selectWorkspace": "選擇工作區", diff --git a/packages/i18n/src/resources.d.ts b/packages/i18n/src/resources.d.ts index 696ea7af75..b330f2f11f 100644 --- a/packages/i18n/src/resources.d.ts +++ b/packages/i18n/src/resources.d.ts @@ -33,6 +33,12 @@ export default interface Resources { "update": "Update", "yes": "Yes" }, + "activityFeed": { + "emptyHint": "Activity will appear here when tasks are created, moved, or completed", + "eventCount_one": "{{count}} event", + "eventCount_other": "{{count}} events", + "noRecentActivity": "No recent activity" + }, "activityLog": { "activeFilters": "Active filters:", "allEvents": "All Events", @@ -66,6 +72,7 @@ export default interface Resources { "noActivityRecorded": "No activity recorded yet", "noMatchingActivity": "No activity matches the current filters", "notMerged": "Not merged", + "projectFilterBadge": "Project: {{project}}", "refresh": "Refresh", "time": { "daysAgo_one": "{{count}}d ago", @@ -76,7 +83,8 @@ export default interface Resources { "minutesAgo_one": "{{count}}m ago", "minutesAgo_other": "{{count}}m ago" }, - "title": "Activity Log" + "title": "Activity Log", + "typeFilterBadge": "Type: {{type}}" }, "agentError": { "copied": "Copied", @@ -356,6 +364,7 @@ export default interface Resources { "bundleTitle": "Bundle", "cacheHitRatio": "Cache Hit Ratio", "cacheReadTokens": "Cache Read", + "cacheWindowSummary": "{{percent}}% ({{cached}} / {{written}} / {{input}} / {{tasks}})", "cacheWriteTokens": "Cache Write", "cancel": "Cancel", "cancelCustomInterval": "Cancel custom interval", @@ -363,6 +372,8 @@ export default interface Resources { "chainOfCommand": "Chain of Command", "change": "Change", "changeRole": "Click to change role", + "charactersCount_one": "{{count}} characters", + "charactersCount_other": "{{count}} characters", "chooseFile": "Choose File", "clearAgents": "Clear agents", "clearSkills": "Clear skills", @@ -410,6 +421,7 @@ export default interface Resources { "deleted": "Agent deleted", "deletionNotAvailable": "Deletion is not available while the agent is running.", "deletionPermanent": "This will permanently delete the agent and all associated data.", + "detailLoadingLabel": "Agent detail loading", "details": "Details", "dialogAriaLabel": "Create new agent", "dialogTitle": "New Agent", @@ -454,6 +466,7 @@ export default interface Resources { "from": "From", "generateHint": "Describe your agent's role and let AI generate a specification", "generateWithAI": "Generate with AI", + "generateWithAiLabel": "Generate agent with AI", "generation": { "collapse": "Collapse", "expand": "Expand", @@ -533,6 +546,8 @@ export default interface Resources { "importButton": "Import {{label}}", "importComplete": "Import Complete", "importDescription": "Import agents from an Agent Companies package. Browse the companies.sh catalog to discover published agents, upload an AGENTS.md file, select a directory, or paste manifest content.", + "importReportsTo": " · reports to {{agent}}", + "importSkills": " · skills: {{skills}}", "importingAgentsAndSkills": "Importing {{agentCount}} agent{{agentPlural}} and {{skillCount}} skill{{skillPlural}}...", "importingAgents_one": "Importing {{count}} agent{{plural}}...", "importingAgents_other": "Importing {{count}} agent{{plural}}...", @@ -542,6 +557,7 @@ export default interface Resources { "inbox": "Inbox", "inheritProjectDefault": "Inherit project default", "inheritingProjectDefault": "Inheriting project default", + "inlineInstructions": "Inline Instructions", "inlineMemoryFieldHint": "This memory is embedded directly in the agent's context.", "inlineMemoryHint": "Short-form memory injected on every heartbeat.", "inlineMemoryLabel": "Inline Memory", @@ -566,6 +582,8 @@ export default interface Resources { "intentPrompt": "What do you want this agent to do?", "interval": "Interval", "interviewDraftApplied": "Interview draft applied", + "kTokens_one": "{{count}}k tokens", + "kTokens_other": "{{count}}k tokens", "last24h": "Last 24h", "last7d": "Last 7 days", "lastHeartbeat": "Last heartbeat", @@ -736,7 +754,7 @@ export default interface Resources { "startInterview": "Start interview", "startOnboarding": "Start onboarding", "thinking": "Thinking...", - "title": "AI Interview", + "title": "Agent Onboarding", "updatedDraftReady": "Updated draft ready for review", "yes": "yes" }, @@ -755,6 +773,7 @@ export default interface Resources { "output": "Output", "outputTokens": "Output", "overview": "Overview", + "overviewLabel": "Agents overview", "parsing": "Parsing…", "pause": "Pause", "pauseAction": "Pause", @@ -1046,6 +1065,7 @@ export default interface Resources { "thinkingOff": "Off", "thinkingXhigh": "Very High", "throughput": "Throughput", + "timeSinceLastHeartbeat": "Time since last heartbeat", "title": "Agents", "titleLabel": "Title", "titlePlaceholder": "e.g. Senior Engineer", @@ -1092,6 +1112,7 @@ export default interface Resources { }, "testMode": "Test mode — no real AI calls" }, + "appName": "Fusion", "approval": { "dismissBanner": "Dismiss approval notification banner", "needAttention_one": "{{count}} approval {{noun}} need your attention", @@ -1176,6 +1197,9 @@ export default interface Resources { "openPr": "Open PR", "unavailable": "Branch group unavailable" }, + "branchGroups": { + "prNumber": "PR #{{number}}" + }, "capacity": { "dismiss": "Dismiss capacity warning", "risk": "Capacity risk:", @@ -1323,9 +1347,13 @@ export default interface Resources { "thinking": "Thinking", "thinkingLabel": "Thinking", "thinkingStatus": "Thinking…", + "toolArgsLabel": "args", + "toolArgsPreview": "args: {{summary}}", "toolCalls": "Tool calls", "toolCallsCount_one": "{{count}} tool calls", "toolCallsCount_other": "{{count}} tool calls", + "toolResultLabel": "result", + "toolResultPreview": "result: {{summary}}", "typeMessage": "Type a message...", "unreadMessages": "Unread messages", "untitledSession": "Untitled", @@ -1354,9 +1382,11 @@ export default interface Resources { "versionMismatchSuffix": "Update to stay in sync." }, "cliBinary": { + "binaryLabel": "Binary:", "checking": "Checking…", "copied": "Copied", "copy": "Copy", + "expectedVersion": "(expected {{version}})", "failedExit": "Install failed (exit {{code}})", "heading": "CLI Binary", "help": "Installing the global CLI lets you run fn and fusion from any terminal. Automations and scripts work without it via npx, but a global install is faster and more convenient.", @@ -1364,13 +1394,15 @@ export default interface Resources { "installing": "Installing…", "notOnPath": "Neither fn nor fusion was found on PATH.", "orCopyLabel": "Or copy and run yourself:", + "pathLabel": "Path:", "refresh": "Refresh", "reinstall": "Reinstall", "stateCheckDisabled": "Check disabled", "stateInstalled": "Installed", "stateMissing": "Not installed", "stateVersionMismatch": "Version mismatch", - "succeededDuration": "Install succeeded in {{duration}}s" + "succeededDuration": "Install succeeded in {{duration}}s", + "versionLabel": "Version:" }, "cliChat": { "queued_one": "{{count}} message queued — will send when the agent is ready", @@ -1463,6 +1495,31 @@ export default interface Resources { "stoppedTasks_other": "Stopped {{count}} task{{plural}}" }, "commandCenter": { + "activity": { + "activeAgents": "Active agents", + "activeNodes": "Active nodes", + "agentRunOutcomeShare": "Agent run outcome share", + "agentRuns": "Agent runs", + "agentRunsActive": "Active", + "agentRunsCompleted": "Completed", + "agentRunsFailed": "Failed", + "agentRunsPerDay": "Agent runs / day", + "agentsPerDay": "Active agents / day", + "messages": "Messages", + "messagesPerDay": "Messages / day", + "nodesPerDay": "Active nodes / day", + "rechartsLine": "Activity trend", + "sessions": "Sessions", + "stickiness": "Stickiness", + "stickinessHint": "DAU / MAU", + "summaryTitle": "Summary", + "throughput": "Throughput", + "throughputPerDay": "Throughput / day" + }, + "area": { + "empty": "No data for the selected range.", + "loading": "Loading…" + }, "areaPending": "This area renders once metrics data is available.", "controls": { "concurrency": { @@ -1485,7 +1542,6 @@ export default interface Resources { "title": "Heartbeat control" }, "orgChart": { - "description": "Read-only view of the running agent hierarchy.", "empty": "No agents are reporting in yet.", "error": "Unable to load org chart", "loading": "Loading org chart…", @@ -1511,40 +1567,238 @@ export default interface Resources { }, "title": "Operator controls" }, + "ecosystem": { + "breadthTitle": "Ecosystem breadth", + "empty": "No models or plugins active in the selected range.", + "modelShareTitle": "Task share by model", + "perModelTitle": "Tasks per model", + "plugins": "Plugin activations", + "pluginsUnavailable": "Plugin-activation metrics are not yet recorded", + "taskTrendSeries": "Tasks", + "tokenTrendSeries": "Tokens", + "trendTitle": "Ecosystem trend", + "uniqueModels": "Active models" + }, "empty": "No usage data yet. Run some agents to populate the Command Center.", + "funnel": { + "ariaLabel": "Tasks per workflow stage", + "completionRate": "Completion rate", + "completionRateAria": "Completion rate for in-range triage entrants", + "completionRateHint": "Done ÷ entered (in range)", + "doneInRange": "Reached done", + "empty": "No task transitions in the selected range.", + "enteredInRange": "Entered triage", + "rangeDays_one": "{{count}} day range", + "rangeDays_other": "{{count}} day range", + "stage": { + "done": "Done", + "inProgress": "In progress", + "inReview": "In review", + "other": "Other", + "todo": "Todo", + "triage": "Triage" + }, + "throughputPerDay": "Tasks done / day", + "throughputTitle": "Throughput", + "title": "SDLC funnel" + }, + "github": { + "backfillBusy": "Backfilling close times…", + "backfillButton": "Backfill exact close times", + "backfillFailed": "Failed to backfill GitHub source issue close times", + "backfillMaxBatches": "Backfill stopped after the safety limit; rerun after checking server logs.", + "backfillNothing": "Nothing to backfill. Scanned {{scanned}}, filled {{filled}}, skipped {{skipped}}, errors {{errors}}.", + "backfillPending": "Backfill is running in paginated batches.", + "backfillResult": "Backfill complete. Scanned {{scanned}}, filled {{filled}}, skipped {{skipped}}, errors {{errors}}.", + "byRepo": "By repository", + "dailyLine": "Filed vs fixed line", + "dailyTrend": "Filed vs fixed trend", + "empty": "No GitHub issue activity in the selected range.", + "filed": "Filed by Fusion", + "filedTrend": "Filed", + "fixed": "Fixed by Fusion", + "fixedApproximation": "Uses done tasks updated in range", + "fixedTrend": "Fixed", + "issueFlowShare": "Filed vs fixed share", + "net": "Net", + "repoValue": "{{filed}} filed / {{fixed}} fixed", + "totalsTitle": "GitHub issue flow" + }, "heading": "Command Center", "loading": "Loading command center...", + "missionControl": { + "activeNodes": "Active nodes", + "activeRuns": "Active runs", + "activeSessions": "Active sessions", + "funnelTitle": "SDLC funnel (live)", + "idle": "No active sessions. Live updates resume when work starts.", + "inactive": "inactive", + "loading": "Loading live activity…", + "noNodes": "No active nodes.", + "noSessions": "No active sessions.", + "nodesTitle": "Nodes", + "sessionCount_one": "{{count}} session", + "sessionCount_other": "{{count}} session", + "sessionsTitle": "Sessions" + }, "overview": { "activeNodes": "Active nodes", + "agentRuns": "Agent runs", + "agentsWorking": "agents working", "autonomy": "Autonomy ratio", + "dailyActivity": "Daily activity trend", + "dailyActivityAria": "Daily activity trend", + "dailyActivityHint": "Messages plus active agents per day", + "dailyActivityLine": "Daily activity line", + "dailyActivityLineHint": "Messages, agents, and runs by day", "liveStrip": "Live activity", - "liveStripPending": "Live Mission Control loads with active sessions.", + "liveTokens": "tokens", "openSignals": "Open signals", + "sessions": "Sessions", "tasksDone": "Tasks done", + "tasksInProgress": "tasks in progress", + "throughputTrend": "throughput trend", + "throughputTrendAria": "Recent activity throughput trend", + "tokensByModel": "Tokens by model", + "tokensByModelHint": "Top model token consumers in this range", + "tokensByModelPie": "Token share by model", + "tokensByModelPieHint": "Top model token share in this range", "tokensCost": "Tokens & cost", + "toolCategories": "Tool categories", + "toolCategoriesHint": "Autonomous work grouped by tool family", "uniqueModels": "Unique models" }, + "productivity": { + "averageDuration": "Average", + "byLanguage": "Files by language", + "commits": "Commits", + "completedTasks": "Completed tasks", + "durationTitle": "Task duration", + "durationUnavailable": "Task duration is unavailable until completed tasks have active execution time recorded", + "hoursSaved": "Human hours saved", + "hoursSavedEstimate": "estimate from lines changed", + "hoursSavedUnavailable": "Estimated human hours saved is unavailable until commit diff stats exist", + "languagePie": "Language share", + "loc": "Lines changed", + "locUnavailable": "LOC is unavailable until commit diff stats are recorded", + "medianDuration": "Median", + "modifiedFiles": "Files modified", + "outcomesTitle": "Outcomes", + "p90Duration": "P90", + "pullRequests": "Pull requests", + "totalDuration": "Total active", + "volumeHint": "volume, not outcome", + "volumeTitle": "Volume (proxy)" + }, "range": { - "allTime": "All time", "custom": "Custom range", "dialogLabel": "Select date range", "from": "From", "invalidRange": "Start date must be on or before end date", - "last24h": "Last 24h", - "last30d": "Last 30 days", - "last7d": "Last 7 days", "to": "To" }, + "signals": { + "bySeverity": "By severity", + "bySource": "By source", + "empty": "No external signals yet. Connect a signal source (Sentry, Datadog, PagerDuty, webhook) to see incident metrics here.", + "mttr": "MTTR", + "mttrUnavailable": "MTTR is unavailable until incident data is recorded", + "mttrValue": "{{min}} min", + "open": "Open", + "resolved": "Resolved", + "statusShare": "Signal status share", + "summaryTitle": "Summary", + "total": "Total signals" + }, + "system": { + "cpuGauge": "App CPU usage", + "cpuSeries": "CPU", + "cpuTrend": "CPU over time", + "detailsTitle": "Runtime details", + "healthTitle": "Live system health", + "heapGauge": "Heap used", + "heapSeries": "Heap", + "heapTrend": "Heap over time", + "memoryGauge": "System memory used", + "memorySeries": "Memory", + "memoryTrend": "Memory over time", + "resourceTrend": "Resource trend", + "taskShare": "Task distribution", + "trendsTitle": "Live trends", + "workloadTitle": "Workload" + }, "tablistLabel": "Command Center sections", "tabs": { "activity": "Activity", "ecosystem": "Ecosystem", + "github": "GitHub", "missionControl": "Mission Control", + "nodes": "Nodes", "overview": "Overview", "productivity": "Productivity", "reliability": "Reliability", + "signals": "Signals", + "system": "System", + "team": "Team", "tokens": "Tokens", "tools": "Tools" + }, + "team": { + "agent": "Agent", + "completedByAgent": "Tasks done by agent", + "cost": "Cost", + "done": "Tasks done", + "empty": "No agents have reported team analytics yet.", + "files": "Files changed", + "filesChanged": "Files changed", + "inProgress": "In progress", + "noChartData": "No non-zero values for this chart yet.", + "spread": "Team spread", + "state": "Agent state: {{state}}", + "tableTitle": "Per-agent breakdown", + "tasksCompleted": "Tasks done", + "tokenShareByAgent": "Token share by agent", + "tokens": "Tokens", + "tokensByAgent": "Tokens by agent", + "totalCost": "Estimated cost", + "totalTokens": "Total tokens", + "totalsTitle": "Team totals", + "unknownAgent": "(unknown agent)", + "unknownRole": "Unknown role", + "unknownState": "unknown" + }, + "tokens": { + "byModelChart": "Tokens by model", + "cached": "Cached", + "cost": "Estimated cost", + "costCol": "Cost", + "costUnavailable": "No pricing for this model", + "granularity": "Token chart granularity", + "input": "Input", + "model": "Model", + "output": "Output", + "overTimeChart": "Tokens over time", + "pieChart": "Token share by model", + "rechartsLine": "Tokens trend", + "stalePricing": "pricing may be stale", + "tableTitle": "Per-model breakdown", + "tasks": "Tasks", + "total": "Total", + "totalTokens": "Total tokens", + "totalsTitle": "Totals", + "unknownModel": "(unknown)" + }, + "tools": { + "autonomyHint": "tool calls per human intervention", + "autonomyRatio": "Autonomy ratio", + "categoriesTitle": "Tool categories", + "interventionBreakdown": "{{approvals}} approvals · {{steers}} steers", + "interventions": "Interventions", + "pieChart": "Tool category share", + "ratioAutonomous": "{{ratio}} calls/session (fully autonomous)", + "sessions": "Sessions", + "summaryTitle": "Summary", + "toolCalls": "Tool calls" } }, "comments": { @@ -1655,6 +1909,7 @@ export default interface Resources { "title": "Create room" }, "dashboard": { + "brandName": "Fusion", "initializingDashboard": "Initializing dashboard...", "loadingMessage": "Loading Fusion dashboard", "loadingProgress": "Dashboard loading progress", @@ -1695,6 +1950,8 @@ export default interface Resources { "clear": "Clear", "command": "Command", "configuration": "Configuration", + "configurationLabel": "Dev server configuration", + "controlsHeaderLabel": "Dev server controls header", "embedded": "Embedded", "embeddedPreviewDisabled": "Embedded preview is disabled. Open your app in a separate browser tab.", "enterFullscreen": "Enter fullscreen logs", @@ -1713,6 +1970,7 @@ export default interface Resources { "loadingLogs": "Loading logs…", "loadingOlderLogs": "Loading older logs…", "logs": "Logs", + "logsLabel": "Dev server logs", "lostConnection": "Lost log stream connection.", "manual": "Manual", "matchCount_one": "{{count}} match", @@ -1731,6 +1989,7 @@ export default interface Resources { "preview": "Preview", "previewBlocked": "Preview blocked", "previewFailed": "Preview failed", + "previewLabel": "Dev server preview", "previewUrlOverride": "Preview URL Override", "refreshPreview": "Refresh preview", "restart": "Restart", @@ -1909,14 +2168,17 @@ export default interface Resources { "noTaskDocuments": "No task documents yet.", "openTask": "Open task", "plain": "Plain", + "projectFilePreviewLabel": "Project file content preview", "projectFiles": "project files", "projectFilesTab": "Project Files", + "projectMarkdownFilesLabel": "Project markdown files", "resultCount_one": "{{count}} result{{plural}}", "resultCount_other": "{{count}} result{{plural}}", "retry": "Retry", "retryLoading": "Retry loading documents", "searchProjectFiles": "Search project markdown files…", "searchTaskDocuments": "Search task documents…", + "sectionsLabel": "Documents sections", "selectFile": "Select a Markdown file to view its content.", "showHidden": "Show hidden project files", "showHiddenFiles": "Show hidden files", @@ -1970,6 +2232,12 @@ export default interface Resources { "failedToLoadFile": "Failed to load file", "failedToSaveFile": "Failed to save file" }, + "errorBoundary": { + "genericError": "Something went wrong", + "reloadPage": "Reload page", + "retry": "Retry", + "sectionError": "This section encountered an error" + }, "evals": { "allRuns": "All runs", "disabledTitle": "Scheduled evals are disabled", @@ -2008,6 +2276,8 @@ export default interface Resources { "overlapBottleneck_one": "{{status}} overlap bottleneck {{blockerId}}: {{count}} todo blocked via blockedBy (threshold {{threshold}})", "overlapBottleneck_other": "{{status}} overlap bottleneck {{blockerId}}: {{count}} todo blocked via blockedBy (threshold {{threshold}})", "overlapQueue": "Overlap queue", + "overlapSummary_one": "{{blockerId}} · {{count}} todo", + "overlapSummary_other": "{{blockerId}} · {{count}} todo", "queued": "Queued", "running": "Running", "secondsAgo_one": "{{count}}s ago", @@ -2018,7 +2288,8 @@ export default interface Resources { "stateRunning": "Running", "status": "Executor status", "stuck": "Stuck", - "temporary": "Temporary" + "temporary": "Temporary", + "todoStatus": "todo" }, "fileBrowser": { "back": "Back to file list", @@ -2425,6 +2696,7 @@ export default interface Resources { "stashDropped": "Stash dropped", "stashMessagePlaceholder": "Stash message (optional)", "stashPopped": "Stash popped", + "stashRef": "stash@{{index}}", "statusLabelBranch": "Branch", "statusLabelCommit": "Commit", "statusLabelIntegrationBranch": "Integration branch", @@ -2478,6 +2750,13 @@ export default interface Resources { "worktreesTotal_one": "{{count}} total", "worktreesTotal_other": "{{count}} total" }, + "githubStarPrompt": { + "body": "If Fusion has saved you time, a GitHub star goes a long way. It helps other developers discover the project and keeps the team motivated to ship improvements.", + "dismissLabel": "Dismiss GitHub star prompt", + "regionLabel": "GitHub star prompt", + "starOnGitHub": "Star on GitHub", + "title": "Enjoying Fusion?" + }, "goals": { "activeCount_one": "{{count}} active goals", "activeCount_other": "{{count}} active goals", @@ -2532,6 +2811,9 @@ export default interface Resources { "title": "Branch Group {{id}}", "unavailable": "Branch group unavailable" }, + "groups": { + "prLinkLabel": "PR #{{number}} ({{state}})" + }, "header": { "activePlanningSessions_one": "{{count}} active planning session", "activePlanningSessions_other": "{{count}} active planning sessions", @@ -2552,6 +2834,7 @@ export default interface Resources { "documentsView": "Documents view", "engineOptions": "Engine options", "evalsView": "Evals", + "fusionLogo": "Fusion logo", "gitManager": "Git Manager", "goalsView": "Goals", "importFromGitHub": "Import from GitHub", @@ -2574,7 +2857,6 @@ export default interface Resources { "noScriptsAddOne": "No scripts — add one…", "noScriptsConfigured": "No scripts configured", "noWorkingBranch": "No working branch", - "nodes": "Nodes", "openSearch": "Open search", "openTerminal": "Open Terminal", "pauseTriage": "Pause triage", @@ -2712,6 +2994,7 @@ export default interface Resources { "archivedMsg": "Insight archived: {{title}}", "archiving": "Archiving \"{{title}}\"...", "backlogHealth": "Backlog Health", + "categoriesLabel": "Insight categories", "configureModel": "Configure insight generation model", "configureModelTitle": "Configure model", "createTaskLabel": "Create task from this insight", @@ -2802,6 +3085,9 @@ export default interface Resources { "verificationCriteria": "Verification Criteria", "yes": "Yes" }, + "issues": { + "noIssuesFound": "No issues found" + }, "lane": { "collapse": "Collapse {{name}} lane", "expand": "Expand {{name}} lane" @@ -2914,8 +3200,7 @@ export default interface Resources { "unpauseUnavailable": "Unpause action is unavailable", "useProjectDefault": "Use project default", "viewOptions": "View options", - "workflowLabel": "Workflow", - "workflowSelectLabel": "Select workflow" + "workflowLabel": "Workflow" }, "mailbox": { "agent": "Agent", @@ -2984,6 +3269,7 @@ export default interface Resources { "replyLoadFailed": "Failed to load replied message. Click to retry.", "replyingTo": "Replying to", "replyingToMessage": "Replying to message", + "resizeMessageListPane": "Resize message list pane", "selectMessageToRead": "Select a message to read", "system": "System", "timeDaysAgo_one": "{{count}}d ago", @@ -2997,6 +3283,7 @@ export default interface Resources { "to": "To", "toLabel": "To:", "toPrefix": "To: {{recipient}}", + "toRecipient": "To: {{recipient}}", "typeAgentToAgent": "Agent ↔ Agent", "typeAgentToUser": "Agent → You", "typeSystem": "System", @@ -3172,11 +3459,13 @@ export default interface Resources { "missions": { "acceptance": "Acceptance:", "acceptanceCriteriaOptional": "Acceptance criteria (optional)", + "acceptanceCriteriaPrefix": "AC:", "actionGenerating": "Generating…", "actionResume": "Resume", "actionRetry": "Retry", "actionReview": "Review", "activateSlice": "Activate slice", + "activityCount": "{{visible}} of {{total}}", "activityTime": "Activity {{time}}", "actual": "Actual: {{value}}", "addAssertion": "Add assertion", @@ -3303,6 +3592,7 @@ export default interface Resources { "filterSlices": "Slice & milestone events", "filterStateChanges": "State changes", "filterTasks": "Task events", + "fixLineageButton": "🔗 Fix", "generatedFixFeatures": "Generated fix features:", "generatedFixFeaturesTitle": "Generated Fix Features", "generatedFromFeature": "Generated from feature: {{id}}", @@ -3332,6 +3622,8 @@ export default interface Resources { "linkFeatureToTask": "Link feature to task:", "linkGoal": "Link goal", "linkToTask": "Link to task", + "linkedCountShort_one": "({{count}} linked)", + "linkedCountShort_other": "({{count}} linked)", "linkedCount_one": "{{count}} linked", "linkedCount_other": "{{count}} linked", "linkedFeaturesCount_one": "{{count}} linked feature", @@ -3389,6 +3681,7 @@ export default interface Resources { "planStateNeedsUpdate": "Needs update", "planStateNotPlanned": "Not planned", "planStatePlanned": "Planned", + "planTargetTitle": "Plan {{targetLabel}}: {{targetTitle}}", "planTitle": "Plan Mission with AI", "planningModel": "Planning Model", "prepareQuestion": "Preparing next question...", @@ -3496,6 +3789,7 @@ export default interface Resources { "updateButton": "Update", "updated": "Mission updated", "validateFeature": "Validate feature", + "validationRoundAttempts": "impl #{{implementation}} · reviewer #{{reviewer}}", "validationRoundsCount_one": "{{count}} round", "validationRoundsCount_other": "{{count}} rounds", "validationRoundsLabel_one": "Validation rounds ({{count}})", @@ -3608,17 +3902,21 @@ export default interface Resources { "activityLog": "Activity Log", "agents": "Agents", "automation": "Automation", + "board": "Board", "chat": "Chat", "chatUnreadAriaLabel": "Unread chat response", + "collapseSidebar": "Collapse sidebar", "commandCenter": "Command Center", "devServer": "Dev Server", "documents": "Documents", "evals": "Evals", + "expandSidebar": "Expand sidebar", "files": "Files", "gitManager": "Git Manager", "goals": "Goals", "importFromGitHub": "Import from GitHub", "insights": "Insights", + "list": "List", "loadingScripts": "Loading scripts…", "mailbox": "Mailbox", "mailboxPendingAriaLabel": "Pending approvals", @@ -3628,15 +3926,16 @@ export default interface Resources { "more": "More", "moreSheetTitle": "Navigate", "noScriptsAddOne": "No scripts — add one…", - "nodes": "Nodes", "planning": "Planning", "primaryNavAriaLabel": "Primary navigation", "projects": "Projects", "research": "Research", + "resizeSidebar": "Resize sidebar", "scriptsSubmenuAriaLabel": "Scripts submenu", "secrets": "Secrets", "settings": "Settings", "showScriptsAriaLabel": "Show scripts", + "sidebarAriaLabel": "Sidebar navigation", "skills": "Skills", "stashRecovery": "Stash Recovery", "tasks": "Tasks", @@ -3755,11 +4054,13 @@ export default interface Resources { "discoverRemoteProjects": "Discover Remote Projects", "discoveredCount_one": "Discovered {{count}} remote project{{plural}}", "discoveredCount_other": "Discovered {{count}} remote project{{plural}}", + "discoveredRemoteProjectsLabel": "Discovered remote projects", "discovering": "Discovering...", "discoveryFailed": "Failed to discover remote projects", "dismissError": "Dismiss error", "docker": "Docker", "dockerBadge": "Managed Docker node", + "dockerConfigMeta": "Config v{{version}} • Updated {{updated}}", "dockerConfigSaveFailed": "Failed to save Docker config", "dockerConfigSaveSuccess": "Docker config saved", "dockerConfiguration": "Docker Configuration", @@ -3877,6 +4178,7 @@ export default interface Resources { "name": "Build Server", "optional": "Optional" }, + "projectPathMappingsLabel": "Project path mappings", "provideManually": "Provide key manually", "pullSettings": "Pull Settings", "pullSettingsFailed": "Pull settings failed", @@ -4063,6 +4365,9 @@ export default interface Resources { "testFailed": "Test failed — see status above.", "unreachable": "{{reason}}" }, + "piExtensions": { + "filterHint": "{{extensions}} ext, {{skills}} skill, {{prompts}} prompt, {{themes}} theme" + }, "piManager": { "addButton": "Add", "discoveredDescription": "Installed extensions resolved from packages and configured paths.", @@ -4666,6 +4971,7 @@ export default interface Resources { "createTask": "Create Task", "createTaskButton": "Create Task", "createTaskTitle": "Create task from finding", + "currentDefaults": "Current defaults: provider {{provider}}, max sources {{maxSources}}", "defaultFindingHeading": "Research finding", "descriptionLabel": "Description", "disabled": "Research is disabled for this project.", @@ -4688,6 +4994,7 @@ export default interface Resources { "noRunsYet": "No research runs yet", "noSourcesAvailable": "No enabled research sources are available for this project.", "noSummaryYet": "No summary yet.", + "notSet": "(not set)", "openAuthSettings": "Open Authentication Settings", "openResearchSettings": "Open Research Settings", "priorityHigh": "High", @@ -4748,6 +5055,7 @@ export default interface Resources { "intro": "View the effective execution node and control per-task node override.", "localNoConfiguration": "Local (no routing configured)", "lockedWhileActive": "Routing is locked while this task is active. Node override cannot be changed until the task is no longer active.", + "nodeOptionLabel": "{{name}} ({{type}}) — {{status}}", "nodeUnavailable": "node unavailable or unknown", "overrideCleared": "Node override cleared", "overrideSection": "Node Override", @@ -4765,6 +5073,9 @@ export default interface Resources { "unhealthy": "Unhealthy", "useProjectDefault": "Use project default" }, + "runtimes": { + "nousResearchLogoAlt": "Nous Research" + }, "schedule": { "actionAiPrompt": "AI Prompt", "actionCommand": "Command", @@ -4830,6 +5141,7 @@ export default interface Resources { "cronPresetMonthly": "Every month (1st)", "cronPresetWeekly": "Every week (Monday)", "cronRequired": "Cron expression is required for custom schedules", + "crontabGuru": "crontab.guru", "delete": "Delete", "deleteError": "Failed to delete routine", "deleteMessage": "Delete schedule {{name}}? This cannot be undone.", @@ -4884,6 +5196,7 @@ export default interface Resources { "globalScope": "Global", "globalScopeTitle": "Global scope", "globalScoped": "This schedule will be created at global scope.", + "lastLabel": "Last:", "loadRoutinesError": "Failed to load routines", "manualTriggerInfo": "This routine will be triggered manually via the dashboard or API.", "modeAriaLabel": "Execution mode", @@ -4906,6 +5219,7 @@ export default interface Resources { "newAutomation": "New Automation", "newRoutineHeading": "New Routine", "newTitle": "New Schedule", + "nextLabel": "Next:", "noActiveProject": "No active project. Schedules will be created at global scope.", "noAutomations": "No automations yet", "noStepsEmpty": "No steps added yet. Add a command or AI prompt step to get started.", @@ -4936,6 +5250,7 @@ export default interface Resources { "runNameNow": "Run {{name}} now", "runNow": "Run now", "running": "Running…", + "runsLabel": "Runs:", "saveChanges": "Save Changes", "saveStep": "Save Step", "saving": "Saving…", @@ -5015,6 +5330,9 @@ export default interface Resources { "webhookSecretLabel": "Webhook Secret (optional)", "webhookSecretPlaceholder": "Optional — leave empty for unauthenticated webhooks" }, + "scripts": { + "title": "Scripts" + }, "scriptsModal": { "addScript": "Add Script", "addScriptsHint": "Add scripts to quickly run common commands from the dashboard.", @@ -5442,6 +5760,7 @@ export default interface Resources { "enabling": "Enabling…", "notConnected": "✗ Not connected", "probing": "Probing local CLI…", + "providerName": "Cursor — via Cursor CLI", "test": "Test", "testing": "Testing…" }, @@ -5477,6 +5796,7 @@ export default interface Resources { "githubConnectionFailed": "Connection failed or timed out.", "githubOauthConnected": "GitHub OAuth is connected. You can import issues and track pull requests.", "githubOauthNotConnected": "GitHub OAuth isn't connected yet. You can set it up in Settings → Authentication, or continue now and connect later.", + "githubProvider": "GitHub", "githubSkipped": "GitHub was skipped. You can connect anytime from Settings → Authentication.", "goBackToStep": "Go back to {{label}}", "goToDashboard": "Go to Dashboard", @@ -5736,6 +6056,9 @@ export default interface Resources { "saving": "Saving…", "view": "View" }, + "stash": { + "copyReference": "Copy stash reference" + }, "stashRecovery": { "applied": "Applied", "apply": "Apply", @@ -6752,6 +7075,7 @@ export default interface Resources { "workflowCheck": "Workflow check" }, "terminal": { + "arrowKeysLabel": "Terminal arrow keys", "clear": "Clear", "clearTerminal": "Clear terminal", "closeTab": "Close tab", @@ -6999,13 +7323,11 @@ export default interface Resources { "bannerNotify": "Banner + push notification" }, "notifyLabel": "Waiting-on-input notification", - "notifyNote": "How you are alerted when the agent pauses waiting for input on this step.", - "tier": { - "generic": "generic", - "hybrid": "hybrid", - "native": "native" - } - } + "notifyNote": "How you are alerted when the agent pauses waiting for input on this step." + }, + "collapsePrompt": "Collapse prompt editor", + "editingPrompt": "Editing Prompt", + "expandPrompt": "Expand prompt editor" }, "workflowFields": { "add": "Add field", @@ -7072,6 +7394,7 @@ export default interface Resources { "foreachSequential": "Sequential", "foreachShared": "Shared worktree", "foreachWorktree": "Per-step worktree", + "gateBadge": "gate", "gateBlocks": "Gate (blocks)", "gateMode": "Gate mode", "insertTemplate": "Insert template {{name}}", @@ -7128,6 +7451,7 @@ export default interface Resources { "startEntryColumn": "Entry column", "startEntryColumnAuto": "— Auto (first column)", "startNote": "The start node marks where a task enters the workflow.", + "stepBadge": "step", "stepExecuteLabel": "Step execute", "templateFilterLabel": "Filter templates", "templateFilterPlaceholder": "Filter templates", @@ -7136,6 +7460,7 @@ export default interface Resources { "templatesFragments": "Fragments", "templatesPluginSteps": "Plugin steps", "templatesSection": "Templates", + "timeoutMs": "{{timeout}}ms", "trivialGraphHint": "This workflow only runs start → end. Add steps from the palette above to build it out." }, "workflowSelector": { @@ -7197,6 +7522,14 @@ export default interface Resources { "widget": "Widget", "widgetDefault": "Default" }, + "workflowSwitcher": { + "countsAria": "{{todoLabel}}: {{todo}}, {{inProgressLabel}}: {{inProgress}}, {{doneLabel}}: {{done}}", + "done": "Done", + "inProgress": "In Progress", + "label": "Workflow", + "todo": "Todo", + "triggerAria": "Select workflow. Current workflow: {{name}}" + }, "workflows": { "aiEdit": "Design with AI", "aiFailed": "Failed to design workflow",