// English is the source-of-truth catalog: its keys define the message contract
// every other locale fills in. Other locales are `Partial<Messages>` and fall
// back to these strings per-key, so a missing translation degrades to English
// rather than to a raw key.
//
// Placeholder syntax is `{name}` (see `interpolate` in ../catalog.ts).
export const en = {
  // --- Tray menu (main process, src/tray.ts) ---
  "tray.updateAvailable": "Update available: {version}...",
  "tray.defaultPet": "Default Pet: {name}",
  "tray.showDefaultPet": "Show Default Pet",
  "tray.hideDefaultPet": "Hide Default Pet",
  "tray.pauseAllPets": "Pause All Pets",
  "tray.resumeAllPets": "Resume All Pets",
  "tray.managePets": "Manage Pets...",
  "tray.controlCenter": "Control Center...",
  "tray.website": "Website...",
  "tray.integrations": "Integrations...",
  "tray.plugins": "Plugins...",
  "tray.settings": "Settings...",
  "tray.openLogsFolder": "Open Logs Folder...",
  "tray.quit": "Quit OpenPets",

  // --- Shared ---
  "common.latest": "latest",
  "common.builtInPet": "Built-in Pet",
  "common.cancel": "Cancel",

  // --- Pet window (main process, src/pet-window.ts) ---
  "pet.paused": "Paused",
  "pet.status.thinking": "Thinking",
  "pet.status.working": "Working",
  "pet.status.editing": "Editing",
  "pet.status.testing": "Testing",
  "pet.status.waiting": "Waiting",
  "pet.status.done": "Done",
  "pet.status.oops": "Oops",
  "pet.status.hi": "Hi",
  "pet.menu.hidePet": "Hide pet",
  "pet.menu.closePet": "Close pet",
  "pet.menu.openControlCenter": "Open Control Center",
  "pet.menu.focusSessionWindow": "Focus session window",
  "pet.menu.focusSessionWindowNoA11y": "Focus session window (needs Accessibility)",
  "pet.fallback.unavailableTitle": "Pet \"{petId}\" unavailable",
  "pet.fallback.unavailableBody": "{petId} isn't installed, so the default pet is being used. Window confinement only works with an installed pet — run: openpets mcp --pet <installed-pet-id>",

  // --- Confinement / Screen Recording permission (main process) ---
  "confinement.screenPermission.title": "Screen Recording permission needed",
  "confinement.screenPermission.body": "OpenPets needs Screen Recording access to keep your pet inside its window. Click to open System Settings.",

  // --- Common (renderer, shared across views) ---
  "common.retry": "Retry",
  "common.close": "Close",
  "common.save": "Save",
  "common.to": "to",

  // --- Navigation tabs (renderer) ---
  "nav.dashboard": "Dashboard",
  "nav.pets": "Pets",
  "nav.settings": "Settings",
  "nav.plugins": "Plugins",
  "nav.integrations": "Integrations",

  // --- Route metadata (renderer hero header) ---
  "route.dashboard.title": "Dashboard",
  "route.dashboard.description": "Overview of your active companions, status, and system metrics.",
  "route.pets.title": "Pets",
  "route.pets.description": "Install, import, preview, and choose your default desktop companion.",
  "route.settings.title": "Settings",
  "route.settings.description": "Configure startup behaviors, scale preferences, and animation settings.",
  "route.plugins.title": "Plugins",
  "route.plugins.description": "Extend your desktop experience with custom tools and behaviors.",
  "route.integrations.title": "Integrations",
  "route.integrations.description": "Connect your companions to Claude Code, VS Code, Cursor, and more.",

  // --- App shell (renderer) ---
  "app.controlCenter": "Control Center",
  "app.logo.alt": "OpenPets",

  // --- Dashboard (renderer) ---
  "dashboard.loading": "Gathering companion metrics...",
  "dashboard.hero.eyebrow": "Primary Companion",
  "dashboard.hero.desc": "Ready for your next coding session.",
  "dashboard.hero.changePet": "Change Pet",
  "dashboard.lastActive.none": "No activity yet",
  "dashboard.update.available": "Update available",
  "dashboard.update.error": "Check failed",
  "dashboard.update.checking": "Checking",
  "dashboard.update.current": "Current",
  "dashboard.update.notChecked": "Not checked",
  "dashboard.stat.messages": "Messages",
  "dashboard.stat.messages.footer": "Total speech bubbles sent",
  "dashboard.stat.reactions": "Reactions",
  "dashboard.stat.reactions.footer": "Total animations triggered",
  "dashboard.stat.topCompanion": "Top Companion",
  "dashboard.stat.topCompanion.footer": "Most active pet lately",
  "dashboard.activity.title": "Activity Overview",
  "dashboard.activity.topReactions": "Top Reactions",
  "dashboard.activity.noReactions": "No reactions recorded yet. Start coding!",
  "dashboard.reactionMix.title": "Reaction Mix",
  "dashboard.reactionMix.total": "{count} total",
  "dashboard.reactionMix.waiting": "Waiting for activity",
  "dashboard.reactionMix.chartLabel": "Reaction mix chart",
  "dashboard.reactionMix.reactions": "reactions",
  "dashboard.reactionMix.empty": "No reaction mix yet.",
  "dashboard.companions.title": "Top Companions",
  "dashboard.companions.subtitle": "Most active pets",
  "dashboard.companions.empty": "No companion activity yet.",
  "dashboard.lastActive.label": "Last active: ",
  "dashboard.system.title": "System Health",
  "dashboard.system.pets": "Pets",
  "dashboard.system.pets.value": "{count} installed",
  "dashboard.system.plugins": "Plugins",
  "dashboard.system.plugins.enabled": "{count} enabled",
  "dashboard.system.catalog": "Catalog",
  "dashboard.system.catalog.offline": "Offline",
  "dashboard.system.catalog.pets": "{count} pets",
  "dashboard.system.catalog.ready": "Ready",
  "dashboard.system.updates": "Updates",
  "dashboard.system.version": "Version",

  // --- Placeholder view (renderer) ---
  "placeholder.comingSoon": "Coming Soon • Next Migration Target",

  // --- Pets filters (renderer) ---
  "pets.filter.all": "All",
  "pets.filter.installed": "Installed",
  "pets.filter.featured": "Featured",
  "pets.filter.originals": "Originals",
  "pets.filter.codex": "Codex",
  "pets.search.placeholder": "Search pets...",
  "pets.import": "Import pet",
  "pets.gallery": "Gallery",

  // --- Pets card badges/actions (renderer) ---
  "pets.badge.default": "Default",
  "pets.badge.original": "Original",
  "pets.badge.featured": "Featured",
  "pets.badge.installed": "Installed",
  "pets.badge.codex": "Codex",
  "pets.badge.broken": "Broken",
  "pets.badge.ready": "Ready",
  "pets.badge.originals": "Originals",
  "pets.action.viewPet": "View pet",
  "pets.action.install": "Install",
  "pets.action.import": "Import",
  "pets.action.default": "Default",
  "pets.action.remove": "Remove",
  "pets.action.refresh": "Refresh",
  "pets.aria.view": "View {name}",
  "pets.aria.install": "Install {name}",
  "pets.aria.import": "Import {name} from Codex",
  "pets.aria.setDefault": "Set {name} as default",
  "pets.aria.remove": "Remove {name}",
  "pets.busy.installing": "Installing",
  "pets.busy.importing": "Importing",
  "pets.busy.settingDefault": "Setting default",
  "pets.busy.removing": "Removing",
  "pets.busy.loadingPage": "Loading page",

  // --- Pets pager (renderer) ---
  "pets.pager.prev": "Prev",
  "pets.pager.next": "Next",
  "pets.pager.count": "{count} pets",
  "pets.pager.page": " · Page {page} of {pageCount}",

  // --- Pet detail dialog (renderer) ---
  "pets.detail.ariaLabel": "{name} pet details",
  "pets.detail.closeAria": "Close pet details",
  "pets.detail.eyebrow": "Pet detail",
  "pets.detail.previewAnimations": "Preview Animations",
  "pets.detail.preview.idle": "Idle",
  "pets.detail.preview.thinking": "Thinking",
  "pets.detail.preview.happy": "Happy",
  "pets.detail.preview.wave": "Wave",
  "pets.detail.installPet": "Install Pet",
  "pets.detail.importCodexPet": "Import Codex Pet",
  "pets.detail.setDefaultPet": "Set Default Pet",
  "pets.detail.remove": "Remove",
  "pets.detail.refresh": "Refresh",

  // --- Pet detail status text (renderer) ---
  "pets.status.broken": "This installed pet is broken and cannot be selected as default.",
  "pets.status.defaultProtected": "Default built-in pet. Protected from removal.",
  "pets.status.default": "Default pet.",
  "pets.status.installedCodex": "Installed and ready to become your default pet. Also found in ~/.codex/pets.",
  "pets.status.installed": "Installed and ready to become your default pet.",
  "pets.status.availableCodex": "Available to import from ~/.codex/pets.",
  "pets.status.availableCatalog": "Available to install from the catalog.",

  // --- Pet labels for SpriteFrame/PetImage (renderer) ---
  "pets.spriteLabel.thumbnail": "{name} thumbnail",
  "pets.spriteLabel.thumb": "{name} thumb",
  "pets.spriteLabel.animatedPreview": "{name} animated preview",
  "pets.spriteLabel.statePreview": "{name} {state} preview",

  // --- Settings: general (renderer) ---
  "settings.nav.general": "General",
  "settings.nav.reactions": "Reaction Mapping",
  "settings.nav.plugins": "Plugin Platform",
  "settings.nav.lan": "LAN",
  "settings.general.eyebrow": "Environment",
  "settings.general.title": "General Settings",
  "settings.general.showOnLaunch.title": "Show pet on launch",
  "settings.general.showOnLaunch.description": "Keep OpenPets in the tray but hide the pet until requested.",
  "settings.general.launchAtLogin.title": "Launch at login",
  "settings.general.launchAtLogin.supported": "Start OpenPets automatically when your computer starts.",
  "settings.general.launchAtLogin.unsupported": "Not supported on this platform.",
  "settings.general.analytics.title": "Share privacy-preserving usage analytics",
  "settings.general.analytics.description": "Help improve OpenPets. We never collect prompts, code, file paths, terminal commands, pet speech, or plugin config values.",
  "settings.general.petScale.title": "Pet scale",
  "settings.general.petScale.description": "Adjust how large the default desktop pet appears.",
  "settings.general.resetPosition": "Reset Pet Position",
  "settings.general.systemStatus": "System Status",
  "settings.general.updateAvailable": "Update Available",
  "settings.general.checking": "Checking…",
  "settings.general.checkForUpdates": "Check for Updates",
  "settings.toast.startupSaved": "Startup preference saved.",
  "settings.toast.loginStartupSaved": "Login startup preference saved.",
  "settings.toast.analyticsSaved": "Analytics preference saved.",
  "settings.toast.petScaleSaved": "Pet scale saved.",
  "settings.toast.positionReset": "Default pet position reset.",
  "settings.toast.confinementSaved": "Window confinement saved.",
  "settings.toast.crossDisplaySaved": "Cross-display roaming saved.",
  "settings.toast.gravitySaved": "Gravity setting saved.",
  "settings.toast.petPoolSaved": "Session pool saved.",
  "settings.petConfinement.label": "Limit pet to its window",
  "settings.petConfinement.description": "When on, a pet stays within its terminal window while that window is visible.",
  "settings.petCrossDisplay.label": "Allow pets on multiple monitors",
  "settings.petCrossDisplay.description": "When on, pets can roam freely across all connected displays. Turn off to restrict each pet to a single screen.",
  "settings.petCrossDisplay.helperNoMover": "Requires a movement plugin such as Walkabout to be enabled.",
  "settings.petGravity.label": "Apply gravity to pets",
  "settings.petGravity.description": "When on, pets fall with gravity. Applies to every pet. Off by default.",
  "settings.movement.title": "Movement",
  "settings.petPool.label": "Use a different pet per session",
  "settings.petPool.description": "When on, each concurrent agent session gets its own pet from the pool.",
  "settings.busy.saving": "Saving",
  "settings.busy.resetting": "Resetting",
  "settings.busy.opening": "Opening",
  "settings.busy.checking": "Checking",

  // --- Settings: LAN mode (renderer) ---
  "settings.lan.eyebrow": "Office Pet",
  "settings.lan.title": "LAN Mode",
  "settings.lan.description": "Read-only status for the experimental shared office pet coordinator.",
  "settings.lan.refresh": "Refresh",
  "settings.lan.mode": "Mode",
  "settings.lan.host": "Local host",
  "settings.lan.server": "Server",
  "settings.lan.auth": "Auth",
  "settings.lan.authToken": "Token",
  "settings.lan.authEnv": "Env token",
  "settings.lan.authStored": "Stored token",
  "settings.lan.authGenerated": "Generated token",
  "settings.lan.authInsecure": "Insecure",
  "settings.lan.authNone": "None",
  "settings.lan.tokenHint": "Token hint",
  "settings.lan.tokenHintValue": "Ends {hint}",
  "settings.lan.currentOwner": "Current owner",
  "settings.lan.persistedOwner": "Saved owner",
  "settings.lan.clients": "Clients",
  "settings.lan.topology": "Topology",
  "settings.lan.topologyConfigured": "{hosts} hosts / {links} links",
  "settings.lan.topologyFallback": "Name cycle",
  "settings.lan.topologyWarnings": "Topology warnings",
  "settings.lan.topologyWarningsDescription": "Review mappings that may cause unexpected edge handoffs.",
  "settings.lan.topologySelfReference": "A host cannot hand off to itself.",
  "settings.lan.topologyMissingReverse": "Add {neighbor}.{reverse} = {host} for a two-way physical layout.",
  "settings.lan.warning": "Warning",
  "settings.lan.none": "None",
  "settings.lan.connectedHosts": "Connected hosts",
  "settings.lan.connectedHostsDescription": "Machines currently registered with the coordinator.",
  "settings.lan.noPosition": "No position reported",
  "settings.lan.owner": "Owner",
  "settings.lan.connected": "Connected",
  "settings.lan.noClients": "No LAN clients",
  "settings.lan.noClientsDescription": "Start LAN server/client mode to populate this list.",

  // --- Settings: update status formatting (renderer) ---
  "settings.update.notLoaded": "Update status has not loaded yet.",
  "settings.update.checking": "Checking for updates…",
  "settings.update.available": "Version {version} is available.",
  "settings.update.current": "Up to date.",
  "settings.update.failed": "Update check failed.",
  "settings.update.version": "Version: {version}.",

  // --- Settings: reaction mapping (renderer) ---
  "settings.reactions.eyebrow": "Behavior",
  "settings.reactions.title": "Reaction Mapping",
  "settings.reactions.resetDefaults": "Reset to Defaults",
  "settings.reactions.description": "Customize which animation plays for each agent reaction. Previews use the default pet.",
  "settings.reactions.previewAria": "Animation: {state}",
  "settings.toast.reactionsReset": "Reaction animations reset.",
  "settings.toast.reactionSaved": "Reaction animation saved.",
  "settings.animation.idle.label": "Idle",
  "settings.animation.idle.description": "Neutral/no special movement.",
  "settings.animation.review.label": "Review",
  "settings.animation.review.description": "Thinking, reading, reviewing.",
  "settings.animation.running.label": "Running",
  "settings.animation.running.description": "Active work, editing, executing.",
  "settings.animation.waiting.label": "Waiting",
  "settings.animation.waiting.description": "Waiting, blocked, testing, permission pending.",
  "settings.animation.waving.label": "Waving",
  "settings.animation.waving.description": "Attention, greeting, notification.",
  "settings.animation.jumping.label": "Jumping",
  "settings.animation.jumping.description": "Success, celebration.",
  "settings.animation.failed.label": "Failed",
  "settings.animation.failed.description": "Error or failure.",
  "settings.reaction.idle.label": "Idle",
  "settings.reaction.idle.description": "Explicit neutral reaction.",
  "settings.reaction.thinking.label": "Thinking",
  "settings.reaction.thinking.description": "Agent is reasoning or reviewing.",
  "settings.reaction.working.label": "Working",
  "settings.reaction.working.description": "Agent is doing general tool work.",
  "settings.reaction.editing.label": "Editing",
  "settings.reaction.editing.description": "Agent is changing files.",
  "settings.reaction.running.label": "Running",
  "settings.reaction.running.description": "Agent is running a command.",
  "settings.reaction.testing.label": "Testing",
  "settings.reaction.testing.description": "Agent is running checks.",
  "settings.reaction.waiting.label": "Waiting",
  "settings.reaction.waiting.description": "Agent is blocked or waiting for permission.",
  "settings.reaction.waving.label": "Waving",
  "settings.reaction.waving.description": "Pet is greeting or getting attention.",
  "settings.reaction.success.label": "Success",
  "settings.reaction.success.description": "Task completed successfully.",
  "settings.reaction.error.label": "Error",
  "settings.reaction.error.description": "Something failed.",
  "settings.reaction.celebrating.label": "Celebrating",
  "settings.reaction.celebrating.description": "Positive manual reaction.",

  // --- Settings: plugin platform (renderer) ---
  "settings.plugins.eyebrow": "Plugin Platform",
  "settings.plugins.title": "Plugin Permissions & AI",
  "settings.plugins.description": "Global gates for what plugins may do. Sensitive capabilities stay off until you enable them here.",
  "settings.plugins.audio.title": "Plugins may play sound",
  "settings.plugins.audio.description": "Allow plugin chimes, alerts, and bundled sounds.",
  "settings.plugins.voice.title": "Plugins may speak (voice)",
  "settings.plugins.voice.description": "Allow text-to-speech through the system voice.",
  "settings.plugins.dynamicSpeech.title": "Allow AI-generated pet speech",
  "settings.plugins.dynamicSpeech.description": "Sensitive: lets approved plugins show model-generated bubbles.",
  "settings.plugins.microphone.title": "Allow microphone (push-to-talk)",
  "settings.plugins.microphone.description": "Sensitive: lets approved plugins capture one-shot voice input.",
  "settings.plugins.quietHours.title": "Quiet hours",
  "settings.plugins.quietHours.description": "Silence plugin speech, sound, and voice during this window.",
  "settings.plugins.quietWindow.title": "Quiet window",
  "settings.plugins.quietWindow.description": "Start and end of the quiet-hours window.",
  "settings.plugins.aiProvider.title": "AI provider",
  "settings.plugins.aiProvider.description": "One provider serves every plugin through the host AI gateway. Keys are encrypted and never shared with plugin code.",
  "settings.plugins.aiProvider.disabled": "Disabled",
  "settings.plugins.aiProvider.anthropic": "Anthropic",
  "settings.plugins.aiProvider.openai": "OpenAI",
  "settings.plugins.aiProvider.ollama": "Ollama (local)",
  "settings.plugins.model.title": "Model",
  "settings.plugins.model.description": "Leave empty for the provider default.",
  "settings.plugins.model.placeholder": "provider default",
  "settings.plugins.apiKey.title": "API key",
  "settings.plugins.apiKey.stored": "A key is stored (encrypted).",
  "settings.plugins.apiKey.none": "No key stored. Ollama needs no key.",
  "settings.plugins.apiKey.placeholderStored": "••••••••",
  "settings.plugins.apiKey.placeholderEmpty": "Paste key",
  "settings.plugins.apiKey.save": "Save",
  "settings.plugins.apiKey.remove": "Remove",
  "settings.toast.audioSaved": "Plugin sound preference saved.",
  "settings.toast.voiceSaved": "Plugin voice preference saved.",
  "settings.toast.dynamicSpeechSaved": "AI speech preference saved.",
  "settings.toast.microphoneSaved": "Microphone preference saved.",
  "settings.toast.quietHoursSaved": "Quiet hours saved.",
  "settings.toast.aiProviderSaved": "AI provider saved.",
  "settings.toast.aiModelSaved": "AI model saved.",
  "settings.toast.aiKeySaved": "AI key saved.",
  "settings.toast.aiKeyRemoved": "AI key removed.",

  // --- Plugins view (renderer) ---
  "plugins.filter.all": "All",
  "plugins.filter.installed": "Installed",
  "plugins.filter.catalog": "Catalog",
  "plugins.filter.local": "Local / Dev",
  "plugins.filter.broken": "Broken",
  "plugins.status.broken": "Broken",
  "plugins.status.catalogDisabled": "Catalog disabled",
  "plugins.status.active": "Active",
  "plugins.status.disabled": "Disabled",
  "plugins.status.available": "Available",
  "plugins.description.installedReady": "Installed plugin ready for configuration.",
  "plugins.description.availableCatalog": "Available from the plugin catalog.",
  "plugins.badge.bundled": "Bundled",
  "plugins.badge.community": "Community",
  "plugins.badge.local": "Local",
  "plugins.badge.js": "JS",
  "plugins.badge.declarative": "Declarative",
  "plugins.badge.deprecated": "Deprecated",
  "plugins.card.active": "Active",
  "plugins.card.off": "Off",
  "plugins.card.refresh": "Refresh",
  "plugins.card.configure": "Configure",
  "plugins.card.installPlugin": "Install Plugin",
  "plugins.empty.title": "No plugins found",
  "plugins.empty.description": "Try a different filter, refresh the catalog, or load a local plugin folder.",
  "plugins.developer.eyebrow": "Developer Mode",
  "plugins.developer.show": "Show",
  "plugins.developer.hide": "Hide",
  "plugins.developer.description": "Load a plugin project folder. OpenPets validates it, snapshots declared files, watches the folder, and reloads after edits.",
  "plugins.developer.loadUnpacked": "Load Folder",
  "plugins.footer.installed": "installed",
  "plugins.footer.catalog": "catalog",
  "plugins.footer.refresh": "Refresh",
  "plugins.footer.loadLocal": "Load Local Plugin",
  "plugins.inspector.configAria": "{name} configuration",
  "plugins.inspector.closeAria": "Close plugin configuration",
  "plugins.inspector.details": "Plugin Details",
  "plugins.inspector.close": "Close",
  "plugins.inspector.runtime": "Runtime",
  "plugins.inspector.statePermissions": "State & permissions",
  "plugins.inspector.enabled": "Enabled",
  "plugins.inspector.disabled": "Disabled",
  "plugins.inspector.catalogDisabledNote": "This plugin is disabled by the catalog.",
  "plugins.inspector.toggleNote": "Toggle this plugin without leaving the Control Center.",
  "plugins.inspector.sourceFolder": "Source folder",
  "plugins.inspector.noPermissions": "No permissions",
  "plugins.inspector.configuration": "Configuration",
  "plugins.inspector.needsAttention": "Needs attention",
  "plugins.inspector.settings": "Settings",
  "plugins.inspector.saveConfiguration": "Save Configuration",
  "plugins.inspector.commands": "Commands",
  "plugins.inspector.quickActions": "Quick actions",
  "plugins.inspector.refreshFromFolder": "Refresh from Folder",
  "plugins.inspector.reload": "Reload",
  "plugins.inspector.update": "Update",
  "plugins.inspector.uninstall": "Uninstall",
  "plugins.inspector.uninstallConfirm": "Uninstall {name}?",
  "plugins.inspector.catalog": "Catalog",
  "plugins.inspector.readyToInstall": "Ready to install",
  "plugins.inspector.catalogDescription": "Install this plugin to approve its permissions and make it available in your desktop companion.",
  "plugins.inspector.installPlugin": "Install Plugin",
  "plugins.emptyDetail.title": "No plugin selected",
  "plugins.emptyDetail.description": "Install a catalog plugin or load a local folder to begin.",
  "plugins.config.addReminder": "Add reminder",
  "plugins.config.addItem": "Add item",
  "plugins.config.item": "Item {index}",
  "plugins.config.remove": "Remove",
  "plugins.config.defaultSound": "Default alert sound",
  "plugins.config.browseSound": "Browse…",
  "plugins.config.useDefaultSound": "Use default",
  "plugins.config.clearSound": "Clear",
  "plugins.config.removeReminder": "Remove reminder",
  "plugins.config.reminder": "Reminder",
  "plugins.config.dailyAt": "{id} · Daily at {time}",
  "plugins.config.everyMin": "{id} · Every {mins} min",
  "plugins.config.group.identity": "Identity & Behavior",
  "plugins.config.group.message": "Message",
  "plugins.config.group.schedule": "Schedule",
  "plugins.toast.pluginEnabled": "Plugin enabled.",
  "plugins.toast.pluginDisabled": "Plugin disabled.",
  "plugins.toast.noPluginInstalled": "No plugin installed.",
  "plugins.toast.pluginInstalled": "Plugin installed.",
  "plugins.toast.pluginUpdated": "Plugin updated.",
  "plugins.toast.noPluginUpdate": "No plugin update applied.",
  "plugins.toast.configSaved": "Plugin configuration saved.",
  "plugins.toast.soundImported": "Sound imported.",
  "plugins.toast.commandRan": "Plugin command ran.",
  "plugins.toast.pluginReloaded": "Plugin reloaded.",
  "plugins.toast.localRefreshed": "Local plugin refreshed from folder.",
  "plugins.toast.pluginUninstalled": "Plugin uninstalled.",
  "plugins.toast.catalogRefreshed": "Plugin catalog refreshed.",
  "plugins.toast.localLoaded": "Local plugin loaded.",
  "plugins.toast.noLocalLoaded": "No local plugin loaded.",
  "plugins.busy.saving": "Saving",
  "plugins.busy.installing": "Installing",
  "plugins.busy.refreshing": "Refreshing",
  "plugins.busy.loading": "Loading",
  "plugins.busy.running": "Running",
  "plugins.busy.refreshingSource": "Refreshing source",
  "plugins.busy.reloading": "Reloading",
  "plugins.busy.updating": "Updating",
  "plugins.busy.uninstalling": "Uninstalling",

  // --- Plugin permission labels (renderer) ---
  "plugins.permission.pet:speak": "Speech",
  "plugins.permission.pet:reaction": "Reactions",
  "plugins.permission.pet:move": "Movement",
  "plugins.permission.timer": "Timers",
  "plugins.permission.schedule": "Schedule",
  "plugins.permission.storage": "Storage",
  "plugins.permission.status": "Status",
  "plugins.permission.commands": "Commands",
  "plugins.permission.network": "Network",
  "plugins.permission.pet:interact": "Bubble buttons",
  "plugins.permission.pet:pin": "Pinned bubble",
  "plugins.permission.pet:animate": "Custom animation",
  "plugins.permission.pet:speak:dynamic": "AI speech",
  "plugins.permission.pet:drop": "Drag & drop",
  "plugins.permission.pets:read": "Read pets",
  "plugins.permission.pets:manage": "Manage pets",
  "plugins.permission.audio": "Sound",
  "plugins.permission.events": "Events",
  "plugins.permission.ui:toast": "Toasts",
  "plugins.permission.ui:panel": "Panels",
  "plugins.permission.notify": "Notifications",
  "plugins.permission.bus": "Plugin bus",
  "plugins.permission.ai": "AI gateway",
  "plugins.permission.secrets": "Secrets",
  "plugins.permission.voice:speak": "Voice",
  "plugins.permission.voice:listen": "Microphone",
  "plugins.permission.auth": "Sign-in",
  "plugins.permission.files": "Files",
  "plugins.permission.system:openExternal": "Open links",
  "plugins.permission.system:metrics": "System metrics",
  "plugins.permission.clipboard": "Clipboard",
  "plugins.permission.network:write": "Network write",

  // --- Integrations view (renderer) ---
  "integrations.commandMode.published": "Published package",
  "integrations.commandMode.bundled": "Bundled desktop CLI",
  "integrations.commandMode.local": "Local development",
  "integrations.loading": "Loading integrations…",
  "integrations.claude.name": "Claude Code",
  "integrations.claude.description": "Connect Claude Code to your OpenPets companion.",
  "integrations.opencode.name": "OpenCode",
  "integrations.opencode.description": "Connect OpenCode globally to your OpenPets companion.",
  "integrations.cursor.name": "Cursor",
  "integrations.cursor.description": "Connect Cursor to your OpenPets companion via global MCP config.",
  "integrations.pi.name": "Pi",
  "integrations.pi.status": "Manual",
  "integrations.pi.description": "Connect Pi coding-agent activity through the OpenPets Pi extension package.",
  "integrations.soon.vscode": "VS Code",
  "integrations.soon.windsurf": "Windsurf",
  "integrations.soon.zed": "Zed",
  "integrations.soon.status": "Soon",
  "integrations.soon.description": "Coming soon.",
  "integrations.soon.button": "Coming soon",
  "integrations.install": "Install",
  "integrations.viewSetup": "View Setup",
  "integrations.configure": "Configure",
  "integrations.closeAria": "Close integration detail",
  "integrations.detail": "Integration Detail",
  "integrations.close": "Close",
  "integrations.commandSource": "Command Source",
  "integrations.cliMode": "CLI mode",
  "integrations.localUnavailable": " unavailable",
  "integrations.commandModeHelp": "Use the published package for normal setup, bundled for the desktop app build, or local while developing OpenPets.",
  "integrations.connection": "Connection",
  "integrations.statusRouting": "Status & Routing",
  "integrations.globalSetup": "Global Setup",
  "integrations.globalMcp": "Global MCP",
  "integrations.petRouting": "Pet Routing",
  "integrations.defaultPet": "Default Pet",
  "integrations.configuration": "Configuration",
  "integrations.commandPaths": "Command Paths",
  "integrations.claudeCommand": "Claude Command",
  "integrations.nodeCommand": "Node.js Command",
  "integrations.opencodeCommand": "OpenCode Command",
  "integrations.optional": "Optional",
  "integrations.claudeHooks": "Claude Hooks",
  "integrations.installHooks": "Install Hooks",
  "integrations.removeHooks": "Remove Hooks",
  "integrations.included": "Included",
  "integrations.instructions": "Instructions",
  "integrations.updateInstructions": "Update Instructions",
  "integrations.actions": "Actions",
  "integrations.management": "Management",
  "integrations.installMcp": "Install MCP",
  "integrations.replaceMcp": "Replace MCP",
  "integrations.removeMcp": "Remove MCP",
  "integrations.refreshStatus": "Refresh Status",
  "integrations.installGlobal": "Install Global",
  "integrations.removeGlobal": "Remove Global",
  "integrations.advanced": "Advanced",
  "integrations.mcpJsonPreview": "MCP JSON Preview",
  "integrations.configPreview": "Config Preview",
  "integrations.mcpEntryPreview": "MCP Entry Preview",
  "integrations.rulesPreview": "Rules Preview",
  "integrations.pi.manualSetup": "Manual Setup",
  "integrations.pi.extension": "Pi Extension",
  "integrations.pi.intro": "Install the OpenPets Pi extension from Pi, then use the slash commands inside a Pi session.",
  "integrations.pi.globalInstall": "Global install",
  "integrations.pi.projectInstall": "Project install",
  "integrations.pi.remove": "Remove",
  "integrations.pi.slashCommands": "Slash commands",
  "integrations.pi.outro": "Use global install for all Pi workspaces, or project install when you only want OpenPets in the current project.",
  "integrations.toast.pathSaved": "Path saved.",
  "integrations.busy.installing": "Installing",
  "integrations.busy.replacing": "Replacing",
  "integrations.busy.removing": "Removing",
  "integrations.busy.installingHooks": "Installing hooks",
  "integrations.busy.removingHooks": "Removing hooks",
  "integrations.busy.updatingInstructions": "Updating instructions",
  "integrations.busy.savingPath": "Saving path",

  // --- Settings: Language section (renderer) ---
  "settings.language.title": "Language",
  "settings.language.description": "Display language for OpenPets menus and windows.",
  "settings.language.system": "System default",
} as const;
