Files
openchamber/packages/ui/src/lib/i18n/messages/en.ts
T
Bohdan Triapitsyn b5c58320cf feat: rename workspace review command
Renamed OpenChamber review command to /workspace-review
Kept built-in /review available separately
Updated autocomplete and localized settings copy
2026-04-26 23:15:35 +03:00

2070 lines
133 KiB
TypeScript

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',
'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',
'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.',
'chat.commandAutocomplete.command.workspaceReviewDescription': 'Review current workspace changes for high-signal issues only.',
'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',
'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…',
'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;