Files
ClaudeDo/src/ClaudeDo.Localization/locales/en.json
T
mika kuns 0cec0a77ee fix(ui): report failed paste/drop in the interactive terminal
PasteAsync silently swallowed every exception and returned void, so a
package update renaming Iciclecreek's private write seam would break
Ctrl+V/drop with zero user-visible signal. PasteAsync/SendTextAsync now
return bool (mirroring SendLineAsync), and the view checks the result,
routing a failure through InteractiveTerminalViewModel.ErrorReported ->
ConPtyPaneViewModel.ErrorReported -> the existing footer error strip.
2026-09-10 13:35:16 +02:00

918 lines
45 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"metadata": { "code": "en", "name": "English" },
"settings": {
"title": "SETTINGS",
"save": "Save",
"cancel": "Cancel",
"language": "Language",
"sidebar": {
"groupBasis": "BASICS",
"groupAdvanced": "ADVANCED",
"categoryGeneral": "General",
"categoryExecution": "Execution",
"categoryPrime": "Prime Claude",
"categoryPrimeHint": "Scheduled Claude runs: Ping, Fill My Day, or a custom prompt, at fixed times.",
"categoryWorktrees": "Worktrees",
"categoryFiles": "Files & Prompts",
"categorySkills": "Session Skills",
"categoryReports": "Reports",
"categoryTickets": "Ticket system"
},
"repoHint": {
"text": "Only takes effect once a repo is linked.",
"link": "Import repo"
},
"general": {
"defaultInstructions": "Default instructions",
"defaultInstructionsPlaceholder": "Baseline instructions applied to every task",
"model": "Model",
"maxTurns": "Max turns",
"effort": "Effort",
"effortHint": "Reasoning effort the model applies. Higher costs more and reasons deeper.",
"modelPresets": "Per-model defaults",
"modelPresetsHint": "Reasoning effort and turn budget used when a session runs under that model. List- and task-level max-turn overrides still win.",
"maxTurnsCeiling": "Max turns ceiling",
"maxTurnsCeilingHint": "Hard cap every resolved max-turns value is clamped to — task, list, and per-model settings can't exceed this.",
"maxTurnsCeilingInvalid": "Max turns ceiling must be at least 1.",
"permission": "Permission",
"maxParallelExecutions": "Max parallel executions",
"maxParallelExecutionsHint": "How many queued tasks the worker runs at once.",
"usageGateHeading": "Usage limit stop",
"usageGateHint": "Once usage reaches this level, the queue stops picking up new tasks; running tasks finish normally. 0 turns the stop off.",
"usageGateFiveHourPct": "5-hour window (%)",
"usageGateSevenDayPct": "7-day window (%)",
"autoContinueOnUsageLimit": "Continue on session limit reset",
"autoContinueOnUsageLimitHint": "When a run stops because it hit the usage limit, automatically continue it once the 5-hour window resets. Also wakes the paused queue exactly at reset time instead of waiting for the next backstop check.",
"listHandlerMaxHandoffs": "List-handler handoff budget",
"listHandlerMaxHandoffsHint": "How many wait/merge handoffs one \"Let Claude handle it\" run may chain. 4 means two merge rounds. Raise it for runs meant to keep going for hours; it bounds a runaway chain, so it cannot be 0.",
"powerUseHeading": "PowerUse",
"powerUse": "Enable PowerUse",
"powerUseHint": "Spend the rest of the window: a list-handler run asks nothing, resolves conflicts itself, harvests new work, and keeps handing off for as long as its budget allows. Only affects lists that allowed PowerUse in their list settings.",
"powerUseWindow": "Only between",
"powerUseWindowPlaceholder": "HH:mm",
"powerUseHandoffPct": "Hand off at (% of 5h)",
"powerUseWindowHint": "Leave both times empty for round the clock. A window is checked whenever a handler phase starts, so a chain that runs past the end time continues without PowerUse.",
"powerUseWindowInvalid": "PowerUse window times must be HH:mm, or left blank.",
"throttleStagesHeading": "Throttle stages",
"throttleStagesHint": "Parallelism is capped before the hard gate: soft caps at 2 slots, hard at 1. Edited by dragging the markers on the usage-monitor gauges. Opening the monitor closes these settings — save first if you changed anything.",
"throttleStagesValues": "5h: soft {0}% / hard {1}% · 7d: soft {2}% / hard {3}%",
"openUsageMonitor": "Open usage monitor...",
"reportExcludedPaths": "Report: excluded paths (one per line)",
"standupWeekday": "Standup weekday",
"weekdaySunday": "Sunday",
"weekdayMonday": "Monday",
"weekdayTuesday": "Tuesday",
"weekdayWednesday": "Wednesday",
"weekdayThursday": "Thursday",
"weekdayFriday": "Friday",
"weekdaySaturday": "Saturday",
"sessionSkills": "Session skills",
"sessionSkillsHint": "Applied to every task. Combines with list- and task-level selections.",
"accentPreset": "Accent color",
"accentPresetMoss": "Moss",
"accentPresetPeat": "Peat",
"accentPresetSea": "Sea"
},
"worktrees": {
"strategy": "Strategy",
"centralWorktreeRoot": "Central worktree root",
"autoCleanup": "Auto-cleanup finished worktrees after",
"days": "days",
"cleanupFinished": "Cleanup finished worktrees",
"forceRemoveAll": "Force-remove all worktrees",
"confirmRemoveAll": "Remove ALL worktrees? Uncommitted work will be lost."
},
"files": {
"cliSection": "CLAUDE CLI",
"claudeBinHint": "Command or full path the worker starts. Blank resets to \"claude\". Applies to the next task run — no restart needed.",
"claudeBinResolved": "Resolves to: {0}",
"claudeBinUnresolved": "Not found on PATH — task runs will fail until this resolves.",
"agentsSection": "AGENTS",
"agentsHint": "Restore bundled default agents. Existing files are not overwritten.",
"restoreDefaultAgents": "Restore default agents",
"promptsSection": "PROMPTS",
"systemPrompt": "System",
"planningPrompt": "Planning (system)",
"planningInitialPrompt": "Planning kickoff",
"retryPrompt": "Retry",
"dailyPrepPrompt": "Daily prep",
"weeklyReportPrompt": "Weekly report",
"powerUsePrompt": "PowerUse addendum",
"viewPrompt": "View",
"customizedSection": "CUSTOMIZED",
"customizedHint": "These prompts differ from the bundled default and are kept as-is. Reset to pick up future default improvements.",
"resetToDefault": "Reset to default"
},
"prime": {
"description": "Run a single non-interactive Claude action on the days you choose, at a chosen time. Only runs while ClaudeDo is open. If the app starts within 30 minutes of the target time, it fires immediately.",
"addSchedule": "+ Add schedule",
"removeScheduleTip": "Remove schedule",
"dailyPrepMaxTasks": "Max tasks per day",
"actionLabel": "Action",
"actionPing": "Ping",
"actionFillMyDay": "Fill My Day",
"actionCustom": "Custom prompt",
"actionHint": "Ping only opens the usage window. Fill My Day runs the daily prep. Custom runs your own prompt with the ClaudeDo tools.",
"customPromptLabel": "Prompt",
"customPromptPlaceholder": "The full prompt to run for this schedule (required)",
"maxTasksDisabledHint": "Only applies to Fill My Day schedules.",
"promptOverrideLabel": "Prompt addition",
"promptOverridePlaceholder": "Extra instructions appended to the daily prep prompt for this schedule (optional)",
"dayMo": "Mo",
"dayTu": "Tu",
"dayWe": "We",
"dayTh": "Th",
"dayFr": "Fr",
"daySa": "Sa",
"daySu": "Su"
},
"onlineInbox": {
"tabHeader": "Online Inbox",
"enabledLabel": "Enable online inbox sync",
"restartHint": "Enabling or disabling takes effect after a Worker restart.",
"apiBaseUrlLabel": "API base URL",
"apiBaseUrlPlaceholder": "https://inbox.claudedo.kuns.dev",
"authorityLabel": "Zitadel authority (issuer URL)",
"authorityPlaceholder": "https://auth.example.com",
"clientIdLabel": "Client ID",
"scopesLabel": "Scopes",
"redirectUriLabel": "Redirect URI",
"pollIntervalLabel": "Poll interval (seconds)",
"statusSection": "AUTH STATUS",
"signedInStatus": "Signed in",
"signedOutStatus": "Not signed in",
"signInButton": "Sign in via browser",
"signOutButton": "Sign out",
"configSection": "CONFIGURATION",
"saveButton": "Save config"
},
"tickets": {
"baseUrl": "API base URL",
"baseUrlHint": "Leave empty to disable the ticket integration entirely.",
"token": "Personal access token",
"tokenSet": "stored",
"testConnection": "Test connection",
"clearToken": "Remove token"
},
"inherit": {
"inheritedFromList": "inherited · List",
"inheritedFromGlobal": "inherited · Global",
"overrideBadge": "override",
"resetToInherited": "Reset to inherited"
},
"turnsCeilingHint": "Runs are capped at {0} turns — this value will be clamped.",
"agentEditor": {
"model": "Model",
"maxTurns": "Max turns",
"permissionMode": "Permission mode",
"systemPrompt": "System prompt (appended)",
"promptPrepended": "Prepended automatically:",
"agentFile": "Agent file",
"browse": "Browse...",
"sessionSkills": "Session skills",
"sessionSkillsHint": "Combines additively with global (and list) selections."
},
"skills": {
"installSection": "INSTALL",
"installUrlPlaceholder": "Git repo URL (owner/repo or full URL)",
"installButton": "Install",
"installedSection": "INSTALLED",
"updateButton": "Update",
"removeButton": "Remove",
"emptyState": "No skills installed — paste a GitHub URL above to add one."
}
},
"tasks": {
"showCompletedTip": "Show completed",
"letClaudeTip": "Let Claude handle it",
"mergeReviewsTip": "Let Claude merge the reviews",
"quickClaudeTip": "Quick Claude session",
"listSettingsTip": "List settings",
"addPlaceholder": "Add a task…",
"enterKey": "ENTER",
"clearDayTip": "Clear day",
"planMyDayTip": "Plan My Day",
"overdue": "OVERDUE",
"tasks": "TASKS",
"clearCompletedTip": "Clear all completed",
"ctxSendToQueue": "Send to queue",
"ctxRemoveFromQueue": "Remove from queue",
"ctxCancelExecution": "Cancel execution",
"ctxMarkAs": "Mark as",
"ctxMarkDone": "Done",
"ctxMarkCancelled": "Cancelled",
"ctxOpenConPtySession": "Open interactive session",
"ctxOpenWorktree": "Open worktree",
"ctxOpenPlanningSession": "Open planning Session",
"ctxResumePlanningSession": "Resume planning Session",
"ctxFinalizePlanningSession": "Finalize plan",
"ctxDiscardPlanningSession": "Discard planning session",
"ctxScheduleFor": "Schedule for...",
"ctxClearSchedule": "Clear schedule",
"ctxRemoveFromMyDay": "Remove from My Day",
"ctxAddToMyDay": "Add to My Day",
"badgeDraft": "DRAFT",
"badgePlanned": "PLANNED",
"badgeManual": "MANUAL",
"chainAfterPrefix": "after",
"manualTip": "Manual reminder — Claude never picks this up",
"ctxMarkManual": "Mark as manual",
"ctxMarkClaudeTask": "Mark as Claude task",
"ctxRefineTask": "Refine task",
"ctxPlanning": "Planning",
"ctxSchedule": "Schedule",
"ctxMoveToList": "Move to list",
"ctxDeleteTask": "Delete task",
"reasonAlreadyRunning": "Task is already running",
"reasonAlreadyQueued": "Already in the queue",
"reasonWaitingForReview": "Waiting for review",
"reasonSubtasksQueued": "Subtasks are already queued",
"reasonPlanNotFinalized": "Plan isn't finalized yet",
"reasonPlanningActive": "Planning session is active — finalize the plan first",
"reasonInteractiveSession": "An interactive session is open for this task",
"reasonNotRunning": "Task isn't running",
"reasonRefining": "Refine is already running",
"reasonNotIdle": "Only available for idle tasks",
"reasonIsPlanningParent": "Part of a plan",
"reasonIsChildTask": "Subtasks don't have their own planning session",
"reasonPlanAlreadyFinalized": "Plan is already finalized",
"reasonNoWorktree": "No worktree for this task",
"cancel": "Cancel",
"removeFromQueueTip": "Remove from queue",
"toggleSubtasksTip": "Expand / collapse subtasks",
"agentSuggestedTip": "Suggested by the agent",
"interactiveChipTip": "Interactive session open — click to jump to it in Mission Control",
"waitingOnTip": "Waiting on {0}",
"scheduleTitle": "Schedule task",
"scheduleWhen": "WHEN",
"scheduleConfirm": "Schedule",
"refineTip": "Refine this task with Claude",
"refiningTip": "Claude is refining this task…",
"emptyHint": "No tasks yet. Add one, then right-click it and choose \"Send to queue\" — Claude works it in its own worktree.",
"emptyHintNoWorkingDir": "This list has no repo yet — link one in List Settings to enable the queue."
},
"lists": {
"heading": "Lists",
"searchPlaceholder": "Search tasks…",
"searchKbd": "Ctrl K",
"settingsTip": "Settings",
"smartListsLabel": "SMART LISTS",
"myListsLabel": "MY LISTS",
"contextWorktrees": "Worktrees…",
"contextOpenExplorer": "Open in Explorer",
"contextOpenTerminal": "Open in Terminal",
"contextOpenFindings": "Open findings folder",
"contextImportTickets": "Update from ticket system",
"contextSettings": "Settings…",
"contextFolderSettings": "Folder settings…",
"contextRemoveFromFolder": "Move out of folder",
"newList": "New list",
"addReposTip": "Add repos as lists",
"noRepoBannerText": "No repo linked yet. ClaudeDo runs tasks in a git repo.",
"noRepoBannerButton": "Import repo",
"importTicketsResult": "{0} tickets checked, {1} new tasks."
},
"details": {
"deleteTaskTip": "Delete task",
"killSessionTip": "Kill the running session",
"sendToQueue": "Send to queue",
"sendToQueueTip": "Queue this task so Claude picks it up on the next run",
"copyTaskIdTip": "Copy task ID",
"starTip": "Star",
"agentSettingsTip": "Agent settings",
"agentSettingsHeading": "Agent settings (overrides)",
"waitingOnPrefix": "Waiting on",
"copyFormattedTip": "Copy title, description and open steps",
"toggleEditPreviewTip": "Toggle edit/preview",
"planDay": "Plan day",
"prepEmpty": "No prep run today yet — click Plan day",
"roadblockReply": {
"placeholder": "Reply to the roadblock…",
"send": "Send",
"noSession": "No session to resume — this run has no session ID to reply into.",
"failed": "Couldn't send the reply: {0}"
},
"attachments": {
"dropToAttach": "Drop to attach",
"addFile": "Add file…",
"removeTip": "Remove attachment",
"addedSummary": "✓ Added {0} ({1} file(s))",
"overLimitError": "Could not add {0}: {1}",
"invalidNameError": "Could not add {0}: {1}",
"dropReadError": "Couldn't read the dropped files: {0}",
"selectIdleTask": "Select an idle task first"
},
"sections": {
"description": "Description",
"steps": "Steps",
"files": "Files"
},
"emptyState": "Select a task to see its details",
"roadblockLabel": "ROADBLOCK",
"stepsCard": {
"preview": "Preview",
"edit": "Edit",
"addStepPlaceholder": "Add step…"
},
"workConsole": {
"continue": "Continue",
"resetAndRetry": "Reset & Retry",
"tabOutput": "Output",
"tabGit": "Git",
"tabSession": "Session",
"outcomeLabel": "OUTCOME",
"reviewLabel": "REVIEW",
"mergeLabel": "MERGE",
"targetBranch": "Target branch",
"openDiff": "Open Diff",
"worktree": "Worktree",
"reviewCombinedDiff": "Review Combined Diff",
"openDiffHint": "Open the diff to enable merge",
"approveMerge": "Approve & Merge",
"park": "Park",
"parkTip": "Set aside — back to Idle, keeps the worktree",
"cancel": "Cancel",
"resetDiscardBranch": "Reset (discard branch)…",
"submitForReviewHint": "Worked on this by hand? Submit the worktree for review to merge it.",
"submitForReview": "Submit for review",
"outcomesLabel": "OUTCOMES"
}
},
"agent": {
"openWorktreeTip": "Open worktree in file explorer — requires an active worktree",
"openDiffTip": "Open the diff — requires a worktree or a merged commit range",
"reviewCombinedDiffTip": "Only available for planning tasks with subtasks or child outcomes"
},
"notes": {
"today": "Today",
"yesterday": "Yesterday",
"newNotePlaceholder": "New note…",
"emptyHint": "Nothing noted yet. Type, hit Enter, done.",
"deleteTip": "Delete note",
"fromAgentTip": "Written by Claude"
},
"session": {
"chipLive": "LIVE",
"chipDone": "DONE",
"chipFailed": "FAILED",
"reviewContinueTip": "Send this feedback and re-run the task",
"reviewResetTip": "Discard all changes and reset the task to Idle",
"reviewFeedbackPlaceholder": "Feedback for next run",
"mergeDrainHint": "Merge is draining subtasks — Cancel unlocks once it finishes",
"approveMergesUnitHint": "Approve also merges this into the target branch right away — there's no separate merge step after it.",
"continueNoSessionTip": "Resumes the last run — needs a previous session to continue",
"resetAndRetryInteractiveTip": "Interactive session is open — close it first"
},
"missionControl": {
"windowTitle": "Mission Control",
"newSession": "New session",
"empty": "No running tasks",
"settings": "Settings",
"activity": "Activity",
"blocked": "Blocked",
"running": "Running",
"review": "In review",
"failed": "Failed",
"roadblock": "Roadblock reported",
"openSession": "Open session",
"homeFolder": "Home (quick session)",
"browseForFolder": "Choose folder…",
"focusMode": "Focus",
"overviewMode": "Overview",
"closeSession": "Kill session",
"conptyLaunchFailed": "Couldn't open interactive session: {0}",
"conptyStarting": "Starting session…",
"conptyExited": "Session ended (code {0}).",
"usageWarningNotDelivered": "Couldn't warn the list-handler session about the usage limit.",
"terminalSendFailed": "Couldn't send that to the terminal session.",
"mergeHelperTitle": "Merge Helper",
"mergeHelperHandoffTitleSuffix": " (Handoff)",
"mergeHelperTaskTitle": "List handler: {0}",
"mergeHelperTaskDescriptionHeader": "Tasks handled by this run:",
"mergeReviewsTitle": "Review Merge",
"mergeReviewsTaskTitle": "Review merge: {0}",
"submitForReviewFailed": "Couldn't submit for review: {0}",
"submitForReview": "Submit for review",
"submitForReviewTip": "Commit this worktree and move the task to review so it can be merged",
"retry": "Retry",
"retryTip": "Try launching this session again",
"planningTitleSuffix": " (Planning)",
"enqueueAlreadyOpen": "Can't queue — this task has an open interactive session.",
"enqueueFailed": "Queue failed: {0}",
"queueRefreshFailed": "Couldn't refresh the queue: {0}",
"abandonRun": "Abandon run",
"abandonRunTip": "Cancel this run's still-open tasks and close the session",
"abandonRunConfirm": "Cancel {0} open task(s) and close this session? Tasks already in review or done are not affected.",
"abandonRunFailed": "Couldn't cancel the open tasks: {0}",
"question": {
"title": "Claude is asking",
"placeholder": "Type your answer…",
"send": "Send"
}
},
"modals": {
"logVisualizer": {
"title": "WORKER LOGS — LAST 30 MIN",
"warnErrorOnly": "Warnings & errors only",
"refresh": "Refresh",
"empty": "No logs in the last 30 minutes.",
"count": "{0} entries",
"footerHint": "logs",
"openTooltip": "View recent worker logs",
"copyLast": "Copy last 40",
"copyLastTooltip": "Copy the last 40 visible lines to the clipboard",
"copied": "{0} lines copied",
"copyFailed": "Copy failed"
},
"about": {
"title": "ABOUT",
"version": "Version",
"data": "Data",
"logs": "Logs",
"config": "Config",
"open": "Open"
},
"workerConnection": {
"title": "WORKER NOT REACHABLE",
"body": "ClaudeDo can't reach the background worker. It is normally started automatically at logon. You can start it now, or reinstall if the problem persists.",
"dismiss": "Dismiss",
"rerunInstaller": "Rerun Installer",
"startWorker": "Start Worker",
"workerNotFound": "Worker executable not found. Check the installation.",
"installerNotFound": "Installer not found. Check the installation.",
"startFailed": "Start failed: {0}"
},
"listSettings": {
"title": "LIST SETTINGS",
"folderTitle": "FOLDER",
"deleteList": "Delete list",
"deleteFolder": "Delete folder",
"createAsFolder": "Create a folder instead",
"createAsFolderHint": "A folder just groups lists in the sidebar — it holds no tasks and runs nothing. Drag lists onto it to fill it.",
"sectionGeneral": "GENERAL",
"name": "Name",
"workingDirectory": "Working directory",
"workingDirectoryPlaceholder": "(none)",
"browse": "Browse...",
"defaultCommitType": "Default commit type",
"manualList": "Manual list (reminders)",
"manualListHint": "New tasks in this list start out manual: no queueing, running or refining, and automation skips them. You can still open a hand-driven session.",
"findingsTracked": "Commit the .claudedo findings folder",
"findingsTrackedHint": "Off: the folder stays out of git via .git/info/exclude. On: findings travel with the repo.",
"powerUseAllowed": "Allow PowerUse for this list",
"powerUseAllowedHint": "Lets a list-handler run on this list go unattended when PowerUse is switched on in Settings → Execution: it asks nothing, resolves conflicts itself, and harvests new work. Both switches are needed, so leaving PowerUse on globally never changes a list that hasn't opted in.",
"sectionIcon": "ICON",
"icon": "List icon",
"iconHint": "Shown next to the list name in the sidebar.",
"sectionAgent": "AGENT",
"resetAgentSettings": "Reset agent settings",
"sectionVerify": "VERIFICATION",
"verifyCommand": "Verify command",
"verifyCommandPlaceholder": "(none — merge behaves as today)",
"verifyCommandHint": "Runs in the working directory after a merge lands, before the task is marked Done. A non-zero exit (or timeout) leaves the merge in place but keeps the task out of Done and reports the failure.",
"ticketProject": "Ticket project"
},
"merge": {
"title": "MERGE WORKTREE",
"windowTitle": "Merge worktree",
"cancel": "Cancel",
"merge": "Merge",
"targetBranch": "Target branch",
"removeWorktree": "Remove worktree after merge",
"commitMessage": "Commit message",
"conflictedFiles": "Conflicted files:"
},
"diff": {
"title": "DIFF",
"windowTitle": "Diff",
"merge": "Merge…",
"filesHeader": "Files",
"binary": "Binary file — no text diff",
"empty": "No content",
"unifiedView": "Unified",
"splitView": "Side by side",
"wrapLines": "Wrap lines",
"paneBase": "BASE",
"paneWorktree": "WORKTREE",
"maximize": "Maximize",
"restore": "Restore"
},
"worktreesOverview": {
"refresh": "Refresh",
"cleanupFinished": "Cleanup finished",
"columnTask": "TASK",
"columnState": "STATE",
"columnDiff": "DIFF",
"columnAge": "AGE",
"columnOutcome": "RESULT",
"selectAll": "Select all",
"targetLabel": "Target",
"mergeAll": "Merge all",
"needsResolution": "NEEDS RESOLUTION",
"resolve": "Resolve",
"phantom": "phantom",
"phantomTooltip": "Directory missing on disk",
"ctxShowDiff": "Show diff",
"ctxOpenInExplorer": "Open in Explorer",
"ctxJumpToTask": "Jump to task",
"ctxMerge": "Merge…",
"ctxDiscard": "Discard",
"ctxKeep": "Keep",
"ctxCopyBranch": "Copy branch",
"ctxCopyPath": "Copy path",
"ctxForceRemove": "Force remove"
},
"repoImport": {
"title": "ADD REPOS AS LISTS",
"windowTitle": "Add repos as lists",
"cancel": "Cancel",
"searchPlaceholder": "Search repos…",
"addFolder": "Add folder…",
"forgetFolders": "Forget folders",
"alreadyAdded": "(already added)"
},
"mergeHelper": {
"title": "LET CLAUDE HANDLE IT",
"windowTitle": "Let Claude handle it",
"scopeList": "List: {0}",
"scopeReview": "All lists — tasks waiting for review",
"modelLabel": "Model",
"modelTip": "Model for the triage session (dedupe & refine). Later merge phases always run on opus.",
"confirm": "Let Claude handle it",
"cancel": "Cancel",
"selectAll": "Select all",
"selectNone": "Select none",
"empty": "No tasks to hand over — everything is done or cancelled.",
"columnTask": "TASK",
"columnStatus": "STATUS",
"orphanHint": "PARENT NOT IN SELECTION",
"orphanHintTip": "This subtask's parent isn't offered here (already done or cancelled), so it's listed on its own."
},
"unfinishedPlanning": {
"title": "UNFINISHED PLANNING SESSION",
"windowTitle": "Unfinished planning session",
"discard": "Discard",
"finalize": "Finalize",
"resume": "Resume",
"draftTasksSuffix": " draft task(s) waiting to be finalized."
},
"weeklyReport": {
"title": "WEEKLY REPORT",
"windowTitle": "Weekly Report",
"from": "From",
"to": "To",
"generate": "Generate",
"regenerate": "Regenerate",
"emptyStateHint": "No report for this range yet. Click “Generate”."
},
"cheatSheets": {
"title": "CHEAT SHEETS",
"windowTitle": "Cheat Sheets",
"pin": "Pin",
"pinTooltip": "Keep this window on top of the others",
"missing": "Cheat sheet {0} not found."
},
"usageMonitor": {
"title": "USAGE MONITOR",
"windowTitle": "Usage Monitor",
"noGauges": "No usage limits reported yet.",
"refreshHint": "Refresh now — polled every 5 min while a task runs, otherwise every 15 min.",
"staleFormat": "Values stale (as of {0})",
"staleGateHint": "The gate does not apply while values are stale.",
"gateBlockedFormat": "Queue paused — {0}",
"throttleFormat": "Queue throttled: {0}/{1} slots ({2})",
"resetIn": "Reset in {0} ({1})",
"dragHint": "Drag a marker, or type the value below.",
"legendSoft": "Soft · 2 slots",
"legendHard": "Hard · 1 slot",
"legendGate": "Gate · pause",
"gaugeSession": "Session (5h)",
"gaugeWeeklyAll": "Week (all models)",
"gaugeWeeklyScopedFormat": "Week ({0})",
"period": "Period:",
"last7Days": "7 days",
"last30Days": "30 days",
"fromDate": "From",
"toDate": "To",
"modelUsage": "Models",
"taskUsage": "Tasks",
"emptyStateHint": "No usage data for this range yet.",
"columnModel": "MODEL",
"columnIn": "IN",
"columnOut": "OUT",
"columnCache": "CACHE",
"columnOtherIn": "OTHER IN",
"columnOtherOut": "OTHER OUT",
"columnOtherCache": "OTHER CACHE",
"columnShare": "SHARE",
"columnTask": "TASK",
"columnList": "LIST",
"columnModelShort": "MODEL",
"columnRuns": "RUNS",
"columnTotal": "TOTAL",
"columnCost": "COST",
"columnRetries": "RETRIES",
"analyticsStampFormat": "Analytics as of {0}",
"analyticsNever": "Analytics not loaded yet",
"analyticsRefresh": "Refresh analytics",
"openDashboard": "Open TokenTracker dashboard",
"openDashboardTip": "Starts TokenTracker's local dashboard (localhost only, no cloud sync) and opens it in your browser. The first start takes a few seconds.",
"analyticsTotalsFormat": "{0} tokens · ${1}",
"ttMissingTitle": "Token analytics need TokenTracker",
"ttMissingBody": "TokenTracker (MIT) reads your local Claude transcripts and never sees prompts. ClaudeDo only calls its local export — it does not run `init`, installs no hooks and enables no cloud sync.",
"ttInstall": "Install TokenTracker",
"ttNodeHintFormat": "Node 20 or newer is required (found: {0}).",
"ttNodeMissing": "Node 20 or newer is required, but no Node runtime was found.",
"ttErrorFormat": "TokenTracker problem: {0}"
}
},
"installer": {
"nav": {
"back": "Back",
"next": "Next →",
"install": "Install",
"browse": "Browse...",
"cancel": "Cancel"
},
"welcome": {
"title": "Welcome",
"heading": "Install ClaudeDo",
"subheading": "Choose where to install ClaudeDo, then click Next.",
"updateSubheading": "Your tasks, config, and database will be preserved. Click Next to continue.",
"installDirectory": "Install Directory",
"registerMcp": "Register MCP server with Claude",
"registerMcpHint": "Runs 'claude mcp add' so Claude can view and manage your ClaudeDo tasks. You can change this later."
},
"systemCheck": {
"title": "System Check",
"subtitle": "ClaudeDo checks your system before installing.",
"recheck": "Recheck",
"summary": {
"running": "Checking your system…",
"ok": "Everything looks good.",
"warnings": "{0} warning(s) found.",
"blocking": "{0} problem(s) must be fixed: {1}"
},
"claudeHelp": {
"button": "Claude Help Me",
"error": "Could not start the Claude session: {0}",
"tooltip": {
"cliMissing": "The Claude CLI was not found — install it first (see the Claude CLI hint above).",
"notLoggedIn": "Claude is not logged in — run 'claude' once and complete the login flow.",
"ready": "Open an interactive Claude session to help fix your setup."
}
}
},
"paths": {
"title": "Data Paths",
"subtitle": "Configure where ClaudeDo stores its data.",
"databasePath": "Database Path",
"logDirectory": "Log Directory",
"sandboxRoot": "Sandbox Root",
"worktreeStrategy": "Worktree Strategy",
"centralWorktreeRoot": "Central Worktree Root"
},
"service": {
"title": "Worker",
"subtitle": "Configure the ClaudeDo background worker.",
"signalRPort": "SignalR Port",
"queueBackstopInterval": "Queue Backstop Interval (ms)",
"claudeCliPath": "Claude CLI Path",
"autostart": "Start worker automatically at logon",
"autostartHint": "The worker runs as you (the logged-in user) via a per-user logon task, so it can use your Claude CLI authentication.",
"restartDelay": "Restart Delay (ms)"
},
"uiSettings": {
"title": "UI Settings",
"subtitle": "Configure the ClaudeDo desktop UI connection settings.",
"syncWithService": "Sync with service settings",
"signalRUrl": "SignalR URL",
"syncHint": "When synced, these values are derived from the Service and Paths pages."
},
"install": {
"title": "Installation",
"subtitle": "Click Install to build and deploy ClaudeDo.",
"launch": "Launch ClaudeDo"
},
"diagnose": {
"title": "Diagnose",
"subtitle": "Re-run the environment checks against your installed configuration."
},
"settings": {
"removeUserData": "Remove user data (tasks, logs, configs in ~/.claudeDo)",
"uninstall": "Uninstall",
"repair": "Repair",
"save": "Save",
"close": "Close"
}
},
"checks": {
"git": {
"title": "Git",
"hint": "Install Git from https://git-scm.com/downloads, then restart the installer."
},
"gitIdentity": {
"title": "Git Identity",
"hint": "Run: git config --global user.name \"Your Name\" and git config --global user.email \"you@example.com\""
},
"ports": {
"title": "Ports",
"hint": "Change the SignalR/MCP ports on the Service page, or stop the process using them."
},
"writeAccess": {
"title": "Write Access",
"hint": "Choose a different install directory, or run the installer with sufficient permissions (e.g. as administrator)."
},
"claudeCli": {
"title": "Claude CLI",
"hint": "Install the Claude CLI (npm install -g @anthropic-ai/claude-code), then restart your terminal/login session so the updated PATH takes effect."
},
"claudeVersion": {
"title": "Claude CLI Version",
"hint": "Update the CLI: npm update -g @anthropic-ai/claude-code"
},
"claudeAuth": {
"title": "Claude CLI Login",
"hint": "Run 'claude' once and complete the login flow."
},
"permissionModeAuto": {
"title": "Permission Mode",
"hint": "Update the CLI: npm update -g @anthropic-ai/claude-code. ClaudeDo still works in acceptEdits/default mode, with more prompts."
}
},
"planning": {
"diff": {
"previewCombined": "Preview combined",
"loading": "Loading…"
}
},
"conflictResolver": {
"windowTitle": "Resolve merge conflicts",
"modalTitle": "RESOLVE CONFLICTS",
"loading": "Loading conflicts…",
"ours": "MAIN · merge target",
"result": "RESULT",
"theirs": "INCOMING · task branch",
"binaryHint": "Binary files can't be merged here — abort and resolve them in your editor:",
"prevConflict": "Previous conflict (Shift+F8)",
"nextConflict": "Next conflict (F8)",
"conflictMap": "Conflicts in this file — click a marker to jump",
"acceptOurs": "Add main",
"acceptTheirs": "Add incoming",
"removeOurs": "Remove main",
"removeTheirs": "Remove incoming",
"continue": "Resolve & continue",
"abort": "Abort merge"
},
"controls": {
"markdown": {
"copy": "Copy command"
},
"datePicker": {
"today": "Today",
"tomorrow": "Tomorrow",
"nextMon": "Next Mon",
"clear": "Clear",
"time": "Time",
"done": "Done"
}
},
"shell": {
"menu": {
"help": "Help",
"worker": "Worker",
"repositories": "Repositories",
"checkForUpdates": "Check for updates",
"restartWorker": "Restart worker",
"updateClaudeCli": "Update Claude CLI",
"worktrees": "Worktrees…",
"weeklyReport": "Weekly Report…",
"usageMonitor": "Usage Monitor…",
"cheatSheets": "Cheat Sheets",
"cheatSheetGit": "Git…",
"cheatSheetCommits": "Conventional Commits…",
"cheatSheetClaude": "Claude CLI…",
"cheatSheetClaudeConfig": "Claude configuration…",
"cheatSheetDotnet": "dotnet CLI…",
"cheatSheetPowershell": "PowerShell…",
"about": "About…",
"addRepos": "Add repos as lists…"
},
"update": {
"available": "Update available: v",
"updateNow": "Update now",
"dismiss": "Dismiss"
},
"externalMerge": {
"banner": "A Claude session is resolving a merge conflict — don't edit files in the repository.",
"open": "Open resolver"
}
},
"vm": {
"connection": { "online": "Online", "connecting": "Connecting…", "offline": "Offline" },
"shell": { "unexpectedError": "Unexpected error: {0}" },
"mainWindow": { "closeConfirm": { "message": "{0} Mission Control session(s) are still running. Closing the app will end them. Close anyway?" } },
"agentStatus": { "idle": "Idle", "queued": "Queued", "running": "Running", "review": "Review", "children": "Waiting for Subtasks", "done": "Done", "failed": "Failed", "cancelled": "Cancelled" },
"taskStatus": { "idle": "Idle", "queued": "Queued", "running": "Running", "waitingForReview": "Waiting for Review", "waitingForChildren": "Waiting for Subtasks", "done": "Done", "failed": "Failed", "cancelled": "Cancelled", "parked": "Parked", "interactive": "Interactive", "waiting": "Waiting" },
"failureReason": { "maxTurns": "Turn limit reached", "timeout": "Timed out", "usageLimit": "Usage limit reached", "error": "Error", "cancelled": "Cancelled", "unknown": "Unknown reason" },
"failureReasonTooltip": { "maxTurns": "Turn limit reached ({0}/{1} turns) — the worktree is usually fine; continue the task instead of resetting it." },
"planningBadge": { "active": "PLANNING", "finalized": "PLANNED" },
"taskRow": { "createdPrefix": "Created {0}", "stepsText": "{0}/{1} steps" },
"queue": { "baseDirtyWarning": "Heads up: this list's repo has uncommitted changes ({0} modified, {1} untracked) — a new worktree starts from the last commit and won't include them." },
"tasksIsland": { "completedHeader": "COMPLETED", "completedHeaderCount": "COMPLETED · {0}", "statusPill": "{0} running · {1} review", "openTaskOne": "1 open task", "openTasks": "{0} open tasks", "planningResumeFailed": "Couldn't resume planning session: {0}", "approveFailed": "Approve & merge failed: {0}", "cancelReviewFailed": "Cancel review failed: {0}", "sendToQueueFailed": "Send to queue failed: {0}", "queuePlanBlockedInteractive": "Can't queue the plan — {0} has an open interactive session and must be closed first.", "moveRunningRejected": "Can't move a running task to another list.", "moveWorktreeRejected": "Can't move — this task has an active worktree pointing at its current repo.", "moveRepoConfirm": "Different repos — {0} → {1}. Move the task anyway?", "moveConfirmUnavailable": "Can't move — the confirmation dialog isn't available.", "quickClaudeNoWorkingDir": "This list has no working directory configured.", "quickClaudeDirMissing": "Working directory no longer exists: {0}", "setStatusFailed": "Failed to update status: {0}", "cancelFailed": "Cancel failed: {0}", "rejectToQueueFailed": "Reject to queue failed: {0}", "rejectToIdleFailed": "Reject failed: {0}", "deleteTaskConfirm": "Delete \"{0}\"? This cannot be undone.", "deleteTaskFailed": "Delete failed: {0}", "toggleDoneFailed": "Couldn't update done state: {0}", "removeFromQueueFailed": "Remove from queue failed: {0}", "openWorktreeFailed": "Couldn't open worktree: {0}" },
"diff": { "loadFailed": "Failed to load diff: {0}", "noChanges": "No changes to show.", "unavailable": "Diff no longer available — commit range incomplete." },
"planningDiff": { "hubError": "Could not build combined preview (hub error).", "conflict": "Cannot build combined preview: subtask {0} conflicts with an earlier subtask ({1} files).", "buildFailed": "Could not build combined preview: {0}" },
"merge": { "commitMessage": "chore: merge {0}", "progressMerging": "Merging…", "progressVerifying": "Running the list's verify command… ({0})", "workerOfflineBranches": "Worker offline — cannot list branches.", "loadBranchesFailed": "Failed to load branches: {0}", "merged": "Merged.", "blocked": "Blocked: {0}", "verifyFailed": "Merge landed, but the list's verify command failed — the task was kept out of Done.", "untrackedCollision": "Merge refused — it would overwrite an untracked file in the target working directory.", "unknownStatus": "Unknown status: {0}", "mergeFailed": "Merge failed: {0}" },
"settingsModal": { "workerOffline": "Worker offline — settings read-only.", "saveFailed": "Save failed: {0}" },
"onlineInbox": { "workerOffline": "Worker offline — cannot load config.", "saved": "Config saved.", "saveFailed": "Save failed: {0}", "signedIn": "Signed in successfully.", "signedInNoRole": "Signed in, but this account is missing the 'user' role in Zitadel — online sync will be rejected until the role is granted in the ClaudeDo project.", "signInFailed": "Sign-in failed: {0}", "signedOut": "Signed out.", "signOutFailed": "Sign-out failed: {0}" },
"tickets": { "connectionOk": "Connected as {0}.", "connectionMissingScopes": "Connected as {0}, but missing scopes: {1}", "tokenCleared": "Token removed.", "workerOffline": "Worker not reachable." },
"weeklyReport": { "invalidRange": "Invalid date range.", "error": "Error: {0}" },
"usageMonitor": {
"loadFailed": "Couldn't load usage data: {0}",
"refreshFailed": "Couldn't refresh usage: {0}",
"thresholdSaveFailed": "Couldn't save the threshold: {0}",
"installStarted": "Installing TokenTracker — watch the log strip for progress.",
"installFailed": "Couldn't install TokenTracker: {0}",
"analyticsRefreshFailed": "Couldn't refresh the analytics: {0}",
"dashboardFailed": "Couldn't open the TokenTracker dashboard: {0}",
"dashboardUnavailable": "the local dashboard server did not start"
},
"filesTab": { "workerOffline": "Worker offline.", "noneBundled": "No default agents bundled.", "allPresent": "All default agents already present.", "restored": "Restored {0} default agent(s).", "restoreFailed": "Restore failed: {0}", "resetToDefault": "Reset to the bundled default." },
"sessionSkillsTab": { "installed": "Installed: {0}", "installFailed": "Install failed: {0}", "updated": "Updated.", "updateFailed": "Update failed: {0}", "removed": "Removed.", "removeFailed": "Remove failed: {0}" },
"worktreesTab": { "workerOffline": "Worker offline.", "removed": "Removed {0} worktree(s).", "blocked": "Cannot force-remove: {0} task(s) still running. Cancel them first.", "removedFrom": "Removed {0} worktree(s) from {1} task(s).", "cleanupFailed": "Cleanup failed: {0}", "resetFailed": "Reset failed: {0}" },
"worktreesOverview": { "titleAll": "Worktrees", "titleList": "Worktrees — {0}", "listFallback": "list", "cleanupFailed": "Cleanup failed.", "cleanupFailedDetailed": "Cleanup failed: {0}", "removed": "Removed {0} worktree(s).", "discardConfirm": "Discard the worktree for \"{0}\"? Uncommitted work will be lost.", "discardFailed": "Failed to discard worktree.", "keepFailed": "Failed to keep worktree.", "cannotForceRunning": "Cannot force-remove a running task.", "forceRemoveFailed": "Force remove failed.", "forceRemoveFailedDetailed": "Force remove failed: {0}", "batchDone": "Merged {0}, {1} need resolution.", "openInExplorerFailed": "Couldn't open path: {0}" },
"listSettings": { "untitled": "Untitled", "ticketProjectNone": "— none —", "loadFailed": "Couldn't load list settings: {0}", "ticketProjectsLoadFailed": "Couldn't load ticket projects: {0}", "confirmDeleteFolder": "Delete folder \"{0}\"? The lists inside it are kept and move back to the top level.", "confirmDeleteList": "Delete list \"{0}\" and all its tasks? This cannot be undone.", "deleteBlockedPlanning": "This list has planning sessions with child tasks. Discard those first, then delete the list.", "workingDirMissing": "This folder doesn't exist.", "workingDirNotRepo": "This folder isn't a git repository yet. Run `git init` in it first, or clear the working directory to save this as a manual list." },
"detailsIsland": { "verifyFailed": "Merge landed, but the list's verify command failed — the task was kept out of Done.", "untrackedCollision": "Merge refused — it would overwrite an untracked file in the target working directory.", "stopOffline": "Worker offline — can't stop the task.", "stopFailed": "Stop failed: {0}", "enqueueFailed": "Queue failed: {0}", "dequeueFailed": "Remove from queue failed: {0}", "resetAndRetryFailed": "Reset & retry failed: {0}", "toggleDoneFailed": "Couldn't update done state: {0}" },
"mergeSection": { "openWorktreeFailed": "Couldn't open worktree: {0}" },
"about": { "openPathFailed": "Couldn't open path: {0}" },
"lists": { "localSuffix": "{0} / local", "smartMyDay": "My Day", "smartImportant": "Important", "smartPlanned": "Planned", "smartNotes": "Notes", "virtualQueue": "Queue", "virtualRunning": "Running", "virtualReview": "Review", "newList": "New list", "findingsNotFound": "No findings yet for this list.", "findingsOpenFailed": "Couldn't open findings folder: {0}", "openInExplorerFailed": "Couldn't open path: {0}" },
"repoImport": { "loadFailed": "Couldn't load remembered folders: {0}", "saveFailed": "Couldn't save folders: {0}" }
},
"ops": {
"stalledHint": "Still running — worker hasn't responded in a while",
"merge": {
"merging": "Merging…",
"verifying": "Running the list's verify command… ({0})"
},
"diff": {
"parsing": "Parsing diff…"
},
"review": {
"submitting": "Submitting for review…",
"rejecting": "Rejecting…",
"parking": "Parking…",
"previewing": "Loading preview…"
},
"worktrees": {
"refreshing": "Refreshing…",
"cleaningUp": "Cleaning up finished worktrees…",
"resetting": "Resetting worktree…",
"forceRemoving": "Force-removing worktree…",
"batchMerging": "Merging {0}/{1}…"
},
"claudeBin": {
"saving": "Saving claude_bin…"
},
"skills": {
"installing": "Cloning skill…",
"updating": "Updating skill…",
"restoringDefaults": "Restoring default agents…"
},
"repoImport": {
"scanning": "Scanning repositories…"
},
"updateCheck": {
"checking": "Checking for updates…"
},
"reports": {
"generatingWeekly": "Generating report…",
"runningDailyPrep": "Running daily prep…"
},
"planning": {
"finalizing": "Finalizing plan…",
"queuingSubtasks": "Queuing subtasks…"
},
"worker": {
"startupRecovery": "Recovering…",
"creatingWorktree": "Creating worktree…",
"rebasingAfterMerge": "Rebasing other worktrees…"
}
},
"usage": {
"pill": {
"empty": "Usage –",
"bothFormat": "5h {0}% · 7d {1}%",
"fiveHourFormat": "5h {0}%",
"sevenDayFormat": "7d {0}%",
"fiveHourLabel": "5h",
"sevenDayLabel": "7d",
"resetIn": "{0}: Reset in {1}",
"durationHoursMinutes": "{0} h {1} m",
"durationMinutes": "{0} m",
"blockedReason": "Blocked: {0}",
"stale": "stale (as of {0})",
"lastError": "Last error: {0}",
"throttled": "Throttled: {0}/{1} slots ({2})"
}
}
}