{
  "chat": {
    "typeMessage": "Type a message…",
    "sendMessage": "Send",
    "abort": "Abort",
    "needToken": "Save a gateway token to chat.",
    "loading": "Loading conversation…",
    "model": "Session model",
    "modelPlaceholder": "Select a model…",
    "agent": "Agent",
    "agentPlaceholder": "Select an agent…",
    "agentSearchPlaceholder": "Search agents…",
    "agentNoMatches": "No matching agents",
    "thinkingLevel": "Thinking",
    "newSession": "New chat",
    "welcomeTitle": "Welcome to xopc",
    "welcomeDescription": "Send a message to get started",
    "welcomeSpotlight": {
      "headline": "Your personal AI assistant, ready to help",
      "tagline": "Just tell me what you need — I'll break it down, look things up, and get it done.",
      "categories": [
        {
          "id": "work",
          "icon": "documents",
          "title": "Work & productivity",
          "description": "Emails, reports, meeting notes",
          "scenarios": [
            {
              "prompt": "Help me write a professional reply to an email declining a meeting invitation politely while suggesting an alternative time."
            },
            {
              "prompt": "Draft a concise weekly status update covering what I accomplished, what's in progress, and any blockers — keep it under 200 words."
            },
            {
              "prompt": "I have a meeting in 30 minutes. Help me prepare 5 key talking points and 3 questions I should ask about project timeline risks."
            }
          ]
        },
        {
          "id": "research",
          "icon": "globe",
          "title": "Research & learning",
          "description": "News, explanations, decisions",
          "scenarios": [
            {
              "prompt": "What are the biggest tech news stories this week? Give me a quick summary of the top 3 with why they matter."
            },
            {
              "prompt": "Explain how RAG (Retrieval-Augmented Generation) works in simple terms, as if I'm explaining it to a non-technical manager."
            },
            {
              "prompt": "I'm choosing between Notion and Obsidian for personal note-taking. Compare them on features, pricing, and offline use, then recommend one for my case."
            }
          ]
        },
        {
          "id": "content",
          "icon": "content",
          "title": "Writing & creation",
          "description": "Posts, copy, translation",
          "scenarios": [
            {
              "prompt": "Turn this idea into a LinkedIn post: AI tools are making individual contributors as productive as small teams. Keep it engaging and under 150 words."
            },
            {
              "prompt": "Rewrite the following paragraph to be more concise and punchy, suitable for a product landing page hero section."
            },
            {
              "prompt": "Translate this text to English and adjust the tone to sound natural for a global audience, not just a literal translation."
            }
          ]
        },
        {
          "id": "data",
          "icon": "folder",
          "title": "Data & files",
          "description": "Organize, analyze, automate",
          "scenarios": [
            {
              "prompt": "Look at my Downloads folder and suggest how to organize it — group files by type and tell me what's safe to delete."
            },
            {
              "prompt": "I have a CSV with sales data. Help me find the top 5 products by revenue and spot any month-over-month trends."
            },
            {
              "prompt": "Create a simple daily planning template in Markdown: sections for top 3 priorities, meetings, notes, and end-of-day reflection."
            }
          ]
        }
      ]
    },
    "you": "You",
    "assistant": "Assistant",
    "tool": "Tool",
    "thinkingLabel": "thinking…",
    "thoughts": "Thoughts",
    "thoughtsStreaming": "Thinking…",
    "thoughtsExpandHint": "Expand to view model thoughts",
    "thinkingLevelLabel": "Thinking",
    "thinkingLevels": {
      "off": "Off",
      "minimal": "Minimal",
      "low": "Low",
      "medium": "Medium",
      "high": "High",
      "xhigh": "X-High",
      "adaptive": "Adaptive"
    },
    "toolInput": "Input",
    "toolOutput": "Output",
    "noOutput": "(no output)",
    "viewSteps_one": "View {{count}} step",
    "viewSteps_other": "View {{count}} steps",
    "stepSearchedWeb": "Searched web",
    "stepReadFile": "Read file",
    "stepDetails": "Details",
    "stepRunCommand": "Run command",
    "stepListDirectory": "Browse folder",
    "stepWriteFile": "Save file",
    "stepEditFile": "Edit file",
    "stepOpenUrl": "Open link",
    "stepFetchUrl": "Fetch webpage",
    "stepUnknownTool": "Running {{name}}",
    "stepsClusterDone": {
      "search_one": "Searched the web",
      "search_other": "Searched the web {{count}} times",
      "readFile_one": "Read 1 file",
      "readFile_other": "Read {{count}} files",
      "editFile_one": "Edited 1 file",
      "editFile_other": "Edited {{count}} files",
      "writeFile_one": "Saved 1 file",
      "writeFile_other": "Saved {{count}} files",
      "runCommand_one": "Ran 1 command",
      "runCommand_other": "Ran {{count}} commands",
      "listDir_one": "Browsed 1 folder",
      "listDir_other": "Browsed {{count}} folders",
      "openUrl_one": "Opened 1 link",
      "openUrl_other": "Opened {{count}} links",
      "fetchUrl_one": "Fetched 1 page",
      "fetchUrl_other": "Fetched {{count}} pages",
      "other_one": "Ran 1 tool",
      "other_other": "Ran {{count}} tools"
    },
    "stepsClusterIng": {
      "thinking": "Thinking…",
      "search": "Searching the web…",
      "readFile": "Reading files…",
      "editFile": "Editing files…",
      "writeFile": "Saving files…",
      "runCommand": "Running command…",
      "listDir": "Browsing folder…",
      "openUrl": "Opening link…",
      "fetchUrl": "Fetching page…",
      "other": "Working…",
      "mixed": "Working on it…"
    },
    "stepsClusterJoin": ", ",
    "stepsClusterJoinFinal": " and ",
    "stepsClusterMoreSuffix": " and more",
    "toolCard": {
      "copyPath": "Copy path",
      "copyCommand": "Copy command",
      "copied": "Copied",
      "viewDiff": "View changes",
      "hideDiff": "Hide changes",
      "viewOutput": "View output",
      "hideOutput": "Hide output",
      "viewContent": "View content",
      "hideContent": "Hide content",
      "linesBadge": "{{count}} lines",
      "linesPartial": "Loaded {{shown}} of {{total}} lines",
      "diffStats": "+{{added}} −{{removed}}",
      "sizeBadge": "{{size}}",
      "exitCodeOk": "Exit 0",
      "exitCodeNonZero": "Exit {{code}}",
      "exitCodeUnknown": "Unfinished",
      "timedOut": "Timed out",
      "truncatedBadge": "Output truncated",
      "noOutput": "No output",
      "openInWorkspace": "Open in workspace",
      "rawDetails": "Raw details (developer)"
    },
    "composerRunStatusSending": "Sending…",
    "composerRunStatusDefault": "Working…",
    "composerRunningTool": "Running {{name}}",
    "composerStageThinking": "Thinking…",
    "composerStageSearching": "Searching…",
    "composerStageReading": "Reading…",
    "composerStageWriting": "Writing…",
    "composerStageExecuting": "Executing…",
    "composerStageAnalyzing": "Analyzing…",
    "attachFile": "Attach file",
    "moreActions": "More actions",
    "fileReference": {
      "externalBadge": "External",
      "externalDescription": "This file is outside the current workspace, so it cannot be edited in the workspace editor.",
      "offWorkspaceBaseDescription": "This file is outside the current session workspace and cannot be opened in the workspace editor.",
      "browserOffWorkspaceDescription": "This file is outside the current session workspace. Copy the path and open it from your system or desktop app.",
      "locationKind": {
        "agent-profile": "Agent profile",
        "xopc-skills": "Skills",
        "xopc-config": "App config",
        "xopc-agents": "Agent data",
        "xopc-sessions": "Session data",
        "host": "On this computer"
      },
      "openInSettings": "Open in settings",
      "browserExternalDescription": "This file is outside the current workspace. In the browser, copy the path and open it from your system.",
      "missingDescription": "This file is currently unavailable. It may have been moved, deleted, or created in another runtime environment.",
      "invalidDescription": "This file path could not be resolved.",
      "openExternal": "Open",
      "revealInFolder": "Show in folder",
      "copyPath": "Copy path",
      "importToWorkspace": "Import to workspace",
      "importInProgress": "Importing…",
      "importDialogTitle": "Copy this file into the workspace?",
      "importDialogSourceLabel": "Source",
      "importDialogDestinationLabel": "Destination (workspace-relative)",
      "importDialogConfirm": "Import",
      "importDialogCancel": "Cancel",
      "importSuccessToast": "Imported to {{path}}",
      "importErrors": {
        "IMPORT_NOT_ALLOWED": "This file cannot be imported into the workspace.",
        "SOURCE_NOT_FOUND": "The source file is no longer available.",
        "SOURCE_NOT_FILE": "Only regular files can be imported.",
        "SOURCE_TOO_LARGE": "File exceeds the import size limit.",
        "INVALID_DESTINATION": "Invalid destination path.",
        "DESTINATION_BLOCKED": "The destination path is protected. Try a different name.",
        "DESTINATION_EXISTS": "A file already exists at the destination.",
        "SAME_LOCATION": "Source and destination are the same.",
        "FILE_REF_EXPIRED": "This file reference has expired. Try again.",
        "FILE_REF_FORBIDDEN": "This file reference does not belong to the current session.",
        "OVERWRITE_DISABLED": "Overwrite is disabled by configuration.",
        "IMPORT_FAILED": "Import failed. Please try again.",
        "UNKNOWN": "Import failed."
      }
    },
    "workingDirectory": {
      "selectWorkingDirectory": "Select working directory",
      "chooseFolder": "Choose folder…",
      "selectPath": "Select folder…",
      "recentDirectories": "Recent directories",
      "noRecent": "No recent folders",
      "notSet": "Default workspace",
      "defaultWorkspace": "Session workspace",
      "copyPath": "Copy path",
      "selectionOnlyAtNewChat": "Workspace can only be chosen before the first message.",
      "lockedTapTitle": "Workspace is locked for this chat",
      "lockedTapBody": "To pick a folder for the agent, open New chat and click this control before you send the first message. You can also set a default workspace under Settings → Agents.",
      "clickToCopyFullPath": "Click to copy full path",
      "tooltipAgentWorkspace": "Agent workspace",
      "tooltipOpenProjectFiles": "Click to open or close project files in the sidebar.",
      "copied": "Copied",
      "openWorkspaceMenu": "Workspace options",
      "folderPickerRequiresDesktop": "Folder selection requires the desktop app (Electron). Open xopc from the desktop app, or configure the path another way.",
      "applyErrorTitle": "Could not set working directory",
      "applyErrorClose": "Close",
      "pathModalTitle": "Working directory",
      "pathModalDescription": "Enter an absolute path on the machine running the gateway (folder for the session workspace).",
      "pathInputPlaceholder": "/absolute/path/to/folder",
      "pathModalConfirm": "Apply",
      "pathModalCancel": "Cancel",
      "pickerHostHint": "Directories on gateway host: {{hostname}}",
      "pickerLoading": "Loading…",
      "pickerUp": "Up",
      "pickerUseThisFolder": "Use this folder",
      "pickerManualPath": "Or type an absolute path",
      "pickerApplyManual": "Apply path",
      "pickerListError": "Could not read this location.",
      "pickerEmptyFolder": "Empty folder",
      "pickerDrives": "Drives"
    },
    "maxAttachmentsReached": "Maximum {{max}} files per message. Remove some to add more.",
    "maxAttachmentsTruncated": "{{dropped}} file(s) not added (limit {{max}} per message).",
    "attachmentFileTooLarge": "File \"{{name}}\" is too large (max {{maxSize}} per file).",
    "attachmentLoadFailed": "Failed to load attachment: {{name}}",
    "clipboardFileTypeUnsupported": "Clipboard file type not supported for chat attachments",
    "inputPlaceholder": "Ask anything — @ for files, / for skills & commands",
    "currentModel": "Model used for this conversation",
    "modelSearchPlaceholder": "Search by name, provider, or ID…",
    "modelNoMatches": "No models match your search",
    "contextWindowHoverShort": "{{percent}}% context",
    "contextWindowHoverNoLimit": "~{{used}} context",
    "contextWindowAriaSummary": "Context usage about {{used}} of {{limit}} tokens",
    "contextWindowAriaSummaryNoLimit": "Estimated context usage about {{used}} tokens",
    "modelProviderSettingsLink": "Missing a model? Open Models & capabilities",
    "dropFiles": "Drop files here to attach",
    "voiceRecording": "Record voice",
    "voiceRecordingStop": "Stop recording",
    "voiceInput": "Voice input",
    "voiceRecordingStatus": "Recording",
    "voiceInputCancel": "Cancel recording",
    "voiceInputConfirm": "Transcribe to text",
    "voiceTranscribing": "Transcribing…",
    "voiceTranscribeEmpty": "No speech detected.",
    "voiceTranscribeFailed": "Transcription failed. Try again.",
    "voiceSttNotConfigured": "Speech-to-text is not configured. Enable STT under Settings → Voice.",
    "voiceMicDenied": "Microphone access denied or unavailable.",
    "inputPlaceholderSteering": "Follow-up: Enter queues a row; click a row to edit here",
    "inputPlaceholderSteeringEdit": "Editing queued follow-up — Enter saves, Esc discards changes",
    "steeringInterruptSend": "Stop and send now (⌘↵ or Ctrl+↵)",
    "followUpQueueAria": "Follow-up queue (sent after this reply, in order)",
    "followUpQueueHeading": "Follow-ups",
    "followUpQueueClickToEdit": "Edit in composer",
    "followUpQueueAttachmentOnly": "(attachment)",
    "followUpQueueEmptyPreview": "(empty)",
    "followUpQueueDrag": "Drag to reorder",
    "followUpQueueMoveUp": "Move up",
    "followUpQueueMoveDown": "Move down",
    "followUpQueueSteerNow": "Inject as steering (tool boundary)",
    "followUpQueueRemove": "Remove from queue",
    "followUpQueueAttachmentsNote": "Rows with attachments cannot use ✨ steer; they send as full messages in order.",
    "followUpQueueMaxReached": "Follow-up queue is full (max {{max}}). Remove one or wait for the run to finish.",
    "clarifyRegionAria": "Assistant clarification",
    "clarifyResumeHint": "Your answer continues the current assistant turn.",
    "clarifyServerTimeout": "This prompt expires on the server after about {{minutes}} minutes.",
    "clarifyDefaultTimeoutNote": "If it expires before you answer, the assistant may use the suggested default.",
    "clarifySkipNote": "Skip sends an empty reply so the run can continue.",
    "clarifyChoicesGroupAria": "Suggested answers",
    "clarifyCustomLabel": "Or type your own answer",
    "clarifyPlaceholder": "Your answer…",
    "clarifySend": "Send",
    "clarifyUseDefault": "Use default",
    "clarifyDefaultChoice": "Default: {{text}}",
    "clarifySkip": "Skip",
    "clarifyTimeRemaining": "Time left (approx.): {{time}}",
    "browserSetupRequiredTitle": "Browser setup needed",
    "browserSetupRequiredCta": "Configure browser",
    "browserSetupRequiredDetailToggle": "View diagnostic detail",
    "browserSetupRequiredReasons": {
      "generic": "The configured browser backend isn't ready yet. Finish setup in Settings → Browser to continue.",
      "extension_not_installed": "The xopc browser extension isn't installed yet. Install it from Settings → Browser to enable the agent to drive Chrome.",
      "extension_bridge_offline": "The extension bridge isn't listening. Start it from Settings → Browser, then keep Chrome open.",
      "extension_not_connected": "The bridge is up but Chrome hasn't connected yet. Open Chrome and enable the xopc extension.",
      "local_chromium_missing": "Local Chromium isn't installed. Install it from Settings → Browser (one-click) before using the local backend.",
      "cloakbrowser_not_installed": "CloakBrowser binary isn't downloaded yet. Install it from Settings → Browser.",
      "cdp_unreachable": "The configured CDP endpoint isn't reachable. Verify the URL in Settings → Browser and make sure Chrome is running with --remote-debugging-port.",
      "cloud_api_key_missing": "Cloud browser API key is missing. Add it in Settings → Browser."
    },
    "providerSetupRequiredTitle": "Model provider not configured",
    "providerSetupRequiredBody": "No API key found for {{provider}}. Add your credentials in Settings → Providers to start chatting.",
    "providerSetupRequiredCta": "Configure providers",
    "providerSetupRequiredDetailToggle": "View detail",
    "agentRunErrorAuthInvalidTitle": "API key rejected",
    "agentRunErrorAuthInvalidBody": "The provider rejected the API key for {{provider}}. Update it in Settings → Providers.",
    "agentRunErrorRateLimitTitle": "Rate limit exceeded",
    "agentRunErrorRateLimitBody": "Too many requests to the model provider. Wait a moment and try again.",
    "agentRunErrorTimeoutTitle": "Request timed out",
    "agentRunErrorTimeoutBody": "The model provider did not respond in time. Check your network and try again.",
    "agentRunErrorBillingTitle": "Billing or quota issue",
    "agentRunErrorBillingBody": "The provider reported insufficient balance or quota. Check your account and try again.",
    "agentRunErrorUnknownTitle": "Request failed",
    "agentRunErrorUnknownBody": "The assistant could not complete this turn.",
    "agentRunErrorSendFailedTitle": "Send failed",
    "agentRunErrorSendFailedBody": "Could not reach the gateway. Check your connection and try again.",
    "agentRunErrorUnknownProvider": "this provider",
    "agentRunErrorDetailToggle": "View detail",
    "agentRunErrorCtaProviders": "Configure providers",
    "voicePlay": "Play voice",
    "voicePause": "Pause",
    "voiceLoading": "Loading audio…",
    "voiceAriaRegion": "Voice playback",
    "voiceAwaitingMeta": "Measuring clip length",
    "voiceMessage": "Voice",
    "loadOlder": "Loading older messages…",
    "scrollToBottom": "Scroll to bottom",
    "attachmentPreviewClose": "Close",
    "attachmentPreviewDownload": "Download",
    "attachmentPreviewRemove": "Remove",
    "attachmentPreviewLoading": "Loading file…",
    "attachmentPreviewText": "Text",
    "attachmentPreviewPdf": "PDF",
    "attachmentPreviewDocument": "Document",
    "attachmentPreviewPresentation": "Presentation",
    "attachmentPreviewSpreadsheet": "Spreadsheet",
    "attachmentPreviewNoText": "No text content available",
    "attachmentPreviewMissingData": "Missing file data",
    "attachmentPreviewLoadError": "Error loading file",
    "attachmentPreviewMissingAuth": "Missing authentication",
    "attachmentPreviewFailedPdf": "Failed to load PDF",
    "attachmentPreviewFailedDocx": "Failed to load document",
    "attachmentPreviewFailedExcel": "Failed to load spreadsheet",
    "attachmentPreviewPdfRendering": "Rendering PDF…",
    "attachmentPreviewPdfLoadMore": "Scroll to load more pages",
    "attachmentPreviewExcelTruncated": "Preview limited to {rows} rows × {cols} columns. Download the file to see the full sheet.",
    "attachmentPreviewPptxTruncated": "Text preview truncated for performance. Download the file to see the full deck.",
    "attachmentPreviewPptxSlide": "Slide {n}",
    "attachmentPreviewPptxEmptySlide": "(No text on this slide)",
    "attachmentPreviewOpenElsewhereHint": "Download the file to open it in another application on your computer.",
    "attachmentPreviewOpenElsewhereTruncated": "Only part of this file is shown here. Download the full file to open it elsewhere.",
    "attachmentPreviewDownloadFull": "Download file",
    "attachmentPreviewImage": "Preview image",
    "attachmentPreviewFullscreen": "Full screen preview",
    "attachmentPreviewExitFullscreen": "Exit full screen",
    "messageArtifactsHeading": "Message output",
    "stepTimelineThinkingStreaming": "Thinking…",
    "stepTimelineThinkingDone": "Thinking complete",
    "stepTimelineToolSearchRunning": "Searching the web…",
    "stepTimelineToolSearchComplete": "Web search complete",
    "stepTimelineToolSearchError": "Web search failed",
    "stepTimelineToolGenericRunning": "{{name}}…",
    "stepTimelineToolGenericComplete": "{{name}} complete",
    "stepTimelineToolGenericError": "{{name}} failed",
    "searchSourcesHeading": "Search sources · {{count}}",
    "executionDrawerTitle": "Execution",
    "executionDrawerClose": "Close",
    "executionDrawerEmpty": "No steps for this reply yet.",
    "executionProgressDone": "Thinking complete",
    "executionProgressRunning": "Thinking & tools…",
    "executionElapsedTitle": "Elapsed time for this run",
    "messageCopyPlainText": "Copy plain text",
    "messageCopyMarkdown": "Copy Markdown",
    "codeBlockCopy": "Copy",
    "messageCopied": "Copied",
    "userMessageCopy": "Copy message",
    "userMessageRetry": "Retry",
    "userMessageEdit": "Edit in composer",
    "userMessageRetryDisabledHint": "Only your latest message can be retried.",
    "userMessageActionsWait": "Wait until sending or streaming finishes.",
    "userMessageDelete": "Delete this round",
    "userMessageDeleteConfirm": "This will delete both your message and the AI response. Continue?",
    "userMessageDeleteConfirmTitle": "Delete conversation round",
    "userMessageDeleteCancel": "Cancel",
    "userMessageDeleteOk": "Delete",
    "commandPalette": {
      "noResults": "No matching commands or skills",
      "placeholder": "Search skills and commands…",
      "skillsSection": "Skills",
      "commandsSection": "Commands",
      "agentsSection": "Agents",
      "currentBadge": "current",
      "queueBadge": "queue",
      "queueFullBadge": "queue full",
      "queueFullTooltip": "Follow-up queue is full",
      "showGroupedMore": "Show {{count}} more"
    },
    "goal": {
      "heading": "Standing goal",
      "turns": "{{used}} / {{max}} turns",
      "checklistHeading": "Criteria",
      "checklistProgress": "{{done}} / {{total}} done",
      "checklistEmpty": "Criteria appear after the first reply (or add your own).",
      "addCriterionPlaceholder": "Add a criterion…",
      "addCriterion": "Add",
      "markDone": "Done",
      "markBlocked": "Blocked",
      "removeItem": "Remove",
      "resetChecklist": "Reset criteria",
      "moreActions": "More",
      "moreHint": "Restart turn budget, clear goal, or view judge details",
      "statusActive": "Active",
      "statusPaused": "Paused",
      "statusDone": "Done",
      "agentRunning": "Agent run in progress…",
      "pause": "Pause",
      "resume": "Resume",
      "clear": "Clear goal",
      "restart": "Restart budget",
      "detailsToggle": "Judge details",
      "lastVerdict": "Last verdict",
      "verdictDone": "Done",
      "verdictContinue": "Continue",
      "verdictSkipped": "Skipped",
      "verdictDecompose": "Checklist ready",
      "lastReason": "Reason",
      "loadFailed": "Could not load goal state.",
      "collapseAria": "Collapse goal bar",
      "expandAria": "Expand standing goal",
      "pillTitle": "{{status}} · {{turns}} — click to expand",
      "elapsedLabel": "Run time",
      "runHistory": "Run history",
      "runHistoryEmpty": "No runs recorded yet. Runs appear after each assistant reply while the goal is active.",
      "runHistoryLoading": "Loading…",
      "runHistoryLoadFailed": "Could not load run history.",
      "runHistoryTurns": "{{used}} / {{max}} turns",
      "runHistoryContinue": "Continues",
      "runHistoryStop": "Stops",
      "verdictInactive": "Inactive",
      "missionHeading": "Goal mission",
      "phaseAgentRunning": "Agent running",
      "phasePaused": "Goal paused",
      "phaseDone": "Goal done",
      "phaseJudged": "Judge updated",
      "lastJudgementTitle": "Last judgement",
      "showDetails": "Expand",
      "hideDetails": "Collapse",
      "pausedReason": "Paused reason",
      "judgeModel": "Judge model",
      "parseFailures": "Parse failures",
      "judgeGenerated": "Judge generated",
      "userAdded": "User added",
      "evidenceLabel": "Evidence",
      "pendingGroup": "Pending",
      "completedGroup": "Completed",
      "impossibleGroup": "Impossible",
      "latestRunTitle": "Latest run",
      "nextStepContinue": "Continue",
      "nextStepStop": "Stop"
    },
    "atMention": {
      "noResults": "No matches",
      "placeholder": "Search files…",
      "searchError": "Failed to search workspace",
      "files": "Files",
      "folders": "Folders",
      "recentFiles": "Recent",
      "recentBadge": "Recent",
      "shiftHint": "Shift+Enter or Shift+click: add another @ mention."
    }
  }
}
