736 lines
32 KiB
JSON
736 lines
32 KiB
JSON
{
|
||
"metadata": { "code": "en", "name": "English" },
|
||
"settings": {
|
||
"title": "SETTINGS",
|
||
"save": "Save",
|
||
"cancel": "Cancel",
|
||
"language": "Language",
|
||
"tabGeneral": "General",
|
||
"tabWorktrees": "Worktrees",
|
||
"tabFiles": "Files",
|
||
"tabPrime": "Prime Claude",
|
||
"tabSkills": "Skills",
|
||
"general": {
|
||
"defaultInstructions": "Default instructions",
|
||
"defaultInstructionsPlaceholder": "Baseline instructions applied to every task",
|
||
"model": "Model",
|
||
"maxTurns": "Max turns",
|
||
"effort": "Effort",
|
||
"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 (%)",
|
||
"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.",
|
||
"removeAll": "Remove All"
|
||
},
|
||
"files": {
|
||
"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",
|
||
"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": "Prime your Claude usage window by firing a single non-interactive ping 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, the ping fires immediately.",
|
||
"addSchedule": "+ Add schedule",
|
||
"removeScheduleTip": "Remove schedule",
|
||
"dailyPrepMaxTasks": "Max tasks per day",
|
||
"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"
|
||
},
|
||
"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",
|
||
"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",
|
||
"quickClaudeTip": "Quick Claude session",
|
||
"listSettingsTip": "List settings",
|
||
"addPlaceholder": "Add a task…",
|
||
"enterKey": "ENTER",
|
||
"notesPinnedRow": "Notes (daily notes)",
|
||
"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",
|
||
"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",
|
||
"manualTip": "Manual reminder — Claude never picks this up",
|
||
"ctxMarkManual": "Mark as manual",
|
||
"ctxMarkClaudeTask": "Mark as Claude task",
|
||
"approve": "Approve",
|
||
"approveTip": "Approve — mark Done",
|
||
"reject": "Reject",
|
||
"rejectTip": "Reject with feedback and re-run",
|
||
"park": "Park",
|
||
"parkTip": "Send back to Idle for manual editing",
|
||
"cancel": "Cancel",
|
||
"cancelTip": "Cancel this task",
|
||
"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",
|
||
"scheduleTitle": "Schedule task",
|
||
"scheduleWhen": "WHEN",
|
||
"scheduleConfirm": "Schedule",
|
||
"rejectRerunTitle": "Reject & re-run",
|
||
"reviewTitle": "Review",
|
||
"feedbackLabel": "FEEDBACK FOR THE AGENT",
|
||
"feedbackPlaceholder": "What should the agent fix?",
|
||
"rerun": "Re-run",
|
||
"refineTip": "Refine this task with Claude",
|
||
"refiningTip": "Claude is refining this task…"
|
||
},
|
||
"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",
|
||
"newList": "New list",
|
||
"addReposTip": "Add repos as lists"
|
||
},
|
||
"details": {
|
||
"deleteTaskTip": "Delete task",
|
||
"killSessionTip": "Kill the running session",
|
||
"closeTip": "Close",
|
||
"copyTaskIdTip": "Copy task ID",
|
||
"starTip": "Star",
|
||
"agentSettingsTip": "Agent settings",
|
||
"agentSettingsHeading": "Agent settings (overrides)",
|
||
"mergeLabel": "MERGE",
|
||
"mergeTargetLabel": "Merge target",
|
||
"reviewCombinedDiff": "Review combined diff",
|
||
"mergeAllSubtasks": "Merge all subtasks",
|
||
"childOutcomesLabel": "SUBTASKS",
|
||
"stepsLabel": "STEPS",
|
||
"addStepPlaceholder": "Add a step...",
|
||
"detailsLabel": "DETAILS",
|
||
"copyDescriptionTip": "Copy description to clipboard",
|
||
"copyFormattedTip": "Copy title, description and open steps",
|
||
"toggleEditPreviewTip": "Toggle edit/preview",
|
||
"previewBtn": "Preview",
|
||
"editBtn": "Edit",
|
||
"descriptionPlaceholder": "Add task details (markdown supported)...",
|
||
"prepTitle": "Daily prep",
|
||
"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": {
|
||
"sectionLabel": "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"
|
||
}
|
||
},
|
||
"agent": {
|
||
"openWorktreeTip": "Open worktree in file explorer"
|
||
},
|
||
"notes": {
|
||
"today": "Today",
|
||
"add": "Add",
|
||
"newNotePlaceholder": "New note…",
|
||
"save": "Save",
|
||
"delete": "Delete"
|
||
},
|
||
"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"
|
||
},
|
||
"missionControl": {
|
||
"windowTitle": "Mission Control",
|
||
"newSession": "New session",
|
||
"empty": "No running tasks",
|
||
"settings": "Settings",
|
||
"queue": "Queue",
|
||
"blocked": "Blocked",
|
||
"running": "Running",
|
||
"focusMode": "Focus",
|
||
"overviewMode": "Overview",
|
||
"closeSession": "Close session",
|
||
"conptyLaunchFailed": "Couldn't open interactive session: {0}",
|
||
"conptyStarting": "Starting session…",
|
||
"mergeHelperTitle": "Merge Helper",
|
||
"mergeHelperHandoffTitleSuffix": " (Handoff)",
|
||
"mergeHelperTaskTitle": "List handler: {0}",
|
||
"mergeHelperTaskDescriptionHeader": "Tasks handled by this run:",
|
||
"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)",
|
||
"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"
|
||
},
|
||
"listSettings": {
|
||
"title": "LIST SETTINGS",
|
||
"deleteList": "Delete list",
|
||
"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.",
|
||
"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."
|
||
},
|
||
"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"
|
||
},
|
||
"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}",
|
||
"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"
|
||
},
|
||
"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”."
|
||
},
|
||
"usageMonitor": {
|
||
"title": "USAGE MONITOR",
|
||
"windowTitle": "Usage Monitor",
|
||
"noGauges": "No usage limits reported yet.",
|
||
"refresh": "Refresh now",
|
||
"refreshHint": "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}",
|
||
"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"
|
||
}
|
||
},
|
||
"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 ~/.todo-app)",
|
||
"uninstall": "Uninstall",
|
||
"repair": "Repair",
|
||
"save": "Save",
|
||
"close": "Close"
|
||
}
|
||
},
|
||
"checks": {
|
||
"git": {
|
||
"title": "Git",
|
||
"hint": "Install Git and make sure it is on PATH."
|
||
},
|
||
"gitIdentity": {
|
||
"title": "Git Identity",
|
||
"hint": "Set your git identity: git config --global user.name \"...\" and user.email \"...\"."
|
||
},
|
||
"ports": {
|
||
"title": "Ports",
|
||
"hint": "Free the port, or change it on the Worker page after install."
|
||
},
|
||
"writeAccess": {
|
||
"title": "Write Access",
|
||
"hint": "Choose a different install directory, or run the installer as administrator."
|
||
},
|
||
"claudeCli": {
|
||
"title": "Claude CLI",
|
||
"hint": "Install the Claude CLI and make sure it is on PATH."
|
||
},
|
||
"claudeVersion": {
|
||
"title": "Claude CLI Version",
|
||
"hint": "Update the Claude CLI to a newer version."
|
||
},
|
||
"claudeAuth": {
|
||
"title": "Claude Login",
|
||
"hint": "Run 'claude auth login' to sign in."
|
||
},
|
||
"permissionModeAuto": {
|
||
"title": "Permission Mode",
|
||
"hint": "Update the Claude CLI to a version that supports --permission-mode auto."
|
||
}
|
||
},
|
||
"planning": {
|
||
"conflict": {
|
||
"windowTitle": "Merge conflict",
|
||
"modalTitle": "MERGE CONFLICT",
|
||
"openInVsCode": "Open all in VS Code",
|
||
"resolved": "I've resolved — continue",
|
||
"abort": "Abort this merge"
|
||
},
|
||
"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": {
|
||
"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",
|
||
"worktrees": "Worktrees…",
|
||
"weeklyReport": "Weekly Report…",
|
||
"usageMonitor": "Usage Monitor…",
|
||
"about": "About…",
|
||
"addRepos": "Add repos as lists…"
|
||
},
|
||
"update": {
|
||
"available": "Update available: v",
|
||
"updateNow": "Update now",
|
||
"dismiss": "Dismiss"
|
||
},
|
||
"staleWorker": {
|
||
"message": "The worker is running an older build than this repo's merged main — restart it so your merged changes take effect."
|
||
},
|
||
"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": { "restartingWorker": "Restarting worker…", "unexpectedError": "Unexpected error: {0}" },
|
||
"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" },
|
||
"planningBadge": { "active": "PLANNING", "finalized": "PLANNED" },
|
||
"taskRow": { "createdPrefix": "Created {0}", "stepsText": "{0}/{1} steps" },
|
||
"tasksIsland": { "completedHeader": "COMPLETED", "completedHeaderCount": "COMPLETED · {0}", "planningOpenFailed": "Couldn't open planning session: {0}", "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}" },
|
||
"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": "Merge task: {0}", "workerOfflineBranches": "Worker offline — cannot list branches.", "loadBranchesFailed": "Failed to load branches: {0}", "merged": "Merged.", "conflict": "Merge conflict — target branch restored. Resolve manually or via Continue, then retry.", "blocked": "Blocked: {0}", "verifyFailed": "Merge landed, but the list's verify command failed — the task was kept out of Done.", "unknownStatus": "Unknown status: {0}", "mergeFailed": "Merge failed: {0}" },
|
||
"conflictResolution": { "vsCodeError": "Could not launch VS Code: {0}. Paths are listed above — copy them manually.", "subtaskPrefix": "Conflicts in subtask: {0}", "targetPrefix": "Merging into: {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}" },
|
||
"weeklyReport": { "invalidRange": "Invalid date range.", "generating": "Generating report…", "error": "Error: {0}" },
|
||
"usageMonitor": {
|
||
"loadFailed": "Couldn't load usage data: {0}",
|
||
"refreshFailed": "Couldn't refresh usage: {0}",
|
||
"thresholdSaveFailed": "Couldn't save the threshold: {0}"
|
||
},
|
||
"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).", "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}", "batchProgress": "Merging {0}/{1}…", "batchDone": "Merged {0}, {1} need resolution." },
|
||
"listSettings": { "untitled": "Untitled" },
|
||
"detailsIsland": { "verifyFailed": "Merge landed, but the list's verify command failed — the task was kept out of Done." },
|
||
"lists": { "localSuffix": "{0} / local", "smartMyDay": "My Day", "smartImportant": "Important", "smartPlanned": "Planned", "virtualQueue": "Queue", "virtualRunning": "Running", "virtualReview": "Review", "newList": "New list" },
|
||
"repoImport": { "loadFailed": "Couldn't load remembered folders: {0}", "saveFailed": "Couldn't save folders: {0}" }
|
||
},
|
||
"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})"
|
||
}
|
||
},
|
||
"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 auto support",
|
||
"hint": "Update the CLI: npm update -g @anthropic-ai/claude-code. ClaudeDo still works in acceptEdits/default mode, with more prompts."
|
||
}
|
||
}
|
||
}
|