2026-04-26 14:03:39 +03:00
import { settingsDict } from './en.settings' ;
export const dict = {
... settingsDict ,
'common.language.english' : 'English' ,
'common.language.simplifiedChinese' : 'Chinese (Simplified)' ,
'common.language.ukrainian' : 'Ukrainian' ,
'common.language.spanish' : 'Spanish' ,
'common.language.brazilianPortuguese' : 'Brazilian Portuguese' ,
'common.revealPath.finder' : 'Reveal in Finder' ,
'common.revealPath.fileExplorer' : 'Open in File Explorer' ,
'common.revealPath.fileManager' : 'Open in File Manager' ,
'layout.mainTab.chat' : 'Chat' ,
'layout.mainTab.plan' : 'Plan' ,
'layout.mainTab.diff' : 'Diff' ,
'layout.mainTab.files' : 'Files' ,
'layout.mainTab.terminal' : 'Terminal' ,
'layout.rightSidebar.git' : 'Git' ,
'layout.rightSidebar.files' : 'Files' ,
'layout.rightSidebar.context' : 'Context' ,
'layout.services.instance' : 'Instance' ,
'layout.services.usage' : 'Usage' ,
'sessions.sidebar.header.actions.closeSessions' : 'Close sessions' ,
'sessions.sidebar.header.actions.addProject' : 'Add project' ,
'sessions.sidebar.header.actions.newSession' : 'New session' ,
'sessions.sidebar.header.actions.newMultiRun' : 'New multi-run' ,
'sessions.sidebar.header.actions.scheduledTasks' : 'Scheduled tasks' ,
'sessions.scheduledTasks.dialog.title' : 'Scheduled tasks' ,
'sessions.scheduledTasks.dialog.description' : 'Server-side tasks that create a new session and send a configured prompt.' ,
'sessions.scheduledTasks.dialog.project.label' : 'Project' ,
'sessions.scheduledTasks.dialog.project.placeholder' : 'Select project' ,
'sessions.scheduledTasks.dialog.project.empty' : 'No projects' ,
'sessions.scheduledTasks.dialog.actions.newTask' : 'New task' ,
'sessions.scheduledTasks.dialog.actions.runNow' : 'Run now' ,
'sessions.scheduledTasks.dialog.actions.edit' : 'Edit' ,
'sessions.scheduledTasks.dialog.actions.editAria' : 'Edit {taskName}' ,
'sessions.scheduledTasks.dialog.actions.deleteAria' : 'Delete {taskName}' ,
'sessions.scheduledTasks.dialog.loading' : 'Loading tasks...' ,
'sessions.scheduledTasks.dialog.empty.noTasks' : 'No scheduled tasks yet.' ,
'sessions.scheduledTasks.dialog.empty.selectProject' : 'Select a project to manage scheduled tasks.' ,
'sessions.scheduledTasks.dialog.error.chooseProjectFirst' : 'Choose a project first' ,
'sessions.scheduledTasks.dialog.toast.loadFailed' : 'Failed to load scheduled tasks' ,
'sessions.scheduledTasks.dialog.toast.saved' : 'Scheduled task saved' ,
'sessions.scheduledTasks.dialog.toast.updateFailed' : 'Failed to update task' ,
'sessions.scheduledTasks.dialog.toast.deleted' : 'Scheduled task deleted' ,
'sessions.scheduledTasks.dialog.toast.deleteFailed' : 'Failed to delete task' ,
'sessions.scheduledTasks.dialog.toast.started' : 'Task started' ,
'sessions.scheduledTasks.dialog.toast.runFailed' : 'Failed to run task' ,
'sessions.scheduledTasks.dialog.confirm.deleteTask' : 'Delete scheduled task "{taskName}"?' ,
'sessions.scheduledTasks.dialog.schedule.daily' : 'Daily {time}' ,
'sessions.scheduledTasks.dialog.schedule.dailyWithTimezone' : 'Daily {time} ({timezone})' ,
'sessions.scheduledTasks.dialog.schedule.weekly' : 'Weekly {days} {time}' ,
'sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone' : 'Weekly {days} {time} ({timezone})' ,
'sessions.scheduledTasks.dialog.schedule.once' : 'One-time {date} {time}' ,
'sessions.scheduledTasks.dialog.schedule.onceWithTimezone' : 'One-time {date} {time} ({timezone})' ,
'sessions.scheduledTasks.dialog.schedule.cron' : 'Cron: {cron}' ,
'sessions.scheduledTasks.dialog.schedule.cronWithTimezone' : 'Cron: {cron} ({timezone})' ,
'sessions.scheduledTasks.dialog.schedule.unknownDate' : 'Unknown date' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.sun' : 'Sun' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.mon' : 'Mon' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.tue' : 'Tue' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.wed' : 'Wed' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.thu' : 'Thu' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.fri' : 'Fri' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.sat' : 'Sat' ,
'sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown' : '?' ,
'sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute' : 'in <1m' ,
'sessions.scheduledTasks.dialog.relativeTime.justNow' : 'just now' ,
'sessions.scheduledTasks.dialog.relativeTime.inMinutes' : 'in {count}m' ,
'sessions.scheduledTasks.dialog.relativeTime.minutesAgo' : '{count}m ago' ,
'sessions.scheduledTasks.dialog.relativeTime.inDuration' : 'in {duration}' ,
'sessions.scheduledTasks.dialog.relativeTime.durationAgo' : '{duration} ago' ,
'sessions.scheduledTasks.dialog.status.success' : 'Success' ,
'sessions.scheduledTasks.dialog.status.error' : 'Error' ,
'sessions.scheduledTasks.dialog.status.running' : 'Running' ,
'sessions.scheduledTasks.dialog.status.idle' : 'Idle' ,
'sessions.scheduledTasks.dialog.nextRun.label' : 'Next' ,
'sessions.scheduledTasks.dialog.lastRun.label' : 'Last run' ,
'sessions.scheduledTasks.dialog.lastRun.runningNow' : 'running now' ,
'sessions.scheduledTasks.dialog.lastRun.never' : 'never' ,
'sessions.scheduledTasks.dialog.taskToggle.enableAria' : 'Enable {taskName}' ,
'sessions.scheduledTasks.dialog.taskToggle.pauseAria' : 'Pause {taskName}' ,
'sessions.scheduledTasks.dialog.taskToggle.enabled' : 'Enabled' ,
'sessions.scheduledTasks.dialog.taskToggle.paused' : 'Paused' ,
'sessions.scheduledTasks.editor.title.edit' : 'Edit scheduled task' ,
'sessions.scheduledTasks.editor.title.new' : 'New scheduled task' ,
'sessions.scheduledTasks.editor.description' : 'Configure a server-side task that creates a new session and sends a prompt.' ,
'sessions.scheduledTasks.editor.taskName.label' : 'Task name' ,
'sessions.scheduledTasks.editor.taskName.placeholder' : 'Daily sync' ,
'sessions.scheduledTasks.editor.scheduleType.label' : 'Schedule type' ,
'sessions.scheduledTasks.editor.scheduleType.daily' : 'Daily' ,
'sessions.scheduledTasks.editor.scheduleType.weekly' : 'Weekly' ,
'sessions.scheduledTasks.editor.scheduleType.once' : 'One-time' ,
'sessions.scheduledTasks.editor.date.label' : 'Date' ,
'sessions.scheduledTasks.editor.date.placeholder' : 'Select date' ,
'sessions.scheduledTasks.editor.date.previousMonth' : 'Previous month' ,
'sessions.scheduledTasks.editor.date.nextMonth' : 'Next month' ,
'sessions.scheduledTasks.editor.date.jumpToToday' : 'Jump to today' ,
'sessions.scheduledTasks.editor.date.today' : 'Today' ,
'sessions.scheduledTasks.editor.time.label' : 'Time' ,
'sessions.scheduledTasks.editor.time.hourAria' : 'Hours' ,
'sessions.scheduledTasks.editor.time.minuteAria' : 'Minutes' ,
'sessions.scheduledTasks.editor.time.periodAria' : 'Period' ,
'sessions.scheduledTasks.editor.time.period.am' : 'AM' ,
'sessions.scheduledTasks.editor.time.period.pm' : 'PM' ,
'sessions.scheduledTasks.editor.times.label' : 'Times' ,
'sessions.scheduledTasks.editor.times.add' : 'Add time' ,
'sessions.scheduledTasks.editor.times.removeAria' : 'Remove time' ,
'sessions.scheduledTasks.editor.timezone.label' : 'Timezone' ,
'sessions.scheduledTasks.editor.weekdays.label' : 'Weekdays' ,
'sessions.scheduledTasks.editor.model.label' : 'Model' ,
'sessions.scheduledTasks.editor.thinkingLevel.label' : 'Thinking level' ,
'sessions.scheduledTasks.editor.thinkingLevel.default' : 'Default' ,
'sessions.scheduledTasks.editor.agent.label' : 'Agent' ,
'sessions.scheduledTasks.editor.prompt.label' : 'Prompt' ,
'sessions.scheduledTasks.editor.prompt.placeholder' : 'Summarize open tasks and propose next actions' ,
'sessions.scheduledTasks.editor.enabled.aria' : 'Enable task' ,
'sessions.scheduledTasks.editor.enabled.label' : 'Enabled' ,
'sessions.scheduledTasks.editor.actions.closeAria' : 'Close' ,
'sessions.scheduledTasks.editor.actions.cancel' : 'Cancel' ,
'sessions.scheduledTasks.editor.actions.save' : 'Save' ,
'sessions.scheduledTasks.editor.actions.saving' : 'Saving...' ,
'sessions.scheduledTasks.editor.toast.saveFailed' : 'Failed to save task' ,
'sessions.scheduledTasks.editor.validation.taskNameRequired' : 'Task name is required' ,
'sessions.scheduledTasks.editor.validation.promptRequired' : 'Prompt is required' ,
'sessions.scheduledTasks.editor.validation.modelRequired' : 'Model is required' ,
'sessions.scheduledTasks.editor.validation.dateFormat' : 'Date must use YYYY-MM-DD' ,
'sessions.scheduledTasks.editor.validation.timeFormat' : 'Time must use HH:mm' ,
'sessions.scheduledTasks.editor.validation.atLeastOneTime' : 'Add at least one valid time' ,
'sessions.scheduledTasks.editor.validation.atLeastOneWeekday' : 'Select at least one weekday' ,
'sessions.scheduledTasks.editor.validation.timezoneRequired' : 'Timezone is required' ,
'multirun.launcher.title' : 'New Multi-Run' ,
'multirun.launcher.actions.closeEsc' : 'Close (Esc)' ,
'multirun.launcher.actions.cancel' : 'Cancel' ,
'multirun.launcher.actions.creating' : 'Creating...' ,
'multirun.launcher.actions.startWithModelCount' : 'Start ({count} models)' ,
'multirun.launcher.project.label' : 'Project' ,
'multirun.launcher.project.placeholder' : 'Select project' ,
'multirun.launcher.project.empty' : 'Add a project first.' ,
'multirun.launcher.groupName.label' : 'Group name' ,
'multirun.launcher.groupName.info' : 'Used for worktree directory and branch names' ,
'multirun.launcher.groupName.placeholder' : 'feature-auth, bugfix-login' ,
'multirun.launcher.baseBranch.label' : 'Base branch' ,
'multirun.launcher.baseBranch.info' : 'New branch created from this base per model' ,
'multirun.launcher.agent.label' : 'Agent' ,
'multirun.launcher.agent.info' : 'Agent used for all runs. Defaults to your configured agent.' ,
'multirun.launcher.setupCommands.label' : 'Setup commands' ,
'multirun.launcher.setupCommands.loading' : 'Loading...' ,
'multirun.launcher.setupCommands.commandPlaceholder' : 'bun install' ,
'multirun.launcher.setupCommands.removeCommandAria' : 'Remove command' ,
'multirun.launcher.setupCommands.addCommand' : 'Add command' ,
'multirun.launcher.prompt.label' : 'Prompt' ,
'multirun.launcher.prompt.placeholder' : 'Enter the prompt to send to all models...' ,
'multirun.launcher.attachments.attach' : 'Attach' ,
'multirun.launcher.attachments.tooltip' : 'Same files sent to all runs' ,
'multirun.launcher.models.label' : 'Models' ,
'multirun.launcher.models.info' : 'Select 2-{max} models. Same model can be added multiple times.' ,
'multirun.launcher.toast.fileTooLarge' : 'File "{fileName}" is too large (max 10MB)' ,
'multirun.launcher.toast.attachFailed' : 'Failed to attach "{fileName}"' ,
'multirun.launcher.toast.attachedSingle' : 'Attached {count} file' ,
'multirun.launcher.toast.attachedPlural' : 'Attached {count} files' ,
'multirun.modelMultiSelect.actions.addModel' : 'Add model' ,
'multirun.modelMultiSelect.search.placeholder' : 'Search models' ,
'multirun.modelMultiSelect.search.noResults' : 'No models found' ,
'multirun.modelMultiSelect.sections.favorites' : 'Favorites' ,
'multirun.modelMultiSelect.sections.recent' : 'Recent' ,
'multirun.modelMultiSelect.variant.placeholder' : 'Thinking' ,
'multirun.modelMultiSelect.variant.default' : 'Default' ,
'multirun.modelMultiSelect.keyboard.hint' : '↑↓ navigate • Enter select • Esc close' ,
'multirun.modelMultiSelect.validation.minOnly' : 'Select at least {min} models.' ,
'multirun.modelMultiSelect.validation.minToMax' : 'Select from {min} to {max} models.' ,
'multirun.agentSelector.placeholder' : 'Select an agent' ,
'sessions.sidebar.header.actions.searchSessions' : 'Search sessions' ,
'sessions.sidebar.header.actions.exitSelection' : 'Exit selection' ,
'sessions.sidebar.header.actions.selectSessions' : 'Select sessions' ,
'sessions.sidebar.header.actions.sessionDisplayMode' : 'Session display mode' ,
'sessions.sidebar.header.displayMode.label' : 'Display mode' ,
'sessions.sidebar.header.displayMode.default' : 'Default' ,
'sessions.sidebar.header.displayMode.minimal' : 'Minimal' ,
'sessions.sidebar.header.displayMode.collapseAll' : 'Collapse all' ,
'sessions.sidebar.header.displayMode.expandAll' : 'Expand all' ,
'sessions.sidebar.header.search.matchCountSingle' : '{count} match' ,
'sessions.sidebar.header.search.matchCountPlural' : '{count} matches' ,
'sessions.sidebar.header.search.escapeHint' : 'Esc to clear' ,
'sessions.sidebar.header.search.placeholder' : 'Search sessions...' ,
'sessions.sidebar.header.search.clear' : 'Clear search' ,
'sessions.sidebar.footer.actions.settings' : 'Settings' ,
'sessions.sidebar.footer.actions.shortcuts' : 'Shortcuts' ,
'sessions.sidebar.footer.actions.aboutOpenChamber' : 'About OpenChamber' ,
'sessions.sidebar.footer.actions.update' : 'Update' ,
'sessions.sidebar.empty.noSessions.title' : 'No sessions yet' ,
'sessions.sidebar.empty.noSessions.description' : 'Create your first session to start coding.' ,
'sessions.sidebar.empty.noMatches.title' : 'No matching sessions' ,
'sessions.sidebar.empty.noMatches.description' : 'Try a different title, branch, folder, or path.' ,
'sessions.sidebar.activity.recentTitle' : 'recent' ,
'sessions.sidebar.updateCheck.errorTitle' : 'Failed to check for updates' ,
'sessions.sidebar.updateCheck.latestVersion' : 'You are on the latest version' ,
'sessions.sidebar.directory.errorAddProjectTitle' : 'Failed to add project' ,
'sessions.sidebar.directory.errorAddProjectDescription' : 'Please select a valid directory.' ,
'sessions.sidebar.directory.errorSelectDirectoryTitle' : 'Failed to select directory' ,
'sessions.sidebar.folder.newFolderName' : 'New folder' ,
'sessions.sidebar.bulkActions.delete' : 'Delete' ,
'sessions.sidebar.bulkActions.archive' : 'Archive' ,
'sessions.sidebar.bulkActions.selectedCount' : '{count} selected' ,
'sessions.sidebar.bulkActions.moveToFolder' : 'Move to folder' ,
'sessions.sidebar.bulkActions.deletedSingle' : 'Deleted {count} session' ,
'sessions.sidebar.bulkActions.deletedPlural' : 'Deleted {count} sessions' ,
'sessions.sidebar.bulkActions.failedDeleteSingle' : 'Failed to delete {count} session' ,
'sessions.sidebar.bulkActions.failedDeletePlural' : 'Failed to delete {count} sessions' ,
'sessions.sidebar.bulkActions.archivedSingle' : 'Archived {count} session' ,
'sessions.sidebar.bulkActions.archivedPlural' : 'Archived {count} sessions' ,
'sessions.sidebar.bulkActions.failedArchiveSingle' : 'Failed to archive {count} session' ,
'sessions.sidebar.bulkActions.failedArchivePlural' : 'Failed to archive {count} sessions' ,
'sessions.sidebar.folders.none' : 'No folders yet' ,
'sessions.sidebar.folders.newFolderEllipsis' : 'New folder...' ,
'sessions.sidebar.folders.removeFromFolder' : 'Remove from folder' ,
'sessions.sidebar.folders.moveToFolder' : 'Move to folder' ,
'sessions.sidebar.project.actions.newWorktree' : 'New worktree' ,
'sessions.sidebar.project.actions.newWorktreeEllipsis' : 'New worktree...' ,
'sessions.sidebar.project.actions.projectMenu' : 'Project menu' ,
'sessions.sidebar.project.actions.newSession' : 'New session' ,
'sessions.sidebar.project.actions.closeProject' : 'Close project' ,
'sessions.sidebar.project.actions.newDraftSession' : 'New draft session' ,
'sessions.sidebar.session.menu.rename' : 'Rename' ,
'sessions.sidebar.session.menu.unpin' : 'Unpin session' ,
'sessions.sidebar.session.menu.pin' : 'Pin session' ,
'sessions.sidebar.session.menu.share' : 'Share' ,
'sessions.sidebar.session.menu.copied' : 'Copied' ,
'sessions.sidebar.session.menu.copyLink' : 'Copy link' ,
'sessions.sidebar.session.menu.unshare' : 'Unshare' ,
'sessions.sidebar.session.menu.exportMarkdown' : 'Export Markdown' ,
'sessions.sidebar.session.menu.openInSidePanel' : 'Open in Side Panel' ,
'sessions.sidebar.session.menu.betaBadge' : 'beta' ,
'sessions.sidebar.session.menu.label' : 'Session menu' ,
'sessions.sidebar.session.untitled' : 'Untitled Session' ,
'sessions.sidebar.session.export.nothingToExport' : 'Nothing to export' ,
'sessions.sidebar.session.export.success' : 'Session exported' ,
'sessions.sidebar.session.export.failedRevealPath' : 'Failed to reveal path' ,
2026-04-26 16:24:07 +03:00
'sessions.sidebar.session.export.untitledSubagent' : 'Untitled Sub-agent' ,
'sessions.sidebar.session.export.skippedSubtaskSingle' : 'Exported session, but skipped {count} sub-agent task that could not be loaded.' ,
'sessions.sidebar.session.export.skippedSubtaskMany' : 'Exported session, but skipped {count} sub-agent tasks that could not be loaded.' ,
'sessions.sidebar.session.export.dialog.title' : 'Export Markdown' ,
'sessions.sidebar.session.export.dialog.descriptionSingle' : 'This session has {count} sub-agent task. Include it in the export?' ,
'sessions.sidebar.session.export.dialog.descriptionMany' : 'This session has {count} sub-agent tasks. Include them in the export?' ,
'sessions.sidebar.session.export.dialog.includeSubtasks' : 'Include sub-agent tasks' ,
'sessions.sidebar.session.export.dialog.confirm' : 'Export' ,
2026-04-26 14:03:39 +03:00
'sessions.sidebar.session.status.active' : 'Session active' ,
'sessions.sidebar.session.status.unread' : 'Unread updates' ,
'sessions.sidebar.session.status.pinned' : 'Pinned session' ,
'sessions.sidebar.session.status.permissionRequired' : 'Permission required' ,
'sessions.sidebar.session.subsessions.collapse' : 'Collapse subsessions' ,
'sessions.sidebar.session.subsessions.expand' : 'Expand subsessions' ,
'sessions.sidebar.dialogs.deleteSession.title' : 'Delete session?' ,
'sessions.sidebar.dialogs.archiveSession.title' : 'Archive session?' ,
'sessions.sidebar.dialogs.deleteSession.withOneSubtask' : '"{sessionTitle}" and its {count} sub-task will be permanently deleted.' ,
'sessions.sidebar.dialogs.deleteSession.withManySubtasks' : '"{sessionTitle}" and its {count} sub-tasks will be permanently deleted.' ,
'sessions.sidebar.dialogs.archiveSession.withOneSubtask' : '"{sessionTitle}" and its {count} sub-task will be archived.' ,
'sessions.sidebar.dialogs.archiveSession.withManySubtasks' : '"{sessionTitle}" and its {count} sub-tasks will be archived.' ,
'sessions.sidebar.dialogs.deleteSession.single' : '"{sessionTitle}" will be permanently deleted.' ,
'sessions.sidebar.dialogs.archiveSession.single' : '"{sessionTitle}" will be archived.' ,
'sessions.sidebar.dialogs.neverAsk' : 'Never ask' ,
'sessions.sidebar.dialogs.cancel' : 'Cancel' ,
'sessions.sidebar.dialogs.deleteSession.titleAction' : 'Delete session' ,
'sessions.sidebar.dialogs.deleteSessions.titleAction' : 'Delete sessions' ,
'sessions.sidebar.dialogs.deleteSessions.title' : 'Delete sessions?' ,
'sessions.sidebar.dialogs.archiveSessions.title' : 'Archive sessions?' ,
'sessions.sidebar.dialogs.deleteSessions.singleDescription' : '{count} session will be permanently deleted.' ,
'sessions.sidebar.dialogs.deleteSessions.pluralDescription' : '{count} sessions will be permanently deleted.' ,
'sessions.sidebar.dialogs.archiveSessions.singleDescription' : '{count} session will be archived.' ,
'sessions.sidebar.dialogs.archiveSessions.pluralDescription' : '{count} sessions will be archived.' ,
'sessions.sidebar.dialogs.deleteFolder.title' : 'Delete folder?' ,
'sessions.sidebar.dialogs.deleteFolder.withOneSubfolder' : '"{folderName}" will be deleted along with {count} sub-folder. Sessions inside will not be deleted.' ,
'sessions.sidebar.dialogs.deleteFolder.withManySubfolders' : '"{folderName}" will be deleted along with {count} sub-folders. Sessions inside will not be deleted.' ,
'sessions.sidebar.dialogs.deleteFolder.withContentsNoSubfolders' : '"{folderName}" will be deleted. Sessions inside will not be deleted.' ,
'sessions.sidebar.dialogs.deleteFolder.single' : '"{folderName}" will be permanently deleted.' ,
'sessions.sidebar.dialogs.deleteResult.singleFailedToDelete' : '{count} session could not be deleted.' ,
'sessions.sidebar.dialogs.deleteResult.manyFailedToDelete' : '{count} sessions could not be deleted.' ,
'sessions.sidebar.dialogs.deleteResult.singleFailedToArchive' : '{count} session could not be archived.' ,
'sessions.sidebar.dialogs.deleteResult.manyFailedToArchive' : '{count} sessions could not be archived.' ,
'sessions.sidebar.dialogs.deleteResult.removedFromDate' : 'Removed all sessions from {dateLabel}.' ,
'sessions.sidebar.dialogs.deleteResult.tryAgain' : 'Please try again in a moment.' ,
'sessions.sidebar.dialogs.worktreeDelete.descriptionNoLinked' : 'This removes the selected worktree.' ,
'sessions.sidebar.dialogs.worktreeDelete.descriptionOneLinked' : 'This removes the selected worktree and archives {count} linked session.' ,
'sessions.sidebar.dialogs.worktreeDelete.descriptionManyLinked' : 'This removes the selected worktree and archives {count} linked sessions.' ,
'sessions.sidebar.dialogs.sessionDelete.descriptionOne' : 'This action permanently removes 1 session.' ,
'sessions.sidebar.dialogs.sessionDelete.descriptionOneWithDate' : 'This action permanently removes 1 session from {dateLabel}.' ,
'sessions.sidebar.dialogs.sessionDelete.descriptionMany' : 'This action permanently removes {count} sessions.' ,
'sessions.sidebar.dialogs.sessionDelete.descriptionManyWithDate' : 'This action permanently removes {count} sessions from {dateLabel}.' ,
'sessions.sidebar.dialogs.sessionList.more' : '+{count} more' ,
'sessions.sidebar.session.share.successTitle' : 'Session shared' ,
'sessions.sidebar.session.share.successDescription' : 'You can copy the link from the menu.' ,
'sessions.sidebar.session.share.error' : 'Unable to share session' ,
'sessions.sidebar.session.share.copyUrlError' : 'Failed to copy URL' ,
'sessions.sidebar.session.unshare.success' : 'Session unshared' ,
'sessions.sidebar.session.unshare.error' : 'Unable to unshare session' ,
'sessions.sidebar.session.delete.success' : 'Session deleted' ,
'sessions.sidebar.session.delete.error' : 'Failed to delete session' ,
'sessions.sidebar.session.archive.success' : 'Session archived' ,
'sessions.sidebar.session.archive.error' : 'Failed to archive session' ,
'sessions.sidebar.group.pr.checksPassed' : '{success}/{total} checks passed' ,
'sessions.sidebar.group.pr.failingCount' : '{count} failing' ,
'sessions.sidebar.group.pr.pendingCount' : '{count} pending' ,
'sessions.sidebar.group.pr.conflictsOrBlocked' : 'Conflicts or blocked' ,
'sessions.sidebar.group.pr.mergeable' : 'Mergeable' ,
'sessions.sidebar.group.pr.mergeState' : 'Merge state: {state}' ,
'sessions.sidebar.group.pr.status.merged' : 'Merged' ,
'sessions.sidebar.group.pr.status.readyToMerge' : 'Ready to merge' ,
'sessions.sidebar.group.pr.status.open' : 'PR open' ,
'sessions.sidebar.group.pr.status.mergeConflicts' : 'Merge conflicts' ,
'sessions.sidebar.group.pr.status.mergeBlocked' : 'Merge blocked' ,
'sessions.sidebar.group.pr.status.draft' : 'Draft PR' ,
'sessions.sidebar.group.pr.status.closed' : 'Closed' ,
'sessions.sidebar.group.empty.noArchivedSessions' : 'No archived sessions yet.' ,
'sessions.sidebar.group.empty.noSessionsInWorkspace' : 'No sessions in this workspace yet.' ,
'sessions.sidebar.group.showMoreSingle' : 'Show {count} more session' ,
'sessions.sidebar.group.showMorePlural' : 'Show {count} more sessions' ,
'sessions.sidebar.group.showFewer' : 'Show fewer sessions' ,
'sessions.sidebar.group.expandAria' : 'Expand {label}' ,
'sessions.sidebar.group.collapseAria' : 'Collapse {label}' ,
'sessions.sidebar.group.actions.deleteArchivedInGroupAria' : 'Delete archived sessions in {label}' ,
'sessions.sidebar.group.actions.deleteArchivedSessions' : 'Delete archived sessions' ,
'sessions.sidebar.group.actions.deleteGroupAria' : 'Delete {label}' ,
'sessions.sidebar.group.actions.deleteWorktree' : 'Delete worktree' ,
'sessions.sidebar.group.actions.newDraftInGroupAria' : 'New draft session in {label}' ,
'sessions.sidebar.grouping.projectRoot' : 'project root' ,
'sessions.sidebar.grouping.projectRootWithBranch' : 'project root: {branch}' ,
'sessions.sidebar.grouping.archived' : 'archived' ,
'sessions.sidebar.grouping.archivedDescription' : 'Archived and unassigned sessions' ,
'sessions.sidebar.folderItem.expandAria' : 'Expand folder {folderName}' ,
'sessions.sidebar.folderItem.collapseAria' : 'Collapse folder {folderName}' ,
'sessions.sidebar.folderItem.namePlaceholder' : 'Folder name' ,
'sessions.sidebar.folderItem.newSessionAria' : 'New session in {folderName}' ,
'sessions.sidebar.folderItem.newSubfolderAria' : 'New sub-folder in {folderName}' ,
'sessions.sidebar.folderItem.newSubfolder' : 'New sub-folder' ,
'sessions.sidebar.folderItem.renameAria' : 'Rename folder {folderName}' ,
'sessions.sidebar.folderItem.deleteArchivedInFolderAria' : 'Delete archived sessions in folder {folderName}' ,
'sessions.sidebar.folderItem.deleteFolderAria' : 'Delete folder {folderName}' ,
'sessions.sidebar.folderItem.emptyFolder' : 'Empty folder' ,
'sessions.sidebar.sessionDialogs.ok' : 'OK' ,
'sessions.sidebar.sessionDialogs.linkedSessionSingle' : 'Linked session' ,
'sessions.sidebar.sessionDialogs.linkedSessionPlural' : 'Linked sessions' ,
'sessions.sidebar.sessionDialogs.delete.note' : 'Worktree directories stay intact. Subsessions linked to the selected sessions will also be removed.' ,
'sessions.sidebar.sessionDialogs.directory.errorSelectTitle' : 'Failed to select directory' ,
'sessions.sidebar.sessionDialogs.directory.errorOpenTitle' : 'Failed to open directory' ,
'sessions.sidebar.sessionDialogs.directory.errorOpenDescription' : 'Desktop could not grant file access.' ,
'sessions.sidebar.sessionDialogs.directory.errorAddProjectTitle' : 'Failed to add project' ,
'sessions.sidebar.sessionDialogs.directory.errorAddProjectDescription' : 'Please select a valid directory path.' ,
'sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle' : 'Failed to remove worktree' ,
'sessions.sidebar.sessionDialogs.worktree.removedTitle' : 'Worktree removed' ,
'sessions.sidebar.sessionDialogs.worktree.removed' : 'Worktree removed.' ,
'sessions.sidebar.sessionDialogs.worktree.removedWithRemote' : 'Worktree and remote branch removed.' ,
'sessions.sidebar.sessionDialogs.worktree.attachedArchived' : 'Attached worktree archived.' ,
'sessions.sidebar.sessionDialogs.worktree.attachedArchivedPlural' : 'Attached worktrees archived.' ,
'sessions.sidebar.sessionDialogs.worktree.archivedAndRemoteRemoved' : 'Archived worktrees and removed remote branches.' ,
'sessions.sidebar.sessionDialogs.worktree.label' : 'Worktree' ,
'sessions.sidebar.sessionDialogs.worktree.pathUnavailable' : 'Worktree path unavailable.' ,
'sessions.sidebar.sessionDialogs.worktree.uncommittedWarning' : 'Uncommitted changes will be discarded.' ,
'sessions.sidebar.sessionDialogs.actions.deleteRemoteBranch' : 'Delete remote branch' ,
'sessions.sidebar.sessionDialogs.actions.remoteBranchInfoUnavailable' : 'Remote branch info unavailable' ,
'sessions.sidebar.sessionDialogs.actions.deleteLocalBranch' : 'Delete local branch' ,
'sessions.sidebar.sessionDialogs.actions.deleting' : 'Deleting…' ,
'sessions.sidebar.sessionDialogs.actions.deleteWorktree' : 'Delete worktree' ,
'gitView.branch.branchToMergeInto' : 'Branch To Merge Into' ,
'gitView.branch.branchToRebaseOnto' : 'Branch To Rebase Onto' ,
'gitView.branch.create' : 'Create new branch...' ,
'gitView.branch.currentBadge' : 'Current' ,
'gitView.branch.currentBranchFallback' : 'current branch' ,
'gitView.branch.currentBranchTooltip' : 'Current branch' ,
'gitView.branch.detachedHead' : 'Detached HEAD' ,
'gitView.branch.dialogDescriptionPrefix' : 'Dialog Description Prefix' ,
'gitView.branch.empty' : 'No branches found.' ,
'gitView.branch.localBranches' : 'Local branches' ,
'gitView.branch.mergeDescription' : 'Merge Description' ,
'gitView.branch.mergeRebase' : 'Merge/Rebase' ,
'gitView.branch.mergeRebaseTooltip' : 'Merge Rebase tooltip' ,
'gitView.branch.mergingInProgress' : 'Merging In Progress' ,
'gitView.branch.namePlaceholder' : 'Branch name' ,
'gitView.branch.newBranchPlaceholder' : 'New branch name' ,
'gitView.branch.noLocalBranches' : 'No local branches' ,
'gitView.branch.noRemoteBranches' : 'No remote branches' ,
'gitView.branch.operation' : 'Operation' ,
'gitView.branch.operationCompleted' : 'Operation Completed' ,
'gitView.branch.operationFailed' : 'Operation Failed' ,
'gitView.branch.pushToPrefix' : 'Push To Prefix' ,
'gitView.branch.pushToSuffix' : 'Push To Suffix' ,
'gitView.branch.rebaseDescription' : 'Rebase Description' ,
'gitView.branch.rebasingInProgress' : 'Rebasing In Progress' ,
'gitView.branch.remoteBranches' : 'Remote branches' ,
'gitView.branch.renameTitle' : 'Rename branch' ,
'gitView.branch.searchPlaceholder' : 'Search branches...' ,
'gitView.branch.selectBranch' : 'Select Branch' ,
'gitView.branch.summaryMergeInfix' : 'Summary Merge Infix' ,
'gitView.branch.summaryMergePrefix' : 'Summary Merge Prefix' ,
'gitView.branch.summaryRebaseInfix' : 'Summary Rebase Infix' ,
'gitView.branch.summaryRebasePrefix' : 'Summary Rebase Prefix' ,
'gitView.branch.updateDescriptionPrefix' : 'Update Description Prefix' ,
'gitView.branch.updateTitle' : 'Update branch' ,
'gitView.changes.changedFilesAria' : 'Changed files' ,
'gitView.changes.clearSelectionAria' : 'Clear file selection' ,
'gitView.changes.collapseDirectoryAria' : 'Collapse Directory aria label' ,
'gitView.changes.expandDirectoryAria' : 'Expand Directory aria label' ,
'gitView.changes.revertAll' : 'Revert all' ,
'gitView.changes.revertAllDescriptionPlural' : 'Revert All Description Plural' ,
'gitView.changes.revertAllDescriptionSingle' : 'Revert All Description Single' ,
'gitView.changes.revertAllDialogTitle' : 'Revert all changes?' ,
'gitView.changes.revertFileAria' : 'Revert File aria label' ,
'gitView.changes.revertFileTooltip' : 'Revert changes' ,
'gitView.changes.reverting' : 'Reverting...' ,
'gitView.changes.selectAllAria' : 'Select all files' ,
'gitView.changes.selectFileAria' : 'Select File aria label' ,
'gitView.changes.title' : 'Changes' ,
'gitView.changes.toggleDirectorySelectionAria' : 'Toggle Directory Selection aria label' ,
'gitView.commit.addGitmoji' : 'Add gitmoji' ,
'gitView.commit.aiHighlights.insertAria' : 'Insert aria label' ,
'gitView.commit.aiHighlights.insertTooltip' : 'Insert tooltip' ,
'gitView.commit.aiHighlights.title' : 'Title' ,
'gitView.commit.commit' : 'Commit' ,
'gitView.commit.commitAria' : 'Commit aria label' ,
'gitView.commit.committing' : 'Committing...' ,
'gitView.commit.generate' : 'Generate' ,
'gitView.commit.generateAria' : 'Generate commit message' ,
'gitView.commit.messagePlaceholder' : 'Commit message' ,
'gitView.commit.push' : 'Push' ,
'gitView.commit.pushAria' : 'Push' ,
'gitView.commit.pushing' : 'Pushing...' ,
'gitView.commit.selectFilesHint' : 'Select files in Changes to enable commit.' ,
'gitView.commit.title' : 'Commit' ,
'gitView.common.cancel' : 'Cancel' ,
'gitView.common.close' : 'Close' ,
'gitView.common.done' : 'Done' ,
'gitView.common.processing' : 'Processing...' ,
'gitView.common.reset' : 'Reset' ,
'gitView.conflict.abortOperation' : 'Abort Operation' ,
'gitView.conflict.conflictedFiles' : 'Conflicted files:' ,
'gitView.conflict.continueLater' : 'Continue Later' ,
'gitView.conflict.detectedDescription' : 'Detected Description' ,
'gitView.conflict.detectedTitle' : 'Detected Title' ,
'gitView.conflict.errorLoadingDetails' : 'Error Loading Details' ,
'gitView.conflict.headInfo' : 'HEAD information:' ,
'gitView.conflict.loadFailed' : 'Load Failed' ,
'gitView.conflict.loading' : 'Loading conflict details...' ,
'gitView.conflict.noActiveSession' : 'No Active Session' ,
'gitView.conflict.noActiveSessionDescription' : 'No Active Session Description' ,
'gitView.conflict.resolveCurrentSession' : 'Resolve in Current Session' ,
'gitView.conflict.resolveNewSession' : 'Resolve in New Session' ,
'gitView.empty.cleanDescription' : 'All changes have been committed' ,
'gitView.empty.cleanTitle' : 'Working tree clean' ,
'gitView.empty.pullBehindPlural' : 'Pull {count} commits' ,
'gitView.empty.pullBehindSingle' : 'Pull {count} commit' ,
'gitView.header.identityTooltip' : 'Git identity' ,
'gitView.header.noIdentity' : 'No identity' ,
'gitView.header.noProfiles' : 'No profiles available to apply.' ,
'gitView.header.removeRemoteAria' : 'Remove Remote aria label' ,
'gitView.header.removeRemoteTitle' : 'Remove Remote Title' ,
'gitView.history.binary' : 'Binary' ,
'gitView.history.commitsPlaceholder' : 'Commits Placeholder' ,
'gitView.history.copySha' : 'Copy SHA' ,
'gitView.history.loadingFiles' : 'Loading files...' ,
'gitView.history.logSize100' : 'Log Size100' ,
'gitView.history.logSize25' : 'Log Size25' ,
'gitView.history.logSize50' : 'Log Size50' ,
'gitView.history.noCommits' : 'No commits found' ,
'gitView.history.noFiles' : 'No files' ,
'gitView.history.title' : 'History' ,
'gitView.integrate.checking' : 'Checking…' ,
'gitView.integrate.cherryPickAbortedToast' : 'Cherry Pick Aborted Toast' ,
'gitView.integrate.cherryPickConflictDescription' : 'Cherry Pick Conflict Description' ,
'gitView.integrate.cherryPickConflictToast' : 'Cherry Pick Conflict Toast' ,
'gitView.integrate.cherryPickContinueFailedToast' : 'Cherry Pick Continue Failed Toast' ,
'gitView.integrate.cherryPickFinishedToast' : 'Cherry Pick Finished Toast' ,
'gitView.integrate.commitsMovedDescriptionPlural' : 'Commits Moved Description Plural' ,
'gitView.integrate.commitsMovedDescriptionSingle' : 'Commits Moved Description Single' ,
'gitView.integrate.commitsMovedToast' : 'Commits Moved Toast' ,
'gitView.integrate.commitsToMove' : 'Commits to move' ,
'gitView.integrate.conflictsInFiles' : 'Conflicts In Files' ,
'gitView.integrate.currentCommit' : 'Current Commit' ,
'gitView.integrate.currentSession' : 'Current Session' ,
'gitView.integrate.failedToMoveToast' : 'Failed To Move Toast' ,
'gitView.integrate.moreFiles' : 'More Files' ,
'gitView.integrate.move' : 'Move' ,
'gitView.integrate.moveCommits' : 'Move commits' ,
'gitView.integrate.moving' : 'Moving…' ,
'gitView.integrate.newSession' : 'New Session' ,
'gitView.integrate.noActiveSession' : 'No Active Session' ,
'gitView.integrate.noActiveSessionDescription' : 'No Active Session Description' ,
'gitView.integrate.noCommitsToMove' : 'No commits to move.' ,
'gitView.integrate.noCommitsToMoveToast' : 'No Commits To Move Toast' ,
'gitView.integrate.previewUnavailable' : 'Preview Unavailable' ,
'gitView.integrate.showAll' : 'Show All' ,
'gitView.integrate.showLess' : 'Show Less' ,
'gitView.integrate.showingFirstCommits' : 'Showing First Commits' ,
'gitView.integrate.target' : 'Target' ,
'gitView.integrate.title' : 'Re-integrate commits' ,
'gitView.integrate.toMoveCount' : 'To Move Count' ,
'gitView.operation.abort' : 'Abort' ,
'gitView.operation.continue' : 'Continue' ,
'gitView.operation.inProgressTitle' : 'In Progress Title' ,
'gitView.operation.merge' : 'Merge' ,
'gitView.operation.mergeInProgressWithHead' : 'Merge In Progress With Head' ,
'gitView.operation.mergingMessage' : 'Merging Message' ,
'gitView.operation.rebase' : 'Rebase' ,
'gitView.operation.rebaseInProgress' : 'Rebase In Progress' ,
'gitView.operation.rebasingOnto' : 'Rebasing Onto' ,
'gitView.operation.resolveConflictsHint' : 'Resolve Conflicts Hint' ,
'gitView.operation.resolveWithAi' : 'Resolve with AI' ,
'gitView.stash.confirmButton' : 'Confirm Button' ,
'gitView.stash.description' : 'Description' ,
'gitView.stash.mergeWith' : 'Merge With' ,
'gitView.stash.rebaseOnto' : 'Rebase Onto' ,
'gitView.stash.restoreAfterOperation' : 'Restore After Operation' ,
'gitView.stash.restoreAria' : 'Restore aria label' ,
'gitView.stash.stepRestore' : 'Restore your stashed changes' ,
'gitView.stash.stepStash' : 'Stash your uncommitted changes' ,
'gitView.stash.thisWill' : 'This will:' ,
'gitView.stash.title' : 'Uncommitted Changes' ,
'gitView.sync.fetch' : 'Fetch' ,
'gitView.sync.fetchTooltip' : 'Fetch from remote' ,
'gitView.sync.pull' : 'Pull' ,
'gitView.sync.pullTooltip' : 'Pull changes' ,
'gitView.sync.pullTooltipBehind' : 'Pull changes ({count} behind)' ,
'gitView.sync.push' : 'Push' ,
'gitView.sync.pushTooltip' : 'Push changes' ,
'gitView.sync.pushTooltipAhead' : 'Push changes ({count} ahead)' ,
'gitView.branch.actionsUnavailable' : 'Branch actions unavailable in this repository state' ,
'gitView.conflict.noDetailsAvailable' : 'No conflict details available' ,
'gitView.empty.notGitRepository' : 'This directory is not a Git repository' ,
'gitView.empty.notGitRepositoryDescription' : 'Initialize Git in this directory or open a repository.' ,
'gitView.empty.selectSessionOrDirectory' : 'Select a session or directory to view Git status' ,
'gitView.empty.worktreeFeaturesUnavailable' : 'Worktree features are unavailable in this workspace mode.' ,
'gitView.empty.worktreeSetupDescription' : 'Finishing worktree setup and preparing repository state.' ,
'gitView.empty.worktreeSetupInProgress' : 'Worktree setup in progress' ,
'gitView.gitmoji.empty' : 'No gitmoji found' ,
'gitView.gitmoji.searchPlaceholder' : 'Search gitmoji...' ,
'gitView.gitmoji.title' : 'Insert gitmoji' ,
'gitView.history.dialogDescription' : 'Browse recent commits and inspect changed files.' ,
'gitView.loading.checkingRepository' : 'Checking repository...' ,
'gitView.loading.loading' : 'Loading...' ,
'gitView.pr.actions.add' : 'Add' ,
'gitView.pr.actions.cancelEditing' : 'Cancel editing' ,
'gitView.pr.actions.cancelEditingAria' : 'Cancel PR editing' ,
'gitView.pr.actions.createPr' : 'Create PR' ,
'gitView.pr.actions.edit' : 'Edit' ,
'gitView.pr.actions.editPr' : 'Edit PR' ,
'gitView.pr.actions.editPrAria' : 'Edit pull request' ,
'gitView.pr.actions.hide' : 'Hide' ,
'gitView.pr.actions.markReady' : 'Mark ready' ,
'gitView.pr.actions.markReadyAria' : 'Mark pull request ready for review' ,
'gitView.pr.actions.mergePr' : 'Merge PR' ,
'gitView.pr.actions.mergePrAria' : 'Merge pull request' ,
'gitView.pr.actions.openChecks' : 'Open checks' ,
'gitView.pr.actions.openChecksAria' : 'Open failed checks' ,
'gitView.pr.actions.openComments' : 'Open comments' ,
'gitView.pr.actions.openCommentsAria' : 'Open pull request comments' ,
'gitView.pr.actions.openOnGitHub' : 'Open on GitHub' ,
'gitView.pr.actions.openOnGitHubAria' : 'Open pull request on GitHub' ,
'gitView.pr.actions.openSettings' : 'Open settings' ,
'gitView.pr.actions.repo' : 'Repository' ,
'gitView.pr.actions.resolveFailedChecks' : 'Resolve failed checks' ,
'gitView.pr.actions.resolveFailedChecksAria' : 'Send failed checks to agent' ,
'gitView.pr.actions.savePr' : 'Save PR' ,
'gitView.pr.actions.savePrAria' : 'Save pull request changes' ,
'gitView.pr.actions.sendCommentToAgent' : 'Send comment to agent' ,
'gitView.pr.actions.sendCommentToAgentAria' : 'Send this comment to agent' ,
'gitView.pr.actions.sendToAgent' : 'Send to agent' ,
'gitView.pr.actions.shareComments' : 'Share comments' ,
'gitView.pr.actions.shareCommentsAria' : 'Send pull request comments to agent' ,
'gitView.pr.actions.toggleDraftAria' : 'Toggle draft state' ,
'gitView.pr.additionalContext.added' : 'Added' ,
'gitView.pr.additionalContext.hint' : 'Add extra context for better review quality.' ,
'gitView.pr.additionalContext.optional' : 'Optional' ,
'gitView.pr.additionalContext.title' : 'Additional context' ,
'gitView.pr.checkDetails.empty' : 'No check details available' ,
'gitView.pr.checkDetails.title' : 'Failed check details' ,
'gitView.pr.checkingStatus' : 'Checking pull request status...' ,
'gitView.pr.checks.completedLabel' : 'Completed' ,
'gitView.pr.checks.conclusionLabel' : 'Conclusion' ,
'gitView.pr.checks.startedLabel' : 'Started' ,
'gitView.pr.checks.statusLabel' : 'Status' ,
'gitView.pr.checks.stepLabel' : 'Step' ,
'gitView.pr.checks.steps' : 'Steps' ,
'gitView.pr.comments.empty' : 'No comments found' ,
'gitView.pr.comments.generalContext' : 'General comment' ,
'gitView.pr.comments.reviewContext' : 'Review comment' ,
'gitView.pr.comments.title' : 'Comments' ,
'gitView.pr.comments.unknownAuthor' : 'Unknown author' ,
'gitView.pr.createTitle' : 'Create pull request' ,
'gitView.pr.draftMustBeReady' : 'Draft PR must be marked ready before merge.' ,
'gitView.pr.field.baseBranch' : 'Base branch' ,
'gitView.pr.field.description' : 'Description' ,
'gitView.pr.field.draft' : 'Draft' ,
'gitView.pr.field.title' : 'Title' ,
'gitView.pr.githubNotConnected' : 'GitHub is not connected' ,
'gitView.pr.loadingDescription' : 'Loading description...' ,
'gitView.pr.mergeMethod.merge' : 'Create a merge commit' ,
'gitView.pr.mergeMethod.rebase' : 'Rebase and merge' ,
'gitView.pr.mergeMethod.squash' : 'Squash and merge' ,
'gitView.pr.noDescription' : 'No description' ,
'gitView.pr.noMergePermission' : 'You do not have permission to merge this pull request.' ,
'gitView.pr.notMergeable' : 'Not mergeable' ,
'gitView.pr.numberLabel' : 'PR #{number}' ,
'gitView.pr.placeholder.additionalContext' : 'Any constraints, rollout notes, or reviewer context...' ,
'gitView.pr.placeholder.description' : 'Describe the change...' ,
'gitView.pr.placeholder.main' : 'Summarize your pull request' ,
'gitView.pr.placeholder.selectBaseBranch' : 'Select base branch' ,
'gitView.pr.placeholder.title' : 'Pull request title' ,
'gitView.pr.placeholder.whatChanged' : 'What changed and why?' ,
'gitView.pr.statusUnavailable' : 'Pull request status unavailable' ,
'gitView.pr.toast.baseBranchRequired' : 'Select a base branch' ,
'gitView.pr.toast.baseMustDifferFromHead' : 'Base branch must differ from current branch' ,
'gitView.pr.toast.createPrFailed' : 'Failed to create pull request' ,
'gitView.pr.toast.generateDescriptionFailed' : 'Failed to generate pull request description' ,
'gitView.pr.toast.githubApiUnavailable' : 'GitHub API is unavailable' ,
'gitView.pr.toast.loadCheckDetailsFailed' : 'Failed to load check details' ,
'gitView.pr.toast.loadChecksFailed' : 'Failed to load pull request checks' ,
'gitView.pr.toast.loadCommentsFailed' : 'Failed to load comments' ,
'gitView.pr.toast.loadPrCommentsFailed' : 'Failed to load pull request comments' ,
'gitView.pr.toast.markReadyFailed' : 'Failed to mark pull request ready' ,
'gitView.pr.toast.markedReady' : 'Pull request marked ready for review' ,
'gitView.pr.toast.mergeFailed' : 'Failed to merge pull request' ,
'gitView.pr.toast.noActiveSession' : 'No active chat session' ,
'gitView.pr.toast.noActiveSessionDescription' : 'Open or create a chat session to send context to an agent.' ,
'gitView.pr.toast.noFailedChecks' : 'No failed checks found' ,
'gitView.pr.toast.noModelSelected' : 'Select a model first' ,
'gitView.pr.toast.noPrComments' : 'No pull request comments found' ,
'gitView.pr.toast.prCreated' : 'Pull request created' ,
'gitView.pr.toast.prMerged' : 'Pull request merged' ,
'gitView.pr.toast.prNotMerged' : 'Pull request was not merged' ,
'gitView.pr.toast.prUpdated' : 'Pull request updated' ,
'gitView.pr.toast.sendMessageFailed' : 'Failed to send message to agent' ,
'gitView.pr.toast.titleRequired' : 'Title is required' ,
'gitView.pr.toast.updatePrFailed' : 'Failed to update pull request' ,
'gitView.pullRequest.createHint' : 'Create and manage pull requests from this branch.' ,
'gitView.pullRequest.title' : 'Pull request' ,
'gitView.tabs.commit' : 'Commit' ,
'gitView.tabs.pr' : 'PR' ,
'gitView.tabs.update' : 'Update' ,
'gitView.tabs.worktree' : 'Worktree' ,
'gitView.toast.abortOperationFailed' : 'Failed to abort operation' ,
'gitView.toast.appliedIdentity' : 'Applied identity: {name}' ,
'gitView.toast.applyIdentityFailed' : 'Failed to apply identity' ,
'gitView.toast.branchCreatedLocally' : 'Branch created locally, but failed to set upstream.' ,
'gitView.toast.cannotCheckout' : 'Cannot checkout branch: {reason}' ,
'gitView.toast.cannotCreateBranch' : 'Cannot create branch: {reason}' ,
'gitView.toast.cannotRemoveOriginRemote' : 'Cannot remove the origin remote' ,
'gitView.toast.cannotRenameBranch' : 'Cannot rename branch: {reason}' ,
'gitView.toast.checkedOut' : 'Checked out {name}' ,
'gitView.toast.checkoutFailed' : 'Failed to checkout {name}' ,
'gitView.toast.commitCreated' : 'Commit created' ,
'gitView.toast.commitHashCopied' : 'Commit hash copied' ,
'gitView.toast.continueOperationFailed' : 'Failed to continue operation' ,
'gitView.toast.copyFailed' : 'Failed to copy' ,
'gitView.toast.createBranchFailed' : 'Failed to create branch' ,
'gitView.toast.createCommitFailed' : 'Failed to create commit' ,
'gitView.toast.createdBranch' : 'Created branch {name}' ,
'gitView.toast.enterCommitMessage' : 'Enter a commit message' ,
'gitView.toast.fetchedFromRemote' : 'Fetched from {name}' ,
'gitView.toast.generateCommitMessageFailed' : 'Failed to generate commit message' ,
'gitView.toast.mergeAborted' : 'Merge aborted' ,
'gitView.toast.mergeCompleted' : 'Merge completed' ,
'gitView.toast.mergeConflictsDetected' : 'Merge conflicts detected' ,
'gitView.toast.mergedIntoBranch' : 'Merged {branch} into {currentBranch}' ,
'gitView.toast.pulledFilesPlural' : 'Pulled {count} files from {name}' ,
'gitView.toast.pulledFilesSingle' : 'Pulled {count} file from {name}' ,
'gitView.toast.pushedToUpstream' : 'Pushed to upstream' ,
'gitView.toast.rebaseAborted' : 'Rebase aborted' ,
'gitView.toast.rebaseConflictsDetected' : 'Rebase conflicts detected' ,
'gitView.toast.rebaseStepCompleted' : 'Rebase step completed' ,
'gitView.toast.rebasedOntoBranch' : 'Rebased {currentBranch} onto {branch}' ,
'gitView.toast.refreshRepositoryFailed' : 'Failed to refresh repository' ,
'gitView.toast.remoteNameRequired' : 'Remote name is required' ,
'gitView.toast.removedRemote' : 'Removed remote {name}' ,
'gitView.toast.renameBranchFailed' : 'Failed to rename {oldName} to {newName}' ,
'gitView.toast.renamedBranch' : 'Renamed {oldName} to {newName}' ,
'gitView.toast.restoreStashFailed' : 'Failed to restore stash' ,
'gitView.toast.restoreStashManually' : 'Stash restored manually required' ,
'gitView.toast.revertFailed' : 'Failed to revert changes' ,
'gitView.toast.revertedFile' : 'Reverted {path}' ,
'gitView.toast.revertedFilesPlural' : 'Reverted {count} files' ,
'gitView.toast.revertedFilesSingle' : 'Reverted {count} file' ,
'gitView.toast.revertedSomePlural' : 'Reverted {success} files, {failed} failed' ,
'gitView.toast.revertedSomeSingle' : 'Reverted {success} file, {failed} failed' ,
'gitView.toast.selectFileToCommit' : 'Select at least one file to commit' ,
'gitView.toast.selectFileToDescribe' : 'Select at least one file to describe' ,
'gitView.toast.stashedRestored' : 'Stashed changes restored' ,
'gitView.toast.syncActionFailed' : '{action} failed' ,
'gitView.toast.upstreamSet' : 'Set upstream for {branch} to {remote}' ,
'gitView.worktree.availableInWorktreeMode' : 'Available only in worktree mode' ,
'contextPanel.mode.chat' : 'Chat' ,
'contextPanel.mode.files' : 'Files' ,
'contextPanel.mode.diff' : 'Diff' ,
'contextPanel.mode.plan' : 'Plan' ,
'contextPanel.mode.context' : 'Context' ,
'contextPanel.tab.closeTabAria' : 'Close {label} tab' ,
'contextPanel.actions.collapsePanel' : 'Collapse panel' ,
'contextPanel.actions.expandPanel' : 'Expand panel' ,
'contextPanel.actions.closePanel' : 'Close panel' ,
'contextPanel.actions.resizePanelAria' : 'Resize context panel' ,
'contextPanel.iframe.sessionChatTitle' : 'Session chat {sessionID}' ,
'sidebarFilesTree.menu.rename' : 'Rename' ,
'sidebarFilesTree.menu.copyPath' : 'Copy Path' ,
'sidebarFilesTree.menu.save' : 'Save' ,
'sidebarFilesTree.menu.newFile' : 'New File' ,
'sidebarFilesTree.menu.newFolder' : 'New Folder' ,
'sidebarFilesTree.menu.delete' : 'Delete' ,
'sidebarFilesTree.toast.pathCopied' : 'Path copied' ,
'sidebarFilesTree.toast.copyFailed' : 'Copy failed' ,
'sidebarFilesTree.toast.revealFailed' : 'Failed to reveal path' ,
'sidebarFilesTree.toast.filenameRequired' : 'Filename is required' ,
'sidebarFilesTree.toast.writeNotSupported' : 'Write not supported' ,
'sidebarFilesTree.toast.fileCreated' : 'File created' ,
'sidebarFilesTree.toast.operationFailed' : 'Operation failed' ,
'sidebarFilesTree.toast.folderNameRequired' : 'Folder name is required' ,
'sidebarFilesTree.toast.folderCreated' : 'Folder created' ,
'sidebarFilesTree.toast.nameRequired' : 'Name is required' ,
'sidebarFilesTree.toast.renameNotSupported' : 'Rename not supported' ,
'sidebarFilesTree.toast.renamedSuccessfully' : 'Renamed successfully' ,
'sidebarFilesTree.toast.deleteNotSupported' : 'Delete not supported' ,
'sidebarFilesTree.toast.deletedSuccessfully' : 'Deleted successfully' ,
'sidebarFilesTree.search.placeholder' : 'Search files...' ,
'sidebarFilesTree.search.clearAria' : 'Clear search' ,
'sidebarFilesTree.actions.newFileTitle' : 'New File' ,
'sidebarFilesTree.actions.newFolderTitle' : 'New Folder' ,
'sidebarFilesTree.actions.refreshTitle' : 'Refresh' ,
'sidebarFilesTree.state.searching' : 'Searching...' ,
'sidebarFilesTree.state.loading' : 'Loading...' ,
'sidebarFilesTree.dialog.createFile.title' : 'Create File' ,
'sidebarFilesTree.dialog.createFolder.title' : 'Create Folder' ,
'sidebarFilesTree.dialog.rename.title' : 'Rename' ,
'sidebarFilesTree.dialog.delete.title' : 'Delete' ,
'sidebarFilesTree.dialog.createFile.description' : 'Create a new file in {path}' ,
'sidebarFilesTree.dialog.createFolder.description' : 'Create a new folder in {path}' ,
'sidebarFilesTree.dialog.rename.description' : 'Rename {name}' ,
'sidebarFilesTree.dialog.delete.description' : 'Are you sure you want to delete {name}? This action cannot be undone.' ,
'sidebarFilesTree.dialog.rootFallback' : 'root' ,
'sidebarFilesTree.dialog.rename.placeholder' : 'New name' ,
'sidebarFilesTree.dialog.namePlaceholder' : 'Name' ,
'sidebarFilesTree.dialog.cancel' : 'Cancel' ,
'sidebarFilesTree.dialog.confirm' : 'Confirm' ,
'sidebarFilesTree.dialog.delete.confirm' : 'Delete' ,
'filesView.dialog.createFile.title' : 'Create File' ,
'filesView.dialog.createFolder.title' : 'Create Folder' ,
'filesView.dialog.rename.title' : 'Rename' ,
'filesView.dialog.delete.title' : 'Delete' ,
'filesView.dialog.createFile.description' : 'Create a new file in {path}' ,
'filesView.dialog.createFolder.description' : 'Create a new folder in {path}' ,
'filesView.dialog.rename.description' : 'Rename {name}' ,
'filesView.dialog.delete.description' : 'Are you sure you want to delete {name}? This action cannot be undone.' ,
'filesView.dialog.rootFallback' : 'root' ,
'filesView.dialog.rename.placeholder' : 'New name' ,
'filesView.dialog.namePlaceholder' : 'Name' ,
'filesView.dialog.cancel' : 'Cancel' ,
'filesView.dialog.confirm' : 'Confirm' ,
'filesView.dialog.delete.confirm' : 'Delete' ,
'filesView.editor.saving' : 'Saving...' ,
'filesView.editor.saved' : 'Saved' ,
'filesView.editor.saveNowTitle' : 'Save now ({shortcut}) - auto-saves after 1.5s' ,
'filesView.editor.saveAria' : 'Save ({shortcut})' ,
'filesView.editor.openInDesktopApp' : 'Open in desktop app' ,
'filesView.editor.refreshApps' : 'Refresh Apps' ,
'filesView.editor.disableLineWrap' : 'Disable line wrap' ,
'filesView.editor.enableLineWrap' : 'Enable line wrap' ,
'filesView.editor.findInFile' : 'Find in file' ,
'filesView.editor.goToLine' : 'Go to line' ,
'filesView.editor.switchToTextView' : 'Switch to Text View' ,
'filesView.editor.switchToTreeView' : 'Switch to Tree View' ,
'filesView.toast.copyFailed' : 'Copy failed' ,
'filesView.toast.openInAppFailed' : 'Failed to open in {app}' ,
'filesView.toast.savingNotSupported' : 'Saving not supported' ,
'filesView.toast.writeFileFailed' : 'Failed to write file' ,
'filesView.toast.saveFailed' : 'Save failed' ,
'filesView.editor.copyFileContents' : 'Copy file contents' ,
'filesView.editor.copyFilePathTitle' : 'Copy file path ({path})' ,
'filesView.editor.saveFile' : 'Save file' ,
'filesView.editor.exitFullscreen' : 'Exit fullscreen' ,
'filesView.editor.fullscreen' : 'Fullscreen' ,
'filesView.unsaved.title' : 'Unsaved changes' ,
'filesView.unsaved.description' : 'Save your edits before continuing?' ,
'filesView.unsaved.saveChanges' : 'Save changes' ,
'filesView.unsaved.discard' : 'Discard' ,
'filesView.editor.back' : 'Back' ,
'filesView.editor.openFilesAria' : 'Open files' ,
'filesView.editor.closeFileAria' : 'Close {name}' ,
'filesView.editor.selectFile' : 'Select a file' ,
'filesView.editor.showControlsAria' : 'Show editor controls' ,
'filesView.editor.controlsTitle' : 'Editor controls' ,
'filesView.editor.pickFileFromTree' : 'Pick a file from the tree.' ,
'filesView.state.loading' : 'Loading...' ,
'filesView.state.openingFileAtChange' : 'Opening file at change...' ,
'filesView.tree.search.placeholder' : 'Search files...' ,
'filesView.tree.search.clearAria' : 'Clear search' ,
'filesView.tree.search.searching' : 'Searching...' ,
'filesView.tree.actions.newFileTitle' : 'New File' ,
'filesView.tree.actions.newFolderTitle' : 'New Folder' ,
'filesView.editor.imageAltFallback' : 'Image' ,
'filesView.error.jsonViewerUnavailable' : 'JSON viewer unavailable' ,
'filesView.error.switchToTextMode' : 'Switch to text mode to view raw content.' ,
'filesView.warning.largeFilePreviewLimited' : 'This file is large ({sizeKb}KB). Preview may be limited.' ,
'filesView.error.previewUnavailable' : 'Preview unavailable' ,
'filesView.error.switchToEditMode' : 'Switch to edit mode to fix the issue.' ,
'filesView.error.readFileFailed' : 'Failed to read file' ,
'filesView.editor.htmlPreviewTitle' : 'HTML Preview' ,
'contextUsage.aria.label' : 'Context usage' ,
'contextUsage.mobile.title' : 'Context Usage' ,
'contextUsage.mobile.usedTokens' : 'Used tokens' ,
'contextUsage.mobile.contextLimit' : 'Context limit' ,
'contextUsage.mobile.outputLimit' : 'Output limit' ,
'contextUsage.mobile.usage' : 'Usage' ,
'contextUsage.tooltip.usedTokens' : 'Used tokens: {tokens}' ,
'contextUsage.tooltip.contextLimit' : 'Context limit: {tokens}' ,
'contextUsage.tooltip.outputLimit' : 'Output limit: {tokens}' ,
'contextSidebar.session.untitled' : 'Untitled Session' ,
'contextSidebar.empty.openSession' : 'Open a session to inspect context.' ,
'contextSidebar.section.context' : 'Context' ,
'contextSidebar.section.lastAssistantMessage' : 'Last Assistant Message' ,
'contextSidebar.section.rawMessages' : 'Raw Messages' ,
'contextSidebar.context.percentUsed' : '{percent}% used' ,
'contextSidebar.breakdown.user' : 'User' ,
'contextSidebar.breakdown.assistant' : 'Assistant' ,
'contextSidebar.breakdown.toolCalls' : 'Tool Calls' ,
'contextSidebar.breakdown.other' : 'Other' ,
'contextSidebar.stats.messages' : 'Messages' ,
'contextSidebar.stats.user' : 'User' ,
'contextSidebar.stats.assistant' : 'Assistant' ,
'contextSidebar.stats.cost' : 'Cost' ,
'contextSidebar.tokens.input' : 'Input' ,
'contextSidebar.tokens.output' : 'Output' ,
'contextSidebar.tokens.reasoning' : 'Reasoning' ,
'contextSidebar.tokens.cacheRead' : 'Cache Read' ,
'contextSidebar.tokens.cacheWrite' : 'Cache Write' ,
'contextSidebar.actions.copyJson' : 'Copy JSON' ,
'contextSidebar.actions.copy' : 'Copy' ,
'contextSidebar.actions.copied' : 'Copied' ,
'planView.file.defaultName' : 'plan' ,
'planView.title.default' : 'Plan' ,
'planView.error.saveFailed' : 'Save failed' ,
'planView.error.previewUnavailable' : 'Preview unavailable' ,
'planView.error.switchToEditMode' : 'Switch to edit mode to fix the issue.' ,
'planView.error.writeFailed' : 'Write failed' ,
'planView.error.writePlanFileFailed' : 'Failed to write plan file ({status})' ,
'planView.actions.improvePlanAria' : 'Improve plan' ,
'planView.actions.improve' : 'Improve' ,
'planView.actions.implementPlanAria' : 'Implement plan' ,
'planView.actions.implement' : 'Implement' ,
'planView.actions.sendToNewSession' : 'Send to new session' ,
'planView.actions.sendToNewWorktreeSession' : 'Send to new worktree session' ,
'planView.actions.copyPlanContents' : 'Copy plan contents' ,
'planView.state.loading' : 'Loading...' ,
'diffView.binary.unavailable' : 'Content of this file cannot be viewed.' ,
'diffView.change.untracked' : 'Untracked file' ,
'diffView.change.new' : 'New file' ,
'diffView.change.deleted' : 'Deleted file' ,
'diffView.change.renamed' : 'Renamed file' ,
'diffView.change.copied' : 'Copied file' ,
'diffView.change.modified' : 'Modified file' ,
'diffView.mode.single.label' : 'Single file' ,
'diffView.mode.single.description' : 'Show one file at a time' ,
'diffView.mode.stacked.label' : 'All files' ,
'diffView.mode.stacked.description' : 'Stack all modified files together' ,
'diffView.selector.selectFile' : 'Select file' ,
'diffView.selector.viewMode' : 'View mode' ,
'diffView.image.original' : 'Original' ,
'diffView.image.modified' : 'Modified' ,
'diffView.image.new' : 'New' ,
'diffView.image.originalAlt' : 'Original: {path}' ,
'diffView.image.modifiedAlt' : 'Modified: {path}' ,
'diffView.section.files' : 'Files' ,
'diffView.state.selectSessionDirectory' : 'Select a session directory to view diffs' ,
'diffView.state.loadingRepositoryStatus' : 'Loading repository status...' ,
'diffView.state.notGitRepository' : 'Not a git repository. Use the Git tab to initialize or change directories.' ,
'diffView.state.cleanWorkingTree' : 'Working tree clean, no changes to display' ,
'diffView.state.failedToLoadDiff' : 'Failed to load diff' ,
'diffView.state.loadingDiff' : 'Loading diff...' ,
'diffView.state.loadingChanges' : 'Loading changes...' ,
'diffView.summary.changedFilesSingle' : '{count} file changed' ,
'diffView.summary.changedFilesPlural' : '{count} files changed' ,
'diffView.actions.retry' : 'Retry' ,
'diffView.actions.disableLineWrap' : 'Disable line wrap' ,
'diffView.actions.enableLineWrap' : 'Enable line wrap' ,
'diffView.actions.openFileInEditorAtChange' : 'Open this file in editor at change' ,
'diffView.actions.openFileAtFirstChangedLine' : 'Open this file at first changed line' ,
'rightSidebar.contextNotesTodo.plan.defaultTitle' : 'Plan' ,
'rightSidebar.contextNotesTodo.empty.selectProject' : 'Select a project to add notes and todos.' ,
'rightSidebar.contextNotesTodo.notes.title' : 'Quick notes - {project}' ,
'rightSidebar.contextNotesTodo.notes.placeholder' : 'Capture context, reminders, or links' ,
'rightSidebar.contextNotesTodo.todo.title' : 'Todo' ,
'rightSidebar.contextNotesTodo.todo.itemsSingle' : '{count} item' ,
'rightSidebar.contextNotesTodo.todo.itemsPlural' : '{count} items' ,
'rightSidebar.contextNotesTodo.todo.clearCompleted' : 'Clear completed' ,
'rightSidebar.contextNotesTodo.todo.inputPlaceholder' : 'Add a todo' ,
'rightSidebar.contextNotesTodo.todo.addAria' : 'Add todo' ,
'rightSidebar.contextNotesTodo.todo.empty' : 'No todos yet. Add a small checklist for this project.' ,
'rightSidebar.contextNotesTodo.todo.actions.markComplete' : 'Mark "{text}" complete' ,
'rightSidebar.contextNotesTodo.todo.actions.collapse' : 'Collapse todo "{text}"' ,
'rightSidebar.contextNotesTodo.todo.actions.expand' : 'Expand todo "{text}"' ,
'rightSidebar.contextNotesTodo.todo.actions.delete' : 'Delete "{text}"' ,
'rightSidebar.contextNotesTodo.todo.actions.send' : 'Send "{text}"' ,
'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession' : 'Send to current session' ,
'rightSidebar.contextNotesTodo.todo.sendMenu.newSession' : 'Send to new session' ,
'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession' : 'Send to new worktree session' ,
'rightSidebar.contextNotesTodo.plans.title' : 'Plans' ,
'rightSidebar.contextNotesTodo.plans.filesSingle' : '{count} file' ,
'rightSidebar.contextNotesTodo.plans.filesPlural' : '{count} files' ,
'rightSidebar.contextNotesTodo.plans.importFromFile' : 'Import plan from file' ,
'rightSidebar.contextNotesTodo.plans.empty' : 'No saved plans yet.' ,
'rightSidebar.contextNotesTodo.plans.deletePlan' : 'Delete plan' ,
'rightSidebar.contextNotesTodo.plans.deletePlanWithTitle' : 'Delete plan "{title}"' ,
'rightSidebar.contextNotesTodo.sendDialog.title.newSession' : 'Send to new session' ,
'rightSidebar.contextNotesTodo.sendDialog.title.newWorktree' : 'Send to new worktree' ,
'rightSidebar.contextNotesTodo.sendDialog.variant.default' : 'Default' ,
'rightSidebar.contextNotesTodo.sendDialog.actions.cancel' : 'Cancel' ,
'rightSidebar.contextNotesTodo.sendDialog.actions.send' : 'Send' ,
'rightSidebar.contextNotesTodo.sendDialog.actions.sending' : 'Sending' ,
'rightSidebar.contextNotesTodo.toast.saveNotesFailed' : 'Failed to save project notes' ,
'rightSidebar.contextNotesTodo.toast.loadNotesFailed' : 'Failed to load project notes' ,
'rightSidebar.contextNotesTodo.toast.noActiveSession' : 'No active session selected' ,
'rightSidebar.contextNotesTodo.toast.sentToCurrentSession' : 'Todo sent to current session' ,
'rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo' : 'Worktree actions are only available for Git repositories' ,
'rightSidebar.contextNotesTodo.toast.createSessionFailed' : 'Failed to create session' ,
'rightSidebar.contextNotesTodo.toast.sentToNewSession' : 'Todo sent to new session' ,
'rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession' : 'Todo sent to new worktree session' ,
'rightSidebar.contextNotesTodo.toast.sendTodoFailed' : 'Failed to send todo' ,
'rightSidebar.contextNotesTodo.toast.deletePlanFailed' : 'Failed to delete plan' ,
'rightSidebar.contextNotesTodo.toast.planFileEmpty' : 'Plan file is empty' ,
'rightSidebar.contextNotesTodo.toast.importPlanFailed' : 'Failed to import plan' ,
'rightSidebar.contextNotesTodo.toast.planImported' : 'Plan imported' ,
'rightSidebar.contextNotesTodo.toast.readPlanFileFailed' : 'Failed to read plan file' ,
'inlineComment.range.lines' : 'Lines {start}-{end}' ,
'inlineComment.input.placeholder' : 'Add a comment... (Cmd+Enter to save)' ,
'inlineComment.actions.cancel' : 'Cancel' ,
'inlineComment.actions.save' : 'Save' ,
'inlineComment.actions.comment' : 'Comment' ,
'inlineComment.actions.showLess' : 'Show less' ,
'inlineComment.actions.showMore' : 'Show more' ,
'inlineComment.actions.editComment' : 'Edit comment' ,
'inlineComment.actions.deleteComment' : 'Delete comment' ,
'inlineComment.toast.selectSessionToSave' : 'Select a session to save comment' ,
'header.github.connectedWithLogin' : 'GitHub: {login}' ,
'header.github.connected' : 'GitHub connected' ,
'header.github.avatarWithLogin' : '{login} avatar' ,
'header.github.avatar' : 'GitHub avatar' ,
'header.github.accountsTitle' : 'GitHub Accounts' ,
'header.services.openWithCurrent' : 'Open instance, usage and MCP (current: {current})' ,
'header.services.open' : 'Open services, usage and MCP' ,
'header.services.tooltip.currentInstanceWithShortcuts' : 'Current instance: {current} ({toggle}; next tab {nextTab})' ,
'header.services.tooltip.servicesWithShortcuts' : 'Services ({toggle}; next tab {nextTab})' ,
'header.services.title' : 'Services' ,
'header.services.viewAria' : 'View services' ,
'header.services.closeAria' : 'Close services' ,
'header.services.rateLimits' : 'Rate limits' ,
'header.services.refreshRateLimitsAria' : 'Refresh rate limits' ,
'header.services.noRateLimits' : 'No rate limits available.' ,
'header.services.noRateLimitsReported' : 'No rate limits reported.' ,
'header.services.used' : 'Used' ,
'header.services.remaining' : 'Remaining' ,
'header.services.modelFamily.other' : 'Other' ,
'header.actions.openPlanAria' : 'Open plan' ,
'header.actions.planWithShortcut' : 'Plan ({shortcut})' ,
'header.actions.terminalPanelWithShortcut' : 'Terminal panel ({shortcut})' ,
'header.actions.toggleTerminalPanelAria' : 'Toggle terminal panel' ,
'terminalView.stream.processExitedMessage' : '\r\n[Process exited{exitCodeSegment}{signalSegment}]\r\n' ,
'terminalView.stream.processExitedWithCode' : ' with code {exitCode}' ,
'terminalView.stream.processExitedWithSignal' : ' (signal {signal})' ,
'terminalView.error.sessionEnded' : 'Terminal session ended' ,
'terminalView.error.connectionFailed' : 'Connection failed: {message}' ,
'terminalView.error.startSessionFailed' : 'Failed to start terminal session' ,
'terminalView.error.restartFailed' : 'Failed to restart terminal' ,
'terminalView.error.sendInputFailed' : 'Failed to send input' ,
'terminalView.empty.noWorkingDirectory' : 'No working directory available for terminal.' ,
'terminalView.empty.selectSession' : 'Select a session to open the terminal.' ,
'terminalView.empty.noWorkingDirectoryForSession' : 'No working directory available for this session.' ,
'terminalView.actions.retry' : 'Retry' ,
'terminalView.actions.hardRestart' : 'Hard Restart' ,
'terminalView.actions.hardRestartTitle' : 'Force kill and create fresh session' ,
'terminalView.quickKeys.escape' : 'Esc' ,
'terminalView.quickKeys.tabAria' : 'Tab' ,
'terminalView.quickKeys.controlLabel' : 'Ctrl' ,
'terminalView.quickKeys.controlModifierAria' : 'Control modifier' ,
'terminalView.quickKeys.commandModifierAria' : 'Command modifier' ,
'terminalView.quickKeys.arrowUpAria' : 'Arrow up' ,
'terminalView.quickKeys.arrowLeftAria' : 'Arrow left' ,
'terminalView.quickKeys.arrowDownAria' : 'Arrow down' ,
'terminalView.quickKeys.arrowRightAria' : 'Arrow right' ,
'terminalView.quickKeys.enterAria' : 'Enter' ,
'terminalView.tabs.closeTabTitle' : 'Close tab' ,
'terminalView.tabs.newTabTitle' : 'New tab' ,
'terminalView.bottomDock.resizeAria' : 'Resize terminal panel' ,
'terminalView.bottomDock.restoreTitle' : 'Restore terminal panel height' ,
'terminalView.bottomDock.restoreAria' : 'Restore terminal panel height' ,
'terminalView.bottomDock.expandTitle' : 'Expand terminal panel' ,
'terminalView.bottomDock.expandAria' : 'Expand terminal panel' ,
'terminalView.bottomDock.closeTitle' : 'Close terminal panel' ,
'terminalView.bottomDock.closeAria' : 'Close terminal panel' ,
'terminalView.viewport.inputAria' : 'Terminal input' ,
'directoryExplorerDialog.title' : 'Add project directory' ,
'directoryExplorerDialog.description' : 'Choose a folder to add as a project.' ,
'directoryExplorerDialog.toggle.showHidden' : 'Show hidden' ,
'directoryExplorerDialog.pathInput.placeholder' : 'Enter path or select from tree...' ,
'directoryExplorerDialog.actions.cancel' : 'Cancel' ,
'directoryExplorerDialog.actions.adding' : 'Adding...' ,
'directoryExplorerDialog.actions.addProject' : 'Add project' ,
'directoryExplorerDialog.toast.unableToAccessDirectory' : 'Unable to access directory' ,
'directoryExplorerDialog.toast.desktopDeniedAccess' : 'Desktop denied directory access.' ,
'directoryExplorerDialog.toast.failedToOpenDirectory' : 'Failed to open directory' ,
'directoryExplorerDialog.toast.desktopCouldNotGrantAccess' : 'Desktop could not grant file access.' ,
'directoryExplorerDialog.toast.failedToAddProject' : 'Failed to add project' ,
'directoryExplorerDialog.toast.selectValidDirectoryPath' : 'Please select a valid directory path.' ,
'directoryExplorerDialog.toast.failedToSelectDirectory' : 'Failed to select directory' ,
'directoryExplorerDialog.toast.unknownError' : 'Unknown error occurred.' ,
'directoryTree.actions.createNewDirectory' : 'Create new directory' ,
'directoryTree.actions.pinDirectory' : 'Pin directory' ,
'directoryTree.actions.unpinDirectory' : 'Unpin directory' ,
'directoryTree.actions.createDirectory' : 'Create directory' ,
'directoryTree.actions.cancel' : 'Cancel' ,
'directoryTree.actions.selectWorkingDirectoryAria' : 'Select working directory' ,
'directoryTree.state.locatingHomeDirectory' : 'Locating home directory...' ,
'directoryTree.state.loading' : 'Loading...' ,
'directoryTree.state.noDirectoriesFound' : 'No directories found' ,
'directoryTree.section.pinned' : 'Pinned' ,
'directoryTree.section.browse' : 'Browse' ,
'aboutDialog.versionLabel' : 'Version {version}' ,
'aboutDialog.tagline' : 'Coding with agents, in a workspace built with care.' ,
'aboutDialog.actions.copyDiagnostics' : 'Copy diagnostics' ,
'aboutDialog.actions.preparingDiagnostics' : 'Preparing diagnostics...' ,
'aboutDialog.actions.diagnosticsCopied' : 'Diagnostics copied' ,
'aboutDialog.diagnosticsDescription' : 'Includes OpenChamber state, OpenCode health, directories, and projects.' ,
'aboutDialog.footerNote' : 'Made with love for the community' ,
'aboutDialog.toast.copyFailed' : 'Copy failed' ,
'aboutDialog.toast.diagnosticsNotReady' : 'Diagnostics not ready yet. Wait a second and retry.' ,
'aboutDialog.toast.diagnosticsCopied' : 'Diagnostics copied' ,
'helpDialog.title' : 'Keyboard Shortcuts' ,
'helpDialog.description' : 'Use these keyboard shortcuts to navigate OpenChamber efficiently' ,
'helpDialog.section.navigationCommands' : 'Navigation & Commands' ,
'helpDialog.section.sessionManagement' : 'Session Management' ,
'helpDialog.section.panels' : 'Panels' ,
'helpDialog.section.interface' : 'Interface' ,
'helpDialog.item.openCommandPalette' : 'Open Command Palette' ,
'helpDialog.item.quickOpenFile' : 'Quick open file' ,
'helpDialog.item.showKeyboardShortcuts' : 'Show Keyboard Shortcuts (this dialog)' ,
'helpDialog.item.toggleSessionSidebar' : 'Toggle Session Sidebar' ,
'helpDialog.item.cycleAgent' : 'Cycle Agent (chat input)' ,
'helpDialog.item.openModelSelector' : 'Open Model Selector' ,
'helpDialog.item.navigateModels' : 'Navigate Models (in picker)' ,
'helpDialog.item.adjustThinkingMode' : 'Adjust Thinking Mode (in picker, when supported)' ,
'helpDialog.item.cycleThinkingVariant' : 'Cycle Thinking Variant (global shortcut)' ,
'helpDialog.item.newWindow' : 'New Window (desktop only)' ,
'helpDialog.item.createNewSession' : 'Create New Session' ,
'helpDialog.item.createNewWorktreeDraft' : 'Create New Worktree Draft' ,
'helpDialog.item.focusChatInput' : 'Focus Chat Input' ,
'helpDialog.item.abortActiveRun' : 'Abort active run (double press)' ,
'helpDialog.item.toggleRightSidebar' : 'Toggle Right Sidebar' ,
'helpDialog.item.openRightSidebarGitTab' : 'Open Right Sidebar Git Tab' ,
'helpDialog.item.openRightSidebarFilesTab' : 'Open Right Sidebar Files Tab' ,
'helpDialog.item.cycleRightSidebarTab' : 'Cycle Right Sidebar Tab' ,
'helpDialog.item.toggleTerminalDock' : 'Toggle Terminal Dock' ,
'helpDialog.item.toggleTerminalExpanded' : 'Toggle Terminal Expanded' ,
'helpDialog.item.togglePlanContextPanel' : 'Toggle Plan Context Panel' ,
'helpDialog.item.cycleTheme' : 'Cycle Theme (Light → Dark → System)' ,
'helpDialog.item.switchProject' : 'Switch Project' ,
'helpDialog.item.toggleServicesMenu' : 'Toggle Services Menu' ,
'helpDialog.item.cycleServicesTab' : 'Cycle Services Tab' ,
'helpDialog.item.openSettings' : 'Open Settings' ,
'helpDialog.keyCombiner.or' : 'or' ,
'helpDialog.proTips.title' : 'Pro Tips:' ,
'helpDialog.proTips.commandPalette' : 'Use Command Palette ({shortcut}) to quickly access all actions' ,
'helpDialog.proTips.recentSessions' : 'The 5 most recent sessions appear in the Command Palette' ,
'helpDialog.proTips.themeCycling' : 'Theme cycling remembers your preference across sessions' ,
'header.actions.rightSidebarWithShortcut' : 'Right sidebar ({shortcut})' ,
'header.actions.toggleRightSidebarAria' : 'Toggle right sidebar' ,
'header.actions.openSessionsWithShortcut' : 'Open sessions ({shortcut})' ,
'header.actions.openSessionsAria' : 'Open sessions' ,
'header.actions.closeSessionsAria' : 'Close sessions' ,
'header.actions.newSessionAria' : 'New session' ,
'header.actions.newSessionWithShortcut' : 'New session ({shortcut})' ,
'header.actions.backAria' : 'Back' ,
'header.navigation.mainAria' : 'Main navigation' ,
'header.sessions.title' : 'Sessions' ,
'header.changes.availableAria' : 'Changes available' ,
'session.githubIssuePicker.error.noActiveProject' : 'No active project' ,
'session.githubIssuePicker.error.runtimeUnavailable' : 'GitHub runtime API unavailable' ,
'session.githubIssuePicker.error.notConnected' : 'GitHub not connected' ,
'session.githubIssuePicker.error.repoNotResolvable' : 'Repo not resolvable' ,
'session.githubIssuePicker.error.repoMustBeGithub' : 'origin remote must be a GitHub URL' ,
'session.githubIssuePicker.error.issueNotFound' : 'Issue not found' ,
'session.githubIssuePicker.error.noModelSelected' : 'No model selected' ,
'session.githubIssuePicker.toast.loadMoreFailed' : 'Failed to load more issues' ,
'session.githubIssuePicker.toast.loadIssueDetailsFailed' : 'Failed to load issue details' ,
'session.githubIssuePicker.toast.sendContextFailed' : 'Failed to send issue context' ,
'session.githubIssuePicker.toast.sessionCreated' : 'Session created from issue' ,
'session.githubIssuePicker.toast.startSessionFailed' : 'Failed to start session' ,
'session.githubIssuePicker.title.select' : 'Link GitHub Issue' ,
'session.githubIssuePicker.title.createSession' : 'New Session From GitHub Issue' ,
'session.githubIssuePicker.description.select' : 'Select an issue to link to this session.' ,
'session.githubIssuePicker.description.createSession' : 'Seeds a new session with hidden issue context (title/body/labels/comments).' ,
'session.githubIssuePicker.searchPlaceholder' : 'Search by title or #123, or paste issue URL' ,
'session.githubIssuePicker.empty.noActiveProject' : 'No active project selected.' ,
'session.githubIssuePicker.empty.runtimeUnavailable' : 'GitHub runtime API unavailable.' ,
'session.githubIssuePicker.empty.notConnected' : 'GitHub not connected. Connect your GitHub account in settings.' ,
'session.githubIssuePicker.empty.noIssuesFound' : 'No issues found' ,
'session.githubIssuePicker.empty.noOpenIssuesFound' : 'No open issues found' ,
'session.githubIssuePicker.loading.issues' : 'Loading issues...' ,
'session.githubIssuePicker.loading.more' : 'Loading...' ,
'session.githubIssuePicker.actions.openSettings' : 'Open settings' ,
'session.githubIssuePicker.actions.useIssue' : 'Use issue #{number}' ,
'session.githubIssuePicker.actions.openInGitHubAria' : 'Open in GitHub' ,
'session.githubIssuePicker.actions.loadMore' : 'Load more' ,
'session.githubIssuePicker.actions.sectionTitle' : 'Actions' ,
'session.githubIssuePicker.actions.toggleWorktreeAria' : 'Toggle worktree' ,
'session.githubIssuePicker.actions.createInWorktree' : 'Create in worktree' ,
'session.githubIssuePicker.actions.openRepo' : 'Open Repo' ,
'session.githubIssuePicker.actions.refresh' : 'Refresh' ,
'session.githubPrPicker.error.noActiveProject' : 'No active project' ,
'session.githubPrPicker.error.runtimeUnavailable' : 'GitHub runtime API unavailable' ,
'session.githubPrPicker.error.notConnected' : 'GitHub not connected' ,
'session.githubPrPicker.error.prNotFound' : 'Pull request not found' ,
'session.githubPrPicker.error.repoNotResolvable' : 'Repo not resolvable' ,
'session.githubPrPicker.error.repoMustBeGithub' : 'origin remote must be a GitHub URL' ,
'session.githubPrPicker.toast.loadMoreFailed' : 'Failed to load more pull requests' ,
'session.githubPrPicker.toast.loadDetailsFailed' : 'Failed to load pull request details' ,
'session.githubPrPicker.title' : 'Link GitHub Pull Request' ,
'session.githubPrPicker.description' : 'Select a pull request to attach review context to this message.' ,
'session.githubPrPicker.searchPlaceholder' : 'Search by title or #123, or paste pull request URL' ,
'session.githubPrPicker.includeDiffAria' : 'Include PR diff in attached context' ,
'session.githubPrPicker.includeDiff' : 'Include PR diff' ,
'session.githubPrPicker.empty.noActiveProject' : 'No active project selected.' ,
'session.githubPrPicker.empty.runtimeUnavailable' : 'GitHub runtime API unavailable.' ,
'session.githubPrPicker.empty.notConnected' : 'GitHub not connected. Connect your GitHub account in settings.' ,
'session.githubPrPicker.empty.noPullRequestsFound' : 'No pull requests found' ,
'session.githubPrPicker.empty.noOpenPullRequestsFound' : 'No open pull requests found' ,
'session.githubPrPicker.loading.pullRequests' : 'Loading pull requests...' ,
'session.githubPrPicker.loading.more' : 'Loading...' ,
'session.githubPrPicker.actions.openSettings' : 'Open settings' ,
'session.githubPrPicker.actions.usePullRequest' : 'Use pull request #{number}' ,
'session.githubPrPicker.actions.openInGitHubAria' : 'Open in GitHub' ,
'session.githubPrPicker.actions.loadMore' : 'Load more' ,
'session.newWorktree.title' : 'New Worktree' ,
'session.newWorktree.mode.newBranch' : 'New Branch' ,
'session.newWorktree.mode.existingBranch' : 'Existing Branch' ,
'session.newWorktree.selectBranch' : 'Select Branch' ,
'session.newWorktree.chooseBranch' : 'Choose a branch...' ,
'session.newWorktree.fetchBranches' : 'Fetch branches' ,
'session.newWorktree.searchBranches' : 'Search branches...' ,
'session.newWorktree.loadingBranches' : 'Loading branches...' ,
'session.newWorktree.noBranchesFound' : 'No branches found' ,
'session.newWorktree.matchingBranches' : 'Matching branches' ,
'session.newWorktree.noMatchingBranches' : 'No matching branches' ,
'session.newWorktree.localBranches' : 'Local branches' ,
'session.newWorktree.remoteBranches' : 'Remote branches' ,
'session.newWorktree.otherLocalBranches' : 'Other local branches' ,
'session.newWorktree.otherRemoteBranches' : 'Other remote branches' ,
'session.newWorktree.branchName' : 'Branch Name' ,
'session.newWorktree.branchNamePlaceholder' : 'feature/my-awesome-feature' ,
'session.newWorktree.actions.change' : 'Change' ,
'session.newWorktree.actions.startFromGitHubIssuePr' : 'Start from GitHub Issue/PR' ,
'session.newWorktree.usingPrBranch' : 'Using PR branch: {branch}' ,
'session.newWorktree.fromIssue' : 'From issue #{number}: {title}' ,
'session.newWorktree.worktreeDirectory' : 'Worktree Directory' ,
'session.newWorktree.worktreeDirectoryPlaceholder' : 'my-worktree-directory' ,
'session.newWorktree.resetToMatchBranchName' : 'Reset to match branch name' ,
'session.newWorktree.sourceBranch' : 'Source Branch' ,
'session.newWorktree.selectSourceBranch' : 'Select Source Branch' ,
'session.newWorktree.selectSourceBranchPlaceholder' : 'Select source branch...' ,
'session.newWorktree.newBranchFromSource' : 'New branch will be created from {source}' ,
'session.newWorktree.issueNumber' : 'Issue #{number}' ,
'session.newWorktree.prNumber' : 'PR #{number}' ,
'session.newWorktree.includeDiffBadge' : '+diff' ,
'session.newWorktree.newSessionTitle' : 'New session' ,
'session.newWorktree.fromSource' : 'from {source}' ,
'session.newWorktree.actions.cancel' : 'Cancel' ,
'session.newWorktree.actions.creating' : 'Creating...' ,
'session.newWorktree.actions.createWorktree' : 'Create Worktree' ,
'session.newWorktree.actions.reset' : 'Reset' ,
'session.newWorktree.error.noModelSelected' : 'No model selected' ,
'session.newWorktree.error.noActiveProject' : 'No active project' ,
'session.newWorktree.error.branchNameRequired' : 'Branch name is required' ,
'session.newWorktree.error.worktreeDirectoryRequired' : 'Worktree directory is required' ,
'session.newWorktree.error.sendGitHubContextFailed' : 'Failed to send GitHub context' ,
'session.newWorktree.error.createWorktreeFailed' : 'Failed to create worktree' ,
'session.newWorktree.toast.sessionFromIssue' : 'Session created from issue' ,
'session.newWorktree.toast.sessionFromPr' : 'Session created from PR' ,
'session.newWorktree.toast.worktreeCreated' : 'Worktree created' ,
'session.newWorktree.toast.worktreeCreatedDescription' : '{target} - bootstrapping in background' ,
'session.githubIntegration.title' : 'Select from GitHub' ,
'session.githubIntegration.tabs.issues' : 'Issues' ,
'session.githubIntegration.tabs.pullRequests' : 'Pull Requests' ,
'session.githubIntegration.connect.title' : 'Connect to GitHub' ,
'session.githubIntegration.connect.description' : 'Link issues or pull requests to auto-fill worktree details' ,
'session.githubIntegration.connect.action' : 'Connect GitHub' ,
'session.githubIntegration.search.issuesPlaceholder' : 'Search issues or enter #123...' ,
'session.githubIntegration.search.prsPlaceholder' : 'Search PRs or enter #456...' ,
'session.githubIntegration.empty.noIssuesFound' : 'No issues found' ,
'session.githubIntegration.empty.noPullRequestsFound' : 'No pull requests found' ,
'session.githubIntegration.actions.loadMore' : 'Load more' ,
'session.githubIntegration.actions.cancel' : 'Cancel' ,
'session.githubIntegration.actions.select' : 'Select' ,
'session.githubIntegration.selected.issueNumber' : 'Issue #{number}' ,
'session.githubIntegration.selected.prNumber' : 'PR #{number}' ,
'session.githubIntegration.includeDiffAria' : 'Include PR diff in session context' ,
'session.githubIntegration.includeDiff' : 'Include PR diff' ,
'session.githubIntegration.error.notConnected' : 'GitHub not connected' ,
'session.githubIntegration.error.loadDataFailed' : 'Failed to load data' ,
'session.githubIntegration.validation.branchAlreadyCheckedOut' : 'Branch is already checked out in a worktree' ,
'session.githubIntegration.validation.failed' : 'Validation failed' ,
'chat.fileAttachment.toast.attachFailed' : 'Failed to attach file' ,
'chat.fileAttachment.toast.someFilesSkipped' : 'Some files were skipped:\n{summary}' ,
'chat.fileAttachment.toast.vscodePickFailed' : 'Failed to pick files in VS Code' ,
'chat.fileAttachment.fileFallback' : 'file' ,
'chat.fileAttachment.skippedFallback' : 'skipped' ,
'chat.fileAttachment.actions.attachAria' : 'Attach files' ,
'chat.fileAttachment.actions.attach' : 'Attach files' ,
'chat.fileAttachment.actions.removeNamed' : 'Remove {name}' ,
'chat.fileAttachment.actions.removeImage' : 'Remove image' ,
'chat.pendingChanges.fileCountSingle' : '{count} file' ,
'chat.pendingChanges.fileCountPlural' : '{count} files' ,
'chat.pendingChanges.changedInWorkspace' : 'changed in workspace' ,
'chat.changedFiles.title' : 'Changed files' ,
'chat.changedFiles.actions.openFileTitle' : 'Open {path}' ,
'chat.emptyState.opencodeUnreachable' : 'OpenCode is not reachable' ,
'chat.emptyState.startNewChat' : 'Start a new chat' ,
'chat.scrollToBottom.aria' : 'Scroll to bottom' ,
'chat.timeline.relative.justNow' : 'just now' ,
'chat.timeline.relative.minutesAgo' : '{count}m ago' ,
'chat.timeline.relative.hoursAgo' : '{count}h ago' ,
'chat.timeline.relative.daysAgo' : '{count}d ago' ,
'chat.timeline.title' : 'Conversation Timeline' ,
'chat.timeline.description' : 'Navigate to any point in the conversation or fork a new session' ,
'chat.timeline.searchPlaceholder' : 'Search messages...' ,
'chat.timeline.empty.search' : 'No messages found' ,
'chat.timeline.empty.session' : 'No messages in this session yet' ,
'chat.timeline.noTextContent' : '[No text content]' ,
'chat.timeline.actions.title' : 'Actions' ,
'chat.timeline.actions.revertFromHere' : 'Revert from here' ,
'chat.timeline.actions.forkFromHere' : 'Fork from here' ,
'chat.timeline.actions.previousTurn' : 'Previous turn' ,
'chat.timeline.actions.latest' : 'Latest' ,
'chat.timeline.help.clickMessage' : 'Click on a message to scroll to it in the conversation' ,
'chat.timeline.help.undoToPoint' : 'Undo to this point (message text will populate input)' ,
'chat.timeline.help.createSessionFromHere' : 'Create a new session starting from here' ,
'chat.statusRow.todo.status.inProgress' : 'In progress' ,
'chat.statusRow.todo.status.pending' : 'Pending' ,
'chat.statusRow.todo.status.completed' : 'Completed' ,
'chat.statusRow.todo.status.cancelled' : 'Cancelled' ,
'chat.statusRow.todo.priority.high' : 'High priority' ,
'chat.statusRow.todo.priority.medium' : 'Medium priority' ,
'chat.statusRow.todo.priority.low' : 'Low priority' ,
'chat.statusRow.actions.stopGeneratingAria' : 'Stop generating' ,
'chat.statusRow.tasksTitle' : 'Tasks' ,
'chat.statusRow.summary.activeLeft' : '{active} active · {left} left' ,
'chat.statusRow.aborted' : 'Aborted' ,
'chat.errorBoundary.title' : 'Chat Error' ,
'chat.errorBoundary.description' : 'The chat interface encountered an error. This might be due to a temporary network issue or corrupted message data.' ,
'chat.errorBoundary.sessionLabel' : 'Session' ,
'chat.errorBoundary.detailsSummary' : 'Error details' ,
'chat.errorBoundary.resetAction' : 'Reset Chat' ,
'chat.errorBoundary.persistentHint' : 'If the problem persists, try refreshing the page.' ,
'chat.autocomplete.tabs.commands' : 'Commands' ,
'chat.autocomplete.tabs.agents' : 'Agents' ,
'chat.autocomplete.tabs.files' : 'Files' ,
'chat.autocomplete.keyboardHint' : '↑↓ navigate • Enter select • Esc close' ,
'chat.commandAutocomplete.command.initDescription' : 'Create/update AGENTS.md file' ,
'chat.commandAutocomplete.command.undoDescription' : 'Undo the last message' ,
'chat.commandAutocomplete.command.redoDescription' : 'Redo previously undone messages' ,
'chat.commandAutocomplete.command.compactDescription' : 'Compress session history using AI to reduce context size' ,
'chat.commandAutocomplete.command.summaryDescription' : 'Non-destructive session summary. Optional topic hint after the command.' ,
2026-04-26 23:15:35 +03:00
'chat.commandAutocomplete.command.workspaceReviewDescription' : 'Review current workspace changes for high-signal issues only.' ,
2026-04-26 14:03:39 +03:00
'chat.commandAutocomplete.badge.skill' : 'skill' ,
'chat.commandAutocomplete.badge.system' : 'system' ,
'chat.commandAutocomplete.empty' : 'No commands found' ,
'chat.agentMentionAutocomplete.badge.system' : 'system' ,
'chat.agentMentionAutocomplete.empty' : 'No agents found' ,
'chat.fileMentionAutocomplete.searchMoreAgents' : 'Type to search more agents' ,
'chat.fileMentionAutocomplete.empty' : 'No matches found' ,
'chat.queuedMessage.attachments' : '+{count} file(s)' ,
'chat.queuedMessage.empty' : '(empty)' ,
'chat.queuedMessage.removeAria' : 'Remove from queue' ,
'chat.container.returnToParent.aria' : 'Return to parent session' ,
'chat.container.returnToParent.titleNamed' : 'Return to: {title}' ,
'chat.container.returnToParent.title' : 'Return to parent session' ,
'chat.container.returnToParent.label' : 'Parent' ,
'chat.unifiedControls.title' : 'Controls' ,
'chat.unifiedControls.model.title' : 'Model' ,
'chat.unifiedControls.model.noRecent' : 'No recent models' ,
'chat.unifiedControls.model.moreAria' : 'More models' ,
'chat.unifiedControls.effort.title' : 'Effort' ,
'chat.unifiedControls.effort.moreAria' : 'More effort options' ,
'chat.questionCard.summaryTab' : 'Summary' ,
'chat.questionCard.noAnswer' : '(no answer)' ,
'chat.questionCard.inputNeeded' : 'Input needed' ,
'chat.questionCard.fromSubagent' : 'From subagent' ,
'chat.questionCard.questionFallback' : 'Question {index}' ,
'chat.questionCard.selectMultiple' : 'Select multiple' ,
'chat.questionCard.recommended' : 'recommended' ,
'chat.questionCard.other' : 'Other…' ,
'chat.questionCard.yourAnswer' : 'Your answer' ,
'chat.questionCard.submit' : 'Submit' ,
'chat.questionCard.next' : 'Next' ,
'chat.questionCard.dismiss' : 'Dismiss' ,
'chat.textSelection.toast.noProject' : 'No project found for this session' ,
'chat.textSelection.toast.addToNotesFailed' : 'Failed to add to notes' ,
'chat.textSelection.toast.addToNotesSuccess' : 'Added distilled insight to notes' ,
'chat.textSelection.actions.addToChat' : 'Add to chat' ,
'chat.textSelection.actions.newSession' : 'New session' ,
'chat.textSelection.actions.copy' : 'Copy' ,
'chat.textSelection.actions.addToNotes' : 'Add to notes' ,
'chat.textSelection.title.addToCurrentChat' : 'Add to current chat' ,
'chat.textSelection.title.newSessionWithSelection' : 'Create new session with selection' ,
'chat.textSelection.title.saveInsightToNotes' : 'Save distilled insight to notes' ,
'chat.messageBody.actions.revertAria' : 'Revert to this message' ,
'chat.messageBody.actions.revert' : 'Revert from here' ,
'chat.messageBody.actions.forkAria' : 'Fork from this message' ,
'chat.messageBody.actions.fork' : 'Fork from here' ,
'chat.messageBody.actions.copyMessageAria' : 'Copy message text' ,
'chat.messageBody.actions.copyMessage' : 'Copy message' ,
'chat.messageBody.actions.copyAnswer' : 'Copy answer' ,
'chat.messageBody.actions.savingImage' : 'Saving image...' ,
'chat.messageBody.actions.saveAsImage' : 'Save as image' ,
'chat.messageBody.actions.saveAsPlan' : 'Save as plan' ,
'chat.messageBody.actions.startNewSession' : 'Start new session from this answer' ,
'chat.messageBody.actions.startNewMultiRun' : 'Start new multi-run from this answer' ,
'chat.messageBody.tts.stopSpeaking' : 'Stop speaking' ,
'chat.messageBody.tts.readAloud' : 'Read aloud' ,
'chat.messageBody.tts.readAloudWithProvider' : 'Read aloud ({provider} voice)' ,
'chat.messageBody.toast.noProject' : 'No project found for this session' ,
'chat.messageBody.toast.savePlanFailed' : 'Failed to save plan' ,
'chat.messageBody.toast.planSaved' : 'Plan saved' ,
'chat.messageBody.toast.imageSaved' : 'Image saved' ,
'chat.messageBody.toast.generateImageFailed' : 'Failed to generate image' ,
'chat.chatInput.actions.commands' : 'Commands' ,
'chat.chatInput.actions.attachFiles' : 'Attach files' ,
'chat.chatInput.actions.addAttachment' : 'Add attachment' ,
'chat.chatInput.actions.linkGithubIssue' : 'Link GitHub Issue' ,
'chat.chatInput.actions.linkGithubPr' : 'Link GitHub PR' ,
'chat.chatInput.actions.modelAgentSettings' : 'Model and agent settings' ,
'chat.chatInput.actions.sendMessageAria' : 'Send message' ,
'chat.chatInput.actions.queueMessageAria' : 'Queue message' ,
'chat.chatInput.actions.stopGeneratingAria' : 'Stop generating' ,
'chat.chatInput.focusMode.toggleAria' : 'Toggle focus mode' ,
'chat.chatInput.focusMode.label' : 'Focus mode' ,
'chat.chatInput.permissionAutoAccept.disable' : 'Disable permission auto-accept' ,
'chat.chatInput.permissionAutoAccept.enable' : 'Enable permission auto-accept' ,
'chat.chatInput.permissionAutoAccept.on' : 'Permission auto-accept: on' ,
'chat.chatInput.permissionAutoAccept.off' : 'Permission auto-accept: off' ,
'chat.chatInput.linked.byAuthor' : 'by {author}' ,
'chat.chatInput.linked.issue.openInBrowserAria' : 'Open issue in browser' ,
'chat.chatInput.linked.issue.removeAria' : 'Remove linked issue' ,
'chat.chatInput.linked.pr.number' : 'PR #{number}' ,
'chat.chatInput.linked.pr.openInBrowserAria' : 'Open pull request in browser' ,
'chat.chatInput.linked.pr.removeAria' : 'Remove linked pull request' ,
'chat.chatInput.placeholder.shell' : 'Enter shell command...' ,
'chat.chatInput.placeholder.chat' : '@ for files/agents; / for commands; ! for shell' ,
'chat.chatInput.placeholder.selectSession' : 'Select or create a session to start chatting' ,
'chat.chatInput.toast.compactFailed' : 'Failed to compact session' ,
'chat.chatInput.toast.summaryFailed' : 'Failed to generate summary' ,
'chat.chatInput.toast.reviewFailed' : 'Failed to review changes' ,
'chat.chatInput.toast.attachmentsTooLarge' : 'Attachments are too large to send. Please try reducing the number or size of images.' ,
'chat.chatInput.toast.sendAttachmentsFailed' : 'Failed to send attachments. Try fewer files or smaller images.' ,
'chat.chatInput.toast.messageSendFailed' : 'Message failed to send. Attachments restored.' ,
'chat.chatInput.toast.clipboardAttachFailed' : 'Failed to attach image from clipboard' ,
'chat.chatInput.toast.addedFileMentions' : 'Added {count} file mention(s)' ,
'chat.chatInput.toast.attachFileFailed' : 'Failed to attach file' ,
'chat.chatInput.toast.attachNamedFailed' : 'Failed to attach {name}' ,
'chat.chatInput.toast.someFilesSkipped' : 'Some files were skipped:\n{summary}' ,
'chat.chatInput.toast.vscodePickFailed' : 'Failed to pick files in VS Code' ,
'chat.chatInput.toast.openSessionFirst' : 'Open a session first' ,
'chat.chatInput.toast.togglePermissionAutoAcceptFailed' : 'Failed to toggle permission auto-accept' ,
'chat.chatInput.reviewComments' : 'Review comments:' ,
'chat.chatInput.projectRoot' : 'Project root' ,
'chat.chatInput.branch' : 'Branch' ,
'chat.chatInput.worktrees' : 'Worktrees' ,
'chat.chatInput.worktreeNew' : '+ New' ,
'chat.chatInput.drop.insertMention' : 'Drop to insert as mention' ,
'chat.chatInput.drop.attachFiles' : 'Drop files here to attach' ,
'chat.chatInput.fileFallback' : 'file' ,
'chat.mobileStatus.editProjects.title' : 'Edit Projects' ,
'chat.mobileStatus.editProjects.footer' : 'Drag items to reorder, or use arrows to move. Tap edit to change details.' ,
'chat.mobileStatus.editProjects.empty' : 'No projects to edit' ,
'chat.mobileStatus.projects.empty' : 'No projects' ,
'chat.mobileStatus.projects.addAria' : 'Add project' ,
'chat.mobileStatus.projects.removeTitle' : 'Remove Project' ,
'chat.mobileStatus.projects.removeDescriptionPrefix' : 'Are you sure you want to remove' ,
'chat.mobileStatus.projects.cancel' : 'Cancel' ,
'chat.mobileStatus.projects.remove' : 'Remove' ,
'chat.mobileStatus.new' : 'New' ,
'chat.mobileStatus.noSessionsInProject' : 'No sessions in this project' ,
'chat.mobileStatus.swipeHint' : '← Swipe here to open sidebars →' ,
'chat.mobileStatus.toast.addProjectFailed' : 'Failed to add project' ,
'chat.mobileStatus.toast.selectValidDirectory' : 'Please select a valid directory.' ,
'chat.mobileStatus.toast.selectDirectoryFailed' : 'Failed to select directory' ,
'chat.toolOutputDialog.image.previousAria' : 'Previous image' ,
'chat.toolOutputDialog.image.nextAria' : 'Next image' ,
'chat.toolOutputDialog.image.closeAria' : 'Close image preview' ,
'chat.toolOutputDialog.mermaid.missingSource' : 'Missing Mermaid source URL.' ,
'chat.toolOutputDialog.mermaid.loadFailed' : 'Unable to load Mermaid diagram.' ,
'chat.toolOutputDialog.mermaid.closeAria' : 'Close diagram preview' ,
'chat.toolOutputDialog.mermaid.loading' : 'Loading diagram...' ,
'chat.toolOutputDialog.mermaid.renderFailed' : 'Unable to render Mermaid diagram.' ,
'chat.toolOutputDialog.mermaid.retry' : 'Retry' ,
'chat.toolOutputDialog.commandCompleted' : 'Command completed successfully' ,
'chat.toolOutputDialog.noOutputProduced' : 'No output was produced' ,
'chat.toolPart.lspErrors' : 'LSP errors' ,
'chat.toolPart.moreErrors' : '+{count} more errors' ,
'chat.toolPart.error' : 'Error:' ,
'chat.toolPart.awaitingResponse' : 'Awaiting response...' ,
'chat.toolPart.noOutputProduced' : 'No output produced' ,
'chat.toolPart.output' : 'Output' ,
'chat.toolPart.openSubtask' : 'Open {type} subtask' ,
'chat.todo.total' : 'Total' ,
'chat.todo.inProgress' : 'In Progress' ,
'chat.todo.pending' : 'Pending' ,
'chat.todo.completed' : 'Completed' ,
'chat.todo.cancelled' : 'Cancelled' ,
'chat.permissionCard.workingDirectory' : 'Working Directory:' ,
'chat.permissionCard.timeout' : 'Timeout:' ,
'chat.permissionCard.request' : 'Request:' ,
'chat.permissionCard.headers' : 'Headers:' ,
'chat.permissionCard.body' : 'Body:' ,
'chat.permissionCard.action' : 'Action:' ,
'chat.permissionCard.details' : 'Details:' ,
'chat.permissionCard.patterns' : 'Patterns:' ,
'chat.permissionToast.sessionFallback' : 'Session' ,
'chat.permissionToast.permissionFallback' : 'Permission details unavailable' ,
'chat.permissionToast.labels.session' : 'Session:' ,
'chat.permissionToast.labels.permission' : 'Permission:' ,
'chat.permissionToast.actions.once' : 'Once' ,
'chat.permissionToast.actions.always' : 'Always' ,
'chat.permissionToast.actions.deny' : 'Deny' ,
'chat.permissionToast.actions.approveOnceAria' : 'Approve once' ,
'chat.permissionToast.actions.approveOnceAriaWithSession' : 'Approve once for {session}' ,
'chat.permissionToast.actions.approveAlwaysAria' : 'Approve always' ,
'chat.permissionToast.actions.approveAlwaysAriaWithSession' : 'Approve always for {session}' ,
'chat.permissionToast.actions.denyAria' : 'Deny permission' ,
'chat.permissionToast.actions.denyAriaWithSession' : 'Deny permission for {session}' ,
'chat.permissionRequest.required' : 'Permission required:' ,
'chat.permissionRequest.actions.once' : 'Once' ,
'chat.permissionRequest.actions.always' : 'Always' ,
'chat.permissionRequest.actions.reject' : 'Reject' ,
'chat.modelControls.provider' : 'Provider' ,
'chat.modelControls.capability.toolCalling' : 'Tool calling' ,
'chat.modelControls.capability.reasoning' : 'Reasoning' ,
'chat.modelControls.modality.text' : 'Text' ,
'chat.modelControls.modality.image' : 'Image' ,
'chat.modelControls.modality.video' : 'Video' ,
'chat.modelControls.modality.audio' : 'Audio' ,
'chat.modelControls.modality.pdf' : 'PDF' ,
'chat.modelControls.capabilities' : 'Capabilities' ,
'chat.modelControls.modalities' : 'Modalities' ,
'chat.modelControls.input' : 'Input' ,
'chat.modelControls.output' : 'Output' ,
'chat.modelControls.limits' : 'Limits' ,
'chat.modelControls.context' : 'Context' ,
'chat.modelControls.metadata' : 'Metadata' ,
'chat.modelControls.knowledge' : 'Knowledge' ,
'chat.modelControls.release' : 'Release' ,
'chat.modelControls.mode' : 'Mode' ,
'chat.modelControls.model' : 'Model' ,
'chat.modelControls.temperature' : 'Temperature' ,
'chat.modelControls.topP' : 'Top P' ,
'chat.modelControls.permissions' : 'Permissions' ,
'chat.modelControls.edit' : 'Edit' ,
'chat.modelControls.bash' : 'Bash' ,
'chat.modelControls.webFetch' : 'WebFetch' ,
'chat.modelControls.customPrompt' : 'Custom Prompt' ,
'chat.modelControls.selectModel' : 'Select model' ,
'chat.modelControls.searchProvidersOrModels' : 'Search providers or models' ,
'chat.modelControls.clearSearch' : 'Clear search' ,
'chat.modelControls.current' : 'Current' ,
'chat.modelControls.thinking' : 'Thinking' ,
'chat.modelControls.default' : 'Default' ,
'chat.modelControls.selectAgent' : 'Select agent' ,
'chat.modelControls.costPerMillion' : 'Cost ($/1M tokens)' ,
'chat.modelControls.metadataUnavailable' : 'Model metadata unavailable.' ,
'chat.modelControls.addNewProvider' : 'Add new provider' ,
'chat.modelControls.noAgentSelected' : 'No agent selected.' ,
'chat.modelControls.resetToDefault' : 'Reset to default' ,
'chat.modelControls.searchModels' : 'Search models' ,
'chat.modelControls.searchAgents' : 'Search agents' ,
'chat.modelControls.noModelsFound' : 'No models found' ,
'chat.modelControls.favorites' : 'Favorites' ,
'chat.modelControls.recent' : 'Recent' ,
'chat.modelControls.addToFavorites' : 'Add to favorites' ,
'chat.modelControls.removeFromFavorites' : 'Remove from favorites' ,
'chat.modelControls.favoriteAria' : 'Favorite' ,
'chat.modelControls.unfavoriteAria' : 'Unfavorite' ,
'chat.modelControls.collapseProvider' : 'Collapse provider' ,
'chat.modelControls.expandProvider' : 'Expand provider' ,
'chat.modelControls.keyboardHint' : '↑↓ navigate{thinking} • Enter select • Esc close' ,
'chat.modelControls.keyboardHintThinking' : '←→ thinking' ,
'chat.modelControls.permissionLabel.custom' : 'Custom' ,
'chat.modelControls.permissionLabel.allow' : 'Allow' ,
'chat.modelControls.permissionLabel.deny' : 'Deny' ,
'chat.modelControls.permissionLabel.ask' : 'Ask' ,
'chat.modelControls.modeValue.primary' : 'Primary' ,
'chat.modelControls.modeValue.subagent' : 'Subagent' ,
'chat.modelControls.modeValue.all' : 'All' ,
'chat.modelControls.modeValue.none' : '—' ,
'chat.messageBody.subtask.title' : 'Delegated task' ,
'chat.messageBody.subtask.hidePrompt' : 'Hide prompt' ,
'chat.messageBody.subtask.showPrompt' : 'Show prompt' ,
'chat.messageBody.subtask.openSession' : 'Open subtask session' ,
'chat.messageBody.shellCommand.title' : 'Shell command' ,
'chat.messageBody.shellCommand.hideOutput' : 'Hide output' ,
'chat.messageBody.shellCommand.showOutput' : 'Show output' ,
'chat.messageBody.shellCommand.copied' : 'Copied' ,
'chat.messageBody.shellCommand.copyOutput' : 'Copy output' ,
'commandPalette.input.placeholder' : 'Type a command or search...' ,
'commandPalette.empty.noResults' : 'No results found.' ,
'commandPalette.section.sessions' : 'Sessions' ,
'commandPalette.section.view' : 'View' ,
'commandPalette.section.theme' : 'Theme' ,
'commandPalette.section.settings' : 'Settings' ,
'commandPalette.section.recentSessions' : 'Recent Sessions' ,
'commandPalette.item.quickOpen' : 'Quick Open' ,
'commandPalette.item.newSession' : 'New Session' ,
'commandPalette.item.newWorktreeDraft' : 'New Worktree Draft' ,
'commandPalette.item.showSessionSwitcher' : 'Show Session Switcher' ,
'commandPalette.item.toggleSidebar' : 'Toggle Sidebar' ,
'commandPalette.item.toggleRightSidebar' : 'Toggle Right Sidebar' ,
'commandPalette.item.showGitRightSidebar' : 'Show Git in Right Sidebar' ,
'commandPalette.item.showFilesRightSidebar' : 'Show Files in Right Sidebar' ,
'commandPalette.item.showContextUsage' : 'Show Context Usage' ,
'commandPalette.item.showPlan' : 'Show Plan' ,
'commandPalette.item.toggleTerminal' : 'Toggle Terminal' ,
'commandPalette.item.collapseTerminal' : 'Collapse Terminal' ,
'commandPalette.item.expandTerminal' : 'Expand Terminal' ,
'commandPalette.item.keyboardShortcuts' : 'Keyboard Shortcuts' ,
'commandPalette.item.themeLight' : 'Light' ,
'commandPalette.item.themeDark' : 'Dark' ,
'commandPalette.item.themeSystem' : 'System' ,
'commandPalette.item.openSettings' : 'Open Settings...' ,
'commandPalette.session.untitled' : 'Untitled Session' ,
'commandPalette.settingsGroup.appearance' : 'Appearance' ,
'commandPalette.settingsGroup.projects' : 'Projects' ,
'commandPalette.settingsGroup.general' : 'General' ,
'commandPalette.settingsGroup.opencode' : 'OpenChamber' ,
'commandPalette.settingsGroup.git' : 'Git' ,
'commandPalette.settingsGroup.skills' : 'Skills' ,
'commandPalette.settingsGroup.usage' : 'Usage' ,
'commandPalette.settingsGroup.advanced' : 'Advanced' ,
'commandPalette.settingsPage.home' : 'Home' ,
'commandPalette.settingsPage.projects' : 'Projects' ,
'commandPalette.settingsPage.remoteInstances' : 'Remote Instances' ,
'commandPalette.settingsPage.providers' : 'Providers' ,
'commandPalette.settingsPage.usage' : 'Usage' ,
'commandPalette.settingsPage.agents' : 'Agents' ,
'commandPalette.settingsPage.commands' : 'Commands' ,
'commandPalette.settingsPage.mcp' : 'MCP' ,
'commandPalette.settingsPage.skillsInstalled' : 'Installed Skills' ,
'commandPalette.settingsPage.skillsCatalog' : 'Skills Catalog' ,
'commandPalette.settingsPage.git' : 'Git' ,
'commandPalette.settingsPage.appearance' : 'Appearance' ,
'commandPalette.settingsPage.chat' : 'Chat' ,
'commandPalette.settingsPage.shortcuts' : 'Keyboard Shortcuts' ,
'commandPalette.settingsPage.sessions' : 'Sessions' ,
'commandPalette.settingsPage.magicPrompts' : 'Magic Prompts' ,
'commandPalette.settingsPage.notifications' : 'Notifications' ,
'commandPalette.settingsPage.voice' : 'Voice' ,
'commandPalette.settingsPage.tunnel' : 'Remote Tunnel' ,
'quickOpenDialog.title' : 'Quick Open' ,
'quickOpenDialog.description' : 'Quickly open a file in the current project.' ,
'quickOpenDialog.input.placeholder' : 'Search files...' ,
'quickOpenDialog.empty.openProjectFirst' : 'Open a project first' ,
'quickOpenDialog.empty.searchingFiles' : 'Searching files...' ,
'quickOpenDialog.empty.noMatchingFiles' : 'No matching files found' ,
'quickOpenDialog.empty.noMatchingRecentFiles' : 'No recent files found' ,
'quickOpenDialog.group.files' : 'Files' ,
'quickOpenDialog.group.recentFiles' : 'Recent Files' ,
'openCodeStatusDialog.title' : 'OpenCode Status' ,
'openCodeStatusDialog.description' : 'Inspect current OpenCode status and diagnostics.' ,
'openCodeStatusDialog.actions.copy' : 'Copy' ,
'openCodeStatusDialog.empty.noData' : 'No data.' ,
'openCodeStatusDialog.toast.copiedTitle' : 'Copied' ,
'openCodeStatusDialog.toast.copiedDescription' : 'Status copied to clipboard' ,
'openCodeStatusDialog.toast.copyFailed' : 'Failed to copy status' ,
'saveProjectPlanDialog.title' : 'Save Project Plan' ,
'saveProjectPlanDialog.description' : 'Save this plan into your project as a Markdown file.' ,
'saveProjectPlanDialog.field.title' : 'Title' ,
'saveProjectPlanDialog.field.titlePlaceholder' : 'Plan title' ,
'saveProjectPlanDialog.field.contentPreview' : 'Content preview' ,
'saveProjectPlanDialog.actions.cancel' : 'Cancel' ,
'saveProjectPlanDialog.actions.save' : 'Save' ,
'saveProjectPlanDialog.actions.saving' : 'Saving...' ,
'branchPickerDialog.title' : 'Branch Picker' ,
'branchPickerDialog.description.localBranchesForProject' : 'Local branches for {project}' ,
'branchPickerDialog.description.selectProject' : 'Select a project to view branches' ,
'branchPickerDialog.search.placeholder' : 'Search branches...' ,
'branchPickerDialog.search.renameBranchPlaceholder' : 'Rename branch' ,
'branchPickerDialog.state.noProjectSelected' : 'No project selected' ,
'branchPickerDialog.state.loadingBranches' : 'Loading branches...' ,
'branchPickerDialog.state.noMatchingBranches' : 'No matching branches' ,
'branchPickerDialog.state.noBranchesFound' : 'No branches found' ,
'branchPickerDialog.badge.head' : 'HEAD' ,
'branchPickerDialog.badge.worktree' : 'worktree' ,
'branchPickerDialog.actions.createWorktreeAria' : 'Create worktree from branch' ,
'branchPickerDialog.actions.renameAria' : 'Rename branch' ,
'branchPickerDialog.actions.deleteAria' : 'Delete branch' ,
'branchPickerDialog.actions.deleteWorktreeAria' : 'Remove worktree' ,
'branchPickerDialog.actions.confirmRenameAria' : 'Confirm rename' ,
'branchPickerDialog.actions.cancelRenameAria' : 'Cancel rename' ,
'branchPickerDialog.actions.confirmDeleteAria' : 'Confirm delete branch' ,
'branchPickerDialog.actions.cancelDeleteAria' : 'Cancel delete branch' ,
'branchPickerDialog.actions.deletePrompt' : 'Delete' ,
'branchPickerDialog.actions.forceDeletePrompt' : 'Force Delete' ,
'branchPickerDialog.tooltip.createWorktree' : 'Create worktree' ,
'branchPickerDialog.tooltip.worktreeAlreadyExists' : 'Worktree already exists' ,
'branchPickerDialog.tooltip.rename' : 'Rename branch' ,
'branchPickerDialog.tooltip.renameDisabledForRoot' : 'Cannot rename root branch' ,
'branchPickerDialog.tooltip.delete' : 'Delete branch' ,
'branchPickerDialog.tooltip.deleteCurrentBranch' : 'Cannot delete current branch' ,
'branchPickerDialog.tooltip.deleteDisabledForRoot' : 'Cannot delete root branch' ,
'branchPickerDialog.tooltip.deleteWorktree' : 'Remove worktree' ,
'branchPickerDialog.tooltip.deleteWorktreeRootProtected' : 'Cannot remove root worktree' ,
'branchPickerDialog.toast.branchRenamed' : 'Branch renamed' ,
'branchPickerDialog.toast.failedToRenameBranch' : 'Failed to rename branch' ,
'branchPickerDialog.toast.branchDeleted' : 'Branch deleted' ,
'branchPickerDialog.toast.branchNotMerged' : 'Branch is not fully merged' ,
'branchPickerDialog.toast.confirmAgainToForceDelete' : 'Confirm again to force delete' ,
'branchPickerDialog.toast.failedToDeleteBranch' : 'Failed to delete branch' ,
'branchPickerDialog.toast.worktreeCreated' : 'Worktree created' ,
'branchPickerDialog.toast.failedToCreateWorktree' : 'Failed to create worktree' ,
'branchPickerDialog.error.failedToLoad' : 'Failed to load branches' ,
'branchPickerDialog.error.renameRejected' : 'Rename was rejected' ,
'branchPickerDialog.error.renameFailed' : 'Failed to rename branch' ,
'branchPickerDialog.error.deleteRejected' : 'Delete was rejected' ,
'branchPickerDialog.error.deleteFailed' : 'Failed to delete branch' ,
'branchPickerDialog.error.createWorktreeFailed' : 'Failed to create worktree' ,
'projectEditDialog.title' : 'Edit project' ,
'projectEditDialog.field.name' : 'Name' ,
'projectEditDialog.field.namePlaceholder' : 'Project name' ,
'projectEditDialog.field.color' : 'Color' ,
'projectEditDialog.field.icon' : 'Icon' ,
'projectEditDialog.field.preview' : 'Preview' ,
'projectEditDialog.field.iconBackground' : 'Icon Background' ,
'projectEditDialog.field.iconBackgroundAria' : 'Project icon background color' ,
'projectEditDialog.option.none' : 'None' ,
'projectEditDialog.actions.uploadIcon' : 'Upload Icon' ,
'projectEditDialog.actions.uploading' : 'Uploading...' ,
'projectEditDialog.actions.discoverFavicon' : 'Discover Favicon' ,
'projectEditDialog.actions.discovering' : 'Discovering...' ,
'projectEditDialog.actions.removeProjectIcon' : 'Remove Project Icon' ,
'projectEditDialog.actions.removing' : 'Removing...' ,
'projectEditDialog.actions.undoRemove' : 'Undo Remove' ,
'projectEditDialog.actions.clear' : 'Clear' ,
'projectEditDialog.actions.cancel' : 'Cancel' ,
'projectEditDialog.actions.save' : 'Save' ,
'projectEditDialog.toast.failedToUploadIcon' : 'Failed to upload project icon' ,
'projectEditDialog.toast.iconUpdated' : 'Project icon updated' ,
'projectEditDialog.toast.failedToRemoveIcon' : 'Failed to remove project icon' ,
'projectEditDialog.toast.iconRemoved' : 'Project icon removed' ,
'projectEditDialog.toast.failedToDiscoverIcon' : 'Failed to discover project icon' ,
'projectEditDialog.toast.customIconAlreadySet' : 'Custom icon already set for this project' ,
'projectEditDialog.toast.iconDiscovered' : 'Project icon discovered' ,
'agentManager.sidebar.search.placeholder' : 'Search Agent Groups...' ,
'agentManager.sidebar.actions.newAgentGroup' : 'New Agent Group' ,
'agentManager.sidebar.actions.more' : '... More ({count})' ,
'agentManager.sidebar.actions.showLess' : 'Show less' ,
'agentManager.sidebar.section.agentGroups' : 'Agent Groups' ,
'agentManager.sidebar.state.loading' : 'Loading...' ,
'agentManager.sidebar.state.noGroupsFound' : 'No groups found' ,
'agentManager.sidebar.state.noGroupsYet' : 'No agent groups yet' ,
'agentManager.sidebar.state.createToGetStarted' : 'Create a new agent group to get started' ,
'agentManager.sidebar.item.modelCountSingle' : '{count} model' ,
'agentManager.sidebar.item.modelCountPlural' : '{count} models' ,
'agentManager.sidebar.item.groupMenuAria' : 'Group menu' ,
'agentManager.sidebar.item.delete' : 'Delete' ,
'agentManager.sidebar.relativeTime.now' : 'now' ,
'agentManager.sidebar.relativeTime.minutes' : '{count}m' ,
'agentManager.sidebar.relativeTime.hours' : '{count}h' ,
'agentManager.sidebar.relativeTime.days' : '{count}d' ,
'agentManager.sidebar.dialog.deleteGroupTitle' : 'Delete agent group' ,
'agentManager.sidebar.dialog.deleteGroupDescription' : 'Delete "{group}"? This removes all worktrees and sessions in this group.' ,
'agentManager.sidebar.dialog.cancel' : 'Cancel' ,
'agentManager.sidebar.dialog.delete' : 'Delete' ,
'agentManager.sidebar.dialog.deleting' : 'Deleting...' ,
'agentManager.sidebar.toast.deletingGroup' : 'Deleting "{group}"...' ,
'agentManager.sidebar.toast.deletedGroup' : 'Deleted "{group}"' ,
'agentManager.sidebar.toast.failedToDeleteGroup' : 'Failed to fully delete "{group}"' ,
'agentManager.detail.header.modelCountSingle' : '{count} model' ,
'agentManager.detail.header.modelCountPlural' : '{count} models' ,
'agentManager.detail.header.noBranch' : 'No branch' ,
'agentManager.detail.actions.worktreeActionsAria' : 'Worktree actions' ,
'agentManager.detail.actions.removeThisWorktree' : 'Remove this worktree' ,
'agentManager.detail.actions.keepThisRemoveOthers' : 'Leave this one, remove others' ,
'agentManager.detail.actions.copyWorktreePath' : 'Copy Worktree Path' ,
'agentManager.detail.dialog.removeWorktreeTitle' : 'Remove worktree' ,
'agentManager.detail.dialog.removeOtherWorktreesTitle' : 'Remove other worktrees' ,
'agentManager.detail.dialog.removeWorktreeDescription' : 'Remove "{label}"? This deletes all sessions in that worktree and removes the worktree itself.' ,
'agentManager.detail.dialog.removeOtherWorktreesDescription' : 'Keep "{label}" and remove the other worktrees in "{group}".' ,
'agentManager.detail.dialog.cancel' : 'Cancel' ,
'agentManager.detail.dialog.remove' : 'Remove' ,
'agentManager.detail.dialog.removeOthers' : 'Remove others' ,
'agentManager.detail.dialog.working' : 'Working...' ,
'agentManager.detail.state.loadingSessionFor' : 'Loading session for {label}' ,
'agentManager.detail.state.sessionId' : 'Session ID: {id}' ,
'agentManager.detail.state.noSessionsInGroup' : 'No sessions in this group' ,
'agentManager.detail.toast.noWorktreePath' : 'No worktree path available' ,
'agentManager.detail.toast.worktreePathCopied' : 'Worktree path copied' ,
'agentManager.detail.toast.failedToCopyPath' : 'Failed to copy path' ,
'agentManager.detail.toast.removingWorktree' : 'Removing worktree...' ,
'agentManager.detail.toast.removingOtherWorktrees' : 'Removing other worktrees...' ,
'agentManager.detail.toast.failedToFullyRemoveWorktree' : 'Failed to fully remove worktree' ,
'agentManager.detail.toast.worktreeRemoved' : 'Worktree removed' ,
'agentManager.detail.toast.otherWorktreesRemoved' : 'Removed other worktrees' ,
'agentManager.empty.groupName.label' : 'Group Name' ,
'agentManager.empty.groupName.placeholder' : 'e.g. feature-auth, bugfix-login' ,
'agentManager.empty.groupName.description' : 'Used for worktree directory and branch naming' ,
'agentManager.empty.baseBranch.label' : 'Base Branch' ,
'agentManager.empty.baseBranch.description' : 'Creates new branches from {branch}' ,
'agentManager.empty.setupCommands.label' : 'Setup commands' ,
'agentManager.empty.setupCommands.configured' : '{count} configured' ,
'agentManager.empty.setupCommands.description' : 'Commands run in each new worktree. Use $ROOT_PROJECT_PATH for project root.' ,
'agentManager.empty.setupCommands.loading' : 'Loading...' ,
'agentManager.empty.setupCommands.commandPlaceholder' : 'e.g., bun install' ,
'agentManager.empty.setupCommands.removeCommandAria' : 'Remove command' ,
'agentManager.empty.setupCommands.addCommand' : 'Add command' ,
'agentManager.empty.agent.label' : 'Agent' ,
'agentManager.empty.agent.description' : 'Defaults to your configured default agent' ,
'agentManager.empty.models.label' : 'Models' ,
'agentManager.empty.models.addModel' : 'Add model' ,
'agentManager.empty.models.selectedSingle' : '{count} model selected' ,
'agentManager.empty.models.selectedPlural' : '{count} models selected' ,
'agentManager.empty.prompt.label' : 'Prompt' ,
'agentManager.empty.prompt.placeholder' : 'Ask anything...' ,
'agentManager.empty.prompt.addAttachmentAria' : 'Add attachment' ,
'agentManager.empty.actions.startAgentGroupAria' : 'Start Agent Group' ,
'agentManager.empty.toast.fileTooLarge' : 'File "{fileName}" is too large (max 10MB)' ,
'agentManager.empty.toast.failedToAttach' : 'Failed to attach "{fileName}"' ,
'agentManager.empty.toast.attachedSingle' : 'Attached {count} file' ,
'agentManager.empty.toast.attachedPlural' : 'Attached {count} files' ,
'agentManager.empty.toast.failedToCreateGroup' : 'Failed to create agent group' ,
'openInApp.actions.open' : 'Open' ,
'openInApp.actions.openInAria' : 'Open in {app}' ,
'openInApp.actions.chooseAppAria' : 'Choose app to open' ,
'openInApp.actions.copyPath' : 'Copy Path' ,
'openInApp.actions.refreshApps' : 'Refresh Apps' ,
'openInApp.toast.pathCopied' : 'Path copied to clipboard' ,
'projectActions.actions.addActionAria' : 'Add action' ,
'projectActions.actions.addAction' : 'Add action' ,
'projectActions.actions.addNewAction' : 'Add new action' ,
'projectActions.actions.chooseActionAria' : 'Choose project action' ,
'projectActions.actions.runNamedAria' : 'Run {name}' ,
'projectActions.actions.stopNamedAria' : 'Stop {name}' ,
'projectActions.label.fallbackAction' : 'Action' ,
'projectActions.toast.openedUrlFromOutput' : 'Opened URL from action output' ,
'projectActions.toast.openedForwardedUrl' : 'Opened forwarded URL' ,
'projectActions.toast.openedActionUrl' : 'Opened action URL' ,
'projectActions.error.noActiveDirectory' : 'No active directory' ,
'projectActions.error.noActiveDirectoryForAction' : 'No active directory for action' ,
'projectActions.error.failedToCreateTerminalSession' : 'Failed to create terminal session' ,
'projectActions.error.invalidCustomUrlFormat' : 'Invalid custom URL format' ,
'projectActions.error.selectedDesktopSshForwardUnavailable' : 'Selected desktop SSH forward is unavailable' ,
'projectActions.error.failedToRunAction' : 'Failed to run action' ,
'mcpDropdown.title' : 'MCP Servers' ,
'mcpDropdown.actions.refreshAria' : 'Refresh' ,
'mcpDropdown.actions.openAria' : 'MCP servers' ,
'mcpDropdown.statusAria' : 'MCP status' ,
'mcpDropdown.status.unknown' : 'Unknown' ,
'mcpDropdown.status.connected' : 'Connected' ,
'mcpDropdown.status.failed' : 'Failed: {error}' ,
'mcpDropdown.status.unknownError' : 'Unknown error' ,
'mcpDropdown.status.needsAuth' : 'Needs authentication' ,
'mcpDropdown.status.needsRegistration' : 'Needs registration: {error}' ,
'mcpDropdown.empty.configureInConfig' : 'Configure MCP servers in OpenCode config.' ,
'sessionAuth.error.rateLimitTitle' : 'Too many attempts' ,
'sessionAuth.error.networkTitle' : 'Unable to reach server' ,
'sessionAuth.error.rateLimitDescriptionSingle' : 'Please wait {minutes} minute before trying again.' ,
'sessionAuth.error.rateLimitDescriptionPlural' : 'Please wait {minutes} minutes before trying again.' ,
'sessionAuth.error.networkDescription' : 'We could not verify the UI session. Check that the service is running and try again.' ,
'sessionAuth.error.retry' : 'Retry' ,
'sessionAuth.error.passkeySetupFailed' : 'Passkey setup failed.' ,
'sessionAuth.error.incorrectPassword' : 'Incorrect password. Try again.' ,
'sessionAuth.error.unexpectedResponse' : 'Unexpected response from server.' ,
'sessionAuth.error.networkRetry' : 'Network error. Check connection and retry.' ,
'sessionAuth.error.passkeySignInCanceled' : 'Passkey sign-in was canceled.' ,
'sessionAuth.error.enterPasswordForPasskey' : 'Enter your password to add a passkey.' ,
'sessionAuth.locked.tunnelTitle' : 'Tunnel access required' ,
'sessionAuth.locked.unlockTitle' : 'Unlock OpenChamber' ,
'sessionAuth.locked.tunnelDescription' : 'Open this tunnel using the one-time connect link from the desktop app.' ,
'sessionAuth.locked.passwordDescription' : 'This session is password-protected.' ,
'sessionAuth.locked.hostSwitcherHint' : 'Use Local if remote is unreachable.' ,
'sessionAuth.actions.cancelPasskey' : 'Cancel passkey' ,
'sessionAuth.actions.usePasskey' : 'Use passkey' ,
'sessionAuth.actions.unlockingAria' : 'Unlocking' ,
'sessionAuth.actions.unlockAria' : 'Unlock' ,
'sessionAuth.actions.trustDevice' : 'Trust this device' ,
'sessionAuth.actions.trustDeviceAria' : 'Trust this device' ,
'sessionAuth.actions.cancelPasskeySetup' : 'Cancel passkey setup' ,
'sessionAuth.actions.addPasskey' : 'Add passkey' ,
'sessionAuth.password.placeholder' : 'Enter password' ,
'sessionAuth.toast.passkeyAdded' : 'Passkey added' ,
'sessionAuth.toast.passkeySetupCanceled' : 'Passkey setup canceled' ,
'desktopHostSwitcher.title' : 'Instance' ,
'desktopHostSwitcher.description' : 'Switch between Local and remote OpenChamber servers' ,
'desktopHostSwitcher.header.current' : 'Current' ,
'desktopHostSwitcher.header.default' : 'Default' ,
'desktopHostSwitcher.header.currentColon' : 'Current:' ,
'desktopHostSwitcher.header.currentDefaultColon' : 'Current default:' ,
'desktopHostSwitcher.status.connected' : 'Connected' ,
'desktopHostSwitcher.status.authRequired' : 'Auth required' ,
'desktopHostSwitcher.status.wrongService' : 'Wrong service' ,
'desktopHostSwitcher.status.unreachable' : 'Unreachable' ,
'desktopHostSwitcher.status.unknown' : 'Unknown' ,
'desktopHostSwitcher.status.ping' : ' · {ms}ms ping' ,
'desktopHostSwitcher.statusAria' : 'Instance status' ,
'desktopHostSwitcher.sshPhase.ready' : 'Ready' ,
'desktopHostSwitcher.sshPhase.error' : 'Error' ,
'desktopHostSwitcher.sshPhase.reconnecting' : 'Reconnecting' ,
'desktopHostSwitcher.sshPhase.resolvingConfig' : 'Resolving config' ,
'desktopHostSwitcher.sshPhase.checkingAuth' : 'Checking auth' ,
'desktopHostSwitcher.sshPhase.connectingSsh' : 'Connecting SSH' ,
'desktopHostSwitcher.sshPhase.probingRemote' : 'Probing remote' ,
'desktopHostSwitcher.sshPhase.installing' : 'Installing' ,
'desktopHostSwitcher.sshPhase.updating' : 'Updating' ,
'desktopHostSwitcher.sshPhase.detectingServer' : 'Detecting server' ,
'desktopHostSwitcher.sshPhase.startingServer' : 'Starting server' ,
'desktopHostSwitcher.sshPhase.forwardingPorts' : 'Forwarding ports' ,
'desktopHostSwitcher.sshPhase.idle' : 'Idle' ,
'desktopHostSwitcher.ssh.needInstancesHint' : 'Need SSH instances? Manage them in Settings.' ,
'desktopHostSwitcher.ssh.instanceFallback' : 'SSH instance' ,
'desktopHostSwitcher.ssh.connectingTo' : 'Connecting to {host}' ,
'desktopHostSwitcher.actions.refresh' : 'Refresh' ,
'desktopHostSwitcher.actions.refreshInstancesAria' : 'Refresh instances' ,
'desktopHostSwitcher.actions.remoteSsh' : 'Remote SSH' ,
'desktopHostSwitcher.actions.instanceActionsAria' : 'Instance actions' ,
'desktopHostSwitcher.actions.edit' : 'Edit' ,
'desktopHostSwitcher.actions.delete' : 'Delete' ,
'desktopHostSwitcher.actions.connect' : 'Connect' ,
'desktopHostSwitcher.actions.defaultInstanceAria' : 'Default instance' ,
'desktopHostSwitcher.actions.setAsDefaultAria' : 'Set as default' ,
'desktopHostSwitcher.actions.setAsDefault' : 'Set as default' ,
'desktopHostSwitcher.actions.openInNewWindowAria' : 'Open in new window' ,
'desktopHostSwitcher.actions.openInNewWindow' : 'Open in new window' ,
'desktopHostSwitcher.actions.addInstance' : 'Add instance' ,
'desktopHostSwitcher.actions.cancel' : 'Cancel' ,
'desktopHostSwitcher.actions.save' : 'Save' ,
'desktopHostSwitcher.actions.add' : 'Add' ,
'desktopHostSwitcher.actions.switchToLocal' : 'Switch to Local' ,
'desktopHostSwitcher.actions.retry' : 'Retry' ,
'desktopHostSwitcher.actions.switchInstanceAria' : 'Switch instance' ,
'desktopHostSwitcher.actions.switchInstance' : 'Switch instance' ,
'desktopHostSwitcher.actions.switchToAria' : 'Switch to {instance}' ,
'desktopHostSwitcher.field.labelPlaceholder' : 'Label' ,
'desktopHostSwitcher.field.labelOptionalPlaceholder' : 'Label (optional)' ,
'desktopHostSwitcher.field.urlPlaceholder' : 'https://host:port' ,
'desktopHostSwitcher.state.limitedOnPage' : 'Instance switcher is limited on this page. Use Local to recover.' ,
'desktopHostSwitcher.state.loading' : 'Loading...' ,
'desktopHostSwitcher.state.instanceUnreachable' : 'Instance unreachable' ,
'desktopHostSwitcher.edit.title' : 'Edit instance' ,
'desktopHostSwitcher.add.title' : 'Add instance' ,
'desktopHostSwitcher.error.failedToSave' : 'Failed to save' ,
'desktopHostSwitcher.error.failedToLoad' : 'Failed to load' ,
'desktopHostSwitcher.error.invalidUrl' : 'Invalid URL (must be http/https)' ,
'desktopHostSwitcher.error.failedToOpenNewWindow' : 'Failed to open new window' ,
'desktopHostSwitcher.instance.local' : 'Local' ,
'desktopHostSwitcher.instance.fallback' : 'Instance' ,
'desktopHostSwitcher.startup.title' : 'Default SSH instance unavailable' ,
'desktopHostSwitcher.startup.connectingTo' : 'Connecting to {host}...' ,
'desktopHostSwitcher.startup.failed' : 'Failed to connect the default SSH instance.' ,
'desktopHostSwitcher.toast.sshConnected' : 'SSH instance "{host}" connected' ,
'desktopHostSwitcher.toast.sshFailedToConnect' : 'SSH instance "{host}" failed to connect' ,
'desktopHostSwitcher.toast.instanceUnreachable' : 'Instance "{host}" is unreachable' ,
'errorBoundary.title' : 'Something went wrong' ,
'errorBoundary.description' : 'The application encountered an unexpected error. This has been logged for debugging.' ,
'errorBoundary.state.unknownError' : 'Unknown error' ,
'errorBoundary.state.componentStackLabel' : 'Component stack:' ,
'errorBoundary.actions.errorDetails' : 'Error details' ,
'errorBoundary.actions.tryAgain' : 'Try again' ,
'errorBoundary.actions.copy' : 'Copy' ,
'errorBoundary.actions.copied' : 'Copied' ,
'jsonTreeView.error.emptyJson' : 'Empty JSON content' ,
'jsonTreeView.error.invalidJson' : 'Invalid JSON' ,
'jsonTreeView.error.invalidJsonTitle' : 'Invalid JSON' ,
'jsonTreeView.actions.expandAll' : 'Expand All' ,
'jsonTreeView.actions.collapseAll' : 'Collapse All' ,
'numberInput.actions.decreaseAria' : 'Decrease value' ,
'numberInput.actions.increaseAria' : 'Increase value' ,
'goToLineDialog.field.linePlaceholderShort' : 'Line' ,
'goToLineDialog.field.linePlaceholder' : 'Line number' ,
'goToLineDialog.actions.go' : 'Go' ,
'goToLineDialog.helper.editorUnavailable' : 'Editor unavailable.' ,
'goToLineDialog.helper.currentLineRange' : 'Current Line: {current}. Type a line number between 1 and {max} to navigate to.' ,
'goToLineDialog.helper.goToLine' : 'Go to line {line}' ,
'dialog.common.actions.close' : 'Close' ,
'filesView.toast.relativePathCopied' : 'Relative path copied' ,
'filesView.tree.menu.copyRelativePath' : 'Copy Relative Path' ,
'multiRun.branchSelector.placeholder.selectSourceBranch' : 'Select source branch...' ,
'multiRun.branchSelector.status.loadingBranches' : 'Loading branches...' ,
'multiRun.branchSelector.status.noBranchesFound' : 'No branches found' ,
'multiRun.branchSelector.status.notInGitRepository' : 'Not in a git repository.' ,
'multiRun.branchSelector.groups.localBranches' : 'Local branches' ,
'multiRun.branchSelector.groups.remoteBranches' : 'Remote branches' ,
'multiRun.window.actions.closeAria' : 'Close multi-run' ,
'multiRun.window.description' : 'OpenChamber Multi-Run window.' ,
'voice.status.idle' : 'Voice Ready' ,
'voice.status.listening' : 'Listening...' ,
'voice.status.processing' : 'Processing...' ,
'voice.status.speaking' : 'Speaking...' ,
'voice.status.error' : 'Voice Error' ,
'voice.status.conversationModeActiveAria' : 'Conversation mode active' ,
'onboarding.common.actions.back' : 'Back' ,
'onboarding.common.copyToClipboard' : 'Copy to clipboard' ,
'onboarding.common.status.copiedToClipboard' : 'Copied to clipboard' ,
'onboarding.chooser.title' : 'Welcome to OpenChamber' ,
'onboarding.chooser.description' : 'Choose how you want to connect to get started.' ,
'onboarding.chooser.tabs.localInstall' : 'Local Install' ,
'onboarding.chooser.tabs.connectRemote' : 'Connect Remote' ,
'onboarding.localSetup.title' : 'Setting Up OpenCode' ,
'onboarding.localSetup.description' : 'Install OpenCode CLI to continue.' ,
'onboarding.localSetup.dialog.selectOpencodeBinary' : 'Select opencode binary' ,
'onboarding.localSetup.errors.cliNotReady' : 'OpenCode CLI is not ready yet. Please confirm installation is complete and try again.' ,
'onboarding.localSetup.errors.detectionFailed' : 'Detection failed' ,
'onboarding.localSetup.windows.title' : 'Windows setup (WSL recommended)' ,
'onboarding.localSetup.windows.stepInstallWsl' : 'Install WSL (if needed) with' ,
'onboarding.localSetup.windows.stepInstallWslSuffix' : 'in PowerShell.' ,
'onboarding.localSetup.windows.stepRunInstallInWsl' : 'Run the install command below inside your WSL terminal.' ,
'onboarding.localSetup.windows.stepSetBinaryPath' : 'If OpenChamber does not detect OpenCode automatically, set the binary path below.' ,
'onboarding.localSetup.docs.windows' : 'View Windows + WSL documentation' ,
'onboarding.localSetup.docs.default' : 'View documentation' ,
'onboarding.localSetup.actions.checking' : 'Checking...' ,
'onboarding.localSetup.actions.checkAndContinue' : "I've completed installation, check and continue" ,
'onboarding.localSetup.helper.checkAndContinue' : 'Click to check if OpenCode CLI is available. If successful, you\'ll automatically enter the main screen.' ,
'onboarding.localSetup.field.alreadyInstalled' : 'Already installed? Set the OpenCode CLI path:' ,
'onboarding.localSetup.actions.browse' : 'Browse' ,
'onboarding.localSetup.actions.apply' : 'Apply' ,
'onboarding.localSetup.helper.saveAndReload' : 'Saves to OpenChamber settings and reloads OpenCode configuration.' ,
'onboarding.localSetup.remotePreference' : 'Prefer to use a remote server?' ,
'onboarding.localSetup.actions.connectRemoteServer' : 'Connect to Remote Server →' ,
'onboarding.localSetup.windows.hintInstallInWsl' : 'On Windows, install and run OpenCode in WSL for best compatibility.' ,
'onboarding.localSetup.windows.hintDetectionFailed' : 'If detection fails, set a native path (opencode.cmd/opencode.exe), wsl.exe, or wsl:/usr/local/bin/opencode.' ,
'onboarding.localSetup.hint.ensurePath' : 'Already installed? Make sure opencode is in your PATH.' ,
'onboarding.localSetup.hint.setEnv' : 'Or set OPENCODE_BINARY environment variable.' ,
'onboarding.localSetup.hint.missingRuntime' : 'If you see "env: node: No such file or directory" or "env: bun: No such file or directory", install that runtime or ensure it is on PATH.' ,
'onboarding.remoteConnection.title' : 'Connect to Remote Server' ,
'onboarding.remoteConnection.titleRecovery' : 'Connect to a Different Server' ,
'onboarding.remoteConnection.description' : 'Enter the address of an OpenChamber server to connect to.' ,
'onboarding.remoteConnection.field.serverAddress' : 'Server Address' ,
'onboarding.remoteConnection.field.serverAddressPlaceholder' : 'https://your-server.example.com:4096' ,
'onboarding.remoteConnection.field.nameOptional' : 'Name (optional)' ,
'onboarding.remoteConnection.field.namePlaceholder' : 'My Remote Server' ,
'onboarding.remoteConnection.errors.connectionTestFailed' : 'Connection test failed' ,
'onboarding.remoteConnection.errors.failedToSaveConnection' : 'Failed to save connection' ,
'onboarding.remoteConnection.status.connectedSuccessfully' : 'Connected successfully ({latencyMs}ms)' ,
'onboarding.remoteConnection.status.authWarning' : 'Server requires authentication. You can still connect.' ,
'onboarding.remoteConnection.status.connectionFailed' : 'Connection Failed' ,
'onboarding.remoteConnection.status.suggestionsUnreachable' : 'Suggestions: Check the server address, verify the server is running, or check your network connection.' ,
'onboarding.remoteConnection.status.suggestionsWrongService' : 'Suggestions: Verify the URL points to an OpenChamber server, or contact the server administrator.' ,
'onboarding.remoteConnection.actions.testing' : 'Testing…' ,
'onboarding.remoteConnection.actions.testConnection' : 'Test Connection' ,
'onboarding.remoteConnection.actions.connectAndRestart' : 'Connect & Restart' ,
'onboarding.remoteConnection.actions.whatToDo' : 'What would you like to do?' ,
'onboarding.remoteConnection.actions.chooseDifferentServer' : 'Choose Different Server' ,
'onboarding.remoteConnection.actions.useLocalInstead' : 'Use Local Instead' ,
'onboarding.remoteConnection.probe.authMessage' : 'Server requires authentication. You can still connect, but may need to provide credentials.' ,
'onboarding.remoteConnection.probe.wrongServiceMessage' : 'Server responded but is not running OpenChamber. Verify the address points to an OpenChamber server.' ,
'onboarding.remoteConnection.probe.unreachableMessage' : 'Server is unreachable. Check your network connection and verify the server address.' ,
'onboarding.desktopRecovery.localUnavailable.title' : 'Local OpenCode Unavailable' ,
'onboarding.desktopRecovery.localUnavailable.description' : 'OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.' ,
'onboarding.desktopRecovery.localUnavailable.retry' : 'Retry Local' ,
'onboarding.desktopRecovery.localUnavailable.useLocal' : 'Set Up Local' ,
'onboarding.desktopRecovery.noDefaultConnection.title' : 'No Default Connection' ,
'onboarding.desktopRecovery.noDefaultConnection.description' : 'Your saved default connection could not be found. Choose how you want to connect.' ,
'onboarding.desktopRecovery.remoteUnreachable.title' : 'Remote Server Unreachable' ,
'onboarding.desktopRecovery.remoteUnreachable.description' : 'Could not connect to "{host}". Check your network connection and verify the server address.' ,
'onboarding.desktopRecovery.remoteUnreachable.retry' : 'Retry Connection' ,
'onboarding.desktopRecovery.incompatibleServer.title' : 'Incompatible Server' ,
'onboarding.desktopRecovery.incompatibleServer.description' : 'The server at "{host}" is not running OpenChamber. Verify the address points to an OpenChamber server.' ,
'onboarding.desktopRecovery.common.useLocal' : 'Use Local' ,
'onboarding.desktopRecovery.common.useRemote' : 'Use Remote' ,
'onboarding.desktopRecovery.actions.retrying' : 'Retrying…' ,
'onboarding.desktopRecovery.actions.retryConnection' : 'Retry Connection' ,
2026-04-26 16:24:07 +03:00
'startup.initRecovery.title' : 'Startup failed' ,
'startup.initRecovery.description' : 'OpenChamber could not finish initialization. Check that the server is running, then retry.' ,
'startup.initRecovery.retry' : 'Retry' ,
'startup.initRecovery.retrying' : 'Retrying…' ,
2026-04-26 14:03:39 +03:00
'onboarding.desktopRecovery.placeholders.remoteServer' : 'the remote server' ,
'onboarding.desktopRecovery.placeholders.unknownServer' : 'unknown' ,
'vscodeLayout.title.chat' : 'Chat' ,
'vscodeLayout.title.newSession' : 'New session' ,
'vscodeLayout.title.sessions' : 'Sessions' ,
'vscodeLayout.title.sessionFallback' : 'Session' ,
'vscodeLayout.actions.backToSessionsAria' : 'Back to sessions' ,
'vscodeLayout.actions.newSessionAria' : 'New session' ,
'vscodeLayout.actions.openAgentManagerAria' : 'Open Agent Manager' ,
'vscodeLayout.actions.resizeSessionsSidebarAria' : 'Resize sessions sidebar' ,
'vscodeLayout.actions.settingsAria' : 'Settings' ,
'vscodeLayout.quota.title' : 'Rate limits' ,
'vscodeLayout.quota.mode.used' : 'Used' ,
'vscodeLayout.quota.mode.remaining' : 'Remaining' ,
'vscodeLayout.quota.lastUpdated' : 'Last updated {time}' ,
'vscodeLayout.quota.noRateLimitsAvailable' : 'No rate limits available.' ,
'vscodeLayout.quota.noRateLimitsReported' : 'No rate limits reported.' ,
'vscodeLayout.quota.actions.rateLimitsAria' : 'Rate limits' ,
'vscodeLayout.quota.actions.showUsedAria' : 'Show used quota' ,
'vscodeLayout.quota.actions.showRemainingAria' : 'Show remaining quota' ,
'vscodeLayout.quota.actions.refreshAria' : 'Refresh rate limits' ,
'updateDialog.header.updateAvailable' : 'Update Available' ,
'updateDialog.header.updating' : 'Updating OpenChamber...' ,
'updateDialog.changelog.title' : "What's new" ,
'updateDialog.status.installingUpdate' : 'Installing update...' ,
'updateDialog.status.serverRestarting' : 'Server restarting...' ,
'updateDialog.status.waitingForServer' : 'Waiting for server...' ,
'updateDialog.status.autoReloadHint' : 'The page will reload automatically when the update is complete.' ,
'updateDialog.fallback.updateViaTerminal' : 'Or update via terminal:' ,
'updateDialog.actions.copyCommand' : 'Copy command' ,
'updateDialog.actions.copied' : 'Copied!' ,
'updateDialog.status.downloadingPayload' : 'Downloading update payload...' ,
'updateDialog.actions.downloadUpdate' : 'Download Update' ,
'updateDialog.status.downloading' : 'Downloading...' ,
'updateDialog.actions.restartToUpdate' : 'Restart to Update' ,
'updateDialog.actions.updateNow' : 'Update Now' ,
'updateDialog.status.updating' : 'Updating...' ,
'updateDialog.error.updateFailed' : 'Update failed' ,
'updateDialog.error.takingLonger' : 'Update is taking longer than expected. Wait a bit and refresh, or run: openchamber update' ,
'memoryDebugPanel.title' : 'Debug Panel' ,
'memoryDebugPanel.tabs.memory' : 'Memory' ,
'memoryDebugPanel.tabs.streaming' : 'Streaming' ,
'memoryDebugPanel.section.sessionsInMemory' : 'Sessions in Memory' ,
'memoryDebugPanel.section.uiStreamingMetrics' : 'UI Streaming Metrics' ,
'memoryDebugPanel.section.vscodeBridgeMetrics' : 'VS Code Bridge Metrics' ,
'memoryDebugPanel.section.noUiSamples' : 'No UI streaming samples yet. Start a stream and keep this panel open.' ,
'memoryDebugPanel.section.noVscodeSamples' : 'No VS Code bridge samples yet.' ,
'memoryDebugPanel.metric.totalMessages' : 'Total Messages' ,
'memoryDebugPanel.metric.cachedSessions' : 'Cached Sessions' ,
'memoryDebugPanel.metric.viewportWindow' : 'Viewport Window' ,
'memoryDebugPanel.metric.zombieTimeout' : 'Zombie Timeout' ,
'memoryDebugPanel.metric.githubTotalRequests' : 'GitHub Total Requests' ,
'memoryDebugPanel.metric.metrics' : 'Metrics' ,
'memoryDebugPanel.metric.samples' : 'Samples' ,
'memoryDebugPanel.metric.lastUpdate' : 'Last Update' ,
'memoryDebugPanel.metric.uiMetrics' : 'UI Metrics' ,
'memoryDebugPanel.metric.vscodeMetrics' : 'VS Code Metrics' ,
'memoryDebugPanel.metric.messageListRenders' : 'MsgList Renders' ,
'memoryDebugPanel.metric.messageListStreamRenders' : 'MsgList Stream Renders' ,
'memoryDebugPanel.metric.chatMessageRenders' : 'ChatMessage Renders' ,
'memoryDebugPanel.metric.chatMessageStreamRenders' : 'ChatMessage Stream Renders' ,
'memoryDebugPanel.metric.chatMessageStaticDuringStream' : 'ChatMessage Static During Stream' ,
'memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn' : 'ChatMessage Static Outside Active Turn' ,
'memoryDebugPanel.metric.messagesValue' : '{count} messages' ,
'memoryDebugPanel.metric.minutesValue' : '{count} minutes' ,
'memoryDebugPanel.metric.msgsValue' : '{count} msgs' ,
'memoryDebugPanel.metric.countValue' : 'count {value}' ,
'memoryDebugPanel.metric.avgValue' : 'avg {value}' ,
'memoryDebugPanel.metric.maxValue' : 'max {value}' ,
'memoryDebugPanel.metric.totalValue' : 'total {value}' ,
'memoryDebugPanel.actions.logState' : 'Log State' ,
'memoryDebugPanel.actions.copyJson' : 'Copy JSON' ,
'memoryDebugPanel.tooltip.logCurrentState' : 'Log current memory state to browser console' ,
'memoryDebugPanel.streaming.copy.copied' : 'Streaming debug JSON copied' ,
'memoryDebugPanel.streaming.copy.failed' : 'Failed to copy JSON' ,
'memoryDebugPanel.streaming.copy.hint' : 'Copy exports both UI and VS Code streaming metrics as JSON' ,
'memoryDebugPanel.common.idle' : 'idle' ,
'memoryDebugPanel.common.live' : 'live' ,
'memoryDebugPanel.common.notAvailable' : 'n/a' ,
'memoryDebugPanel.common.untitled' : 'Untitled' ,
'directoryTree.field.newDirectoryPlaceholder' : 'new_directory' ,
'textarea.resizeHandleAria' : 'Resize textarea' ,
'sidebar.resize.leftPanelAria' : 'Resize left panel' ,
'sidebar.resize.rightPanelAria' : 'Resize right panel' ,
'mainLayout.mobile.closeDrawerAria' : 'Close drawer' ,
'sortableTabsStrip.aria.tabs' : 'Tabs' ,
'openChamberLogo.aria.logo' : 'OpenChamber logo' ,
'markdownRenderer.table.actions.copyTitle' : 'Copy table' ,
'markdownRenderer.table.actions.downloadTitle' : 'Download table' ,
'markdownRenderer.table.toast.downloadedAsFormat' : 'Table downloaded as {format}' ,
'markdownRenderer.mermaid.actions.copyTitle' : 'Copy' ,
'markdownRenderer.mermaid.actions.copySourceTitle' : 'Copy source' ,
'markdownRenderer.mermaid.actions.downloadSvgTitle' : 'Download SVG' ,
'markdownRenderer.mermaid.toast.downloadFailed' : 'Failed to download diagram' ,
} as const ;
export type I18nKey = keyof typeof dict ;