import { settingsDict } from './en.settings';

export const dict = {
  ...settingsDict,
  'common.loading': 'Loading...',
  'common.unavailable': 'Unavailable',
  'common.language.english': 'English',
  'common.language.french': 'French',
  'common.language.simplifiedChinese': 'Chinese (Simplified)',
  'common.language.traditionalChinese': 'Chinese (Traditional)',
  'common.language.ukrainian': 'Ukrainian',
  'common.language.spanish': 'Spanish',
  'common.language.brazilianPortuguese': 'Brazilian Portuguese',
  'common.language.korean': 'Korean',
  'common.language.polish': 'Polish',
  'common.language.japanese': 'Japanese',
  'common.revealPath.finder': 'Reveal in Finder',
  'common.revealPath.fileExplorer': 'Open in File Explorer',
  'common.revealPath.fileManager': 'Open in File Manager',
  'pwa.installPrompt.description': 'Install OpenChamber for quicker access',
  'pwa.installPrompt.action': 'Install',
  'pwa.installPrompt.dismiss': 'Dismiss',
  'pwa.installPrompt.started': 'Install started',
  'pwa.installPrompt.installed': 'OpenChamber installed',
  'layout.mainTab.chat': 'Chat',
  'layout.mainTab.plan': 'Plan',
  'layout.mainTab.diff': 'Diff',
  'layout.mainTab.diagram': 'Diagram',
  'layout.mainTab.files': 'Files',
  'layout.mainTab.terminal': 'Terminal',
  'layout.mainTab.context': 'Context',
  'mobile.nav.aria': 'Mobile navigation',
  'mobile.connect.welcome.title': 'Connect to OpenChamber',
  'mobile.connect.welcome.description': 'Add a server URL or scan a pairing QR code to start using the mobile app.',
  'mobile.connect.url.label': 'Server URL',
  'mobile.connect.url.placeholder': 'http://192.168.1.74:2606',
  'mobile.connect.token.label': 'Client token',
  'mobile.connect.token.placeholder': 'Paste access token',
  'mobile.connect.token.hint': 'Only needed if your server requires a token instead of a password.',
  'mobile.connect.password.label': 'Password',
  'mobile.connect.password.placeholder': 'OpenChamber password',
  'mobile.connect.connectButton': 'Connect',
  'mobile.connect.unlockButton': 'Unlock and connect',
  'mobile.connect.cancelPassword': 'Use another server',
  'mobile.connect.connecting': 'Connecting...',
  'mobile.connect.scanQr': 'Scan QR code',
  'mobile.connect.advanced': 'Advanced',
  'mobile.connect.scan.permissionDenied': 'Camera access is off. Enable it in Settings to scan a QR code.',
  'mobile.connect.scan.failed': 'Could not scan that QR code. Try again or enter the URL manually.',
  'mobile.connect.scan.invalid': 'That QR code is not an OpenChamber connection code.',
  'mobile.connect.scan.unsupported': 'QR scanning is only available in the installed mobile app.',
  'mobile.connect.saved.title': 'Saved connections',
  'mobile.connect.saved.empty': 'No saved connections yet.',
  'mobile.connect.error.urlRequired': 'Enter a server URL.',
  'mobile.connect.error.invalidUrl': 'That server URL is not valid.',
  'mobile.connect.error.unreachable': 'Could not reach that OpenChamber server.',
  'mobile.connect.error.authRequired': 'This server needs a password or client token.',
  'mobile.connect.error.passwordFailed': 'Could not unlock that server. Check the password.',
  'mobile.instances.addTitle': 'Add instance',
  'mobile.instances.editTitle': 'Edit instance',
  'mobile.instances.edit': 'Edit',
  'mobile.instances.delete': 'Delete',
  'mobile.instances.deleteAria': 'Delete {label}',
  'mobile.instances.confirmDeleteAria': 'Confirm deleting {label}',
  'mobile.instances.cancelDeleteAria': 'Keep {label}',
  'mobile.instances.cancelEdit': 'Cancel',
  'mobile.instances.label.label': 'Name',
  'mobile.instances.label.placeholder': 'Optional display name',
  'mobile.instances.saveNew': 'Save instance',
  'mobile.instances.saveEdit': 'Save changes',
  'mobile.nav.changes': 'Changes',
  'mobile.nav.settings': 'Settings',
  'mobile.surface.closeAria': 'Close',
  'mobile.header.openMenuAria': 'Open menu',
  'mobile.header.openMetadataAria': 'Open session metadata',
  'mobile.header.metadata.context': 'Context',
  'mobile.header.metadata.branch': 'Branch',
  'mobile.header.metadata.usage': 'Usage',
  'mobile.menu.titleAria': 'Workspace tools',
  'mobile.menu.files': 'Files',
  'mobile.menu.changes': 'Changes',
  'mobile.menu.mcp': 'MCP',
  'mobile.menu.instances': 'Instances',
  'mobile.menu.update': 'Update',
  'mobile.menu.settings': 'Settings',
  'mobile.sessions.newChatCta': 'New chat in {project}',
  'mobile.sessions.dateGroup.today': 'Today',
  'mobile.sessions.dateGroup.yesterday': 'Yesterday',
  'mobile.sessions.dateGroup.thisWeek': 'Earlier this week',
  'mobile.sessions.dateGroup.older': 'Older',
  'mobile.sessions.section.worktrees': 'Worktrees',
  'mobile.sessions.section.otherProjects': 'Switch project',
  'mobile.sessions.section.projects': 'Projects',
  'mobile.sessions.empty.noProjectsTitle': 'No projects yet',
  'mobile.sessions.empty.noProjectsDescription': 'Add a project to start chatting with your code.',
  'mobile.sessions.empty.noSessionsTitle': 'No sessions yet',
  'mobile.sessions.empty.noSessionsDescription': 'Start your first chat to see it here.',
  'mobile.sessions.empty.searchTitle': 'No matches',
  'mobile.sessions.empty.searchDescription': 'Try a different search term.',
  'mobile.sessions.showArchived': 'Show archived ({count})',
  'mobile.sessions.hideArchived': 'Hide archived',
  'mobile.sessions.activeWorktreeAria': 'Active worktree',
  'mobile.sessions.activeProjectAria': 'Active project',
  'mobile.sessions.startNewChat': 'Start new chat',
  'mobile.sessions.newChat': 'New chat',
  'mobile.sessions.editOrder': 'Reorder projects',
  'mobile.sessions.doneEditing': 'Done',
  'mobile.sessions.editOrderHint': 'Drag the handle to reorder projects. Tap the check to finish.',
  'mobile.sessions.editProjectAria': 'Edit {label}',
  'mobile.sessions.dragHandleAria': 'Drag {label} to reorder',
  'mobile.sessions.moveUpAria': 'Move {label} up',
  'mobile.sessions.moveDownAria': 'Move {label} down',
  'mobile.sessions.removeProjectAria': 'Remove {label}',
  'mobile.sessions.cancelRemoveProjectAria': 'Cancel removing {label}',
  'mobile.sessions.confirmRemoveProject': 'Close',
  'mobile.sessions.confirmRemoveProjectAria': 'Confirm removing {label}',
  'mobile.sessions.toast.projectRemoved': 'Removed {label}',
  'mobile.sessions.archiveSessionAria': 'Archive {title}',
  'mobile.sessions.cancelArchiveAria': 'Cancel archiving {title}',
  'mobile.projectEdit.worktreesTitle': 'Worktrees',
  'mobile.projectEdit.worktreesEmpty': 'No worktrees in this project yet.',
  'mobile.projectEdit.reorderHint': 'Drag to reorder worktrees.',
  'mobile.projectEdit.dragWorktreeAria': 'Drag {label} to reorder',
  'mobile.projectEdit.deleteWorktreeAria': 'Remove worktree {label}',
  'mobile.projectEdit.deleteWorktreeTitle': 'Remove worktree',
  'mobile.projectEdit.deleteWorktreeConfirmButton': 'Remove',
  'mobile.projectEdit.deleteWorktreeConfirm': 'Remove the worktree “{name}”? This can’t be undone.',
  'mobile.projectEdit.deleteWorktreeDirty': 'This worktree has uncommitted changes that will be lost.',
  'mobile.projectEdit.deleteWorktreeArchiveNote': '{count} attached session(s) will be archived.',
  'mobile.projectEdit.deleteLocalBranch': 'Also delete local branch',
  'mobile.projectEdit.deleteRemoteBranch': 'Also delete remote branch',
  'mobile.sessions.showMore': 'Show {count} more',
  'mobile.sessions.search.section.sessions': 'Sessions',
  'mobile.sessions.search.section.archived': 'Archived',
  'mobile.sessions.search.section.projects': 'Projects',
  'mobile.sessions.clearSearchAria': 'Clear search',
  'mobile.header.noProject': 'Select a project',
  'mobile.header.activeSession': 'Active session',
  'mobile.header.noSession': 'No active session',
  'mobile.sessions.openSheetAria': 'Open sessions and projects',
  'mobile.sessions.closeSheetAria': 'Close sessions and projects',
  'mobile.sessions.sheet.title': 'Sessions',
  'mobile.sessions.sheet.description': 'Switch projects, open sessions, or start a new chat.',
  'mobile.sessions.search.placeholder': 'Search sessions',
  'mobile.sessions.empty': 'No sessions found.',
  'mobile.sessions.unassignedProject': 'Other sessions',
  'mobile.sessions.newSessionAria': 'Start a new session in this project',
  'mobile.sessions.untitled': 'Untitled session',
  'mobile.sessions.project.sessionsSingle': '1 session',
  'mobile.sessions.project.sessionsPlural': '{count} sessions',
  'mobile.files.refreshAria': 'Refresh files',
  'mobile.files.backToParentAria': 'Back to {name}',
  'mobile.files.rootDirectory': 'Project files',
  'mobile.files.search.placeholder': 'Search files',
  'mobile.files.search.empty': 'No files found.',
  'mobile.files.parentDirectory': 'Parent directory',
  'mobile.files.empty.noDirectory': 'Select a project to browse files.',
  'mobile.files.empty.directory': 'This directory is empty.',
  'mobile.files.error.listFailed': 'Failed to load files',
  'mobile.files.error.readUnavailable': 'File preview is unavailable in this runtime.',
  'mobile.files.file.truncated': 'File preview truncated for mobile.',
  'mobile.files.copyPathAria': 'Copy file path',
  'mobile.files.copyContent': 'Copy content',
  'mobile.files.copyContentAria': 'Copy file content',
  'mobile.files.toast.pathCopied': 'Path copied',
  'mobile.files.toast.contentCopied': 'Content copied',
  'mobile.files.toast.copyFailed': 'Copy failed',
  'mobile.changes.placeholder.title': 'Changes',
  'mobile.changes.placeholder.description': 'Working-tree review, sync, and commit actions will live here.',
  'mobile.changes.branchLabel': 'Branch: {branch}',
  'mobile.changes.noRemote': 'No remote available',
  'mobile.changes.cleanDescription': 'There are no changed files in this workspace.',
  'mobile.changes.diffDetail.subtitle': 'Read-only diff',
  'mobile.changes.diffDetail.loadFailed': 'Failed to load diff',
  'mobile.changes.diffDetail.missingTitle': 'File is no longer changed',
  'mobile.changes.diffDetail.missingDescription': 'Go back to Changes and refresh the list.',
  'mobile.changes.diffDetail.imageUnavailable': 'Image diffs are not available in mobile Changes yet.',
  'mobile.settings.placeholder.title': 'Settings',
  'mobile.settings.placeholder.description': 'Focused mobile connection and app settings will live here.',
  '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.scheduleType.cron': 'Cron',
  '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',
  'sessions.scheduledTasks.editor.validation.cronRequired': 'Cron expression is required',
  'sessions.scheduledTasks.editor.validation.cronInvalid': 'Invalid cron expression',
  'sessions.scheduledTasks.editor.cronExpression.label': 'Cron expression',
  'sessions.scheduledTasks.editor.cronExpression.placeholder': '*/5 * * * *',
  'sessions.scheduledTasks.editor.cronExpression.nextRuns': 'Next runs',
  'sessions.scheduledTasks.editor.cronExpression.examples': 'Examples',
  'sessions.scheduledTasks.editor.cronExpression.examples.every5min': 'Every 5 minutes',
  'sessions.scheduledTasks.editor.cronExpression.examples.everyHour': 'Every hour',
  'sessions.scheduledTasks.editor.cronExpression.examples.monday9am': 'Every Monday at 9am',
  'sessions.scheduledTasks.editor.cronExpression.examples.9am5pm': '9am and 5pm daily',
  'sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth': 'First of every month',
  '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.project.gitRequired': 'No worktree isolation: runs use the same directory.',
  '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.isolateRuns.label': 'Isolate runs',
  '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',
  'multirun.fusion.title': 'Run fusion',
  'multirun.fusion.description': 'Combine the selected multi-run outputs into one stronger answer.',
  'multirun.fusion.provider.placeholder': 'Provider',
  'multirun.fusion.model.placeholder': 'Model',
  'multirun.fusion.sources.label': 'Sources ({count})',
  'multirun.fusion.actions.cancel': 'Cancel',
  'multirun.fusion.actions.start': 'Start fusion',
  'multirun.fusion.actions.starting': 'Starting...',
  'multirun.fusion.toast.noOutputs': 'No assistant outputs found to fuse.',
  'multirun.fusion.toast.failed': 'Failed to start fusion.',
  'multirun.launcher.attachments.label': 'Files',
  'multirun.launcher.actions.startWithRunCount': 'Start ({count} runs)',
  'multirun.launcher.groups.addGroup': 'Add run group',
  'multirun.launcher.groups.removeGroup': 'Remove group',
  'multirun.launcher.groups.groupLabel': 'Run group {index}',
  'multirun.launcher.groups.template.label': 'Template',
  'multirun.launcher.groups.template.placeholder': 'Select a template...',
  'multirun.launcher.groups.template.custom': 'Custom prompt',
  'multirun.launcher.groups.prompt.label': 'Prompt',
  'multirun.launcher.groups.prompt.placeholder': 'Enter the prompt for this group...',
  '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.showRecent': 'Show recent section',
  'sessions.sidebar.header.displayMode.showArchived': 'Show archived sessions',
  '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.switcher.openAria': 'Open session switcher',
  'sessions.switcher.empty': 'No recent sessions',
  'sessions.switcher.draftTitle': 'New session',
  '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.rename.save': 'Save session name',
  'sessions.sidebar.session.rename.cancel': 'Cancel renaming session',
  '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.runFusion': 'Run fusion',
  'sessions.sidebar.session.menu.openInSidePanel': 'Open in Side Panel',
  'sessions.sidebar.session.actions.openInEditor': 'Open in Editor',
  '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.showMore': 'Show more sessions',
  '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 {branch}',
  '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': 'Choose how to bring another branch into',
  'gitView.branch.empty': 'No branches found.',
  'gitView.branch.localBranches': 'Local branches',
  'gitView.branch.mergeDescription': 'Create a merge commit and preserve branch history.',
  'gitView.branch.mergeRebase': 'Merge/Rebase',
  'gitView.branch.mergeRebaseTooltip': 'Update this branch from another branch.',
  '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': 'Replay your commits on top of the selected branch.',
  'gitView.branch.rebasingInProgress': 'Rebasing In Progress',
  'gitView.branch.remoteBranches': 'Remote branches',
  'gitView.branch.renameTitle': 'Rename branch',
  'gitView.branch.renameSave': 'Save branch name',
  'gitView.branch.renameSaving': 'Saving branch name',
  'gitView.branch.renameCancel': 'Cancel branch rename',
  'gitView.branch.searchPlaceholder': 'Search branches...',
  'gitView.branch.selectBranch': 'Select Branch',
  'gitView.branch.summaryMergeInfix': 'into',
  'gitView.branch.summaryMergePrefix': 'This will merge',
  'gitView.branch.summaryRebaseInfix': 'onto',
  'gitView.branch.summaryRebasePrefix': 'This will rebase',
  'gitView.branch.updateDescriptionPrefix': 'Bring the latest changes into',
  'gitView.branch.updateTitle': 'Update branch',
  'gitView.changes.changedFilesAria': 'Changed files',
  'gitView.changes.clearSelectionAria': 'Clear file selection',
  'gitView.changes.collapseDirectoryAria': 'Collapse directory {path}',
  'gitView.changes.expandDirectoryAria': 'Expand directory {path}',
  'gitView.changes.revertAll': 'Revert all',
  'gitView.changes.revertAllDescriptionPlural': 'Revert {count} changed files? This cannot be undone.',
  'gitView.changes.revertAllDescriptionSingle': 'Revert {count} changed file? This cannot be undone.',
  'gitView.changes.revertAllDialogTitle': 'Revert all changes?',
  'gitView.changes.revertDirectoryAria': 'Revert changes in {path}',
  'gitView.changes.revertDirectory': 'Revert folder',
  'gitView.changes.revertDirectoryDescriptionPlural': 'This will discard local changes in {count} files under {path}.',
  'gitView.changes.revertDirectoryDescriptionSingle': 'This will discard local changes in {count} file under {path}.',
  'gitView.changes.revertDirectoryDialogTitle': 'Revert folder changes?',
  'gitView.changes.revertDirectoryTooltip': 'Revert folder changes',
  'gitView.changes.revertFileAria': 'Revert changes in {path}',
  'gitView.changes.revertFileTooltip': 'Revert changes',
  'gitView.changes.reverting': 'Reverting...',
  'gitView.changes.selectAllAria': 'Select all files',
  'gitView.changes.selectFileAria': 'Select {path}',
  'gitView.changes.stagedTitle': 'Staged',
  'gitView.changes.resizeSplitAria': 'Resize staged and unstaged changes',
  'gitView.changes.stageAllAria': 'Stage all changes',
  'gitView.changes.stageDirectoryAria': 'Stage all changes in {path}',
  'gitView.changes.stageFileAria': 'Stage {path}',
  'gitView.changes.title': 'Changes',
  'gitView.changes.toggleDirectorySelectionAria': 'Toggle selection for {path}',
  'gitView.changes.unstageAllAria': 'Unstage all changes',
  'gitView.changes.unstageDirectoryAria': 'Unstage all changes in {path}',
  'gitView.changes.unstageFileAria': 'Unstage {path}',
  'gitView.commit.addGitmoji': 'Add gitmoji',
  'gitView.commit.aiHighlights.insertAria': 'Insert  aria label',
  'gitView.commit.aiHighlights.insertTooltip': 'Insert  tooltip',
  'gitView.commit.aiHighlights.title': 'Highlights',
  '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': 'Commit & sync',
  'gitView.commit.pushAria': 'Commit and sync',
  'gitView.commit.pushing': 'Syncing...',
  'gitView.commit.selectFilesHint': 'Select files in Changes to enable commit.',
  'gitView.commit.stageFilesHint': 'Stage files 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': 'Resolve the {operation} conflicts to continue.',
  'gitView.conflict.detectedTitle': '{operation} conflicts detected',
  'gitView.conflict.errorLoadingDetails': 'Failed to load conflict details: {message}',
  'gitView.conflict.headInfo': 'HEAD information:',
  'gitView.conflict.loadFailed': 'Failed to load conflict details',
  'gitView.conflict.loading': 'Loading conflict details...',
  'gitView.conflict.noActiveSession': 'No active session',
  'gitView.conflict.noActiveSessionDescription': 'Open or create a session to resolve conflicts.',
  '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.repositoryViews': 'Repository views',
  'gitView.header.removeRemoteAria': 'Remove remote {name}',
  'gitView.header.removeRemoteTitle': 'Remove remote {name}',
  'gitView.header.upstreamSynced': 'synced',
  'gitView.header.upstreamTooltip': 'Compared with {target}.',
  'gitView.header.upstreamTooltipTracking': 'Compared with {target}. Primary sync badges still reflect {tracking}.',
  'gitView.history.actions.cancelButton': 'Cancel',
  'gitView.history.actions.checkout': 'Checkout',
  'gitView.history.actions.checkoutConfirm': 'Check out this commit as detached HEAD?',
  'gitView.history.actions.cherryPick': 'Cherry-pick',
  'gitView.history.actions.cherryPickConfirm': 'Cherry-pick this commit onto the current branch?',
  'gitView.history.actions.conflictToastDescription': 'Conflicts in: {files}. Resolve manually and commit, or abort with git cherry-pick/revert --abort.',
  'gitView.history.actions.conflictToastTitle': 'Conflict',
  'gitView.history.actions.confirmButton': 'Confirm',
  'gitView.history.actions.createBranch': 'Create branch here',
  'gitView.history.actions.createBranchConfirm': 'Create',
  'gitView.history.actions.createBranchPlaceholder': 'Branch name',
  'gitView.history.actions.detachedHead': 'Checked out (detached HEAD)',
  'gitView.history.actions.merge': 'Merge into current',
  'gitView.history.actions.mergeConfirm': 'Merge this commit into the current branch?',
  'gitView.history.actions.rebase': 'Rebase onto this',
  'gitView.history.actions.rebaseConfirm': 'Rebase current branch onto this commit?',
  'gitView.history.actions.reset': 'Reset...',
  'gitView.history.actions.resetHard': 'Hard — discard all changes',
  'gitView.history.actions.resetHardConfirm': 'Hard reset — HEAD moves, all uncommitted changes permanently discarded.',
  'gitView.history.actions.resetHardConfirmButton': 'Discard changes',
  'gitView.history.actions.resetMixed': 'Mixed — unstage changes',
  'gitView.history.actions.resetMixedConfirm': 'Mixed reset — HEAD moves, changes unstaged.',
  'gitView.history.actions.resetSoft': 'Soft — keep staged',
  'gitView.history.actions.resetSoftConfirm': 'Soft reset — HEAD moves, staged changes preserved.',
  'gitView.history.actions.revert': 'Revert',
  'gitView.history.actions.revertConfirm': 'Stage a revert of this commit?',

  'gitView.history.binary': 'Binary',
  'gitView.history.binaryNoDiff': 'Binary file — no diff available',
  'gitView.history.commitsPlaceholder': 'Commits',
  'gitView.history.copySha': 'Copy SHA',
  'gitView.history.diffError': 'Failed to load diff. Click to retry.',
  'gitView.history.largeDiffDescription': 'Rendering may be slow. You can still view the diff by clicking below.',
  'gitView.history.largeDiffTitle': 'Large diff ({count} changed lines)',
  'gitView.history.loadingDiff': 'Loading diff...',
  'gitView.history.loadingFiles': 'Loading files...',
  'gitView.history.loadMore': 'Load more',
  'gitView.history.loadingMore': 'Loading...',
  'gitView.history.logSize100': '100 commits',
  'gitView.history.logSize25': '25 commits',
  'gitView.history.logSize50': '50 commits',
  'gitView.history.noCommits': 'No commits found',
  'gitView.history.noFiles': 'No files',
  'gitView.history.renamedNoDiff': 'Renamed file — diff not supported',
  'gitView.history.renderDiffAnyway': 'Render anyway',
  'gitView.history.title': 'History',
  'gitView.graph.title': 'Graph',
  'gitView.integrate.checking': 'Checking…',
  'gitView.integrate.cherryPickAbortedToast': 'Cherry-pick aborted',
  'gitView.integrate.cherryPickConflictDescription': 'Resolve the cherry-pick conflicts to continue.',
  'gitView.integrate.cherryPickConflictToast': 'Cherry-pick conflicts detected',
  'gitView.integrate.cherryPickContinueFailedToast': 'Failed to continue cherry-pick',
  'gitView.integrate.cherryPickFinishedToast': 'Cherry-pick finished',
  'gitView.integrate.commitsMovedDescriptionPlural': 'Moved {count} commits to {branch}.',
  'gitView.integrate.commitsMovedDescriptionSingle': 'Moved {count} commit to {branch}.',
  'gitView.integrate.commitsMovedToast': 'Commits moved',
  '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 commits',
  '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': 'Open or create a session to continue.',
  'gitView.integrate.noCommitsToMove': 'No commits to move.',
  'gitView.integrate.noCommitsToMoveToast': 'No commits to move',
  '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',
  'gitView.operation.abort': 'Abort',
  'gitView.operation.continue': 'Continue',
  'gitView.operation.inProgressTitle': '{operation} in progress',
  'gitView.operation.merge': 'Merge',
  'gitView.operation.mergeInProgressWithHead': 'Merging {head}',
  'gitView.operation.mergingMessage': 'Merging: {message}',
  'gitView.operation.rebase': 'Rebase',
  'gitView.operation.rebaseInProgress': 'Rebase in progress',
  'gitView.operation.rebasingOnto': 'Rebasing {headName} onto {onto}',
  'gitView.operation.resolveConflictsHint': 'Resolve conflicts, then continue the operation.',
  'gitView.operation.resolveWithAi': 'Resolve with AI',
  'gitView.stash.confirmButton': '{operation}',
  'gitView.stash.description': 'Stash your local changes before starting the {operation}.',
  'gitView.stash.mergeWith': 'with',
  'gitView.stash.rebaseOnto': 'onto',
  'gitView.stash.restoreAfterOperation': 'Restore stashed changes after {operation}',
  'gitView.stash.restoreAria': 'Restore stashed changes after operation',
  '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.stashes.actions.apply': 'Apply',
  'gitView.stashes.actions.drop': 'Drop',
  'gitView.stashes.actions.pop': 'Pop',
  'gitView.stashes.actions.stashCurrent': 'Stash current changes',
  'gitView.stashes.actions.stashCurrentWithCount': 'Stash {count} files',
  'gitView.stashes.confirm.drop': 'Drop {ref}?',
  'gitView.stashes.description': 'Save, restore, and clean up Git stashes for this repository.',
  'gitView.stashes.empty.list': 'No stashes yet.',
  'gitView.stashes.empty.search': 'No matching stashes.',
  'gitView.stashes.includeUntrackedHint': 'Untracked files are included automatically.',
  'gitView.stashes.fileCount': '{count} files',
  'gitView.stashes.fileCountLoading': 'counting files...',
  'gitView.stashes.itemNumber': '#{number}',
  'gitView.stashes.latestLabel': 'Latest',
  'gitView.stashes.messagePlaceholder': 'Stash name',
  'gitView.stashes.searchPlaceholder': 'Search stashes',
  'gitView.stashes.title': 'Stashes',
  'gitView.stashes.toast.applyFailed': 'Failed to apply stash',
  'gitView.stashes.toast.applySuccess': 'Stash applied',
  'gitView.stashes.toast.createFailed': 'Failed to stash changes',
  'gitView.stashes.toast.created': 'Changes stashed',
  'gitView.stashes.toast.dropFailed': 'Failed to drop stash',
  'gitView.stashes.toast.dropSuccess': 'Stash dropped',
  'gitView.stashes.toast.loadFailed': 'Failed to load stashes',
  'gitView.stashes.toast.noChanges': 'No local changes to stash',
  'gitView.stashes.toast.popFailed': 'Failed to pop stash',
  'gitView.stashes.toast.popSuccess': 'Stash popped',
  'gitView.stashes.untitled': 'Untitled stash',
  'gitView.sync.fetch': 'Fetch',
  'gitView.sync.fetchFromRemote': 'Fetch from {name}',
  'gitView.sync.fetchTooltip': 'Fetch from remote',
  'gitView.sync.commitOrStashTooltip': 'Commit or stash your changes before syncing',
  'gitView.sync.moreActionsAria': 'More sync actions',
  'gitView.sync.noRemoteTooltip': 'No remotes configured',
  '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.sync.sync': 'sync',
  'gitView.sync.syncChanges': 'Sync Changes',
  'gitView.sync.syncChangesTooltip': 'Sync Changes ({behind} down, {ahead} up)',
  'gitView.sync.syncChangesWithCounts': 'Sync Changes {behind}↓ {ahead}↑',
  'gitView.sync.syncCounts': '{behind}↓ {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',
  'worktree.bootstrap.toast.failed': 'Worktree setup failed',
  'worktree.bootstrap.toast.failedDescription': 'The worktree was created, but background setup did not finish.',
  'worktree.bootstrap.toast.timeoutDescription': 'The worktree was created, but background setup timed out.',
  '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.actions.refresh': 'Refresh PR status',
  'gitView.pr.actions.refreshAria': 'Refresh pull request status',
  '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.label': 'checks',
  '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.availableOnFeatureBranches': 'Available when the current branch can open a pull request.',
  '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 {name}',
  'gitView.toast.commitOrStashBeforeSync': 'Commit or stash your changes before syncing',
  'gitView.toast.alreadyUpToDate': 'Already up to date',
  'gitView.toast.syncedPulledPluralAndPushed': 'Pulled {count} files from {name} and pushed to upstream',
  'gitView.toast.syncedPulledSingleAndPushed': 'Pulled {count} file from {name} and pushed to upstream',
  'gitView.toast.syncedChanges': 'Synced changes',
  '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.stageFileFailed': 'Failed to stage changes',
  'gitView.toast.stageFileToCommit': 'Stage at least one file to commit',
  'gitView.toast.stageFileToDescribe': 'Stage at least one file to describe',
  '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.unstageFileFailed': 'Failed to unstage changes',
  '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': 'Changes',
  'contextPanel.mode.stagedDiff': 'Staged Diff',
  'contextPanel.mode.workingDiff': 'Working Diff',
  'contextPanel.mode.plan': 'Plan',
  'contextPanel.mode.context': 'Context',
  'contextPanel.mode.preview': 'Preview',
  'contextPanel.mode.browser': 'Browser',
  'contextPanel.browser.open': 'Open browser panel',
  'contextPanel.browser.addressAria': 'Browser address',
  'contextPanel.browser.empty': 'Web browser',
  'contextPanel.browser.emptyHint': 'Enter an address above to start browsing the web',
  'contextPanel.browser.inspectUnavailable': 'This page cannot be inspected from the browser panel.',
  'contextPanel.browser.trustNotice': 'Pages opened here run with full access to OpenChamber — needed for inspect and screenshots. Only open sites you trust: a malicious page could read your data or act on your behalf.',
  '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}',
  'contextPanel.preview.actions.reload': 'Reload preview',
  'contextPanel.preview.actions.openExternal': 'Open in browser',
  'contextPanel.preview.actions.retry': 'Retry',
  'contextPanel.preview.iframeTitle': 'Preview',
  'contextPanel.preview.invalidUrl': 'Preview needs a valid http(s) URL.',
  'contextPanel.preview.empty': 'No preview URL',
  'contextPanel.preview.loading': 'Connecting preview proxy...',
  'contextPanel.preview.proxyError': 'Could not start preview proxy.',
  'contextPanel.preview.upstreamUnreachable': 'Dev server is not responding.',
  'contextPanel.preview.upstreamUnreachableHint': 'Make sure your dev server is still running, then retry.',
  'contextPanel.preview.startingServer': 'Starting dev server...',
  'contextPanel.preview.startingServerHint': 'Waiting for the server to accept connections.',
  'contextPanel.preview.title': 'Preview',
  'contextPanel.preview.description': 'Use Project Actions or a terminal Preview button to open a preview.',
  'contextPanel.preview.startPreview': 'Start Preview',
  'contextPanel.preview.starting': 'Starting...',
  'contextPanel.preview.noDevServer': 'No dev server command found. Configure a project action or add a "dev" script to package.json.',
  'contextPanel.preview.startFailed': 'Failed to start preview server.',
  'contextPanel.preview.serverExited': 'Dev server exited unexpectedly.',
  'contextPanel.preview.noUrlDetected': 'Dev server started, but no URL was detected in its output. Open the Preview terminal tab to check logs.',
  'contextPanel.preview.serverExitedWithLog': 'Dev server exited unexpectedly. Last output:\n\n{log}',
  'contextPanel.preview.noUrlDetectedWithLog': 'Dev server did not become reachable. Last output:\n\n{log}',
  'contextPanel.preview.console.open': 'Open preview console',
  'contextPanel.preview.console.waiting': 'Waiting for preview console',
  'contextPanel.preview.console.title': 'Preview console',
  'contextPanel.preview.console.attach': 'Attach',
  'contextPanel.preview.console.copy': 'Copy',
  'contextPanel.preview.console.clear': 'Clear',
  'contextPanel.preview.console.empty': 'No preview console events yet.',
  'contextPanel.preview.console.noFilteredEvents': 'No events match this filter.',
  'contextPanel.preview.console.runtimeError': 'Runtime error',
  'contextPanel.preview.console.copied': 'Preview console copied',
  'contextPanel.preview.console.copyFailed': 'Failed to copy preview console',
  'contextPanel.preview.console.attached': 'Preview console attached to chat',
  'contextPanel.preview.console.attachNoSession': 'Open a chat session before attaching preview logs',
  'contextPanel.preview.console.attachAnnotation': 'These are browser console logs from the dev server running for this project.',
  'contextPanel.preview.inspect.toggle': 'Inspect preview element',
  'contextPanel.preview.inspect.attached': 'Preview annotation attached to chat',
  'contextPanel.preview.inspect.attachNoSession': 'Open a chat session before attaching preview annotations',
  'contextPanel.preview.inspect.attachAnnotation': 'This is a selected DOM element from the in-app preview.',
  'contextPanel.preview.inspect.attachAnnotationWithScreenshot': 'This is a selected DOM element from the in-app preview. A screenshot of the visible preview area with the selected element highlighted is attached.',
  'contextPanel.preview.console.filter.all': 'All',
  'contextPanel.preview.console.filter.errors': 'Errors',
  'contextPanel.preview.console.filter.warnings': 'Warnings',
  'contextPanel.preview.console.filter.logs': 'Logs',

  'terminalView.preview.open': 'Preview',
  'terminalView.preview.openTitle': 'Open preview pane',
  '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.actions.fileMenuTitle': 'File menu',
  '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.autoSaveOn': 'Auto-save on',
  'filesView.editor.manualSave': 'Manual save',
  'filesView.editor.saveNowTitle': 'Save now ({shortcut}) - auto-saves after 1.5s',
  'filesView.editor.saveNowManualTitle': 'Save now ({shortcut})',
  '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.tree.actions.refreshTitle': 'Refresh',
  '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',
  'filesView.diagram.closeDiagramView': 'Close diagram view',
  'filesView.diagram.saveDiagram': 'Save diagram',
  '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.tokens.cacheHit': 'Cache Hit',
  '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.selector.selectFile': 'Select file',
  '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.state.largeDiff': 'Large diff ({count} changed lines)',
  'diffView.state.largeDiffDescription': 'Rendering may be slow. You can still view the diff by clicking below.',
  'diffView.summary.changedFilesSingle': '{count} file changed',
  'diffView.summary.changedFilesPlural': '{count} files changed',
  'diffView.scope.changed': 'Changed',
  'diffView.scope.staged': 'Staged',
  'diffView.scope.selectorAria': 'Select change mode',
  'diffView.actions.retry': 'Retry',
  'diffView.actions.renderAnyway': 'Render anyway',
  'diffView.actions.expandAll': 'Expand all',
  'diffView.actions.collapseAll': 'Collapse all',
  'diffView.actions.loadFullFiles': 'Load full files',
  'diffView.actions.disableFullFiles': 'Unload full files',
  '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',
  'diffView.actions.review': 'Review',
  'diffView.actions.reviewAria': 'Review changes',
  'diffView.reviewDialog.title': 'Review changes',
  'diffView.reviewDialog.description': 'Start a separate review session for the current changes.',
  'diffView.reviewDialog.generateHandoff': 'Generate handoff',
  'diffView.reviewDialog.autoReview': 'Run automatic review loop',
  'diffView.reviewDialog.info': 'This flow works best when started from the session where the changes were implemented.',
  'diffView.reviewDialog.actions.cancel': 'Cancel',
  'diffView.reviewDialog.actions.start': 'Review',
  'diffView.reviewDialog.actions.starting': 'Starting...',
  'diffView.reviewDialog.toast.noSessionDirectory': 'Session directory is unavailable',
  'diffView.reviewDialog.toast.startFailed': 'Failed to start review flow',
  'chat.history.loadOlder': 'Load older messages',
  'chat.autoReview.title': 'Code review loop is running',
  'chat.autoReview.status.waitingForReviewer': 'Waiting for reviewer',
  'chat.autoReview.status.waitingForImplementer': 'Waiting for implementer',
  'chat.autoReview.reviewSessionLabel': 'Review session',
  'chat.autoReview.actions.open': 'Open',
  'chat.autoReview.actions.stop': 'Stop',
  'diffView.hunk.label': 'Hunks',
  'diffView.hunk.stage': 'Stage',
  'diffView.hunk.unstage': 'Unstage',
  'diffView.hunk.discard': 'Discard',
  'diffView.hunk.stageTitle': 'Stage hunk {index}',
  'diffView.hunk.unstageTitle': 'Unstage hunk {index}',
  'diffView.hunk.discardTitle': 'Discard hunk {index}',
  'diffView.hunk.unavailable': 'This hunk is no longer available. Refresh the diff and try again.',
  'diffView.hunk.unsupported': 'Staging individual hunks is not supported in this runtime.',
  '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.actions.reorder': 'Reorder "{text}"',
  'rightSidebar.contextNotesTodo.todo.resizeAria': 'Resize todo list',
  '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.input.placeholderShort': 'Add a comment...',
  '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.github.accountSource.oauth': 'OAuth',
  'header.github.accountSource.cli': 'CLI',
  '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.remoteUpdate.title': 'Remote instance update',
  'header.services.remoteUpdate.checking': 'Looking for updates...',
  'header.services.remoteUpdate.upToDate': 'This instance is up to date.',
  'header.services.remoteUpdate.available': 'Version {version} is available for this instance.',
  'header.services.remoteUpdate.error': 'Failed to check remote instance updates',
  'header.services.remoteUpdate.actions.open': 'Update',
  'header.services.used': 'Used',
  'header.services.remaining': 'Remaining',
  'header.services.modelFamily.other': 'Other',
  'header.services.shutdownDev': 'Stop OpenChamber',
  'header.actions.openPlanAria': 'Open plan',
  'header.actions.toggleChangesPanel': 'Changes panel',
  'header.actions.toggleChangesPanelAria': 'Toggle changes panel',
  '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.openingFinder': 'Opening...',
  'directoryExplorerDialog.actions.openInFinder': 'Open in Finder',
  'directoryExplorerDialog.actions.adding': 'Adding...',
  'directoryExplorerDialog.actions.addProject': 'Add project',
  'directoryExplorerDialog.actions.addLocalProject': 'Add local project',
  'directoryExplorerDialog.actions.cloneRepository': 'Clone repository',
  'directoryExplorerDialog.actions.cloneAndAdd': 'Clone & add',
  'directoryExplorerDialog.actions.cloning': 'Cloning...',
  'directoryExplorerDialog.actions.createAndAdd': 'Create & add',
  'directoryExplorerDialog.actions.alreadyAdded': 'Already added',
  'directoryExplorerDialog.clone.remoteUrlPlaceholder': 'Repository URL (HTTPS or SSH)',
  'directoryExplorerDialog.browse.directories': 'Directories',
  'directoryExplorerDialog.browse.loading': 'Loading directories...',
  'directoryExplorerDialog.browse.empty': 'No matching directories.',
  'directoryExplorerDialog.browse.parentDirectory': 'Parent directory',
  'directoryExplorerDialog.browse.addedBadge': 'Added',
  'directoryExplorerDialog.browse.quickAdd': 'Add',
  'directoryExplorerDialog.footer.navigate': 'Navigate',
  'directoryExplorerDialog.footer.select': 'Select',
  'directoryExplorerDialog.footer.add': 'Add',
  'directoryExplorerDialog.shortcut.enter': 'Enter',
  '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.cloneUrlRequired': 'Enter a repository URL before cloning.',
  '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.openChamberVersionLabel': 'OpenChamber version {version}',
  'aboutDialog.openCodeVersionLabel': 'OpenCode version {version}',
  '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.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.openAppMenu': 'OpenChamber menu',
  'header.actions.openAppMenuAria': 'Open OpenChamber menu',
  '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 using GitHub code search syntax',
  '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 using GitHub code search syntax',
  '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 using GitHub code search syntax',
  'session.githubIntegration.search.prsPlaceholder': 'Search using GitHub code search syntax',
  '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.branchAlreadyExists': 'Branch already exists locally',
  '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.fileAttachment.activeEditor.addFile': 'Add file:{name} to context',
  'chat.fileAttachment.activeEditor.pinSelection': 'Pin selection to context',
  'chat.fileAttachment.activeEditor.remove': 'Remove from context',
  'chat.fileAttachment.openInDiagram': 'Open in diagram view',
  '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.emptyState.draftTitle': 'What are we working on?',
  'chat.emptyState.draftTitleWithProject': 'What are we working on in {project}?',
  'chat.draftPresets.explore.label': 'Explore the codebase',
  'chat.draftPresets.catchup.label': 'Catch me up',
  'chat.draftPresets.weigh.label': 'Weigh my options',
  'chat.draftPresets.plan.label': 'Start feature planning',
  'chat.draftPresets.debug.label': 'Debug an issue',
  'chat.draftPresets.review.label': 'Review my changes',
  'chat.draftStarters.add': 'Add a starter',
  'chat.draftStarters.searchPlaceholder': 'Search commands and skills…',
  'chat.draftStarters.empty': 'Nothing to add',
  'chat.draftStarters.sectionBuiltIn': 'Built-in',
  'chat.draftStarters.sectionCommands': 'Commands',
  'chat.draftStarters.sectionSkills': 'Skills',
  'chat.draftStarters.remove': 'Remove',
  '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.revertIndicator.redo': 'Redo',
  'chat.revertIndicator.redoAria': 'Redo — restore reverted messages',
  'chat.revertPopover.title': 'Reverted',
  'chat.revertPopover.noTextContent': 'No text content',
  'chat.revertPopover.forkFromHere': 'Fork from here',
  'chat.revertPopover.forkFromMessage': 'Fork from this message',
  'chat.revertPopover.restoreAll': 'Restore all',
  'chat.revertPopover.restore': 'Restore',
  'chat.revertPopover.revert': 'Revert',
  'chat.revertPopover.fork': 'Fork',
  'chat.revert.toast.undo': 'Reverted to {preview}',
  'chat.revert.toast.redo': 'Redone',
  'chat.revert.toast.restored': 'Restored all messages',
  '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.timelineDescription': 'Open the conversation timeline',
  '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 the workspace diff for intent, correctness, and adequacy, graded by severity.',
  'chat.commandAutocomplete.command.handoffReviewDescription': 'Create or reuse a separate review session from a generated handoff.',
  'chat.commandAutocomplete.command.featurePlanDescription': 'Start a guided, back-and-forth planning session for a new feature.',
  'chat.commandAutocomplete.command.catchUpDescription': 'Re-establish context: what you were doing and where to pick up.',
  'chat.commandAutocomplete.command.debugDescription': 'Guided root-cause investigation for a bug before proposing a fix.',
  'chat.commandAutocomplete.command.weighDescription': 'Weigh 2-3 approaches with trade-offs and a recommendation before you commit.',
  'chat.commandAutocomplete.command.exploreDescription': 'Get oriented in this codebase: a high-level tour of the architecture and main parts.',
  'chat.commandAutocomplete.badge.skill': 'skill',
  'chat.commandAutocomplete.badge.command': 'command',
  '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.title': 'Queued messages',
  'chat.queuedMessage.edit': 'edit',
  'chat.queuedMessage.send': 'send',
  'chat.queuedMessage.removeAria': 'Remove from queue',
  'chat.queuedMessage.reorderAria': 'Drag to reorder',
  '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.container.readOnlySubagentPromptBanner': 'Subagent sessions cannot be prompted.',
  '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.questionCard.copyMarkdown': 'Copy as Markdown',
  'chat.questionCard.copyJson': 'Copy as JSON',
  'chat.questionCard.copiedMarkdown': 'Question copied as Markdown',
  'chat.questionCard.copiedJson': 'Question copied as JSON',
  'chat.questionCard.copyFailed': 'Failed to copy question',
  'chat.questionCard.submitFailed': 'Failed to send response',
  'chat.questionCard.dismissFailed': 'Failed to dismiss question',
  'chat.questionCard.noLongerPending': 'This question is no longer waiting for a response.',
  'chat.questionCard.tryAgain': 'Please try again in a moment.',
  'chat.textSelection.toast.noProject': 'No project found for this session',
  'chat.textSelection.toast.addToNotesFailed': 'Failed to add to notes',
  'chat.textSelection.toast.addToNotesSuccess': 'Added selected text to notes',
  'chat.textSelection.toast.addToNotesSummaryFailed': 'Could not summarize selection, added selected text 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 selected text 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.openPreviewAria': 'Open preview',
  'chat.messageBody.actions.openPreview': 'Open preview',
  '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.forkDialog.instructions.label': 'Instructions',
  'chat.messageBody.forkDialog.instructions.placeholder': 'Add instructions for the new session…',
  'chat.messageBody.forkDialog.createWorktree': 'Create worktree',
  'chat.generatedResult.actions.copy': 'Copy',
  'chat.generatedResult.actions.copied': 'Copied',
  'chat.generatedResult.commit.title': 'Generated commit message',
  'chat.generatedResult.commit.highlights': 'Highlights',
  'chat.generatedResult.pullRequest.title': 'Generated pull request',
  'chat.generatedResult.pullRequest.titleLabel': 'Title',
  'chat.generatedResult.pullRequest.bodyLabel': 'Body',
  'chat.messageBody.tts.stopSpeaking': 'Stop speaking',
  'chat.messageBody.tts.readAloud': 'Read aloud',
  'chat.messageBody.tts.readAloudWithProvider': 'Read aloud ({provider} voice)',
  'planView.tts.readAloud': 'Read plan aloud',
  'planView.tts.stopSpeaking': 'Stop speaking',
  'filesView.tts.readAloud': 'Read file aloud',
  'filesView.tts.stopSpeaking': 'Stop speaking',
  '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 and skills; ! for shell; # for snippets',
  'chat.chatInput.placeholder.chatCompact': 'Use @ / ! # for helpers',
  'chat.chatInput.placeholder.selectSession': 'Select or create a session to start chatting',
  'chat.dictation.start': 'Start dictation',
  'chat.dictation.overlayAria': 'Dictation',
  'chat.dictation.downloadingModel': 'Downloading speech model...',
  'chat.dictation.downloadingModelProgress': 'Downloading speech model... {percent}%',
  'chat.dictation.listening': 'Listening...',
  'chat.dictation.processing': 'Transcribing...',
  'chat.dictation.failed': 'Transcription failed',
  'chat.dictation.cancel': 'Discard dictation',
  'chat.dictation.insert': 'Insert transcript',
  'chat.dictation.insertAndSend': 'Insert and send',
  'chat.dictation.retry': 'Retry transcription',
  'chat.dictation.discard': 'Discard recording',
  'chat.snippetAutocomplete.action.addNew': '+ Add new snippet',
  'chat.snippetAutocomplete.empty': 'No snippets found',
  'chat.snippetAutocomplete.footer': '↑↓ navigate • Enter select • Esc close',
  'snippets.source.global': 'global',
  'snippets.source.project': 'project',
  'chat.chatInput.toast.compactFailed': 'Failed to compact session',
  'chat.chatInput.toast.summaryFailed': 'Failed to generate summary',
  'chat.messageBody.actions.sendReviewFeedback': 'Send review feedback to implementing agent',
  'chat.messageBody.actions.sendImplementationResponse': 'Send implementation response to reviewing agent',
  'chat.chatInput.toast.reviewFailed': 'Failed to review changes',
  'chat.chatInput.toast.planFeatureFailed': 'Failed to start feature planning',
  'chat.chatInput.toast.catchUpFailed': 'Failed to catch up',
  'chat.chatInput.toast.debugFailed': 'Failed to start debugging',
  'chat.chatInput.toast.weighFailed': 'Failed to weigh options',
  'chat.chatInput.toast.exploreFailed': 'Failed to start the tour',
  '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.reviewCommentsRemove': 'Remove review comments',
  'chat.chatInput.devServerLogs': 'Dev Server logs:',
  'chat.chatInput.devServerLogsRemove': 'Remove Dev Server logs',
  'chat.chatInput.previewAnnotations': 'Preview annotations:',
  'chat.chatInput.previewContext': 'Preview context:',
  'chat.chatInput.previewContextRemove': 'Remove preview context',
  'chat.chatInput.projectRoot': 'Project root',
  'chat.chatInput.branch': 'Branch',
  'chat.chatInput.draftPicker.projectTitle': 'Project',
  'chat.chatInput.draftPicker.searchProjects': 'Search projects...',
  'chat.chatInput.draftPicker.searchBranches': 'Search branches...',
  '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.showRawJson': 'Show raw JSON',
  'chat.toolPart.showFormattedJson': 'Show formatted JSON',
  'chat.toolPart.copyOutput': 'Copy output',
  'chat.toolPart.copiedOutput': 'Copied output',
  'chat.toolPart.copyOutputFailed': 'Failed to copy 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.keyboardHintNavigate': '↑↓ navigate',
  'chat.modelControls.keyboardHintSwitchAgent': '{shortcut} switch agent',
  'chat.modelControls.keyboardHintThinking': '←→ thinking',
  'chat.modelControls.showThinkingModes': 'Show thinking modes',
  'chat.modelControls.hideThinkingModes': 'Hide thinking modes',
  'chat.modelControls.moreThinkingModes': 'More thinking modes',
  'chat.modelControls.noProvidersOrModelsFound': 'No providers or models match your search.',
  'chat.modelControls.reorderFavoriteAria': 'Reorder favorite',
  'chat.modelControls.reorderFavoriteTitle': 'Drag to reorder favorite',
  'chat.modelControls.reorderProviderTitle': 'Drag to reorder provider',
  '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.reasoningTrace.thinking': 'Thinking',
  'chat.reasoningTrace.justification': 'Justification',
  'chat.reasoningTrace.expandAria': 'Expand reasoning trace',
  'chat.reasoningTrace.collapseAria': 'Collapse reasoning trace',
  'chat.reasoningTrace.thought': 'Thought',
  '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.title': 'Command Palette',
  'commandPalette.description': 'Search files, sessions, and commands.',
  'commandPalette.input.placeholder': 'Search files, sessions, commands...',
  'commandPalette.empty.noResults': 'No results found.',
  'commandPalette.empty.searchingFiles': 'Searching files...',
  'commandPalette.item.newSession': 'New Session',
  'commandPalette.item.newMiniChat': 'New Mini Chat Window',
  'commandPalette.item.newWorktreeDraft': 'New Worktree Draft',
  'commandPalette.item.addProject': 'Add Project',
  'commandPalette.item.showSessionSwitcher': 'Show Session Switcher',
  'commandPalette.item.toggleSidebar': 'Toggle Sidebar',
  'commandPalette.item.toggleRightSidebar': 'Toggle Right Sidebar',
  'commandPalette.item.showContextUsage': 'Show Context Usage',
  'commandPalette.item.toggleTerminal': 'Toggle Terminal',
  'commandPalette.item.openSettings': 'Open Settings...',
  'commandPalette.session.untitled': 'Untitled Session',
  '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.autoDiscover': 'Auto-discover',
  'projectActions.actions.chooseActionAria': 'Choose project action',
  'projectActions.actions.openPreview': 'Open Preview',
  '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 Settings.',
  '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.checking': 'Checking',
  'desktopHostSwitcher.status.updateRecommended': 'Update recommended',
  'desktopHostSwitcher.status.incompatible': 'Incompatible',
  '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',
  'miniChat.header.newSession': 'New session',
  'miniChat.header.session': 'Session',
  'miniChat.header.defaultAgent': 'Default agent',
  'miniChat.header.noModel': 'No model',
  'miniChat.status.busy': 'Running',
  'miniChat.status.retry': 'Retrying',
  'miniChat.status.idle': 'Idle',
  'miniChat.actions.pin': 'Pin above other windows',
  'miniChat.actions.unpin': 'Unpin window',
  'miniChat.actions.pinAria': 'Pin Mini Chat window',
  'miniChat.actions.unpinAria': 'Unpin Mini Chat window',
  'miniChat.actions.openMain': 'Open in main window',
  'miniChat.actions.openMainAria': 'Open session in main window',
  'miniChat.unavailable.title': 'Session unavailable',
  'miniChat.unavailable.description': 'This session could not be loaded. It may have been deleted, archived, or opened from a different project context.',
  'sessions.sidebar.session.menu.openMiniChatWindow': 'Open in Mini Chat Window',
  'header.actions.newMiniChat': 'New Mini Chat Window',
  'header.actions.newMiniChatAria': 'Open a new Mini Chat window',
  'header.actions.openSessionMiniChat': 'Open Session in Mini Chat',
  'header.actions.openSessionMiniChatAria': 'Open current session in Mini Chat',
  'header.windowControls.groupAria': 'Window controls',
  'header.windowControls.minimize': 'Minimize window',
  'header.windowControls.maximize': 'Maximize window',
  'header.windowControls.restore': 'Restore window',
  'header.windowControls.close': 'Close window',
  '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',
  'voice.action.finishAndTranscribe': 'Finish and transcribe voice input',
  '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',
  'onboarding.localSetup.windows.stepInstallWsl': 'Install OpenCode with the command below.',
  'onboarding.localSetup.windows.stepInstallWslSuffix': '',
  'onboarding.localSetup.windows.stepRunInstallInWsl': 'Run the install command below in a Windows terminal.',
  'onboarding.localSetup.windows.stepSetBinaryPath': 'If OpenChamber does not detect OpenCode automatically, set the binary path below.',
  'onboarding.localSetup.intro': 'OpenCode is the heart of OpenChamber — install it to get started.',
  'onboarding.localSetup.docs.windows': 'OpenCode docs',
  'onboarding.localSetup.docs.default': 'OpenCode docs',
  'onboarding.localSetup.actions.checking': 'Checking…',
  'onboarding.localSetup.actions.checkAndContinue': "I've completed installation, check and continue",
  'onboarding.localSetup.actions.checkNow': 'Check now',
  'onboarding.localSetup.helper.checkAndContinue': 'Click to check if OpenCode CLI is available. If successful, you\'ll automatically enter the main screen.',
  'onboarding.localSetup.status.watching': 'Waiting for OpenCode',
  'onboarding.localSetup.status.autoContinue': "We'll continue automatically once it's detected.",
  'onboarding.localSetup.field.alreadyInstalled': 'Already installed? Set the OpenCode CLI path:',
  'onboarding.localSetup.advanced.title': 'Set a custom binary path',
  'onboarding.localSetup.troubleshoot.title': 'Having trouble?',
  '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 natively.',
  'onboarding.localSetup.windows.hintDetectionFailed': 'If detection fails, set a native path such as opencode.cmd or opencode.exe.',
  '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.updateRecommendedMessage': 'This instance is running a different OpenChamber version. You can connect, but update both apps if something does not work.',
  'onboarding.remoteConnection.probe.incompatibleMessage': 'Server is running OpenChamber but is not compatible with this app version. Update OpenChamber on the server, then try again.',
  '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.remoteIncompatible.title': 'Server Update Required',
  'onboarding.desktopRecovery.remoteIncompatible.description': 'The OpenChamber server at "{host}" is not compatible with this app version. Update OpenChamber on the server, then try again.',
  '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.archiveAllAria': 'Archive all sessions',
  'vscodeLayout.actions.archiveAllConfirm': 'Archive all',
  'vscodeLayout.actions.archiveAllSuccess': 'Archived {count} session(s)',
  'vscodeLayout.actions.archiveAllError': 'Failed to archive {count} session(s)',
  'vscodeLayout.actions.cancel': 'Cancel',
  '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',
  'opencodeUpdate.toast.available.title': 'OpenCode update',
  'opencodeUpdate.toast.available.description': 'Version {version} available.',
  'opencodeUpdate.toast.actions.update': 'Update',
  'opencodeUpdate.toast.actions.dismiss': 'Dismiss',
  'opencodeUpdate.toast.actions.reload': 'Reload OpenCode',
  'opencodeUpdate.toast.upgrading.title': 'Updating OpenCode...',
  'opencodeUpdate.toast.upgrading.description': 'Keep OpenChamber open.',
  'opencodeUpdate.toast.updated.title': 'OpenCode updated',
  'opencodeUpdate.toast.updated.description': 'Update installed.',
  'opencodeUpdate.toast.updated.descriptionWithVersion': 'Version {version} installed.',
  'opencodeUpdate.toast.failed.title': 'Could not update OpenCode',
  'opencodeUpdate.toast.failed.description': 'The OpenCode upgrade failed.',
  'opencodeUpdate.toast.reload.message': 'Restarting OpenCode...',
  '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.userMessages': 'User Messages',
  'memoryDebugPanel.metric.assistantMessages': 'Assistant Messages',
  '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.roleMsgsValue': 'U {user} / A {assistant}',
  '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',
  'common.date.today': 'Today',
  'common.date.yesterday': 'Yesterday',
  'common.date.yesterdayWithTime': 'Yesterday {time}',
  'common.relative.justNow': 'Just now',
  'common.relative.minutesAgoShort': '{count}min ago',
  'common.relative.hoursAgoShort': '{count}h ago',
  'common.relative.daysAgoShort': '{count}d ago',
  'common.relative.weeksAgoShort': '{count}w ago',
  'common.relative.yearsAgoShort': '{count}y ago',
  'common.relative.daysAgoCompact': '{count}d ago',
  'common.relative.weeksAgoCompact': '{count}w ago',
  'common.relative.yearsAgoCompact': '{count}y ago',
  'contextFileOpen.failure.tooLarge': 'File is too large to open (>{count} lines)',
  'contextFileOpen.failure.missing': 'File not found',
  'contextFileOpen.failure.unreadable': 'Failed to open file',
  'quota.window.5h': '5-Hour',
  'quota.window.7d': '7-Day Limit',
  'quota.window.7dSonnet': '7-Day Sonnet Limit',
  'quota.window.7dOpus': '7-Day Opus Limit',
  'quota.window.weekly': 'Weekly Limit',
  'quota.window.daily': 'Daily',
  'quota.window.monthly': 'Monthly Limit',
  'quota.window.credits': 'Credits',
  'quota.window.creditsBalance': 'Credits Balance',
  'quota.window.billingCycle': 'Billing Cycle',
  'quota.window.auto': 'Auto',
  'quota.window.api': 'API',
  'quota.window.planLimit': 'Plan Limit',
  'quota.window.onDemand': 'On-demand',
  'quota.window.session': 'Session',
  'quota.window.premium': 'Premium Interactions',
  'quota.window.chat': 'Chat Requests',
  'quota.window.completions': 'Completions',
  'quota.window.premiumInteractions': 'Premium interactions',
} as const;

export type I18nKey = keyof typeof dict;
