import type { Dict } from '../types';

export const en: Dict = {
  'common.cancel': 'Cancel',
  'common.save': 'Save',
  'common.close': 'Close',
  'common.delete': 'Delete',
  'common.rename': 'Rename',
  'common.preview': 'Preview',
  'common.share': 'Share',
  'common.search': 'Search',
  'common.searchEllipsis': 'Search…',
  'common.loading': 'Loading…',
  'common.all': 'All',
  'common.none': 'None',
  'common.default': 'Default',
  'common.installed': 'installed',
  'common.notInstalled': 'not installed',
  'common.active': 'active',
  'common.offline': 'offline',
  'common.selected': 'selected',
  'common.create': 'Create',
  'common.openPreview': 'Open preview',
  'common.exitFullscreen': 'Exit fullscreen',
  'common.fullscreen': 'Fullscreen',
  'common.openInNewTab': 'Open in new tab',
  'common.exportPdf': 'Export as PDF',
  'common.exportZip': 'Download as .zip',
  'common.exportHtml': 'Export as standalone HTML',
  'common.justNow': 'just now',
  'common.minutesAgo': '{n}m ago',
  'common.hoursAgo': '{n}h ago',
  'common.daysAgo': '{n}d ago',
  'common.now': 'now',
  'common.minutesShort': '{n}m',
  'common.hoursShort': '{n}h',
  'common.daysShort': '{n}d',
  'common.untitled': 'Untitled',

  'app.brand': 'Open Design',
  'app.brandPill': 'Research Preview',
  'app.brandSubtitle': 'by Nexu Labs',
  'app.welcomeLoading': 'Loading workspace…',

  'settings.welcomeKicker': 'Welcome',
  'settings.welcomeTitle': 'Set up Open Design',
  'settings.welcomeSubtitle':
    "Pick how you'd like to run generations. You can change this any time from the Settings button in the top bar.",
  'settings.kicker': 'Settings',
  'settings.title': 'Execution & model',
  'settings.subtitle': 'Choose between Local CLI and BYOK. Your API key is stored only in this browser.',
  'settings.modeAria': 'Execution mode',
  'settings.protocolAria': 'API protocol',
  'settings.modeDaemon': 'Local CLI',
  'settings.modeDaemonHelp': 'Run via a code-agent CLI on your machine',
  'settings.modeDaemonOffline': 'Daemon is not running',
  'settings.modeDaemonOfflineMeta': 'daemon offline',
  'settings.modeDaemonInstalledMeta': '{count} installed',
  'settings.modeApi': 'API provider',
  'settings.modeApiMeta': 'BYOK',
  'settings.codeAgent': 'Code agent',
  'settings.codeAgentHint':
    'Detected by scanning your PATH. Pick the CLI you want generations to flow through.',
  'settings.rescan': '↻ Rescan',
  'settings.rescanTitle': 'Re-scan PATH',
  'settings.rescanRunning': 'Scanning...',
  'settings.rescanSuccess': 'Scan complete. {count} available.',
  'settings.rescanFailed': 'Scan failed. Check the daemon and try again.',
  'settings.noAgentsDetected':
    'No agents detected yet. Install one of Claude Code, Codex, Devin for Terminal, Gemini CLI, OpenCode, Cursor Agent, Qwen, or GitHub Copilot CLI, then click Rescan.',
  'settings.apiSection': 'Anthropic API',
  'settings.quickFillProvider': 'Quick fill provider',
  'settings.customProvider': 'Custom provider',
  'settings.apiKey': 'API key',
  'settings.showKey': 'Show key',
  'settings.hideKey': 'Hide key',
  'settings.show': 'Show',
  'settings.hide': 'Hide',
  'settings.model': 'Model',
  'settings.suggestedModelsHint':
    'These are suggested models for this protocol. Your provider may support different models.',
  'settings.baseUrl': 'Base URL',
  'settings.baseUrlInvalid': 'Enter a valid public http:// or https:// URL. Localhost is allowed; private network IPs are blocked.',
  'settings.azureDeploymentModel': 'Deployment name',
  'settings.azureDeploymentModelHint':
    'For Azure OpenAI, this field is used as the deployment name in /openai/deployments/<model>. Enter the deployment name you created in Azure.',
  'settings.apiVersion': 'API version',
  'settings.maxTokens': 'Max tokens (optional)',
  'settings.maxTokensHint':
    'Cap on the response length. Each model has a tuned default (shown as a placeholder); leave blank to use it, or enter a number to override.',
  'settings.apiHint': 'Calls are sent through the local daemon proxy to the base URL you set. The key is stored only in this browser and sent with provider requests.',
  'settings.skipForNow': 'Skip for now',
  'settings.getStarted': 'Get started',
  'settings.envConfigure': 'Configure execution mode',
  'settings.localCli': 'Local CLI',
  'settings.anthropicApi': 'Anthropic API',
  'settings.noAgentSelected': 'no agent selected',
  'settings.language': 'Language',
  'settings.languageHint': 'Switch the interface language. Saved to this browser.',
  'settings.appearance': 'Appearance',
  'settings.appearanceHint': 'Choose light, dark, or follow your system setting.',
  'settings.themeSystem': 'System',
  'settings.themeLight': 'Light',
  'settings.themeDark': 'Dark',
  'settings.modelPicker': 'Model',
  'settings.reasoningPicker': 'Reasoning effort',
  'settings.modelPickerHint':
    'Fetched from the CLI when it exposes a `models` command. "Default" leaves the choice to the CLI’s own config; "Custom…" lets you type any model id the CLI accepts.',
  'settings.cliEnvTitle': 'CLI config locations',
  'settings.cliEnvHint':
    'Set non-secret config directories for packaged app runs and agent detection.',
  'settings.cliEnvClaudeConfigDir': 'Claude Code config dir',
  'settings.cliEnvCodexHome': 'Codex home',
  'settings.modelCustom': 'Custom (type below)…',
  'settings.modelCustomLabel': 'Custom model id',
  'settings.modelCustomPlaceholder': 'e.g. anthropic/claude-sonnet-4-6',
  'settings.mediaProviders': 'Media providers',
  'settings.mediaProvidersHint':
    'API keys for image, video and audio generation. Stored locally and synced to the local daemon.',
  'settings.mediaProviderApiKey': 'API key',
  'settings.mediaProviderBaseUrl': 'Base URL',
  'settings.mediaProviderConfigured': 'Configured',
  'settings.mediaProviderUnset': 'Unset',
  'settings.mediaProviderClear': 'Clear',
  'settings.mediaProviderPlaceholder': 'Paste API key',
  'settings.mediaProviderBaseUrlPlaceholder': 'Override default base URL',
  'settings.about': 'About',
  'settings.aboutHint': 'Version and runtime details',
  'settings.appVersion': 'Version',
  'settings.appChannel': 'Channel',
  'settings.appRuntime': 'Runtime',
  'settings.appPlatform': 'Platform',
  'settings.appArchitecture': 'Architecture',
  'settings.runtimePackaged': 'Packaged app',
  'settings.runtimeDevelopment': 'Development',
  'settings.versionUnavailable': 'Version details are unavailable while the daemon is offline.',

  'entry.tabDesigns': 'Designs',
  'entry.tabExamples': 'Examples',
  'entry.tabDesignSystems': 'Design systems',
  'entry.tabConnectors': 'Connectors',
  'entry.openSettingsTitle': 'Settings',
  'entry.openSettingsAria': 'Open settings',
  'entry.resizeAria': 'Resize sidebar',
  'entry.loadingWorkspace': 'Loading workspace…',
  'entry.tabImageTemplates': 'Image templates',
  'entry.tabVideoTemplates': 'Video templates',
  'promptTemplates.searchPlaceholder': 'Search templates…',
  'promptTemplates.countLabel': '{n} results',
  'promptTemplates.emptyImage': 'No image prompt templates installed yet.',
  'promptTemplates.emptyVideo': 'No video prompt templates installed yet.',
  'promptTemplates.emptyNoMatch': 'No templates match your search.',
  'promptTemplates.attributionFooter': 'Adapted from public prompt libraries. Each card links back to the original author.',
  'promptTemplates.openPreviewTitle': 'Open prompt and preview',
  'promptTemplates.sourcePrefix': 'Source:',
  'promptTemplates.fetchError': 'Could not load this template body.',
  'promptTemplates.promptLabel': 'Prompt body',
  'promptTemplates.copyPrompt': 'Copy prompt',
  'promptTemplates.copyDone': 'Copied!',
  'promptTemplates.modelHint': 'Suggested model: {model}',
  'promptTemplates.openSource': 'View original',
  'promptTemplates.openFullscreen': 'Open fullscreen preview',
  'promptTemplates.closeFullscreen': 'Close fullscreen preview',
  'promptTemplates.allSources': 'All sources',
  'promptTemplates.sourceFilterAria': 'Filter by source',
  'promptTemplates.retry': 'Retry',

  'connectors.title': 'Connectors',
  'connectors.subtitle': 'Local and future data sources that can power live artifacts.',
  'connectors.account': 'Account',
  'connectors.noAccount': 'Not connected',
  'connectors.tools': 'Tools',
  'connectors.connect': 'Connect',
  'connectors.disconnect': 'Disconnect',
  'connectors.configure': 'Configure',
  'connectors.unavailable': 'Unavailable',
  'connectors.phaseStubTitle': 'Connector APIs arrive in Phase 3; this is a preview surface.',
  'connectors.statusAvailable': 'Available',
  'connectors.statusConnected': 'Connected',
  'connectors.statusError': 'Error',
  'connectors.statusDisabled': 'Disabled',
  'connectors.gateTitle': 'Configure Composio API key',
  'connectors.gateBody': 'Connectors require a Composio API key. Add it in Settings to unlock available integrations.',
  'connectors.gateAction': 'Open settings',
  'connectors.aboutLabel': 'About',
  'connectors.detailsLabel': 'Details',
  'connectors.statusLabel': 'Status',
  'connectors.categoryLabel': 'Category',
  'connectors.providerLabel': 'Provider',
  'connectors.toolsSection': 'Tools',
  'connectors.toolsLoading': 'Loading tools…',
  'connectors.noToolsAvailable': 'No tools available yet. Connect to discover what this integration exposes.',
  'connectors.openDetailsAria': 'Open {name} details',
  'connectors.toolsBadgeNone': 'No tools',
  'connectors.toolsBadgeOne': '{n} tool',
  'connectors.toolsBadgeMany': '{n} tools',
  'connectors.searchPlaceholder': 'Search connectors…',
  'connectors.searchAriaLabel': 'Search connectors by name, provider, or tool',
  'connectors.searchClear': 'Clear search',
  'connectors.emptyNoMatchTitle': 'No connectors match “{query}”',
  'connectors.emptyNoMatchBody': 'Try a different keyword, or clear the search to browse the full catalog.',
  'connectors.emptyNoMatchAction': 'Clear search',

  'newproj.tabPrototype': 'Prototype',
  'newproj.tabLiveArtifact': 'Live artifact',
  'newproj.tabDeck': 'Slide deck',
  'newproj.tabTemplate': 'From template',
  'newproj.tabOther': 'Other',
  'newproj.titlePrototype': 'New prototype',
  'newproj.titleLiveArtifact': 'New live artifact',
  'newproj.titleDeck': 'New slide deck',
  'newproj.titleTemplate': 'Start from a template',
  'newproj.titleImage': 'New image',
  'newproj.titleVideo': 'New video',
  'newproj.titleAudio': 'New audio',
  'newproj.titleOther': 'New project',
  'newproj.namePlaceholder': 'Project name',
  'newproj.fidelityLabel': 'Fidelity',
  'newproj.fidelityWireframe': 'Wireframe',
  'newproj.fidelityHigh': 'High fidelity',
  'newproj.toggleSpeakerNotes': 'Use speaker notes',
  'newproj.toggleSpeakerNotesHint': 'Less text on slides — keep talking points in notes.',
  'newproj.toggleAnimations': 'Include animations',
  'newproj.toggleAnimationsHint':
    'Add motion (entrance, hover, transitions) on top of the template.',
  'newproj.templateLabel': 'Template',
  'newproj.noTemplatesTitle': 'No templates yet',
  'newproj.noTemplatesBody':
    'Open any project, then use the Share menu inside the file viewer to convert it into a template. Templates show up here.',
  'newproj.savedTemplate': 'Saved template',
  'newproj.fileSingular': 'file',
  'newproj.filePlural': 'files',
  'newproj.create': 'Create',
  'newproj.createLiveArtifact': 'Create live artifact',
  'newproj.createFromTemplate': 'Create from template',
  'newproj.createDisabledTitle':
    'Save a project as a template first (Share menu inside any project).',
  'newproj.importClaudeZip': 'Import Claude Design ZIP',
  'newproj.importClaudeZipTitle': 'Import a Claude Design .zip export',
  'newproj.importingClaudeZip': 'Importing…',
  'newproj.privacyFooter': 'Only you can see your project by default.',
  'newproj.designSystem': 'Design system',
  'newproj.dsNoneFreeform': 'None — freeform',
  'newproj.dsNoneSubtitleEmpty': 'No system tokens, choose your own palette',
  'newproj.dsNoneSubtitleSelected': 'Skip system tokens. The agent picks its own palette.',
  'newproj.dsCategoryFallback': 'Design system',
  'newproj.dsSearch': 'Search design systems…',
  'newproj.dsModeAria': 'Selection mode',
  'newproj.dsModeSingle': 'Single',
  'newproj.dsModeMulti': 'Multi',
  'newproj.dsNoneTitle': 'None — freeform',
  'newproj.dsNoneSub': 'Skip system tokens. The agent picks its own palette.',
  'newproj.dsEmpty': 'No design systems match “{query}”.',
  'newproj.dsFootSingular': 'is inspiration only.',
  'newproj.dsFootPlural': 'are inspiration only.',
  'newproj.dsFootClear': 'Clear',
  'newproj.dsBadgeDefault': 'DEFAULT',
  'newproj.dsPrimaryFallback': 'Primary',
  'newproj.surfaceImage': 'Image',
  'newproj.surfaceVideo': 'Video',
  'newproj.surfaceAudio': 'Audio',
  'newproj.modelLabel': 'Model',
  'newproj.aspectLabel': 'Aspect',
  'newproj.imageStyleLabel': 'Style notes',
  'newproj.imageStylePlaceholder': 'Editorial photo, soft daylight, muted palette',
  'newproj.videoLengthLabel': 'Length',
  'newproj.videoLengthSeconds': '{n}s',
  'newproj.audioKindLabel': 'Audio type',
  'newproj.audioKindMusic': 'Music',
  'newproj.audioKindSpeech': 'Speech / TTS',
  'newproj.audioKindSfx': 'SFX',
  'newproj.audioDurationLabel': 'Duration',
  'newproj.audioDurationSeconds': '{n}s',
  'newproj.voiceLabel': 'Voice',
  'newproj.voicePlaceholder': 'Provider voice id, optional',
  'newproj.connectorsLabel': 'Connectors',
  'newproj.connectorsHint': 'Data sources this artifact can pull from.',
  'newproj.connectorsEmptyTitle': 'No connectors configured',
  'newproj.connectorsEmptyBody':
    'Connect a data source so your live artifact can fetch real numbers instead of placeholders.',
  'newproj.connectorsEmptyCta': 'Set up connectors →',
  'newproj.connectorsLoading': 'Loading connectors…',
  'newproj.connectorsCountOne': '{n} connected',
  'newproj.connectorsCountMany': '{n} connected',
  'newproj.connectorsManage': 'Manage',
  'newproj.promptTemplateLabel': 'Reference template',
  'newproj.promptTemplateNoneTitle': 'None — write your own',
  'newproj.promptTemplateNoneSub': 'Skip the gallery, describe your own brief',
  'newproj.promptTemplateRefSub': 'Reference template',
  'newproj.promptTemplateSearch': 'Search templates…',
  'newproj.promptTemplateEmpty': 'No templates installed for this surface yet.',
  'newproj.promptTemplateBodyLabel': 'Prompt (you can tune it)',
  'newproj.promptTemplateOptimizeHint':
    'Edit anything — your changes carry into the agent\'s brief.',
  'newproj.promptTemplateBodyEmpty':
    'Empty body — the agent will get no template reference.',

  'designs.subRecent': 'Recent',
  'designs.subYours': 'Your designs',
  'designs.filterAria': 'Filter projects',
  'designs.searchPlaceholder': 'Search…',
  'designs.emptyNoProjects': 'No projects yet. Create one on the left.',
  'designs.emptyNoMatch': 'No projects match your search.',
  'designs.deleteTitle': 'Delete project',
  'designs.deleteConfirm': 'Delete "{name}"?',
  'designs.cardFreeform': 'freeform',
  'designs.badgeLive': 'Live',
  'designs.liveArtifactBadgesAria': 'Live artifact badges',
  'designs.liveCount': '{n} live',
  'designs.statusLive': 'Live artifact',
  'designs.statusArchived': 'Archived',
  'designs.statusError': 'Error',
  'designs.statusRefreshing': 'Refreshing…',
  'designs.statusRefreshFailed': 'Refresh failed',
  'designs.statusRefreshed': 'Refreshed',
  'designs.status.notStarted': 'Not started',
  'designs.status.queued': 'Queued',
  'designs.status.running': 'Running',
  'designs.status.awaitingInput': 'Needs input',
  'designs.status.succeeded': 'Completed',
  'designs.status.failed': 'Failed',
  'designs.status.canceled': 'Canceled',
  'designs.viewToggleAria': 'View mode',
  'designs.viewGrid': 'Grid view',
  'designs.viewKanban': 'Board view',
  'designs.kanbanEmptyColumn': 'No designs',
  'designs.deleteAria': 'Delete project {name}',

  'examples.typeLabel': 'Type',
  'examples.surfaceLabel': 'Surface',
  'examples.surfaceWeb': 'Web',
  'examples.surfaceImage': 'Image',
  'examples.surfaceVideo': 'Video',
  'examples.surfaceAudio': 'Audio',
  'examples.scenarioLabel': 'Scenario',
  'examples.modeAll': 'All',
  'examples.modePrototypeDesktop': 'Prototypes · Desktop',
  'examples.modePrototypeMobile': 'Prototypes · Mobile',
  'examples.modeDeck': 'Slides',
  'examples.modeDocument': 'Docs & templates',
  'examples.modeOrbit': 'Orbit',
  'examples.scenarioGeneral': 'General',
  'examples.scenarioEngineering': 'Engineering',
  'examples.scenarioProduct': 'Product',
  'examples.scenarioDesign': 'Design',
  'examples.scenarioMarketing': 'Marketing',
  'examples.scenarioSales': 'Sales',
  'examples.scenarioFinance': 'Finance',
  'examples.scenarioHr': 'HR',
  'examples.scenarioOperations': 'Operations',
  'examples.scenarioSupport': 'Support',
  'examples.scenarioLegal': 'Legal',
  'examples.scenarioEducation': 'Education',
  'examples.scenarioPersonal': 'Personal',
  'examples.searchPlaceholder': 'Search examples…',
  'examples.searchAria': 'Search examples by name',
  'examples.emptyNoSkills': 'No skills available. Is the daemon running?',
  'examples.emptyNoMatch': 'No examples match these filters.',
  'examples.openPreview': '⤢ Open preview',
  'examples.loadingPreview': 'Loading preview…',
  'examples.hoverPreview': 'Hover to preview',
  'examples.usePrompt': 'Use this prompt',
  'examples.previewModalTitle': 'Open full preview (modal)',
  'examples.shareTitle': 'Share this example',
  'examples.shareLoadFirst': 'Hover to load preview first',
  'examples.shareMenu': 'Share ▾',
  'examples.exportPdfAllSlides': 'Export as PDF (all slides)',
  'examples.exportPptxLocked': 'Export as PPTX… (open template first)',
  'examples.tagSlideDeck': 'Slide deck',
  'examples.tagTemplate': 'Template',
  'examples.tagDesignSystem': 'Design system',
  'examples.tagMobilePrototype': 'Mobile prototype',
  'examples.tagDesktopPrototype': 'Desktop prototype',
  'examples.tagImage': 'Image',
  'examples.tagVideo': 'Video',
  'examples.tagAudio': 'Audio',
  'examples.previewLabel': 'Preview',

  'ds.surfaceLabel': 'Surface',
  'ds.surfaceWeb': 'Web',
  'ds.surfaceImage': 'Image',
  'ds.surfaceVideo': 'Video',
  'ds.surfaceAudio': 'Audio',
  'ds.searchPlaceholder': 'Search design systems…',
  'ds.emptyNoMatch': 'No design systems match your search.',
  'ds.badgeDefault': 'DEFAULT',
  'ds.preview': 'Preview',
  'ds.previewTitle': 'Preview design system',
  'ds.categoryAll': 'All',
  'ds.categoryUncategorized': 'Uncategorized',
  'ds.showcase': 'Showcase',
  'ds.tokens': 'Tokens',
  'ds.specToggle': 'DESIGN.md',
  'ds.specLoading': 'Loading DESIGN.md…',

  'avatar.title': 'Account & settings',
  'avatar.localCli': 'Local CLI',
  'avatar.anthropicApi': 'Anthropic API',
  'avatar.useLocal': 'Use Local CLI',
  'avatar.useApi': 'Use API · BYOK',
  'avatar.codeAgent': 'Code agent',
  'avatar.rescan': 'Rescan PATH',
  'avatar.settings': 'Settings',
  'avatar.backToProjects': 'Back to projects',
  'avatar.metaActive': 'active',
  'avatar.metaOffline': 'offline',
  'avatar.metaSelected': 'selected',
  'avatar.noAgentSelected': 'no agent selected',
  'avatar.modelSection': 'Model',
  'avatar.modelLabel': 'Model',
  'avatar.reasoningLabel': 'Reasoning',
  'avatar.customSuffix': '(custom)',

  'project.backToProjects': 'Back to projects',
  'project.metaFreeform': 'freeform',
  'project.resizeChatPanel': 'Resize chat panel',
  'chat.tabChat': 'Chat',
  'chat.tabComments': 'Comments',
  'chat.commentsSoon': 'Comments — coming soon',
  'chat.comments.attached': 'Attached to chat',
  'chat.comments.emptyAttached': 'No comments attached.',
  'chat.comments.saved': 'Saved comments',
  'chat.comments.emptySaved': 'No saved comments.',
  'chat.comments.add': 'Add',
  'chat.comments.addAll': 'Add all',
  'chat.comments.remove': 'Remove',
  'chat.comments.placeholder': 'Comment on this element…',
  'chat.comments.addSend': 'Add & send',
  'chat.comments.updateSend': 'Update & send',
  'chat.comments.removeAttachment': 'Remove comment attachment',
  'chat.comments.removeAttachmentAria': 'Remove comment attachment for {name}',
  'chat.conversationsTitle': 'Conversations',
  'chat.conversationsAria': 'Conversation history',
  'chat.newConversation': 'New conversation',
  'chat.newConversationsTitle': 'New conversation',
  'chat.conversationsHeading': 'Conversations',
  'chat.new': 'New',
  'chat.emptyConversations': 'No conversations yet.',
  'chat.deleteConversation': 'Delete conversation',
  'chat.deleteConversationConfirm':
    'Delete "{title}"? This removes its messages.',
  'chat.untitledConversation': 'Untitled conversation',
  'chat.startTitle': 'Start a conversation',
  'chat.startHint':
    'Drop or paste images for visual reference, or type @ to attach a file from this project. Or try one of these starters:',
  'chat.fillInputTitle': 'Click to fill the input',
  'chat.jumpToLatest': 'Jump to latest',
  'chat.scrollToLatest': 'Scroll to latest',
  'chat.you': 'You',
  'chat.openFile': 'Open {name}',
  'chat.composerPlaceholder':
    'Describe the design you want — paste or drop images, or @ a file…',
  'chat.composerHint':
    '⌘/Ctrl + Enter to send · paste images · @ to reference files',
  'chat.cliSettingsTitle': 'CLI & model settings',
  'chat.cliSettingsAria': 'Open CLI and model settings',
  'chat.attachTitle': 'Attach files (or paste / drop)',
  'chat.attachAria': 'Attach files',
  'chat.importTitle': 'Import sources (coming soon)',
  'chat.importLabel': 'Import',
  'chat.importComingSoon': 'Coming soon',
  'chat.importSoon': 'Soon',
  'chat.importFig': 'Upload .fig file',
  'chat.importGitHub': 'Connect GitHub',
  'chat.importWeb': 'Grab web element',
  'chat.importFolder': 'Link code folder',
  'chat.importSkills': 'Skills and design systems',
  'chat.importProject': 'Reference another project',
  'chat.linkedFolderRemoveAria': 'Remove linked folder {path}',
  'chat.linkedFolderNotFound': 'Folder does not exist',
  'chat.linkedFolderAlready': 'This folder is already linked',
  'chat.linkedFolderPickError': 'Could not open folder picker',
  'chat.send': 'Send',
  'chat.stop': 'Stop',
  'chat.removeAria': 'Remove {name}',
  'chat.example1Title': 'Editorial pitch deck',
  'chat.example1Tag': 'Magazine',
  'chat.example1Prompt':
    'A 10-slide editorial pitch deck for a design studio raising a seed round — Swiss-grid layout, oversized serif headlines with bold drop caps, monospace section numbers, generous negative space, and full-bleed photo slides interleaved with text-heavy ones. Cover, vision, market, product, traction, team, ask, contact.',
  'chat.example2Title': 'SaaS analytics dashboard',
  'chat.example2Tag': 'Data',
  'chat.example2Prompt':
    'A dense analytics dashboard for a developer-tools SaaS — KPI strip with week-over-week deltas, two stacked line charts (MRR and active workspaces), a world heatmap of usage, a cohort retention grid, a top-customers leaderboard, and a real-time event feed. Dark theme, tabular monospace numerals, sparkline accents.',
  'chat.example3Title': 'Annual report long-scroll',
  'chat.example3Tag': 'Editorial',
  'chat.example3Prompt':
    'An interactive annual report for a climate non-profit — long-scroll editorial layout mixing big pull-quote blocks, data visualizations (stacked bars, animated counters, a choropleth map of project sites), photography breakers, donor wall, and a final call-to-action. Modern serif body, sans-serif chart labels, earthy paper palette.',

  'preview.shareMenu': 'Share ▾',
  'preview.openInNewTab': 'Open in new tab',
  'preview.exit': '⤓ Exit',
  'preview.fullscreen': '⤢ Fullscreen',
  'preview.closeTitle': 'Close (Esc)',
  'preview.loading': 'Loading {label}…',
  'preview.showSidebar': 'Show {label}',
  'preview.hideSidebar': 'Hide {label}',

  'misc.savedTemplate': 'Saved template',
  'misc.primary': 'Primary',
  'misc.designSystem': 'Design system',

  'workspace.designFiles': 'Design Files',
  'workspace.focusMode': 'Focus workspace',
  'workspace.showChat': 'Show chat',
  'workspace.closeTab': 'Close tab',
  'workspace.deleteFileConfirm': 'Delete "{name}" from the project folder?',
  'workspace.openFromDesignFiles': 'Open a file from',
  'workspace.designFilesLink': 'Design Files',
  'workspace.loadingSketch': 'Loading sketch…',
  'designFiles.title': 'Design Files',
  'designFiles.upload': 'Upload files',
  'designFiles.pasteText': 'Paste as text file',
  'designFiles.newSketch': 'New sketch',
  'designFiles.empty':
    'Nothing here yet. Drop files below, or create a sketch / paste text.',
  'designFiles.refresh': 'Refresh',
  'designFiles.delete': 'Delete',
  'designFiles.searchPlaceholder': 'Search files…',
  'designFiles.up': 'Up',
  'designFiles.back': 'Back',
  'designFiles.crumbs': 'project',
  'designFiles.rowMenu': 'Row menu',
  'designFiles.openInTab': 'Open in tab',
  'designFiles.download': 'Download',
  'designFiles.downloadSelected': 'Download {n} as ZIP',
  'designFiles.clearSelection': 'Clear',
  'designFiles.selectAll': 'Select all',
  'designFiles.dropTitle': '⤓ Drop files here',
  'designFiles.dropDesc':
    'Images, docs, references, or folders — the agent will use them as context.',
  'designFiles.upload.title': 'Upload files',
  'designFiles.paste.title': 'Paste text as a file',
  'designFiles.upload.label': 'Upload',
  'designFiles.paste.label': 'Paste',
  'designFiles.previewOpen': 'Open',
  'designFiles.previewClose': 'Close preview',
  'designFiles.modified': 'Modified {time} · {size}',
  'designFiles.weeksAgo': '{n}w ago',
  'designFiles.sectionPages': 'Pages',
  'designFiles.sectionScripts': 'Scripts',
  'designFiles.sectionImages': 'Images',
  'designFiles.sectionSketches': 'Sketches',
  'designFiles.sectionLiveArtifacts': 'Live artifacts',
  'designFiles.sectionOther': 'Other',
  'designFiles.showMore': 'Show +{n} more',
  'designFiles.kindHtml': 'HTML page',
  'designFiles.kindImage': 'Image',
  'designFiles.kindSketch': 'Sketch',
  'designFiles.kindText': 'Text',
  'designFiles.kindCode': 'Script',
  'designFiles.kindPdf': 'PDF',
  'designFiles.kindDocument': 'Document',
  'designFiles.kindPresentation': 'Presentation',
  'designFiles.kindSpreadsheet': 'Spreadsheet',
  'designFiles.kindLiveArtifact': 'Live artifact',
  'designFiles.kindBinary': 'Binary',
  'quickSwitcher.placeholder': 'Open file…',
  'quickSwitcher.empty': 'No files in this project',
  'quickSwitcher.noMatches': 'No matches',
  'quickSwitcher.navigate': 'navigate',
  'quickSwitcher.open': 'open',
  'quickSwitcher.close': 'close',
  'pasteDialog.title': 'Paste text',
  'pasteDialog.hint': 'Saved into the project folder. Pick any name.',
  'pasteDialog.fileNameLabel': 'File name',
  'pasteDialog.namePlaceholder': 'notes.txt',
  'pasteDialog.contentLabel': 'Content',
  'pasteDialog.contentPlaceholder': 'Paste anything…',
  'pasteDialog.save': 'Save',
  'pasteDialog.cancel': 'Cancel',
  'sketch.save': 'Save sketch',
  'sketch.cancel': 'Cancel',
  'sketch.saving': 'Saving…',
  'sketch.tooltipDirty': 'Unsaved changes',
  'sketch.tooltipClean': 'Saved',
  'fileViewer.empty': 'Select a file to view.',
  'fileViewer.loading': 'Loading…',
  'fileViewer.exportPptx': 'Export as PPTX',
  'fileViewer.openInNewTab': 'Open in new tab',
  'fileViewer.copyPath': 'Copy path',
  'fileViewer.copied': 'Copied!',
  'fileViewer.share': 'Share',
  'fileViewer.binaryMeta': 'Binary · {size}',
  'fileViewer.binaryNote':
    'Binary file ({size} bytes). Download or open from disk to inspect.',
  'fileViewer.pdfMeta': 'PDF · {size}',
  'fileViewer.documentMeta': 'Document',
  'fileViewer.presentationMeta': 'Presentation',
  'fileViewer.spreadsheetMeta': 'Spreadsheet',
  'fileViewer.previewUnavailable': 'Preview unavailable. Download or open the file to inspect.',
  'fileViewer.download': 'Download',
  'fileViewer.open': 'Open',
  'fileViewer.imageMeta': 'Image · {size}',
  'fileViewer.reactMeta': 'React component · {size}',
  'fileViewer.sketchMeta': 'Sketch · {size}',
  'fileViewer.markdownStreamingMeta': 'Streaming preview…',
  'fileViewer.markdownErrorMeta': 'Preview may be incomplete (generation error).',
  'fileViewer.markdownStreamingStatus': 'Streaming… showing partial markdown.',
  'fileViewer.markdownErrorStatus': 'Generation error. Showing last available content.',
  'fileViewer.videoMeta': 'Video · {size}',
  'fileViewer.audioMeta': 'Audio · {size}',
  'fileViewer.reload': 'Reload',
  'fileViewer.reloadDisk': 'Reload from disk',
  'fileViewer.copy': 'Copy',
  'fileViewer.copyTitle': 'Copy file contents',
  'fileViewer.saveDisabled': 'Save (read-only viewer)',
  'fileViewer.save': 'Save',
  'fileViewer.preview': 'Preview',
  'fileViewer.source': 'Source',
  'fileViewer.tweaks': 'Tweaks',
  'fileViewer.comment': 'Comment',
  'fileViewer.edit': 'Edit',
  'fileViewer.draw': 'Draw',
  'manualEdit.layers': "Layers",
  'manualEdit.editableCount': "{count} editable",
  'manualEdit.title': "Manual editor",
  'manualEdit.selectLayer': "Select a layer",
  'manualEdit.empty': "Click an element in the preview or choose a layer.",
  'manualEdit.noClass': "no class",
  'manualEdit.tabsAria': "Manual edit tabs",
  'manualEdit.tabContent': "Content",
  'manualEdit.tabStyle': "Style",
  'manualEdit.tabAttributes': "Attributes",
  'manualEdit.tabHtml': "Html",
  'manualEdit.tabSource': "Source",
  'manualEdit.attributesJson': "Attributes JSON",
  'manualEdit.selectedHtml': "Selected element HTML",
  'manualEdit.fullSource': "Full artifact source",
  'manualEdit.applyContent': "Apply Content",
  'manualEdit.applyStyle': "Apply Style",
  'manualEdit.applyAttributes': "Apply Attributes",
  'manualEdit.applyHtml': "Apply HTML",
  'manualEdit.applySource': "Apply Source",
  'manualEdit.invalidAttributes': "Invalid attributes JSON.",
  'manualEdit.changes': "Changes",
  'manualEdit.undo': "Undo",
  'manualEdit.redo': "Redo",
  'manualEdit.noChanges': "No manual edits yet.",
  'manualEdit.imageUrl': "Image URL",
  'manualEdit.altText': "Alt text",
  'manualEdit.label': "Label",
  'manualEdit.text': "Text",
  'manualEdit.href': "Href",
  'manualEdit.textColor': "Text color",
  'manualEdit.background': "Background",
  'manualEdit.fontSize': "Font size",
  'manualEdit.weight': "Weight",
  'manualEdit.align': "Align",
  'manualEdit.padding': "Padding",
  'manualEdit.margin': "Margin",
  'manualEdit.radius': "Radius",
  'manualEdit.border': "Border",
  'manualEdit.width': "Width",
  'manualEdit.minHeight': "Min height",
  'fileViewer.zoomOut': 'Zoom out',
  'fileViewer.zoomIn': 'Zoom in',
  'fileViewer.resetZoom': 'Reset zoom',
  'fileViewer.reloadAria': 'Reload',
  'fileViewer.previousSlide': 'Previous slide',
  'fileViewer.nextSlide': 'Next slide',
  'fileViewer.slideNavAria': 'Slide navigation',
  'fileViewer.present': 'Present',
  'fileViewer.presentInTab': 'In this tab',
  'fileViewer.presentFullscreen': 'Fullscreen',
  'fileViewer.presentNewTab': 'New tab',
  'fileViewer.exitPresentation': 'Exit presentation',
  'fileViewer.shareLabel': 'Share',
  'fileViewer.exportPdf': 'Export as PDF',
  'fileViewer.exportPdfAllSlides': 'Export as PDF (all slides)',
  'fileViewer.exportPptxBusy': 'Wait for the current turn to finish.',
  'fileViewer.exportPptxHint':
    'Send a request to the agent to convert this design to PPTX.',
  'fileViewer.exportPptxNa': 'PPTX export is not available here.',
  'fileViewer.exportZip': 'Download as .zip',
  'fileViewer.exportHtml': 'Export as standalone HTML',
  'fileViewer.exportMd': 'Export as Markdown',
  'fileViewer.exportJsx': 'Export as JSX',
  'fileViewer.exportReactHtml': 'Export preview as HTML',
  'fileViewer.saveAsTemplate': 'Save as template…',
  'fileViewer.savingTemplate': 'Saving template…',
  'fileViewer.savedTemplate': 'Saved as "{name}"',
  'fileViewer.savedTemplateFail': 'Could not save template — try again.',
  'fileViewer.templateNamePrompt': 'Template name',
  'fileViewer.templateNameDefault': 'Untitled template',
  'fileViewer.templateDescPrompt':
    'Short description (optional — what makes this template useful?)',
  'liveArtifact.refresh.button': 'Refresh',
  'liveArtifact.refresh.buttonTitle': 'Refresh this live artifact',
  'liveArtifact.refresh.loadingTitle': 'Loading live artifact…',
  'liveArtifact.refresh.noSourceTitle': 'No refresh source is available yet.',
  'liveArtifact.refresh.running': 'Refreshing…',
  'liveArtifact.refresh.runningMessage': 'Refreshing data and preview. This can take a moment.',
  'liveArtifact.refresh.runningAction': 'The previous preview stays visible until the refresh succeeds.',
  'liveArtifact.refresh.successOne': 'Refresh complete. Data updated.',
  'liveArtifact.refresh.successMany': 'Refresh complete. Data updated.',
  'liveArtifact.refresh.successAction': 'The preview has been reloaded with the latest committed data.',
  'liveArtifact.refresh.previousFailure': 'Previous refresh failed: {message}',
  'liveArtifact.refresh.failureAction': 'Review Refresh history, fix the source or permission issue, then try again.',
  'liveArtifact.refresh.networkFailure': 'Refresh request failed. Check your connection and try again.',
  'liveArtifact.refresh.genericFailure': 'Refresh failed.',
  'liveArtifact.refresh.statusNever': 'Not refreshable',
  'liveArtifact.refresh.statusReady': 'Ready to refresh',
  'liveArtifact.refresh.statusSucceeded': 'Up to date',
  'liveArtifact.refresh.statusFailed': 'Refresh failed',
  'fileViewer.deployToVercel': 'Deploy to Vercel',
  'fileViewer.redeployToVercel': 'Redeploy',
  'fileViewer.deployingToVercel': 'Deploying to Vercel…',
  'fileViewer.preparingPublicLink': 'Preparing public link…',
  'fileViewer.copyDeployLink': 'Copy link',
  'fileViewer.deployModalTitle': 'Deploy to Vercel',
  'fileViewer.deployModalSubtitle':
    'Deploy this HTML artifact as a Vercel Preview using your own account.',
  'fileViewer.vercelToken': 'Vercel token',
  'fileViewer.vercelTokenGetLink': 'Get Vercel token',
  'fileViewer.vercelTokenPlaceholder': 'Paste your Vercel token',
  'fileViewer.vercelTokenReuseHint':
    'Saved token will be used. Enter a new token to replace it.',
  'fileViewer.vercelTokenRequired': 'Enter and save a Vercel token first.',
  'fileViewer.vercelTeamId': 'Team ID',
  'fileViewer.vercelTeamSlug': 'Team slug',
  'fileViewer.optional': 'Optional',
  'fileViewer.vercelPreviewOnly': 'Deploys are Preview-only for now.',
  'fileViewer.savingConfig': 'Saving…',
  'fileViewer.deployConfigSaveFailed': 'Could not save Vercel settings.',
  'fileViewer.deployFailed': 'Deploy failed. Check Vercel settings and try again.',
  'fileViewer.deployResultLabel': 'Deployed URL',
  'fileViewer.deployLinkPreparingLabel': 'Public link pending',
  'fileViewer.deployLinkDelayed':
    'Your site is deployed. Vercel is still preparing the public link.',
  'fileViewer.deployLinkProtectedLabel': 'Vercel protection enabled',
  'fileViewer.deployLinkProtected':
    'Your site deployed, but Vercel is requiring authentication for this preview link. Disable Deployment Protection or use a custom domain.',
  'fileViewer.retryLink': 'Retry now',

  'questionForm.submit': 'Submit',
  'questionForm.skip': 'Skip',
  'questionForm.locked': 'Answered',

  'conv.switch': 'Switch conversation',
  'conv.label': 'Conversation',
  'conv.heading': 'Conversations',
  'conv.new': '+ New',
  'conv.empty': 'No conversations yet.',
  'conv.untitled': 'Untitled conversation',
  'conv.renameTooltip': 'Double-click to rename',
  'conv.delete': 'Delete conversation',
  'conv.deleteConfirm': 'Delete "{title}"? This removes its messages.',

  'agentPicker.label': 'Agent',
  'agentPicker.modeChoose': 'Choose execution mode',
  'agentPicker.localCli': 'Local CLI',
  'agentPicker.daemonOff': 'daemon off',
  'agentPicker.byok': 'API · BYOK',
  'agentPicker.selectAgent': 'Select a detected code-agent CLI',
  'agentPicker.noAgents': 'no agents on PATH',
  'agentPicker.notInstalled': 'not installed',
  'agentPicker.rescan': 'Re-scan local PATH for agents',

  'tool.openInTab': 'Open {name} in a tab',
  'tool.open': 'open',
  'tool.todos': 'Todos',
  'tool.write': 'Write',
  'tool.edit': 'Edit',
  'tool.read': 'Read',
  'tool.bash': 'Bash',
  'tool.glob': 'Glob',
  'tool.grep': 'Grep',
  'tool.fetch': 'Fetch',
  'tool.search': 'Search',
  'tool.lines': '{n} lines',
  'tool.changeSingular': 'change',
  'tool.changePlural': 'changes',
  'tool.in': 'in {path}',
  'tool.hide': 'hide',
  'tool.output': 'output',
  'tool.running': 'running…',
  'tool.error': 'error',
  'tool.done': 'done',

  'assistant.role': 'Assistant',
  'assistant.workingLabel': 'Working',
  'assistant.doneLabel': 'Done',
  'assistant.unfinishedLabel': 'Stopped with unfinished work',
  'assistant.unfinishedSummary': '{n} task(s) remain',
  'assistant.unfinishedMore': '+{n} more',
  'assistant.continueRemaining': 'Continue remaining tasks',
  'assistant.outTokens': '{n} out',
  'assistant.producedFiles': 'Files from this turn',
  'assistant.openFile': 'Open',
  'assistant.downloadFile': 'Download',
  'assistant.thinking': 'Thinking',
  'assistant.systemReminder': 'System reminder',
  'assistant.waitingFirstOutput': 'Waiting for first output',
  'assistant.statusBootingAgent': 'Booting agent',
  'assistant.statusStarting': 'Starting',
  'assistant.statusRequesting': 'Sending request',
  'assistant.statusThinking': 'Thinking',
  'assistant.statusStreaming': 'Streaming',
  'assistant.slowHint':
    'Taking longer than usual. The form usually shows in 5–10s — you can Stop and rephrase.',
  'assistant.verbEditing': 'Editing',
  'assistant.verbWriting': 'Writing',
  'assistant.verbReading': 'Reading',
  'assistant.verbSearching': 'Searching',
  'assistant.verbRunning': 'Running',
  'assistant.verbTodos': 'Todos',
  'assistant.verbFetching': 'Fetching',
  'assistant.verbCalling': 'Calling',

  'qf.answered': 'answered',
  'qf.choose': 'Choose…',
  'qf.required': 'required',
  'qf.lockedSubmitted':
    'Answers sent — agent is using these for the rest of the session.',
  'qf.lockedPrev': 'This form is from a previous turn.',
  'qf.hint':
    "Pick what fits. Skip optional fields you don't care about — the agent will use sensible defaults.",
  'qf.submitDefault': 'Send answers',
  'qf.submitDisabledTitle': 'Fill in the required fields first',
  'qf.submitTitle': 'Send answers',
  'qf.cardSelected': 'selected',
  'qf.cardRefs': 'Refs:',
  'qf.cardSampleText': 'The quick brown fox · 0123',

  'sketch.toolSelect': 'Select (no-op)',
  'sketch.toolPen': 'Pen',
  'sketch.toolText': 'Text',
  'sketch.toolRect': 'Rectangle',
  'sketch.toolArrow': 'Arrow',
  'sketch.toolEraser': 'Eraser',
  'sketch.color': 'Color',
  'sketch.strokeSize': 'Stroke size',
  'sketch.undo': 'Undo',
  'sketch.clear': 'Clear',
  'sketch.close': 'Close',
  'sketch.textPrompt': 'Text:',

  'pet.title': 'Pets',
  'pet.subtitle': 'Adopt a tiny companion that floats over your workspace.',
  'pet.navTitle': 'Pets',
  'pet.navHint': 'Adopt or customize',
  'pet.tabBuiltIn': 'Built-in',
  'pet.tabBuiltInHint': 'Curated companions bundled with Open Design — pick one and adopt.',
  'pet.builtInEmpty': 'Built-in pets are unavailable right now. Try refreshing the Community tab once the daemon is online.',
  'pet.tabCustom': 'Custom',
  'pet.tabCustomHint': 'Make your own with a name, glyph, color or sprite.',
  'pet.tabCommunity': 'Community',
  'pet.tabCommunityHint': 'Hatched pets from Codex — adopt one or generate a new one.',
  'pet.tabsAria': 'Pet source',
  'pet.adopt': 'Adopt',
  'pet.adoptedBadge': 'Adopted',
  'pet.adoptCallout': 'Adopt a pet',
  'pet.changePet': 'Change pet',
  'pet.wake': 'Wake',
  'pet.tuck': 'Tuck away',
  'pet.wakeTitle': 'Wake the pet — show the floating overlay.',
  'pet.tuckTitle': 'Tuck the pet away — hide the floating overlay.',
  'pet.settingsTitle': 'Open pet settings',
  'pet.useCustom': 'Use my pet',
  'pet.customTitle': 'Make your own',
  'pet.customHint': 'Pick a name, glyph and accent — the overlay updates live.',
  'pet.customGreetingPlaceholder': 'Say hi from your pet…',
  'pet.fieldName': 'Name',
  'pet.fieldGlyph': 'Glyph',
  'pet.fieldGlyphHint': 'A single emoji works best (e.g. 🐝, 🦄, 🐢).',
  'pet.fieldGreeting': 'Greeting',
  'pet.fieldAccent': 'Accent color',
  'pet.fieldAccentCustom': 'Custom color',
  'pet.overlayAria': 'Pet companion',
  'pet.spriteAria': '{name} — drag to move, click to chat',
  'pet.spriteTitle': 'Hi from {name}! Click to chat.',
  'pet.railAria': 'Pet picker',
  'pet.railTitle': 'Pets',
  'pet.railHint': 'Pick a companion to float over your workspace.',
  'pet.railExpand': 'Show pet picker',
  'pet.railCollapse': 'Collapse pet picker',
  'pet.railHide': 'Hide pet picker',
  'pet.railShow': 'Show pet picker',
  'pet.railCustomFlavor': 'Your own — name, glyph, color.',
  'pet.railCustomize': 'Customize…',
  'pet.composerTitle': 'Pets — wake, tuck, or pick one',
  'pet.composerMenuTitle': 'Pets',
  'pet.composerMenuHint': 'tip: type /pet to toggle',
  'pet.composerOpenSettings': 'Customize in Settings',
  'pet.welcomeTeaserTitle': 'Adopt a pet',
  'pet.welcomeTeaserBody': 'A tiny floating companion that hangs out with you.',
  'pet.welcomeTeaserCta': 'Pick one',
  'pet.imageUpload': 'Upload sprite',
  'pet.imageReplace': 'Replace sprite',
  'pet.imageRemove': 'Use emoji',
  'pet.imageHintIdle': 'PNG, JPG, WebP, GIF or SVG. Sheet upload? Drop a horizontal strip and set the frame count.',
  'pet.imageHintActive': 'Showing your sprite. Set frames > 1 to walk a horizontal spritesheet.',
  'pet.fieldFrames': 'Frames',
  'pet.fieldFramesHint': '1 = static. > 1 = horizontal spritesheet.',
  'pet.fieldFps': 'Speed (fps)',
  'pet.fieldFpsHint': 'How quickly the frames cycle.',
  'pet.atlasImport': 'Import Codex sprite',
  'pet.atlasImportTitle': 'Import a hatch-pet 8x9 / 192x208 atlas (PNG or WebP).',
  'pet.atlasPickerTitle': 'Pick an animation row',
  'pet.atlasPickerHint': 'Codex pets ship 9 animation rows. By default we keep the full atlas so the pet swaps rows on hover, drag, and idle. You can also freeze it to a single loop.',
  'pet.atlasCancel': 'Discard atlas',
  'pet.atlasAdopt': 'Freeze to this row',
  'pet.atlasAdoptFull': 'Use full atlas (animated)',
  'pet.atlasAdoptFullTitle': 'Keep every row so the pet reacts to hover, drag direction, and long idles.',
  'pet.atlasAdoptRowTitle': 'Slice just the highlighted row into a single looping strip.',
  'pet.atlasActiveHint': 'Animated atlas active — the pet picks a row from your interaction (hover, drag, idle).',
  'pet.atlasRow.idle': 'Idle',
  'pet.atlasRow.running-right': 'Run right',
  'pet.atlasRow.running-left': 'Run left',
  'pet.atlasRow.waving': 'Waving',
  'pet.atlasRow.jumping': 'Jumping',
  'pet.atlasRow.failed': 'Failed',
  'pet.atlasRow.waiting': 'Waiting',
  'pet.atlasRow.running': 'Running',
  'pet.atlasRow.review': 'Review',
  'pet.hatchTitle': 'Hatch a new pet with AI',
  'pet.hatchHint': 'Use the bundled hatch-pet skill in chat to generate a Codex-style spritesheet, then import it here.',
  'pet.hatchConcept': 'Pet concept (optional)',
  'pet.hatchConceptPlaceholder': 'e.g. a tiny pixel-art shiba in a cozy sweater',
  'pet.hatchCopy': 'Copy prompt',
  'pet.hatchCopied': 'Copied!',
  'pet.hatchFoot': 'After the skill saves your pet, come back and pick "Import Codex sprite".',
  'pet.slashPopoverAria': 'Slash commands',
  'pet.slashPopoverTitle': 'Commands',
  'pet.slashPopoverHint': '↑↓ navigate · enter to pick · esc to dismiss',
  'pet.slashPet': 'Toggle, adopt, or jump to pet settings.',
  'pet.slashPetWake': 'Wake the floating pet overlay.',
  'pet.slashPetTuck': 'Tuck the pet away for now.',
  'pet.slashHatch': 'Generate a Codex pet via the hatch-pet skill.',
  'pet.slashHatchArg': '<concept>',
  'pet.codexTitle': 'Recently hatched',
  'pet.codexSubtitle': 'Pets packaged by the hatch-pet skill show up here for one-click adoption.',
  'pet.codexSubtitleWithDir': 'Scanning {dir} for pets packaged by the hatch-pet skill.',
  'pet.codexEmpty': 'No hatched pets yet. Type /hatch in chat to generate one.',
  'pet.codexLoading': 'Looking for hatched pets…',
  'pet.codexRefresh': 'Refresh',
  'pet.codexAdopt': 'Adopt',
  'pet.codexAdopting': 'Adopting…',
  'pet.communitySync': 'Download community pets',
  'pet.communitySyncing': 'Downloading…',
  'pet.communitySyncTitle': 'Sync the latest pets from Codex Pet Share + j20 Hatchery into ~/.codex/pets/.',
  'pet.communitySyncDone': 'Synced {wrote} new pets ({total} total).',
  'pet.communitySyncFailed': 'Sync failed: {error}',
  'pet.codexBundled': 'Bundled',
  'pet.codexBundledTitle': 'Ships with Open Design — no download needed.',

  'settings.notifications': 'Notifications',
  'settings.notificationsHint': 'Sound and desktop notification on task completion',
  'settings.notifyCompletionSound': 'Completion sound',
  'settings.notifyCompletionSoundHint': 'Plays when a turn finishes. Off by default.',
  'settings.notifySuccessSound': 'Success sound',
  'settings.notifyFailureSound': 'Failure sound',
  'settings.notifyDesktop': 'Desktop notification',
  'settings.notifyDesktopHint': 'Sent when the window is not focused.',
  'settings.notifyDesktopBlocked': 'Notifications blocked by the browser. Allow them in site settings.',
  'settings.notifyDesktopUnsupported': 'Desktop notifications unavailable in this environment.',
  'settings.notifyTest': 'Send test',
  'settings.notifyTestSent': 'Test notification sent. If no banner appears, check browser and system notification settings.',
  'settings.notifyTestFailed': 'Notification call failed. Check browser and system notification settings.',
  'settings.notifySoundDing': 'Ding',
  'settings.notifySoundChime': 'Chime',
  'settings.notifySoundTwoToneUp': 'Two-tone up',
  'settings.notifySoundPluck': 'Pluck',
  'settings.notifySoundBuzz': 'Buzz',
  'settings.notifySoundTwoToneDown': 'Two-tone down',
  'settings.notifySoundThud': 'Thud',
  'settings.library': 'Skills & Design Systems',
  'settings.libraryHint': 'Browse, preview, and toggle your content library',
  'settings.librarySkills': 'Skills',
  'settings.libraryDesignSystems': 'Design Systems',
  'settings.librarySearch': 'Search...',
  'settings.libraryAll': 'All',
  'settings.libraryPreview': 'Preview',
  'settings.libraryPreviewClose': 'Close',
  'settings.libraryLoading': 'Loading...',
  'settings.libraryNoResults': 'No items match your search.',
  'settings.libraryEnabled': 'Enabled',
  'settings.libraryDisabled': 'Disabled',
  'settings.libraryToggleLabel': 'Toggle',
  'notify.successTitle': 'Task completed',
  'notify.failureTitle': 'Task failed',
  'notify.successBody': 'A turn has finished.',
  'notify.failureBody': 'The task ended with an error.',
};
