{
  "app": {
    "name": "CiCy Desktop",
    "apiTitle": "CiCy Desktop API",
    "brandSub": "Team AI collaboration workspace"
  },
  "tray": {
    "openHomepage": "Open CiCy Desktop",
    "quit": "Quit",
    "tooltip": "CiCy Desktop"
  },
  "menu": {
    "backends": "Backends",
    "showHomepage": "Show Homepage",
    "newLocalWindow": "New Local Window",
    "file": "File",
    "edit": "Edit",
    "view": "View",
    "window": "Window",
    "help": "Help",
    "close": "Close",
    "quit": "Quit",
    "undo": "Undo",
    "redo": "Redo",
    "cut": "Cut",
    "copy": "Copy",
    "paste": "Paste",
    "selectAll": "Select All",
    "reload": "Reload",
    "forceReload": "Force Reload",
    "toggleDevTools": "Toggle Developer Tools",
    "actualSize": "Actual Size",
    "zoomIn": "Zoom In",
    "zoomOut": "Zoom Out",
    "toggleFullscreen": "Toggle Full Screen",
    "minimize": "Minimize",
    "zoom": "Zoom",
    "front": "Bring All to Front",
    "checkForUpdates": "Check for Updates…",
    "checkingForUpdates": "Checking for updates…",
    "updateAvailable": "New version {{version}} found, downloading…",
    "upToDate": "You're up to date (v{{version}})",
    "updateError": "Update check failed: {{error}}"
  },
  "dialog": {
    "openLink": {
      "title": "Open Link",
      "message": "How would you like to open this link?",
      "openInBrowser": "Open in Browser",
      "openInApp": "Open in App",
      "cancel": "Cancel"
    }
  },
  "homepage": {
    "title": "CiCy Desktop",
    "addBackend": "Add backend",
    "name": "Name",
    "url": "URL",
    "token": "Token",
    "save": "Save",
    "cancel": "Cancel",
    "test": "Test",
    "open": "Open",
    "remove": "Remove",
    "copyUrl": "Copy URL",
    "copied": "URL copied",
    "removed": "Removed {{name}}",
    "removeConfirm": "Remove {{name}}?",
    "opened": "Opened {{name}}",
    "focused": "Focused {{name}}",
    "openFailed": "Open failed: {{error}}",
    "unknown": "unknown",
    "noBackendsYet": "No backends yet — click \"Add backend\" above",
    "statusUp": "Up",
    "statusDown": "Down",
    "statusWarn": "Warning"
  },
  "localTeams": {
    "unnamed": "Unnamed",
    "rename": "Rename",
    "renameHint": "Double-click or click ✎ to rename",
    "open": "Open",
    "renameFailed": "Rename wasn't saved, reverted",
    "startOpen": "Start & open",
    "manage": "Manage local cicy-code",
    "more": "More",
    "reloadWindow": "Reload window",
    "billing": "Billing",
    "removeConfirm": "Confirm removal?",
    "remove": "Remove",
    "copyAddr": "Click to copy address",
    "version": "Version",
    "saving": "Saving…",
    "saved": "Saved",
    "kindLocal": "Local",
    "kindCustom": "Custom",
    "defaultName": "Local team",
    "deleteTitle": "Delete team",
    "deleteMsg": "Delete «{{name}}»? This cannot be undone.",
    "removing": "Removing…",
    "removed": "Removed",
    "removeFailed": "Remove failed"
  },
  "cli": {
    "controllerTitle": "cicy - CiCy Desktop Controller",
    "usage": "Usage: cicy [command] [options]"
  },
  "mitmConsent": {
    "cardTitle": "Local HTTPS Traffic Auditing",
    "stateUngrantedTitle": "Not enabled",
    "body": "When enabled, HTTPS traffic from AI tools launched by CiCy (claude / codex, etc.) to AI providers (Claude / OpenAI / DeepSeek / Gemini) is decrypted locally for auditing. Data stays local; turn it off anytime.",
    "adminNote": "Applies only to AI tools launched by CiCy (via an environment variable) — your system is not modified and no administrator access is needed.",
    "scopeNote": "Only traffic to the AI provider domains above is decrypted; all other traffic (banking, social, other sites) is never decrypted or read.",
    "localNote": "Decrypted data is stored only on your machine and is never uploaded to any server.",
    "enable": "Enable",
    "stateGrantedTitle": "Enabled",
    "grantedDesc": "HTTPS auditing is on for AI tools launched by CiCy (claude / codex, etc.); you can turn it off anytime.",
    "revoke": "Revoke",
    "revokeConfirm": "Revoking will stop decryption auditing and clear the consent flag. Continue?",
    "stateProcessingTitle": "Working…",
    "processingEnable": "Enabling…",
    "processingRevoke": "Disabling…",
    "errorTitle": "Operation failed",
    "errorAdminDenied": "Administrator authorization was not granted; cancelled.",
    "retry": "Retry",
    "statePillOn": "HTTPS auditing on",
    "turnOff": "Turn off"
  },
  "firstRunTerms": {
    "title": "Terms of Use & Authorization Notice",
    "subtitle": "Please read and accept the following before using CiCy Desktop",
    "summaryTitle": "At a glance",
    "summary1": "CiCy Desktop is an AI agent orchestration tool that runs on your own computer, helping you coordinate third-party AI assistants (Claude Code, Codex, Gemini, etc.) to get work done.",
    "summary2": "Third-party AI and accounts are between you and the respective provider: which AI you use, whose account you log in with, and the usage and fees are your decision and responsibility, not CiCy's.",
    "summary3": "To do the work, this software needs a range of authorizations on your computer (running programs, executing scripts, controlling the browser, accessing files, etc.). You are fully responsible for the operations initiated through this software.",
    "summary4": "Your data stays on your machine by default; CiCy does not upload your work content for operational purposes.",
    "summary5": "Two high-risk capabilities require your separate, explicit authorization and are off by default: (a) local HTTPS traffic auditing (installs a certificate, requires administrator); (b) local command/script execution. Accepting these Terms does not enable them.",
    "summary6": "You must not use this software to control unauthorized devices, conduct unlawful multi-accounting / traffic faking, circumvent platform risk controls, or scrape in violation of terms.",
    "viewFull": "View full Terms",
    "agree": "Agree and continue",
    "decline": "Decline and exit",
    "mustAgree": "You cannot use this software without accepting the Terms.",
    "scrollHint": "Please read to the end to continue",
    "menu": "Terms of Use",
    "close": "Close"
  },
  "docker": {
    "title": "Docker cicy-code",
    "install": "Install",
    "start": "Start",
    "running": "Running · :8008",
    "notRunning": "Stopped · click Start",
    "notInstalled": "Not installed · click Install",
    "working": "Working…",
    "ready": "Docker cicy-code is ready",
    "failed": "Install failed",
    "upgraded": "Upgraded to latest",
    "upgradeFailed": "Upgrade failed",
    "manage": "Manage Docker cicy-code",
    "restart": "Restart",
    "restarted": "Restarted",
    "restarting": "Restarting…",
    "stop": "Stop",
    "stopped": "Stopped",
    "stoping": "Stopping…",
    "upgrade": "Upgrade (pull latest image)",
    "opFailed": "Operation failed",
    "setupTitle": "Install Docker cicy-code",
    "busy": "In progress",
    "preparing": "Preparing…",
    "installing2": "Installing…",
    "background": "Continue in background",
    "rebootNeeded": "WSL2 installed — please RESTART Windows, then click Retry to continue",
    "rebootShort": "Restart Windows",
    "installerLaunched": "Docker installer opened — finish it (installs WSL2, may reboot), then click Retry",
    "engineDown": "Docker engine down · Start",
    "startDocker": "Start Docker",
    "update": "Update cicy-code",
    "reloadWindow": "Reload window",
    "dockerRestart": "Restart Docker",
    "dockerRestarted": "Docker container restarted",
    "recreate": "Rebuild Docker",
    "billing": "Billing",
    "openNoToken": "Service not ready yet — wait a few seconds and click Open again (or 「Restart」 from the card menu).",
    "retry": "Retry",
    "run": "Install & start",
    "manual": "Install Docker manually",
    "updated": "cicy-code updated to latest",
    "updateFailed": "Update failed",
    "authorizingHost": "Authorizing container to access Mac (configuring SSH)…",
    "authorizedHostOk": "Authorized: the container can `ssh mac` to reach the Mac ✅",
    "authorizedHostPartial": "Public key written to Mac (not verified; try `ssh mac` in the container manually)",
    "chromeProxyOn": "Enabling Chrome proxy (host mihomo)…",
    "chromeProxyOff": "Disabling Chrome proxy…",
    "chromeProxyDone": "Chrome proxy enabled ✅",
    "chromeProxyUndone": "Chrome proxy disabled",
    "wslUnresponsive": "WSL not responding · click “Retry check”",
    "opening": "Opening…",
    "probing": "Checking…",
    "retryProbe": "Retry check",
    "wslStillStuck": "WSL still not responding — you may need to restart Windows and try again",
    "probeFailed": "Check failed, please retry",
    "authorizeHostHint": "Add the container's public key to the Mac's authorized_keys so `ssh mac` works inside the container",
    "authorizeHost": "Authorize container to access Mac",
    "chromeProxyHint": "Run a mihomo on this machine to proxy system Chrome profiles (127.0.0.1:2000N). Config synced from the container.",
    "chromeProxy": "Chrome proxy",
    "recreateConfirm": "This deletes and recreates the current container (volume data kept) to switch to the dedicated team's gateway key. Recreate?",
    "recreated": "Docker container recreated",
    "recreateOk": "Recreate",
    "runningWslBroken": "Running · ⚠ WSL unmanaged (open works; update/restart needs WSL repair)",
    "openFailed": "Open failed",
    "openTitle": "Open Docker team",
    "repairWsl": "Repair WSL",
    "wslBrokenRepair": "WSL unmanaged · click Repair WSL to reinstall",
    "openWslDir": "Open WSL folder",
    "openProjectsDir": "Open projects folder",
    "wslWedged": "WSL frozen · click Repair WSL",
    "wslNeedReboot": "WSL service is stuck — please RESTART Windows; CiCy auto-repairs on next launch (old data is renamed/kept, not deleted).",
    "wslRepaired": "WSL repaired",
    "repairFailed": "Repair failed",
    "updating": {
      "checking": "Checking cicy-code version…",
      "alreadyLatest": "Already up to date — v{{v}} ✅",
      "toVersion": "Updating cicy-code → v{{v}}…",
      "pulling": "Updating cicy-code (pulling latest)…",
      "doneVersion": "cicy-code updated to v{{v}} 🎉",
      "doneLatest": "cicy-code updated to latest 🎉",
      "notReady": "Updated, but :8008 isn't responding yet — wait a moment or retry",
      "failed": "Update failed: {{msg}} (this image may not support it; try Upgrade to reinstall)",
      "hostResolveFail": "Host version lookup failed; resolving inside container…",
      "scriptReady": "In-container update script refreshed (fast)",
      "scriptPushFail": "Failed to push update script; using baked one",
      "starting": "Starting cicy-code service…"
    },
    "ports": {
      "menu": "Port settings",
      "title": "Port settings",
      "sub": "Extra ports (besides :8008) published so Windows can reach in-container services",
      "mainFixed": ":8008 · cicy-code (fixed)",
      "add": "+ Add port",
      "ph": "Port 1-65535",
      "save": "Save & rebuild",
      "saving": "Saving…",
      "cancel": "Cancel",
      "hint": "Saving rebuilds the container (volume data kept) with a brief interruption",
      "invalid": "Invalid port (1-65535, not 8008, no duplicates)",
      "none": "No extra ports",
      "remove": "Remove"
    },
    "starting": "Starting…"
  },
  "common": {
    "close": "Close",
    "retry": "Retry",
    "done": "Done",
    "minimize": "Minimize",
    "cancel": "Cancel",
    "cloud": "Cloud",
    "on": "On",
    "off": "Off",
    "confirm": "Confirm",
    "delete": "Delete",
    "saving": "Saving…",
    "noAuth": "Not logged in",
    "loading": "Loading…",
    "copied": "Copied"
  },
  "auth": {
    "restoring": "Restoring login…",
    "tagline": "Sign in to sync your teams, settings & AI assistant",
    "browserLogin": "Sign in with browser",
    "autoOpenHint": "Your browser will open automatically",
    "waitingTagline": "Login page opened in your browser — finish there…",
    "waitingCallback": "Waiting for callback",
    "cancel": "Cancel",
    "browserNotOpened": "Browser didn't open?",
    "openManually": "Open login page manually",
    "copyLink": "Copy link",
    "linkCopied": "Link copied — paste it into your browser",
    "badEmail": "Please enter a valid email address",
    "emailLabel": "Enter your email to sign in with a magic link",
    "emailPlaceholder": "you@example.com",
    "emailLogin": "Send login link",
    "emailHint": "Tap the link in the email on your phone to sign in on this computer too",
    "or": "or",
    "emailSentTagline": "Login email sent",
    "emailSentHint": "Open the link from your inbox (phone or computer) and you'll be signed in here automatically.",
    "emailWaiting": "Waiting for confirmation…",
    "sessionExpired": "Session expired, signing in again…",
    "welcomeBack": "Restored your previous session",
    "loginSuccess": "Signed in",
    "sending": "Sending…",
    "opening": "Opening…"
  },
  "teams": {
    "addHint": "Create a new private cloud team",
    "add": "Add team",
    "emptyHint": "No teams yet — install local cicy-code to start a local team, or create one in the cloud.",
    "addCustom": "Custom team",
    "addCustomSub": "Enter address & name manually",
    "addPrivate": "Private cloud team",
    "addPrivateSub": "Add in the cloud team center",
    "customTitle": "Add custom team",
    "customSub": "Connect to an existing cicy-code address",
    "customNameLabel": "Name",
    "customNamePlaceholder": "My team",
    "customUrlLabel": "Address URL",
    "customTokenLabel": "Token (optional)",
    "urlRequired": "Please enter the address URL",
    "badUrl": "Invalid URL (must include http(s)://)",
    "adding": "Adding…",
    "addAction": "Add",
    "urlExists": "This address already exists",
    "sectionTeams": "Teams"
  },
  "trustedSites": {
    "addFailed": "Add failed",
    "removeFailed": "Remove failed",
    "title": "Trusted sites",
    "warn": "⚠ Sites in this list can run commands (exec) on your computer. Only add addresses you fully trust.",
    "placeholder": "Add a site, e.g. app.cicy-ai.com or my-cloud.example.org",
    "add": "Add",
    "loading": "Loading…",
    "empty": "None",
    "builtin": "Built-in",
    "remove": "Remove",
    "menu": "Trusted sites"
  },
  "audit": {
    "loadFailed": "Load failed",
    "title": "Audit log",
    "count": "Total",
    "refresh": "Refresh",
    "all": "All",
    "rpc": "RPC calls",
    "auth": "Auth decisions",
    "search": "Search source / tool / command…",
    "colTime": "Time",
    "colType": "Type",
    "colSource": "Source",
    "colOp": "Operation",
    "colDetail": "Detail",
    "loading": "Loading…",
    "empty": "No audit records",
    "noMatch": "No matching records",
    "menu": "Audit log"
  },
  "sidecar": {
    "found": "New version found",
    "upToDate": "Already up to date",
    "notRunning": "cicy-code not running",
    "checkFailed": "Update check failed",
    "failed": "Operation failed",
    "startFailed": "Start failed",
    "checking2": "Checking…",
    "checkUpdate": "Check for updates",
    "updated": "Updated to latest",
    "updateTo": "Update to",
    "restarted": "Restarted",
    "restart": "Restart",
    "stoppedDone": "Stopped",
    "stop": "Stop",
    "lanAccess": "LAN access",
    "lanOn": "LAN access enabled",
    "lanOff": "LAN access disabled",
    "lanEnabling": "Enabling LAN access, restarting…",
    "lanDisabling": "Disabling LAN access, restarting…",
    "lanFailed": "Failed",
    "lanHint": "When on, other devices on your LAN can reach this machine's IP (api_token still required); toggling auto-restarts cicy-code",
    "binPrepFail": "Failed to prepare cicy-code: {{err}}",
    "binMissing": "No usable cicy-code binary",
    "starting": "Starting cicy-code{{lan}}…",
    "lanSuffix": " (LAN access)",
    "nodeInstalling": "No usable Node found (missing or <20), installing Node {{ver}} (~50MB)…",
    "nodeDone": "Node {{ver}} installed → {{dir}}",
    "nodeExtractRetry": "node/npx not found after extract, trying next source…",
    "nodeDownloadFail": "Node download failed ({{src}}): {{err}} — retrying another source…",
    "nodeFailed": "❌ Node auto-install failed (both sources). Install Node (LTS) from https://nodejs.org, then click Retry",
    "linkFail": "symlink {{link}} failed: {{err}}",
    "linked": "symlinked {{names}} → ~/.local/bin",
    "brewSpawnFail": "brew install {{dep}} could not start: {{err}}",
    "netChecking": "Checking whether network is CN…",
    "netResult": "Network: {{net}} → registry={{registry}}{{mirror}}",
    "netCN": "CN",
    "netNonCN": "non-CN",
    "netMirror": " + mirror",
    "brewMissing": "❌ Homebrew not found (needed for tmux etc.). Run this in Terminal then click Retry:",
    "depInstalled": "✓ {{dep}} already installed",
    "depInstalling": "Installing {{dep}} (may take a few minutes)…",
    "depFail": "❌ brew install {{dep}} failed (see log above), click Retry",
    "depDone": "✓ {{dep}} installed",
    "mihomoInstalling": "Installing mihomo binary (node24 → npm pack cicy-mihomo)…",
    "mihomoReady": "✓ mihomo ready → {{bin}}",
    "mihomoSkip": "mihomo pre-install skipped (non-blocking): {{err}}",
    "checkingLatest": "Checking latest version…",
    "swapping": "Switching to {{ver}}, restarting cicy-code…",
    "startingAgents": "Starting cicy-code… (restoring agent panels, please wait)",
    "notUpInTime": "cicy-code did not start within {{secs}}s",
    "upToDateVer": "Already up to date {{ver}}",
    "updatedTo": "Updated to {{ver}}",
    "startedUnknownVer": "Started (version unknown, expected {{ver}})",
    "updateFail": "Update failed: {{err}}",
    "downloading": "Downloading {{label}} {{ver}}…",
    "ready": "{{label}} {{ver}} ready",
    "start": "Start",
    "started": "Started",
    "cftMenu": "Cloudflare Tunnel",
    "cftHint": "Expose this Mac’s cicy-code on a fixed public domain via a Cloudflare named tunnel (needs a Cloudflare connector token); toggling restarts cicy-code",
    "cftTitle": "Cloudflare Tunnel",
    "cftSubtitle": "Expose this cicy-code on a fixed public domain via a Cloudflare named tunnel",
    "cftEnable": "Enable tunnel",
    "cftToken": "Tunnel Token",
    "cftHost": "Public host (optional)",
    "cftNeedToken": "A Tunnel Token is required to enable",
    "cftApplying": "Applying Cloudflare Tunnel, restarting…",
    "cftOn": "Cloudflare Tunnel enabled",
    "cftOff": "Cloudflare Tunnel disabled",
    "cftFailed": "Failed to set",
    "cftRunning": "Running",
    "cftStopped": "Not running",
    "cftRefresh": "Refresh",
    "cftRestart": "Restart tunnel",
    "cftStart": "Start tunnel",
    "cftRestarted": "Tunnel restarted",
    "cftRestartHint": "Restart the tunnel with the current token/host",
    "cftNeedHost": "Public host is required",
    "cftTunnelDown": "Tunnel not connected: the token may be invalid/expired, or the hostname has no route in Cloudflare",
    "cftConnected": "Tunnel connected",
    "tunnelMenu": "Enable tunnel",
    "tunnelRunning": "Tunnel running",
    "tunnelHint": "Expose this machine's cicy-code over a zero-trust tunnel at a fixed public address (paid tier); cicy-code dials in automatically once enabled",
    "tunnelEnabling": "Enabling tunnel, restarting cicy-code…",
    "tunnelOn": "Tunnel enabled",
    "tunnelNeedUpgrade": "Free tier — upgrade your team plan to use a fixed tunnel",
    "tunnelFailed": "Failed to enable tunnel"
  },
  "teamCard": {
    "noHost": "No address set",
    "noUrl": "No URL",
    "editUrl": "Edit access URL",
    "setUrl": "Set access URL",
    "delete": "Delete",
    "deleteTitle": "Delete team",
    "deleteMsg": "This will remove the private cloud team from the cloud, affecting all devices. Delete «{{name}}»?",
    "deleted": "Team deleted",
    "deleteFailed": "Delete failed",
    "editAddr": "Edit address",
    "changeAvatar": "Click to change avatar"
  },
  "updateDrawer": {
    "done": "Update complete",
    "failed": "Update failed",
    "phaseDownload": "Download",
    "phaseSwap": "Switch",
    "phaseDone": "Done",
    "title": "Update cicy-code",
    "current": "current",
    "latest": "latest",
    "minimize": "Minimize",
    "preparing": "Preparing…",
    "stuckHint": "Waiting for the new version to be ready — taking longer than usual. You can leave it in the background; you'll be notified when it finishes or fails.",
    "inProgress": "Updating…",
    "updatedLatest": "Updated to latest"
  },
  "teamFilter": {
    "all": "All",
    "local": "Local",
    "cloud": "Private cloud",
    "custom": "Custom",
    "hub": "CiCy Hub"
  },
  "userMenu": {
    "wallet": "My wallet",
    "billing": "My billing",
    "logout": "Log out"
  },
  "busy": {
    "start": "Starting…",
    "restart": "Restarting…",
    "update": "Updating…",
    "stop": "Stopping…"
  },
  "localStatus": {
    "open": "Open",
    "notRunning": "Not running",
    "tokenInvalid": "Token invalid",
    "badUrl": "Bad URL",
    "error": "Error"
  },
  "teamKind": {
    "private": "Private cloud",
    "personal": "Personal",
    "shared": "Shared"
  },
  "ctxMenu": {
    "reload": "Reload",
    "webviewId": "WebviewId: {{id}}",
    "copySkillCmd": "Copy Skill Command",
    "skillPrompt": "Use the agent-electron skill to operate this webview for me: webContent id={{id}}, profile id={{profile}}, url={{url}}, title={{title}}",
    "cut": "Cut",
    "copy": "Copy",
    "paste": "Paste",
    "selectAll": "Select All",
    "inspect": "Inspect Element",
    "services": "Services",
    "lookUpSelection": "Look Up Selection",
    "searchWithGoogle": "Search with Google",
    "copyImage": "Copy Image",
    "copyImageAddress": "Copy Image Address",
    "saveImage": "Save Image",
    "saveImageAs": "Save Image As…",
    "copyVideoAddress": "Copy Video Address",
    "saveVideo": "Save Video",
    "saveVideoAs": "Save Video As…",
    "copyLink": "Copy Link",
    "saveLinkAs": "Save Link As…",
    "copied": "Skill command copied — paste & send it to your Agent",
    "goBack": "Back",
    "goForward": "Forward"
  },
  "dockerOpen": {
    "tokVolHit": "✓ Got token from volume (attempt {{n}})",
    "tokVolMiss": "No api_token in volume yet (container may not have written global.json)",
    "tokVolErr": "Volume read failed: {{err}}",
    "tokExecHit": "✓ Got token via container exec (attempt {{n}})",
    "tokExecMiss": "docker exec returned no api_token",
    "tokExecErr": "docker exec failed: {{err}}",
    "tokRetry": "Attempt {{n}}/5 got nothing, retrying in 2s…",
    "tokFail": "Failed to read container token after 5 attempts",
    "readToken": "Reading container token (container {{container}} / volume {{volume}})…",
    "hintNoToken": "Cannot read container token. The container may not be running, or just started and hasn't written global.json — wait a few seconds and click Retry.",
    "hintWslUnmanaged": "WSL is unmanaged: the container is on :{{port}} but wsl can't see the distro, so docker exec can't read the token. Try the card menu 'Restart Docker', or reboot Windows then Retry.",
    "hintNotRunning": "Container isn't running. Click 'Start' on the card first, then Open.",
    "registering": "Registering cloud team…",
    "hintRegisterFailed": "Cloud team registration failed (check login / network).",
    "opening": "Opening {{url}} …",
    "opened": "Opened",
    "hintOpenFailed": "Got the token but failed to open the window: {{err}}",
    "hintException": "Open failed with an exception: {{err}}",
    "engineStartingNoReset": "Docker engine not running, starting it (without resetting WSL)…"
  },
  "dockerBadge": {
    "install-docker": "Prep",
    "image": "Download",
    "container": "Start",
    "health": "Start",
    "done": "Done",
    "open": "Open"
  },
  "chromeProxy": {
    "downloading": "Downloading mihomo (Chrome proxy, from OSS)…",
    "ready": "Chrome proxy (host mihomo) ready",
    "verifyFailed": "mihomo verification failed after download (file too small)",
    "containerConfigParseFailed": "Failed to parse container mihomo config: {{err}}",
    "noContainerConfig": "Could not read container mihomo config",
    "binMissing": "mihomo binary missing (run ensureBinary first)",
    "configMissing": "host config missing (run writeConfig first)"
  },
  "updateBanner": {
    "available": "New version v{{v}} available",
    "downloading": "Downloading update",
    "ready": "Update downloaded — restart to install",
    "error": "Update failed",
    "downloadBtn": "Download update",
    "installBtn": "Install now",
    "checkBtn": "Check for updates",
    "checkingShort": "Checking…",
    "checking": "Checking for updates…",
    "upToDate": "Up to date (v{{v}})",
    "drawerTitle": "App update",
    "startDl": "Starting download…",
    "readyShort": "Downloaded",
    "readyDrawer": "Downloaded — click Install to restart & update",
    "later": "Later",
    "eta": "{{s}}s left",
    "updateNow": "Update now",
    "modalSub": "We recommend updating to the latest version"
  },
  "tabShell": {
    "myTeam": "My Team",
    "newTabBtn": "New tab",
    "newPanel": "New panel"
  },
  "dood": {
    "menu": "Use Docker in container",
    "hint": "Mount the host Docker + docker client into the container so its agent can run docker (toggling rebuilds the container; takes effect instantly, no download)",
    "title": "Use Docker in container",
    "subtitle": "Mount the host Docker + docker client into the container so its agent can run docker (instant, no download)",
    "enable": "Allow Docker inside the container",
    "applying": "Enabling container Docker access, rebuilding…",
    "disabling": "Disabling…",
    "onDone": "Container Docker access enabled",
    "offDone": "Container Docker access disabled",
    "failed": "Failed to apply"
  },
  "plan": {
    "personal": "Personal",
    "team": "Team",
    "enterprise": "Enterprise",
    "hint": "Current account plan"
  },
  "tunnel": {
    "menu": "Self-hosted tunnel",
    "hint": "Expose this cicy-code via your own cicy-tunnel at <slug>.gw.<domain> (paste url+token, transparent forwarding, no --public); toggling restarts cicy-code",
    "title": "Self-hosted tunnel · cicy-tunnel",
    "subtitle": "Expose this cicy-code via your own cicy-tunnel at <slug>.gw.<domain>, transparent forwarding. Get url+token from the tunnel's enroll.",
    "enable": "Enable tunnel",
    "url": "Tunnel URL",
    "token": "Node token",
    "tokenPh": "Paste the token from enroll",
    "needUrl": "URL required to enable (wss://…/_tunnel/connect)",
    "needToken": "Node token required to enable",
    "applying": "Applying tunnel config, restarting cicy-code…",
    "on": "Tunnel enabled",
    "off": "Tunnel disabled",
    "failed": "Failed to apply"
  },
  "hub": {
    "section": "Hub",
    "add": "Add Hub",
    "addTitle": "Add Hub",
    "addSub": "Enter a Hub URL — stored locally only (never uploaded).",
    "name": "Name (optional)",
    "url": "URL",
    "editUrl": "Change URL",
    "deleteTitle": "Delete Hub",
    "deleteConfirm": "Delete",
    "paste": "Hub JSON",
    "pasteSub": "Paste the Hub JSON (url + token). Stored locally only.",
    "badPaste": "Can't parse — paste the Hub JSON (must include url)",
    "editTitle": "Edit Hub",
    "editAddr": "Edit",
    "empty": "No hubs yet — click Add Hub and paste the Hub JSON",
    "noTeams": "No teams online in this hub",
    "agents": "{n} agents",
    "scan": "Scan with CiCy Mobile to add this hub"
  },
  "cicyHub": {
    "title": "CiCy Hub",
    "login": "Sign in to CiCy Hub",
    "loginSub": "Email code sign-in; every cicy-code instance of that account shows up here",
    "email": "Email",
    "sendCode": "Send code",
    "sending": "Sending…",
    "codeSent": "Code sent to {{email}} — the link in the mail works too",
    "code": "6-digit code",
    "verify": "Sign in",
    "verifying": "Verifying…",
    "cancel": "Cancel",
    "logout": "Sign out of Hub",
    "refresh": "Refresh",
    "signedInAs": "Signed in",
    "empty": "No cicy-code instances under this account yet. Sign in to the Hub with the same email in cicy-code → CiCy account.",
    "online": "online",
    "offline": "offline",
    "open": "Open",
    "unreachable": "unreachable",
    "version": "version",
    "agents": "{{n}} agents",
    "kind": "Hub",
    "loginFailed": "Sign-in failed",
    "codeInvalid": "Wrong or expired code",
    "rateLimited": "Too many requests, try later (5 per hour)",
    "mailFailed": "Mail could not be sent",
    "nameTaken": "Name conflict, try another machine",
    "expired": "Sign-in expired, send again",
    "addMenu": "CiCy Hub instances",
    "addMenuSub": "Sign in by email; all instances are listed automatically"
  }
}
