diff --git a/pkg/i18n/i18n.go b/pkg/i18n/i18n.go index 3de920f4..be92a99c 100644 --- a/pkg/i18n/i18n.go +++ b/pkg/i18n/i18n.go @@ -75,7 +75,7 @@ func New() (*Service, error) { // NewWithFS creates a new i18n service loading locales from the given filesystem. // This allows the GUI to provide its own locale files. func NewWithFS(fsys fs.FS, dir string) (*Service, error) { - bundle := i18n.NewBundle(language.English) + bundle := i18n.NewBundle(language.BritishEnglish) bundle.RegisterUnmarshalFunc("json", json.Unmarshal) availableLangs, err := loadLocalesFromFS(bundle, fsys, dir) @@ -86,14 +86,14 @@ func NewWithFS(fsys fs.FS, dir string) (*Service, error) { s := &Service{ bundle: bundle, availableLangs: availableLangs, - currentLang: "en", + currentLang: "en-GB", } // Try to detect system language if detected, err := detectLanguage(availableLangs); err == nil && detected != "" { _ = s.SetLanguage(detected) } else { - _ = s.SetLanguage("en") + _ = s.SetLanguage("en-GB") } return s, nil @@ -105,9 +105,9 @@ func NewWithBundle(bundle *i18n.Bundle, langs []language.Tag) *Service { s := &Service{ bundle: bundle, availableLangs: langs, - currentLang: "en", + currentLang: "en-GB", } - _ = s.SetLanguage("en") + _ = s.SetLanguage("en-GB") return s } diff --git a/pkg/i18n/locales/en.json b/pkg/i18n/locales/en_AU.json similarity index 100% rename from pkg/i18n/locales/en.json rename to pkg/i18n/locales/en_AU.json diff --git a/pkg/i18n/locales/en_GB.json b/pkg/i18n/locales/en_GB.json new file mode 100644 index 00000000..bcefb8ba --- /dev/null +++ b/pkg/i18n/locales/en_GB.json @@ -0,0 +1,1352 @@ +{ + "cli.success": "Success", + "cli.error": "Error", + "cli.warning": "Warning", + "cli.info": "Info", + "cli.done": "Done", + "cli.failed": "Failed", + "cli.pass": "PASS", + "cli.fail": "FAIL", + "cli.ok": "OK", + "cli.skip": "Skipped", + "cli.pending": "Pending", + "cli.running": "Running", + "cli.completed": "Completed", + "cli.cancelled": "Cancelled", + "cli.aborted": "Aborted", + + "cli.confirm.yes": "Yes", + "cli.confirm.no": "No", + "cli.confirm.proceed": "Proceed?", + "cli.confirm.continue": "Continue?", + "cli.confirm.abort": "Operation aborted", + + "cli.progress.checking": "Checking", + "cli.progress.fetching": "Fetching", + "cli.progress.loading": "Loading", + "cli.progress.processing": "Processing", + "cli.progress.installing": "Installing", + "cli.progress.building": "Building", + "cli.progress.deploying": "Deploying", + "cli.progress.testing": "Testing", + + "cli.time.just_now": "just now", + "cli.time.seconds_ago": "{{.Count}} seconds ago", + "cli.time.minute_ago": "1 minute ago", + "cli.time.minutes_ago": "{{.Count}} minutes ago", + "cli.time.hour_ago": "1 hour ago", + "cli.time.hours_ago": "{{.Count}} hours ago", + "cli.time.day_ago": "1 day ago", + "cli.time.days_ago": "{{.Count}} days ago", + "cli.time.week_ago": "1 week ago", + "cli.time.weeks_ago": "{{.Count}} weeks ago", + + "cli.count.items": { + "one": "{{.Count}} item", + "other": "{{.Count}} items" + }, + "cli.count.files": { + "one": "{{.Count}} file", + "other": "{{.Count}} files" + }, + "cli.count.repos": { + "one": "{{.Count}} repo", + "other": "{{.Count}} repos" + }, + "cli.count.commits": { + "one": "{{.Count}} commit", + "other": "{{.Count}} commits" + }, + + "cmd.dev.short": "Multi-repo development workflow", + "cmd.dev.long": "Manage multiple git repositories and GitHub integration.\n\nUses repos.yaml to discover repositories. Falls back to scanning\nthe current directory if no registry is found.\n\nGit Operations:\n work Combined status -> commit -> push workflow\n health Quick repo health summary\n commit Claude-assisted commit messages\n push Push repos with unpushed commits\n pull Pull repos behind remote\n\nGitHub Integration (requires gh CLI):\n issues List open issues across repos\n reviews List PRs awaiting review\n ci Check GitHub Actions status\n impact Analyse dependency impact\n\nDev Environment:\n install Download dev environment image\n boot Start dev environment VM\n stop Stop dev environment VM\n shell Open shell in dev VM\n status Check dev VM status", + + "cmd.dev.work.short": "Multi-repo git operations", + "cmd.dev.work.long": "Manage git status, commits, and pushes across multiple repositories.\n\nReads repos.yaml to discover repositories and their relationships.\nShows status, optionally commits with Claude, and pushes changes.", + "cmd.dev.work.flag.status": "Show status only, don't push", + "cmd.dev.work.flag.commit": "Use Claude to commit dirty repos before pushing", + "cmd.dev.work.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + + "cmd.dev.health.short": "Quick health check across all repos", + "cmd.dev.health.long": "Shows a summary of repository health:\ntotal repos, dirty repos, unpushed commits, etc.", + "cmd.dev.health.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.health.flag.verbose": "Show detailed breakdown", + + "cmd.dev.commit.short": "Claude-assisted commits across repos", + "cmd.dev.commit.long": "Uses Claude to create commits for dirty repos.\nShows uncommitted changes and invokes Claude to generate commit messages.", + "cmd.dev.commit.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.commit.flag.all": "Commit all dirty repos without prompting", + + "cmd.dev.push.short": "Push commits across all repos", + "cmd.dev.push.long": "Pushes unpushed commits for all repos.\nShows repos with commits to push and confirms before pushing.", + "cmd.dev.push.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.push.flag.force": "Skip confirmation prompt", + + "cmd.dev.pull.short": "Pull updates across all repos", + "cmd.dev.pull.long": "Pulls updates for all repos.\nBy default only pulls repos that are behind. Use --all to pull all repos.", + "cmd.dev.pull.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.pull.flag.all": "Pull all repos, not just those behind", + + "cmd.dev.issues.short": "List open issues across all repos", + "cmd.dev.issues.long": "Fetches open issues from GitHub for all repos in the registry.\nRequires the 'gh' CLI to be installed and authenticated.", + "cmd.dev.issues.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.issues.flag.limit": "Max issues per repo", + "cmd.dev.issues.flag.assignee": "Filter by assignee (use @me for yourself)", + + "cmd.dev.reviews.short": "List PRs needing review across all repos", + "cmd.dev.reviews.long": "Fetches open PRs from GitHub for all repos in the registry.\nShows review status (approved, changes requested, pending).\nRequires the 'gh' CLI to be installed and authenticated.", + "cmd.dev.reviews.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.reviews.flag.author": "Filter by PR author", + "cmd.dev.reviews.flag.all": "Show all PRs including drafts", + + "cmd.dev.ci.short": "Check CI status across all repos", + "cmd.dev.ci.long": "Fetches GitHub Actions workflow status for all repos.\nShows latest run status for each repo.\nRequires the 'gh' CLI to be installed and authenticated.", + "cmd.dev.ci.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.ci.flag.branch": "Filter by branch", + "cmd.dev.ci.flag.failed": "Show only failed runs", + + "cmd.dev.impact.short": "Show impact of changing a repo", + "cmd.dev.impact.long": "Analyzes the dependency graph to show which repos\nwould be affected by changes to the specified repo.", + "cmd.dev.impact.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + + "cmd.dev.api.short": "Tools for managing service APIs", + "cmd.dev.sync.short": "Synchronizes public service APIs with internal implementations", + "cmd.dev.sync.long": "This command scans the 'pkg' directory for services and ensures that the\ntop-level public API for each service is in sync with its internal implementation.\nIt automatically generates the necessary Go files with type aliases.", + + "cmd.dev.vm.install.short": "Download and install the dev environment image", + "cmd.dev.vm.install.long": "Downloads the platform-specific dev environment image.\n\nThe image includes Go, PHP, Node.js, Python, Docker, and Claude CLI.\nDownloads are cached at ~/.core/images/\n\nExamples:\n core dev install", + + "cmd.dev.vm.boot.short": "Start the dev environment", + "cmd.dev.vm.boot.long": "Boots the dev environment VM.\n\nExamples:\n core dev boot\n core dev boot --memory 8192 --cpus 4\n core dev boot --fresh", + "cmd.dev.vm.boot.flag.memory": "Memory in MB (default: 4096)", + "cmd.dev.vm.boot.flag.cpus": "Number of CPUs (default: 2)", + "cmd.dev.vm.boot.flag.fresh": "Stop existing and start fresh", + + "cmd.dev.vm.stop.short": "Stop the dev environment", + "cmd.dev.vm.stop.long": "Stops the running dev environment VM.\n\nExamples:\n core dev stop", + + "cmd.dev.vm.status.short": "Show dev environment status", + "cmd.dev.vm.status.long": "Shows the current status of the dev environment.\n\nExamples:\n core dev vm-status", + + "cmd.dev.vm.shell.short": "Connect to the dev environment", + "cmd.dev.vm.shell.long": "Opens an interactive shell in the dev environment.\n\nUses SSH by default, or serial console with --console.\n\nExamples:\n core dev shell\n core dev shell --console\n core dev shell -- ls -la", + "cmd.dev.vm.shell.flag.console": "Use serial console instead of SSH", + + "cmd.dev.vm.serve.short": "Mount project and start dev server", + "cmd.dev.vm.serve.long": "Mounts the current project into the dev environment and starts a dev server.\n\nAuto-detects the appropriate serve command based on project files.\n\nExamples:\n core dev serve\n core dev serve --port 3000\n core dev serve --path public", + "cmd.dev.vm.serve.flag.port": "Port to serve on (default: 8000)", + "cmd.dev.vm.serve.flag.path": "Subdirectory to serve", + + "cmd.dev.vm.test.short": "Run tests in the dev environment", + "cmd.dev.vm.test.long": "Runs tests in the dev environment.\n\nAuto-detects the test command based on project files, or uses .core/test.yaml.\n\nExamples:\n core dev test\n core dev test --name integration\n core dev test -- go test -v ./...", + "cmd.dev.vm.test.flag.name": "Run named test command from .core/test.yaml", + + "cmd.dev.vm.claude.short": "Start sandboxed Claude session", + "cmd.dev.vm.claude.long": "Starts a Claude Code session inside the dev environment sandbox.\n\nProvides isolation while forwarding selected credentials.\nAuto-boots the dev environment if not running.\n\nAuth options (default: all):\n gh - GitHub CLI auth\n anthropic - Anthropic API key\n ssh - SSH agent forwarding\n git - Git config (name, email)\n\nExamples:\n core dev claude\n core dev claude --model opus\n core dev claude --auth gh,anthropic\n core dev claude --no-auth", + "cmd.dev.vm.claude.flag.no_auth": "Don't forward any auth credentials", + "cmd.dev.vm.claude.flag.model": "Model to use (opus, sonnet)", + "cmd.dev.vm.claude.flag.auth": "Selective auth forwarding (gh,anthropic,ssh,git)", + + "cmd.dev.vm.update.short": "Check for and apply updates", + "cmd.dev.vm.update.long": "Checks for dev environment updates and optionally applies them.\n\nExamples:\n core dev update\n core dev update --apply", + "cmd.dev.vm.update.flag.apply": "Download and apply the update", + + "cmd.dev.status.dirty": "dirty", + "cmd.dev.status.clean": "clean", + "cmd.dev.status.ahead": "ahead", + "cmd.dev.status.behind": "behind", + "cmd.dev.status.synced": "synced", + "cmd.dev.status.diverged": "diverged", + "cmd.dev.status.conflict": "conflict", + + "cmd.dev.push.confirm": "Push all?", + "cmd.dev.push.success": "Pushed successfully", + "cmd.dev.push.failed": "Push failed", + "cmd.dev.push.nothing": "Nothing to push", + + "cmd.dev.commit.committing": "Committing dirty repos with Claude...", + "cmd.dev.commit.success": "Committed successfully", + "cmd.dev.commit.failed": "Commit failed", + + "cmd.dev.registry_label": "Registry:", + "cmd.dev.scanning_label": "Scanning:", + "cmd.dev.no_git_repos": "No git repositories found.", + "cmd.dev.no_changes": "No uncommitted changes found.", + "cmd.dev.repos_with_changes": "{{.Count}} repo(s) with uncommitted changes:", + "cmd.dev.modified": "{{.Count}} modified", + "cmd.dev.untracked": "{{.Count}} untracked", + "cmd.dev.staged": "{{.Count}} staged", + "cmd.dev.confirm_claude_commit": "Have Claude commit these repos?", + "cmd.dev.committing": "Committing", + "cmd.dev.committed": "committed", + "cmd.dev.done_succeeded": "Done: {{.Count}} succeeded", + "cmd.dev.count_failed": "{{.Count}} failed", + + "cmd.dev.push.all_up_to_date": "All repos up to date. Nothing to push.", + "cmd.dev.push.repos_with_unpushed": "{{.Count}} repo(s) with unpushed commits:", + "cmd.dev.push.commits_count": "{{.Count}} commit(s)", + "cmd.dev.push.confirm_push": "Push {{.Commits}} commit(s) to {{.Repos}} repo(s)?", + "cmd.dev.push.done_pushed": "Done: {{.Count}} pushed", + + "cmd.dev.pull.all_up_to_date": "All repos up to date. Nothing to pull.", + "cmd.dev.pull.pulling_repos": "Pulling {{.Count}} repo(s):", + "cmd.dev.pull.repos_behind": "{{.Count}} repo(s) behind upstream:", + "cmd.dev.pull.commits_behind": "{{.Count}} commit(s) behind", + "cmd.dev.pull.pulling": "Pulling", + "cmd.dev.pull.done_pulled": "Done: {{.Count}} pulled", + + "cmd.dev.health.dirty_label": "Dirty:", + "cmd.dev.health.ahead_label": "Ahead:", + "cmd.dev.health.behind_label": "Behind:", + "cmd.dev.health.errors_label": "Errors:", + "cmd.dev.health.repos": "repos", + "cmd.dev.health.dirty": "dirty", + "cmd.dev.health.to_push": "to push", + "cmd.dev.health.synced": "synced", + "cmd.dev.health.up_to_date": "up to date", + "cmd.dev.health.to_pull": "to pull", + "cmd.dev.health.errors": "errors", + "cmd.dev.health.more": "+{{.Count}} more", + + "cmd.dev.work.table_repo": "Repo", + "cmd.dev.work.table_modified": "Modified", + "cmd.dev.work.table_untracked": "Untracked", + "cmd.dev.work.table_staged": "Staged", + "cmd.dev.work.table_ahead": "Ahead", + "cmd.dev.work.error_prefix": "error:", + "cmd.dev.work.use_commit_flag": "Use --commit to have Claude create commits", + "cmd.dev.work.all_up_to_date": "All repos up to date.", + "cmd.dev.work.repos_with_unpushed": "{{.Count}} repo(s) with unpushed commits:", + "cmd.dev.work.commits_count": "{{.Count}} commit(s)", + + "cmd.dev.issues.no_issues": "No open issues found.", + "cmd.dev.issues.open_issues": "{{.Count}} open issue(s):", + "cmd.dev.issues.error_label": "Error:", + + "cmd.dev.reviews.no_prs": "No open PRs found.", + "cmd.dev.reviews.open_prs": "{{.Count}} open PR(s)", + "cmd.dev.reviews.pending": "{{.Count}} pending", + "cmd.dev.reviews.approved": "{{.Count}} approved", + "cmd.dev.reviews.changes_requested": "{{.Count}} changes requested", + "cmd.dev.reviews.status_approved": "v approved", + "cmd.dev.reviews.status_changes": "* changes requested", + "cmd.dev.reviews.status_pending": "o pending review", + "cmd.dev.reviews.draft": "[draft]", + + "cmd.dev.ci.repos_checked": "{{.Count}} repos checked", + "cmd.dev.ci.passing": "{{.Count}} passing", + "cmd.dev.ci.failing": "{{.Count}} failing", + "cmd.dev.ci.pending": "{{.Count}} pending", + "cmd.dev.ci.no_ci": "{{.Count}} no CI", + "cmd.dev.ci.error_label": "Error:", + + "cmd.dev.impact.analysis_for": "Impact analysis for", + "cmd.dev.impact.no_dependents": "No repos depend on {{.Name}}", + "cmd.dev.impact.direct_dependents": "{{.Count}} direct dependent(s):", + "cmd.dev.impact.transitive_dependents": "{{.Count}} transitive dependent(s):", + "cmd.dev.impact.summary": "Summary:", + "cmd.dev.impact.changes_affect": "Changes to {{.Repo}} affect {{.Affected}}/{{.Total}} repos", + "cmd.dev.impact.requires_registry": "impact analysis requires repos.yaml with dependency information", + + "cmd.dev.sync.success": "Public APIs synchronized successfully.", + "cmd.dev.sync.error_prefix": "Error:", + + "cmd.dev.vm.already_installed": "Dev environment already installed", + "cmd.dev.vm.check_updates": "Use {{.Command}} to check for updates", + "cmd.dev.vm.image_label": "Image:", + "cmd.dev.vm.downloading": "Downloading dev environment...", + "cmd.dev.vm.progress_label": "Progress:", + "cmd.dev.vm.installed_in": "Installed in {{.Duration}}", + "cmd.dev.vm.start_with": "Start with: {{.Command}}", + "cmd.dev.vm.not_installed": "dev environment not installed (run 'core dev install' first)", + "cmd.dev.vm.config_label": "Config:", + "cmd.dev.vm.config_value": "{{.Memory}}MB, {{.CPUs}} CPUs", + "cmd.dev.vm.booting": "Booting dev environment...", + "cmd.dev.vm.running": "Dev environment running", + "cmd.dev.vm.connect_with": "Connect with: {{.Command}}", + "cmd.dev.vm.ssh_port": "SSH port:", + "cmd.dev.vm.not_running": "Dev environment is not running", + "cmd.dev.vm.stopping": "Stopping dev environment...", + "cmd.dev.vm.stopped": "Stopped", + "cmd.dev.vm.status_title": "Dev Environment Status", + "cmd.dev.vm.installed_label": "Installed:", + "cmd.dev.vm.installed_yes": "Yes", + "cmd.dev.vm.installed_no": "No", + "cmd.dev.vm.version_label": "Version:", + "cmd.dev.vm.install_with": "Install with: {{.Command}}", + "cmd.dev.vm.status_label": "Status:", + "cmd.dev.vm.status_running": "Running", + "cmd.dev.vm.status_stopped": "Stopped", + "cmd.dev.vm.container_label": "Container:", + "cmd.dev.vm.memory_label": "Memory:", + "cmd.dev.vm.cpus_label": "CPUs:", + "cmd.dev.vm.uptime_label": "Uptime:", + "cmd.dev.vm.checking_updates": "Checking for updates...", + "cmd.dev.vm.current_label": "Current:", + "cmd.dev.vm.latest_label": "Latest:", + "cmd.dev.vm.up_to_date": "Already up to date", + "cmd.dev.vm.update_available": "Update available", + "cmd.dev.vm.run_to_update": "Run {{.Command}} to update", + "cmd.dev.vm.stopping_current": "Stopping current instance...", + "cmd.dev.vm.downloading_update": "Downloading update...", + "cmd.dev.vm.updated_in": "Updated in {{.Duration}}", + + "cmd.php.short": "Laravel/PHP development tools", + "cmd.php.long": "Manage Laravel development environment with FrankenPHP.\n\nServices orchestrated:\n - FrankenPHP/Octane (port 8000, HTTPS on 443)\n - Vite dev server (port 5173)\n - Laravel Horizon (queue workers)\n - Laravel Reverb (WebSocket, port 8080)\n - Redis (port 6379)", + + "cmd.php.dev.short": "Start Laravel development environment", + "cmd.php.dev.long": "Starts all detected Laravel services.\n\nAuto-detects:\n - Vite (vite.config.js/ts)\n - Horizon (config/horizon.php)\n - Reverb (config/reverb.php)\n - Redis (from .env)", + "cmd.php.dev.starting": "Starting {{.AppName}} development environment", + "cmd.php.dev.detected_services": "Detected services:", + "cmd.php.dev.services_started": "Services started:", + "cmd.php.dev.shutting_down": "Shutting down...", + "cmd.php.dev.all_stopped": "All services stopped", + "cmd.php.dev.press_ctrl_c": "Press Ctrl+C to stop all services", + "cmd.php.dev.logs_failed": "Failed to get logs: {{.Error}}", + "cmd.php.dev.stop_error": "Error stopping services: {{.Error}}", + + "cmd.php.logs.short": "View service logs", + "cmd.php.logs.long": "Stream logs from Laravel services.\n\nServices: frankenphp, vite, horizon, reverb, redis", + + "cmd.php.stop.short": "Stop all Laravel services", + "cmd.php.stop.stopping": "Stopping services...", + + "cmd.php.status.short": "Show service status", + "cmd.php.status.project": "Project:", + "cmd.php.status.detected_services": "Detected services:", + "cmd.php.status.package_manager": "Package manager:", + "cmd.php.status.octane_server": "Octane server:", + "cmd.php.status.ssl_certs": "SSL certificates:", + "cmd.php.status.ssl_installed": "installed", + "cmd.php.status.ssl_not_setup": "not setup", + "cmd.php.status.running": "running", + "cmd.php.status.stopped": "stopped", + "cmd.php.status.error": "error: {{.Error}}", + "cmd.php.status.port": "port {{.Port}}", + "cmd.php.status.pid": "pid {{.PID}}", + + "cmd.php.ssl.short": "Setup SSL certificates with mkcert", + "cmd.php.ssl.setting_up": "Setting up SSL for {{.Domain}}", + "cmd.php.ssl.mkcert_not_installed": "mkcert is not installed", + "cmd.php.ssl.install_with": "Install with:", + "cmd.php.ssl.install_macos": "macOS: brew install mkcert", + "cmd.php.ssl.install_linux": "Linux: see https://github.com/FiloSottile/mkcert", + "cmd.php.ssl.certs_exist": "Certificates already exist", + "cmd.php.ssl.certs_created": "SSL certificates created", + "cmd.php.ssl.cert_label": "Cert:", + "cmd.php.ssl.key_label": "Key:", + "cmd.php.ssl.flag.domain": "Domain for certificate (default: from APP_URL)", + + "cmd.php.dev.flag.no_vite": "Skip Vite dev server", + "cmd.php.dev.flag.no_horizon": "Skip Laravel Horizon", + "cmd.php.dev.flag.no_reverb": "Skip Laravel Reverb", + "cmd.php.dev.flag.no_redis": "Skip Redis server", + "cmd.php.dev.flag.https": "Enable HTTPS with mkcert", + "cmd.php.dev.flag.domain": "Domain for SSL certificate (default: from APP_URL or localhost)", + "cmd.php.dev.flag.port": "FrankenPHP port (default: 8000)", + + "cmd.php.logs.flag.follow": "Follow log output", + "cmd.php.logs.flag.service": "Specific service (default: all)", + + "cmd.php.build.short": "Build Docker or LinuxKit image", + "cmd.php.build.long": "Build a production-ready container image for the PHP project.\n\nBy default, builds a Docker image using FrankenPHP.\nUse --type linuxkit to build a LinuxKit VM image instead.", + "cmd.php.build.building_docker": "Building Docker image...", + "cmd.php.build.building_linuxkit": "Building LinuxKit image...", + "cmd.php.build.php_version": "PHP Version:", + "cmd.php.build.laravel": "Laravel:", + "cmd.php.build.octane": "Octane:", + "cmd.php.build.frontend": "Frontend:", + "cmd.php.build.extensions": "Extensions:", + "cmd.php.build.image": "Image:", + "cmd.php.build.platform": "Platform:", + "cmd.php.build.template": "Template:", + "cmd.php.build.format": "Format:", + "cmd.php.build.docker_success": "Docker image built successfully", + "cmd.php.build.docker_run_with": "Run with:", + "cmd.php.build.linuxkit_success": "LinuxKit image built successfully", + "cmd.php.build.flag.type": "Build type: docker (default) or linuxkit", + "cmd.php.build.flag.name": "Image name (default: project directory name)", + "cmd.php.build.flag.tag": "Image tag (default: latest)", + "cmd.php.build.flag.platform": "Target platform (e.g., linux/amd64, linux/arm64)", + "cmd.php.build.flag.dockerfile": "Path to custom Dockerfile", + "cmd.php.build.flag.output": "Output path for LinuxKit image", + "cmd.php.build.flag.format": "LinuxKit output format: qcow2 (default), iso, raw, vmdk", + "cmd.php.build.flag.template": "LinuxKit template name (default: server-php)", + "cmd.php.build.flag.no_cache": "Build without cache", + + "cmd.php.serve.short": "Run production container", + "cmd.php.serve.long": "Run a production PHP container.\n\nThis starts the built Docker image in production mode.", + "cmd.php.serve.running": "Running production container...", + "cmd.php.serve.ports": "Ports:", + "cmd.php.serve.stopped": "Container stopped", + "cmd.php.serve.name_required": "--name is required: specify the Docker image name", + "cmd.php.serve.flag.name": "Docker image name (required)", + "cmd.php.serve.flag.tag": "Image tag (default: latest)", + "cmd.php.serve.flag.container": "Container name", + "cmd.php.serve.flag.port": "HTTP port (default: 80)", + "cmd.php.serve.flag.https_port": "HTTPS port (default: 443)", + "cmd.php.serve.flag.detach": "Run in detached mode", + "cmd.php.serve.flag.env_file": "Path to environment file", + + "cmd.php.shell.short": "Open shell in running container", + "cmd.php.shell.long": "Open an interactive shell in a running PHP container.", + "cmd.php.shell.opening": "Opening shell in container {{.Container}}...", + + "cmd.php.packages.short": "Manage local PHP packages", + "cmd.php.packages.long": "Link and manage local PHP packages for development.\n\nSimilar to npm link, this adds path repositories to composer.json\nfor developing packages alongside your project.", + "cmd.php.packages.link.short": "Link local packages", + "cmd.php.packages.link.long": "Link local PHP packages for development.\n\nAdds path repositories to composer.json with symlink enabled.\nThe package name is auto-detected from each path's composer.json.", + "cmd.php.packages.link.linking": "Linking packages...", + "cmd.php.packages.link.done": "Packages linked. Run 'composer update' to install.", + "cmd.php.packages.unlink.short": "Unlink packages", + "cmd.php.packages.unlink.long": "Remove linked packages from composer.json.\n\nRemoves path repositories by package name.", + "cmd.php.packages.unlink.unlinking": "Unlinking packages...", + "cmd.php.packages.unlink.done": "Packages unlinked. Run 'composer update' to remove.", + "cmd.php.packages.update.short": "Update linked packages", + "cmd.php.packages.update.long": "Run composer update for linked packages.\n\nIf no packages specified, updates all packages.", + "cmd.php.packages.update.updating": "Updating packages...", + "cmd.php.packages.update.done": "Packages updated", + "cmd.php.packages.list.short": "List linked packages", + "cmd.php.packages.list.long": "List all locally linked packages.\n\nShows package name, path, and version for each linked package.", + "cmd.php.packages.list.none_found": "No linked packages found", + "cmd.php.packages.list.linked": "Linked packages:", + "cmd.php.packages.list.unknown": "(unknown)", + "cmd.php.packages.list.path": "Path:", + "cmd.php.packages.list.version": "Version:", + + "cmd.php.test.short": "Run PHP tests (PHPUnit/Pest)", + "cmd.php.test.long": "Run PHP tests using PHPUnit or Pest.\n\nAuto-detects Pest if tests/Pest.php exists, otherwise uses PHPUnit.", + "cmd.php.test.running": "Running tests with {{.Runner}}", + "cmd.php.test.passed": "All tests passed", + "cmd.php.test.failed": "Some tests failed", + "cmd.php.test.flag.parallel": "Run tests in parallel", + "cmd.php.test.flag.coverage": "Generate code coverage", + "cmd.php.test.flag.filter": "Filter tests by name pattern", + "cmd.php.test.flag.group": "Run only tests in specified group", + + "cmd.php.fmt.short": "Format PHP code with Laravel Pint", + "cmd.php.fmt.long": "Format PHP code using Laravel Pint.", + "cmd.php.fmt.checking": "Checking code with {{.Formatter}}", + "cmd.php.fmt.formatting": "Formatting code with {{.Formatter}}", + "cmd.php.fmt.no_formatter": "no formatter found (install Laravel Pint: composer require laravel/pint --dev)", + "cmd.php.fmt.success": "Code formatted successfully", + "cmd.php.fmt.no_issues": "No formatting issues found", + "cmd.php.fmt.flag.fix": "Auto-fix formatting issues", + "cmd.php.fmt.flag.diff": "Show diff of changes", + + "cmd.php.analyse.short": "Run PHPStan static analysis", + "cmd.php.analyse.long": "Run PHPStan or Larastan static analysis.\n\nAuto-detects Larastan if installed, otherwise uses PHPStan.", + "cmd.php.analyse.running": "Running static analysis with {{.Analyser}}", + "cmd.php.analyse.no_analyser": "no static analyser found (install PHPStan: composer require phpstan/phpstan --dev)", + "cmd.php.analyse.no_issues": "No issues found", + "cmd.php.analyse.flag.level": "PHPStan analysis level (0-9)", + "cmd.php.analyse.flag.memory": "Memory limit (e.g., 2G)", + + "cmd.php.psalm.short": "Run Psalm static analysis", + "cmd.php.psalm.long": "Run Psalm deep static analysis with Laravel plugin support.\n\nPsalm provides deeper type inference than PHPStan and catches\ndifferent classes of bugs. Both should be run for best coverage.", + "cmd.php.psalm.not_found": "Psalm not found", + "cmd.php.psalm.install": "composer require --dev vimeo/psalm", + "cmd.php.psalm.setup": "./vendor/bin/psalm --init", + "cmd.php.psalm.analysing": "Analysing code with Psalm", + "cmd.php.psalm.analysing_fixing": "Analysing and fixing code with Psalm", + "cmd.php.psalm.no_issues": "No issues found", + "cmd.php.psalm.flag.level": "Error level (1=strictest, 8=most lenient)", + "cmd.php.psalm.flag.fix": "Auto-fix issues where possible", + "cmd.php.psalm.flag.baseline": "Generate/update baseline file", + "cmd.php.psalm.flag.show_info": "Show info-level issues", + + "cmd.php.audit.short": "Security audit for dependencies", + "cmd.php.audit.long": "Check PHP and JavaScript dependencies for known vulnerabilities.\n\nRuns composer audit and npm audit (if package.json exists).", + "cmd.php.audit.scanning": "Scanning dependencies for vulnerabilities", + "cmd.php.audit.secure": "secure", + "cmd.php.audit.error": "error", + "cmd.php.audit.vulnerabilities": "{{.Count}} vulnerabilities", + "cmd.php.audit.found_vulns": "Found {{.Count}} vulnerabilities across dependencies", + "cmd.php.audit.fix_hint": "composer update && npm update", + "cmd.php.audit.completed_errors": "audit completed with errors", + "cmd.php.audit.all_secure": "All dependencies are secure", + "cmd.php.audit.flag.json": "Output in JSON format", + "cmd.php.audit.flag.fix": "Auto-fix vulnerabilities (npm only)", + + "cmd.php.security.short": "Security vulnerability scanning", + "cmd.php.security.long": "Scan for security vulnerabilities in configuration and code.\n\nChecks environment config, file permissions, code patterns,\nand runs security-focused static analysis.", + "cmd.php.security.running": "Running security checks", + "cmd.php.security.checks_suffix": " CHECKS:", + "cmd.php.security.summary": "Security scan complete", + "cmd.php.security.passed": "Passed:", + "cmd.php.security.critical": "Critical:", + "cmd.php.security.high": "High:", + "cmd.php.security.medium": "Medium:", + "cmd.php.security.low": "Low:", + "cmd.php.security.fix_label": "Fix:", + "cmd.php.security.flag.severity": "Minimum severity (critical, high, medium, low)", + "cmd.php.security.flag.json": "Output in JSON format", + "cmd.php.security.flag.sarif": "Output in SARIF format (for GitHub Security)", + "cmd.php.security.flag.url": "URL to check HTTP headers (optional)", + + "cmd.php.qa.short": "Run full QA pipeline", + "cmd.php.qa.long": "Run the complete quality assurance pipeline.\n\nStages:\n quick: Security audit, code style, PHPStan\n standard: Psalm, tests\n full: Rector dry-run, mutation testing (slow)", + "cmd.php.qa.running": "Running QA pipeline ({{.Stages}})", + "cmd.php.qa.no_checks": "No checks available", + "cmd.php.qa.stage_prefix": "═══ ", + "cmd.php.qa.stage_suffix": " STAGE ═══", + "cmd.php.qa.passed": "passed", + "cmd.php.qa.failed": "failed", + "cmd.php.qa.all_passed": "All checks passed ({{.Passed}}/{{.Total}})", + "cmd.php.qa.some_failed": "Some checks failed ({{.Passed}}/{{.Total}} passed)", + "cmd.php.qa.to_fix": "To fix:", + "cmd.php.qa.pipeline_failed": "QA pipeline failed", + "cmd.php.qa.fix_audit": "composer update && npm update", + "cmd.php.qa.fix_phpstan": "Fix PHPStan errors shown above", + "cmd.php.qa.fix_psalm": "Fix Psalm errors shown above", + "cmd.php.qa.fix_tests": "Fix failing tests shown above", + "cmd.php.qa.fix_infection": "Improve test coverage for mutated code", + "cmd.php.qa.issue_vulns": "vulnerabilities", + "cmd.php.qa.issue_style": "Code style issues found", + "cmd.php.qa.issue_analysis": "Static analysis errors", + "cmd.php.qa.issue_types": "Type errors found", + "cmd.php.qa.issue_tests": "Test failures", + "cmd.php.qa.issue_rector": "Code improvements available", + "cmd.php.qa.issue_mutation": "Mutation score below threshold", + "cmd.php.qa.flag.quick": "Only run quick checks", + "cmd.php.qa.flag.full": "Run all stages including slow checks", + "cmd.php.qa.flag.fix": "Auto-fix issues where possible", + + "cmd.php.rector.short": "Automated code refactoring", + "cmd.php.rector.long": "Run Rector for automated code improvements and PHP upgrades.\n\nRector can automatically upgrade PHP syntax, improve code quality,\nand apply framework-specific refactorings.", + "cmd.php.rector.not_found": "Rector not found", + "cmd.php.rector.install": "composer require --dev rector/rector", + "cmd.php.rector.setup": "./vendor/bin/rector init", + "cmd.php.rector.analysing": "Analysing code with Rector", + "cmd.php.rector.refactoring": "Refactoring code with Rector", + "cmd.php.rector.changes_suggested": "Changes suggested (use --fix to apply)", + "cmd.php.rector.refactored": "Code refactored successfully", + "cmd.php.rector.no_changes": "No changes needed", + "cmd.php.rector.flag.fix": "Apply changes (default is dry-run)", + "cmd.php.rector.flag.diff": "Show detailed diff of changes", + "cmd.php.rector.flag.clear_cache": "Clear Rector cache before running", + + "cmd.php.infection.short": "Mutation testing for test quality", + "cmd.php.infection.long": "Run Infection mutation testing to measure test suite quality.\n\nMutation testing modifies your code and checks if tests catch\nthe changes. High mutation score = high quality tests.\n\nWarning: This can be slow on large codebases.", + "cmd.php.infection.not_found": "Infection not found", + "cmd.php.infection.install": "composer require --dev infection/infection", + "cmd.php.infection.running": "Running mutation testing", + "cmd.php.infection.note": "This may take a while...", + "cmd.php.infection.complete": "Mutation testing complete", + "cmd.php.infection.flag.min_msi": "Minimum mutation score indicator (0-100, default: 50)", + "cmd.php.infection.flag.min_covered_msi": "Minimum covered mutation score (0-100, default: 70)", + "cmd.php.infection.flag.threads": "Number of parallel threads (default: 4)", + "cmd.php.infection.flag.filter": "Filter files by pattern", + "cmd.php.infection.flag.only_covered": "Only mutate covered code", + + "cmd.php.deploy.short": "Deploy to Coolify", + "cmd.php.deploy.long": "Deploy the PHP application to Coolify.\n\nRequires configuration in .env:\n COOLIFY_URL=https://coolify.example.com\n COOLIFY_TOKEN=your-api-token\n COOLIFY_APP_ID=production-app-id\n COOLIFY_STAGING_APP_ID=staging-app-id (optional)", + "cmd.php.deploy.deploying": "Deploying to {{.Environment}}...", + "cmd.php.deploy.success": "Deployment completed successfully", + "cmd.php.deploy.warning_status": "Deployment ended with status: {{.Status}}", + "cmd.php.deploy.triggered": "Deployment triggered. Use 'core php deploy:status' to check progress.", + "cmd.php.deploy.flag.staging": "Deploy to staging environment", + "cmd.php.deploy.flag.force": "Force deployment even if no changes detected", + "cmd.php.deploy.flag.wait": "Wait for deployment to complete", + + "cmd.php.deploy_status.short": "Show deployment status", + "cmd.php.deploy_status.long": "Show the status of a deployment.", + "cmd.php.deploy_status.checking": "Checking {{.Environment}} deployment status...", + "cmd.php.deploy_status.flag.staging": "Check staging environment", + "cmd.php.deploy_status.flag.id": "Specific deployment ID", + + "cmd.php.deploy_rollback.short": "Rollback to previous deployment", + "cmd.php.deploy_rollback.long": "Rollback to a previous deployment.\n\nIf no deployment ID is specified, rolls back to the most recent\nsuccessful deployment.", + "cmd.php.deploy_rollback.rolling_back": "Rolling back {{.Environment}}...", + "cmd.php.deploy_rollback.success": "Rollback completed successfully", + "cmd.php.deploy_rollback.warning_status": "Rollback ended with status: {{.Status}}", + "cmd.php.deploy_rollback.triggered": "Rollback triggered. Use 'core php deploy:status' to check progress.", + "cmd.php.deploy_rollback.flag.staging": "Rollback staging environment", + "cmd.php.deploy_rollback.flag.id": "Specific deployment ID to rollback to", + "cmd.php.deploy_rollback.flag.wait": "Wait for rollback to complete", + + "cmd.php.deploy_list.short": "List recent deployments", + "cmd.php.deploy_list.long": "List recent deployments.", + "cmd.php.deploy_list.recent": "Recent {{.Environment}} deployments:", + "cmd.php.deploy_list.none_found": "No deployments found", + "cmd.php.deploy_list.flag.staging": "List staging deployments", + "cmd.php.deploy_list.flag.limit": "Number of deployments to list (default: 10)", + + "cmd.php.label.php": "PHP:", + "cmd.php.label.services": "Services:", + "cmd.php.label.running": "Running:", + "cmd.php.label.app_url": "App URL:", + "cmd.php.label.vite": "Vite:", + "cmd.php.label.warning": "Warning:", + "cmd.php.label.error": "Error:", + "cmd.php.label.done": "Done:", + "cmd.php.label.skip": "Skip:", + "cmd.php.label.info": "Info:", + "cmd.php.label.install": "Install:", + "cmd.php.label.setup": "Setup:", + "cmd.php.label.fix": "Fix:", + "cmd.php.label.audit": "Audit:", + "cmd.php.label.security": "Security:", + "cmd.php.label.summary": "Summary:", + "cmd.php.label.qa": "QA:", + "cmd.php.label.psalm": "Psalm:", + "cmd.php.label.rector": "Rector:", + "cmd.php.label.infection": "Infection:", + "cmd.php.label.deploy": "Deploy:", + "cmd.php.label.status": "Status:", + "cmd.php.label.id": "ID:", + "cmd.php.label.url": "URL:", + "cmd.php.label.branch": "Branch:", + "cmd.php.label.commit": "Commit:", + "cmd.php.label.message": "Message:", + "cmd.php.label.started": "Started:", + "cmd.php.label.completed": "Completed:", + "cmd.php.label.duration": "Duration:", + + "cmd.php.error.not_laravel": "not a Laravel project (missing artisan or laravel/framework)", + "cmd.php.error.not_laravel_short": "not a Laravel project", + "cmd.php.error.not_php": "not a PHP project (missing composer.json)", + "cmd.php.error.working_dir": "failed to get working directory", + "cmd.php.error.start_services": "failed to start services", + "cmd.php.error.stop_services": "failed to stop services", + "cmd.php.error.get_logs": "failed to get logs", + "cmd.php.error.detect_config": "failed to detect project configuration", + "cmd.php.error.build_failed": "build failed", + "cmd.php.error.start_container": "failed to start container", + "cmd.php.error.open_shell": "failed to open shell", + "cmd.php.error.link_packages": "failed to link packages", + "cmd.php.error.unlink_packages": "failed to unlink packages", + "cmd.php.error.update_packages": "composer update failed", + "cmd.php.error.list_packages": "failed to list packages", + "cmd.php.error.tests_failed": "tests failed", + "cmd.php.error.fmt_failed": "formatting failed", + "cmd.php.error.fmt_issues": "formatting issues found", + "cmd.php.error.analysis_issues": "analysis found issues", + "cmd.php.error.psalm_issues": "psalm found issues", + "cmd.php.error.psalm_not_installed": "psalm not installed", + "cmd.php.error.audit_failed": "audit failed", + "cmd.php.error.vulns_found": "vulnerabilities found", + "cmd.php.error.security_failed": "security check failed", + "cmd.php.error.critical_high_issues": "critical or high severity issues found", + "cmd.php.error.rector_failed": "rector failed", + "cmd.php.error.rector_not_installed": "rector not installed", + "cmd.php.error.infection_failed": "mutation testing failed", + "cmd.php.error.infection_not_installed": "infection not installed", + "cmd.php.error.mkcert_not_installed": "mkcert not installed", + "cmd.php.error.ssl_setup": "failed to setup SSL", + "cmd.php.error.deploy_failed": "deployment failed", + "cmd.php.error.status_failed": "failed to get status", + "cmd.php.error.rollback_failed": "rollback failed", + "cmd.php.error.list_deployments": "failed to list deployments", + + "cmd.go.short": "Go development tools", + "cmd.go.long": "Go development tools with enhanced output and environment setup.\n\nCommands:\n test Run tests\n cov Run tests with coverage report\n fmt Format Go code\n lint Run golangci-lint\n install Install Go binary\n mod Module management (tidy, download, verify)\n work Workspace management", + + "cmd.go.test.short": "Run tests with coverage", + "cmd.go.test.long": "Run Go tests with coverage reporting.\n\nSets MACOSX_DEPLOYMENT_TARGET=26.0 to suppress linker warnings.\nFilters noisy output and provides colour-coded coverage.\n\nExamples:\n core go test\n core go test --coverage\n core go test --pkg ./pkg/crypt\n core go test --run TestHash", + "cmd.go.test.label": "Test:", + "cmd.go.test.running": "Running tests", + "cmd.go.test.package_label": "Package:", + "cmd.go.test.passed": "{{.Count}} passed", + "cmd.go.test.passed_failed": "{{.Passed}} passed, {{.Failed}} failed", + "cmd.go.test.all_passed": "PASS All tests passed", + "cmd.go.test.some_failed": "FAIL Some tests failed", + "cmd.go.test.coverage": "Coverage", + "cmd.go.test.flag.coverage": "Show detailed per-package coverage", + "cmd.go.test.flag.pkg": "Package to test (default: ./...)", + "cmd.go.test.flag.run": "Run only tests matching regexp", + "cmd.go.test.flag.short": "Run only short tests", + "cmd.go.test.flag.race": "Enable race detector", + "cmd.go.test.flag.json": "Output JSON results", + "cmd.go.test.flag.verbose": "Verbose output", + + "cmd.go.cov.short": "Run tests with coverage report", + "cmd.go.cov.long": "Run tests and generate coverage report.\n\nExamples:\n core go cov # Run with coverage summary\n core go cov --html # Generate HTML report\n core go cov --open # Generate and open HTML report\n core go cov --threshold 80 # Fail if coverage < 80%", + "cmd.go.cov.label": "Coverage:", + "cmd.go.cov.running": "Running tests with coverage", + "cmd.go.cov.html_label": "HTML:", + "cmd.go.cov.open_manually": "(open manually)", + "cmd.go.cov.below_threshold": "FAIL Coverage {{.Actual}}% is below threshold {{.Threshold}}%", + "cmd.go.cov.error.discover": "failed to discover test packages", + "cmd.go.cov.error.no_packages": "no test packages found", + "cmd.go.cov.error.create_file": "failed to create coverage file", + "cmd.go.cov.error.get_coverage": "failed to get coverage", + "cmd.go.cov.error.generate_html": "failed to generate HTML", + "cmd.go.cov.error.below_threshold": "coverage below threshold", + "cmd.go.cov.flag.pkg": "Package to test (default: ./...)", + "cmd.go.cov.flag.html": "Generate HTML coverage report", + "cmd.go.cov.flag.open": "Generate and open HTML report in browser", + "cmd.go.cov.flag.threshold": "Minimum coverage percentage (exit 1 if below)", + + "cmd.go.fmt.short": "Format Go code", + "cmd.go.fmt.long": "Format Go code using gofmt or goimports.\n\nExamples:\n core go fmt # Check formatting\n core go fmt --fix # Fix formatting\n core go fmt --diff # Show diff", + "cmd.go.fmt.flag.fix": "Fix formatting in place", + "cmd.go.fmt.flag.diff": "Show diff of changes", + "cmd.go.fmt.flag.check": "Check only, exit 1 if not formatted", + + "cmd.go.lint.short": "Run golangci-lint", + "cmd.go.lint.long": "Run golangci-lint on the codebase.\n\nExamples:\n core go lint\n core go lint --fix", + "cmd.go.lint.flag.fix": "Fix issues automatically", + + "cmd.go.install.short": "Install Go binary", + "cmd.go.install.long": "Install Go binary to $GOPATH/bin.\n\nExamples:\n core go install # Install current module\n core go install ./cmd/core # Install specific path\n core go install --no-cgo # Pure Go (no C dependencies)\n core go install -v # Verbose output", + "cmd.go.install.label": "Install:", + "cmd.go.install.installing": "Installing", + "cmd.go.install.path_label": "Path:", + "cmd.go.install.cgo_label": "CGO:", + "cmd.go.install.cgo_disabled": "disabled", + "cmd.go.install.failed": "FAIL Install failed", + "cmd.go.install.success": "OK", + "cmd.go.install.installed_to": "Installed to {{.Path}}", + "cmd.go.install.flag.verbose": "Verbose output", + "cmd.go.install.flag.no_cgo": "Disable CGO (CGO_ENABLED=0)", + + "cmd.go.mod.short": "Module management", + "cmd.go.mod.long": "Go module management commands.\n\nCommands:\n tidy Add missing and remove unused modules\n download Download modules to local cache\n verify Verify dependencies\n graph Print module dependency graph", + "cmd.go.mod.tidy.short": "Tidy go.mod", + "cmd.go.mod.download.short": "Download modules", + "cmd.go.mod.verify.short": "Verify dependencies", + "cmd.go.mod.graph.short": "Print dependency graph", + + "cmd.go.work.short": "Workspace management", + "cmd.go.work.long": "Go workspace management commands.\n\nCommands:\n sync Sync go.work with modules\n init Initialize go.work\n use Add module to workspace", + "cmd.go.work.sync.short": "Sync workspace", + "cmd.go.work.init.short": "Initialize workspace", + "cmd.go.work.use.short": "Add module to workspace", + "cmd.go.work.added": "Added {{.Module}}", + "cmd.go.work.error.no_modules": "no go.mod files found", + + "cmd.go.build.short": "Build Go binaries", + + "cmd.doctor.short": "Check development environment", + "cmd.doctor.long": "Checks that all required tools are installed and configured.\nRun this before 'core setup' to ensure your environment is ready.", + "cmd.doctor.checking": "Checking development environment...", + "cmd.doctor.required": "Required:", + "cmd.doctor.optional": "Optional:", + "cmd.doctor.github": "GitHub Access:", + "cmd.doctor.workspace": "Workspace:", + "cmd.doctor.ready": "Doctor: Environment ready", + "cmd.doctor.issues": "Doctor: {{.Count}} issues found", + "cmd.doctor.issues_error": "{{.Count}} required tools missing", + "cmd.doctor.install_missing": "Install missing tools:", + "cmd.doctor.verbose_flag": "Show detailed version information", + "cmd.doctor.ssh_found": "SSH key found", + "cmd.doctor.ssh_missing": "SSH key missing - run: ssh-keygen && gh ssh-key add", + "cmd.doctor.cli_auth": "CLI authenticated", + "cmd.doctor.cli_auth_missing": "CLI authentication - run: gh auth login", + "cmd.doctor.repos_yaml_found": "Found repos.yaml at {{.Path}}", + "cmd.doctor.repos_cloned": "{{.Cloned}}/{{.Total}} repos cloned", + "cmd.doctor.no_repos_yaml": "No repos.yaml found (run from workspace directory)", + "cmd.doctor.install_macos": "brew install git gh php composer node pnpm docker", + "cmd.doctor.install_macos_cask": "brew install --cask claude", + "cmd.doctor.install_linux_header": "# Install via your package manager or:", + "cmd.doctor.install_linux_git": "# Git: apt install git", + "cmd.doctor.install_linux_gh": "# GitHub CLI: https://cli.github.com/", + "cmd.doctor.install_linux_php": "# PHP: apt install php8.3-cli", + "cmd.doctor.install_linux_node": "# Node: https://nodejs.org/", + "cmd.doctor.install_linux_pnpm": "# pnpm: npm install -g pnpm", + "cmd.doctor.install_other": "See documentation for your OS", + + "cmd.doctor.check.git.name": "Git", + "cmd.doctor.check.git.description": "Version control", + "cmd.doctor.check.gh.name": "GitHub CLI", + "cmd.doctor.check.gh.description": "GitHub integration (issues, PRs, CI)", + "cmd.doctor.check.php.name": "PHP", + "cmd.doctor.check.php.description": "Laravel packages", + "cmd.doctor.check.composer.name": "Composer", + "cmd.doctor.check.composer.description": "PHP dependencies", + "cmd.doctor.check.node.name": "Node.js", + "cmd.doctor.check.node.description": "Frontend builds", + "cmd.doctor.check.pnpm.name": "pnpm", + "cmd.doctor.check.pnpm.description": "Fast package manager", + "cmd.doctor.check.claude.name": "Claude Code", + "cmd.doctor.check.claude.description": "AI-assisted development", + "cmd.doctor.check.docker.name": "Docker", + "cmd.doctor.check.docker.description": "Container runtime", + + "cmd.setup.short": "Bootstrap workspace or clone packages from registry", + "cmd.setup.long": "Sets up a development workspace.\n\nREGISTRY MODE (repos.yaml exists):\n Clones all repositories defined in repos.yaml into packages/.\n Skips repos that already exist. Use --only to filter by type.\n\nBOOTSTRAP MODE (no repos.yaml):\n 1. Clones core-devops to set up the workspace\n 2. Presents an interactive wizard to select packages\n 3. Clones selected packages\n\nUse --all to skip the wizard and clone everything.", + + "cmd.setup.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.setup.flag.only": "Only clone repos of these types (comma-separated: foundation,module,product)", + "cmd.setup.flag.dry_run": "Show what would be cloned without cloning", + "cmd.setup.flag.all": "Skip wizard, clone all packages (non-interactive)", + "cmd.setup.flag.name": "Project directory name for bootstrap mode", + "cmd.setup.flag.build": "Run build after cloning", + + "cmd.setup.bootstrap_mode": "Bootstrap mode (no repos.yaml found)", + "cmd.setup.cloning_current_dir": "Cloning into current directory", + "cmd.setup.creating_project_dir": "Creating project directory", + "cmd.setup.cloning": "Cloning", + "cmd.setup.cloned": "cloned", + "cmd.setup.would_clone": "Would clone", + "cmd.setup.already_exists": "already exists", + "cmd.setup.would_load_registry": "Would load registry from", + + "cmd.setup.registry_label": "Registry:", + "cmd.setup.org_label": "Org:", + "cmd.setup.target_label": "Target:", + "cmd.setup.filter_label": "Filter:", + + "cmd.setup.to_clone": "{{.Count}} to clone", + "cmd.setup.exist": "{{.Count}} exist", + "cmd.setup.skipped": "{{.Count}} skipped", + "cmd.setup.nothing_to_clone": "Nothing to clone.", + "cmd.setup.would_clone_list": "Would clone:", + "cmd.setup.cancelled": "Cancelled.", + "cmd.setup.done": "done", + "cmd.setup.done_label": "Done:", + "cmd.setup.cloned_count": "{{.Count}} cloned", + "cmd.setup.failed_count": "{{.Count}} failed", + "cmd.setup.already_exist_count": "{{.Count}} already exist", + "cmd.setup.running_build": "Running build...", + "cmd.setup.complete": "Setup complete", + + "cmd.setup.repo.setting_up": "Setting up repository", + "cmd.setup.repo.detected_type": "Detected project type", + "cmd.setup.repo.would_create": "Would create", + "cmd.setup.repo.created": "Created", + + "cmd.setup.wizard.git_repo_title": "This directory is a git repository", + "cmd.setup.wizard.what_to_do": "What would you like to do?", + "cmd.setup.wizard.option_setup": "Setup Working Directory", + "cmd.setup.wizard.option_package": "Create Package (clone repos into subdirectory)", + "cmd.setup.wizard.project_name_title": "Project directory name", + "cmd.setup.wizard.project_name_desc": "Enter the name for your new workspace directory", + "cmd.setup.wizard.package_selection": "Package Selection", + "cmd.setup.wizard.selection_hint": "Use space to select/deselect, enter to confirm", + "cmd.setup.wizard.select_packages": "Select packages to clone", + "cmd.setup.wizard.confirm_clone": "Clone {{.Count}} packages to {{.Target}}?", + "cmd.setup.wizard.confirm_yes": "Yes, clone", + "cmd.setup.wizard.confirm_cancel": "Cancel", + + "cmd.setup.error.build_failed": "build failed", + + "cmd.build.short": "Build projects with auto-detection and cross-compilation", + "cmd.build.long": "Builds the current project with automatic type detection.\nSupports Go, Wails, Docker, LinuxKit, and Taskfile projects.\nConfiguration can be provided via .core/build.yaml or command-line flags.\n\nExamples:\n core build # Auto-detect and build\n core build --type docker # Build Docker image\n core build --type linuxkit # Build LinuxKit image\n core build --type linuxkit --config linuxkit.yml --format qcow2-bios", + + "cmd.build.from_path.short": "Build from a local directory", + "cmd.build.from_path.starting": "Starting build from path:", + "cmd.build.from_path.generating_template": "Generating application from template...", + "cmd.build.from_path.copying_files": "Copying application files...", + "cmd.build.from_path.compiling": "Compiling application...", + "cmd.build.from_path.success": "Build successful! Executable created at:", + "cmd.build.from_path.flag.path": "The path to the static web application files", + "cmd.build.from_path.error.invalid_path": "invalid path specified", + "cmd.build.from_path.error.must_be_directory": "path specified must be a directory", + "cmd.build.from_path.error.clean_build_dir": "failed to clean build directory", + "cmd.build.from_path.error.anchor_template": "failed to anchor template filesystem", + "cmd.build.from_path.error.create_sod": "failed to create new sod instance", + "cmd.build.from_path.error.extract_template": "failed to extract template", + "cmd.build.from_path.error.copy_files": "failed to copy application files", + "cmd.build.from_path.error.go_mod_tidy": "go mod tidy failed", + "cmd.build.from_path.error.go_build": "go build failed", + + "cmd.build.pwa.short": "Build from a live PWA URL", + "cmd.build.pwa.starting": "Starting PWA build from URL:", + "cmd.build.pwa.downloading_to": "Downloading PWA to temporary directory:", + "cmd.build.pwa.found_manifest": "Found manifest:", + "cmd.build.pwa.download_complete": "PWA download complete.", + "cmd.build.pwa.warning": "Warning:", + "cmd.build.pwa.no_manifest": "no manifest file found. Proceeding with basic site download.", + "cmd.build.pwa.asset_download_failed": "failed to download asset", + "cmd.build.pwa.flag.url": "The URL of the PWA to build", + "cmd.build.pwa.error.create_temp_dir": "failed to create temporary directory", + "cmd.build.pwa.error.download_failed": "failed to download PWA", + "cmd.build.pwa.error.fetch_url": "failed to fetch URL", + "cmd.build.pwa.error.read_response": "failed to read response body", + "cmd.build.pwa.error.write_index": "failed to write index.html", + "cmd.build.pwa.error.fetch_manifest": "failed to fetch or parse manifest", + "cmd.build.pwa.error.no_manifest_tag": "no tag found", + + "cmd.build.sdk.short": "Generate API SDKs from OpenAPI spec", + "cmd.build.sdk.long": "Generates typed API clients from OpenAPI specifications.\nSupports TypeScript, Python, Go, and PHP.\n\nExamples:\n core build sdk # Generate all configured SDKs\n core build sdk --lang typescript # Generate only TypeScript SDK\n core build sdk --spec api.yaml # Use specific OpenAPI spec", + "cmd.build.sdk.label": "Build SDK:", + "cmd.build.sdk.generating": "Generating SDKs", + "cmd.build.sdk.dry_run_mode": "(dry-run mode)", + "cmd.build.sdk.spec_label": "Spec:", + "cmd.build.sdk.language_label": "Language:", + "cmd.build.sdk.languages_label": "Languages:", + "cmd.build.sdk.generated_label": "Generated:", + "cmd.build.sdk.would_generate": "Would generate SDKs (dry-run)", + "cmd.build.sdk.complete": "SDK generation complete", + "cmd.build.sdk.flag.spec": "Path to OpenAPI spec file", + "cmd.build.sdk.flag.lang": "Generate only this language (typescript, python, go, php)", + "cmd.build.sdk.flag.version": "Version to embed in generated SDKs", + "cmd.build.sdk.flag.dry_run": "Show what would be generated without writing files", + + "cmd.build.flag.type": "Builder type (go, wails, docker, linuxkit, taskfile) - auto-detected if not specified", + "cmd.build.flag.ci": "CI mode - minimal output with JSON artifact list at the end", + "cmd.build.flag.targets": "Comma-separated OS/arch pairs (e.g., linux/amd64,darwin/arm64)", + "cmd.build.flag.output": "Output directory for artifacts (default: dist)", + "cmd.build.flag.archive": "Create archives (tar.gz for linux/darwin, zip for windows)", + "cmd.build.flag.checksum": "Generate SHA256 checksums and CHECKSUMS.txt", + "cmd.build.flag.config": "Config file path (for linuxkit: YAML config, for docker: Dockerfile)", + "cmd.build.flag.format": "Output format for linuxkit (iso-bios, qcow2-bios, raw, vmdk)", + "cmd.build.flag.push": "Push Docker image after build", + "cmd.build.flag.image": "Docker image name (e.g., host-uk/core-devops)", + "cmd.build.flag.no_sign": "Skip all code signing", + "cmd.build.flag.notarize": "Enable macOS notarization (requires Apple credentials)", + + "cmd.build.label.build": "Build:", + "cmd.build.label.type": "Type:", + "cmd.build.label.output": "Output:", + "cmd.build.label.binary": "Binary:", + "cmd.build.label.targets": "Targets:", + "cmd.build.label.error": "Error:", + "cmd.build.label.success": "Success:", + "cmd.build.label.sign": "Sign:", + "cmd.build.label.archive": "Archive:", + "cmd.build.label.checksum": "Checksum:", + "cmd.build.label.ok": "OK:", + + "cmd.build.building_project": "Building project", + "cmd.build.built_artifacts": "Built {{.Count}} artifact(s)", + "cmd.build.signing_binaries": "Signing binaries...", + "cmd.build.creating_archives": "Creating archives...", + "cmd.build.computing_checksums": "Computing checksums...", + + "cmd.build.error.working_dir": "failed to get working directory", + "cmd.build.error.load_config": "failed to load config", + "cmd.build.error.detect_type": "failed to detect project type", + "cmd.build.error.no_project_type": "no supported project type detected in {{.Dir}}\nSupported types: go (go.mod), wails (wails.json), node (package.json), php (composer.json)", + "cmd.build.error.build_failed": "build failed", + "cmd.build.error.signing_failed": "signing failed", + "cmd.build.error.notarization_failed": "notarization failed", + "cmd.build.error.archive_failed": "archive failed", + "cmd.build.error.marshal_artifacts": "failed to marshal artifacts", + "cmd.build.error.checksum_failed": "checksum failed", + "cmd.build.error.write_checksums": "failed to write CHECKSUMS.txt", + "cmd.build.error.gpg_signing_failed": "GPG signing failed", + "cmd.build.error.invalid_target": "invalid target format \"{{.Target}}\", expected OS/arch (e.g., linux/amd64)", + "cmd.build.error.no_targets": "no valid targets specified", + "cmd.build.error.node_not_implemented": "Node.js builder not yet implemented", + "cmd.build.error.php_not_implemented": "PHP builder not yet implemented", + "cmd.build.error.unsupported_type": "unsupported project type", + + "cmd.ai.short": "AI agent task management", + "cmd.ai.long": "Manage tasks from the core-agentic service for AI-assisted development.\n\nCommands:\n tasks List tasks (filterable by status, priority, labels)\n task View task details or auto-select highest priority\n task:update Update task status or progress\n task:complete Mark task as completed or failed\n task:commit Create git commit with task reference\n task:pr Create GitHub PR linked to task\n claude Claude Code integration\n\nWorkflow:\n core ai tasks # List pending tasks\n core ai task --auto --claim # Auto-select and claim a task\n core ai task:commit -m 'msg' # Commit with task reference\n core ai task:complete # Mark task done", + + "cmd.ai.claude.short": "Claude Code integration", + "cmd.ai.claude.long": "Tools for working with Claude Code.\n\nCommands:\n run Run Claude in the current directory\n config Manage Claude configuration", + "cmd.ai.claude.run.short": "Run Claude Code in the current directory", + "cmd.ai.claude.config.short": "Manage Claude configuration", + + "cmd.ai.tasks.short": "List available tasks from core-agentic", + "cmd.ai.tasks.long": "Lists tasks from the core-agentic service.\n\nConfiguration is loaded from:\n 1. Environment variables (AGENTIC_TOKEN, AGENTIC_BASE_URL)\n 2. .env file in current directory\n 3. ~/.core/agentic.yaml\n\nExamples:\n core ai tasks\n core ai tasks --status pending --priority high\n core ai tasks --labels bug,urgent", + "cmd.ai.tasks.none_found": "No tasks found.", + "cmd.ai.tasks.found": "{{.Count}} task(s) found:", + "cmd.ai.tasks.hint": "Use 'core ai task ' to view details", + "cmd.ai.tasks.flag.status": "Filter by status (pending, in_progress, completed, blocked)", + "cmd.ai.tasks.flag.priority": "Filter by priority (critical, high, medium, low)", + "cmd.ai.tasks.flag.labels": "Filter by labels (comma-separated)", + "cmd.ai.tasks.flag.limit": "Max number of tasks to return", + "cmd.ai.tasks.flag.project": "Filter by project", + + "cmd.ai.task.short": "Show task details or auto-select a task", + "cmd.ai.task.long": "Shows details of a specific task or auto-selects the highest priority task.\n\nExamples:\n core ai task abc123 # Show task details\n core ai task abc123 --claim # Show and claim the task\n core ai task abc123 --context # Show task with gathered context\n core ai task --auto # Auto-select highest priority pending task", + "cmd.ai.task.no_pending": "No pending tasks available.", + "cmd.ai.task.id_required": "task ID required (or use --auto)", + "cmd.ai.task.context_failed": "Failed to build context", + "cmd.ai.task.claiming": "Claiming task...", + "cmd.ai.task.claimed": "Task claimed successfully!", + "cmd.ai.task.flag.auto": "Auto-select highest priority pending task", + "cmd.ai.task.flag.claim": "Claim the task after showing details", + "cmd.ai.task.flag.context": "Show gathered context for AI collaboration", + + "cmd.ai.task_update.short": "Update task status or progress", + "cmd.ai.task_update.long": "Updates a task's status, progress, or adds notes.\n\nExamples:\n core ai task:update abc123 --status in_progress\n core ai task:update abc123 --progress 50 --notes 'Halfway done'", + "cmd.ai.task_update.flag_required": "at least one of --status, --progress, or --notes required", + "cmd.ai.task_update.success": "Task {{.ID}} updated successfully", + "cmd.ai.task_update.flag.status": "New status (pending, in_progress, completed, blocked)", + "cmd.ai.task_update.flag.progress": "Progress percentage (0-100)", + "cmd.ai.task_update.flag.notes": "Notes about the update", + + "cmd.ai.task_complete.short": "Mark a task as completed", + "cmd.ai.task_complete.long": "Marks a task as completed with optional output and artifacts.\n\nExamples:\n core ai task:complete abc123 --output 'Feature implemented'\n core ai task:complete abc123 --failed --error 'Build failed'", + "cmd.ai.task_complete.success": "Task {{.ID}} completed successfully", + "cmd.ai.task_complete.failed": "Task {{.ID}} marked as failed", + "cmd.ai.task_complete.flag.output": "Summary of the completed work", + "cmd.ai.task_complete.flag.failed": "Mark the task as failed", + "cmd.ai.task_complete.flag.error": "Error message if failed", + + "cmd.ai.task_commit.short": "Auto-commit changes with task reference", + "cmd.ai.task_commit.long": "Creates a git commit with a task reference and co-author attribution.\n\nCommit message format:\n feat(scope): description\n\n Task: #123\n Co-Authored-By: Claude \n\nExamples:\n core ai task:commit abc123 --message 'add user authentication'\n core ai task:commit abc123 -m 'fix login bug' --scope auth\n core ai task:commit abc123 -m 'update docs' --push", + "cmd.ai.task_commit.message_required": "commit message required (--message or -m)", + "cmd.ai.task_commit.no_changes": "No uncommitted changes to commit.", + "cmd.ai.task_commit.creating": "Creating commit for task {{.ID}}...", + "cmd.ai.task_commit.committed": "Committed:", + "cmd.ai.task_commit.pushing": "Pushing changes...", + "cmd.ai.task_commit.pushed": "Changes pushed successfully", + "cmd.ai.task_commit.flag.message": "Commit message (without task reference)", + "cmd.ai.task_commit.flag.scope": "Scope for the commit type (e.g., auth, api, ui)", + "cmd.ai.task_commit.flag.push": "Push changes after committing", + + "cmd.ai.task_pr.short": "Create a pull request for a task", + "cmd.ai.task_pr.long": "Creates a GitHub pull request linked to a task.\n\nRequires the GitHub CLI (gh) to be installed and authenticated.\n\nExamples:\n core ai task:pr abc123\n core ai task:pr abc123 --title 'Add authentication feature'\n core ai task:pr abc123 --draft --labels 'enhancement,needs-review'\n core ai task:pr abc123 --base develop", + "cmd.ai.task_pr.branch_error": "cannot create PR from {{.Branch}} branch; create a feature branch first", + "cmd.ai.task_pr.pushing_branch": "Pushing branch {{.Branch}}...", + "cmd.ai.task_pr.creating": "Creating pull request...", + "cmd.ai.task_pr.created": "Pull request created!", + "cmd.ai.task_pr.flag.title": "PR title (defaults to task title)", + "cmd.ai.task_pr.flag.draft": "Create as draft PR", + "cmd.ai.task_pr.flag.labels": "Labels to add (comma-separated)", + "cmd.ai.task_pr.flag.base": "Base branch (defaults to main)", + + "cmd.ai.priority.critical": "CRITICAL", + "cmd.ai.priority.high": "HIGH", + "cmd.ai.priority.medium": "MEDIUM", + "cmd.ai.priority.low": "LOW", + + "cmd.ai.status.pending": "pending", + "cmd.ai.status.in_progress": "in_progress", + "cmd.ai.status.completed": "completed", + "cmd.ai.status.blocked": "blocked", + + "cmd.ai.label.id": "ID:", + "cmd.ai.label.title": "Title:", + "cmd.ai.label.priority": "Priority:", + "cmd.ai.label.status": "Status:", + "cmd.ai.label.project": "Project:", + "cmd.ai.label.labels": "Labels:", + "cmd.ai.label.claimed_by": "Claimed by:", + "cmd.ai.label.created": "Created:", + "cmd.ai.label.description": "Description:", + "cmd.ai.label.related_files": "Related files:", + "cmd.ai.label.blocked_by": "Blocked by:", + "cmd.ai.label.url": "URL:", + + "cmd.ai.error.load_config": "failed to load config", + "cmd.ai.error.list_tasks": "failed to list tasks", + "cmd.ai.error.get_task": "failed to get task", + "cmd.ai.error.claim_task": "failed to claim task", + "cmd.ai.error.update_task": "failed to update task", + "cmd.ai.error.complete_task": "failed to complete task", + "cmd.ai.error.working_dir": "failed to get working directory", + "cmd.ai.error.git_status": "failed to check git status", + "cmd.ai.error.commit": "failed to commit", + "cmd.ai.error.push": "failed to push", + "cmd.ai.error.get_branch": "failed to get current branch", + "cmd.ai.error.push_branch": "failed to push branch", + "cmd.ai.error.create_pr": "failed to create PR", + + "cmd.vm.short": "LinuxKit VM management", + "cmd.vm.long": "Manage LinuxKit virtual machines.\n\nLinuxKit VMs are lightweight, immutable VMs built from YAML templates.\nThey run using qemu or hyperkit depending on your system.\n\nCommands:\n run Run a VM from image or template\n ps List running VMs\n stop Stop a running VM\n logs View VM logs\n exec Execute command in VM\n templates Manage LinuxKit templates", + + "cmd.vm.run.short": "Run a LinuxKit image or template", + "cmd.vm.run.long": "Runs a LinuxKit image as a VM using the available hypervisor.\n\nSupported image formats: .iso, .qcow2, .vmdk, .raw\n\nYou can also run from a template using --template, which will build and run\nthe image automatically. Use --var to set template variables.\n\nExamples:\n core vm run image.iso\n core vm run -d image.qcow2\n core vm run --name myvm --memory 2048 --cpus 4 image.iso\n core vm run --template core-dev --var SSH_KEY=\"ssh-rsa AAAA...\"\n core vm run --template server-php --var SSH_KEY=\"...\" --var DOMAIN=example.com", + "cmd.vm.run.flag.name": "Name for the container", + "cmd.vm.run.flag.detach": "Run in detached mode (background)", + "cmd.vm.run.flag.memory": "Memory in MB (default: 1024)", + "cmd.vm.run.flag.cpus": "Number of CPUs (default: 1)", + "cmd.vm.run.flag.ssh_port": "SSH port for exec commands (default: 2222)", + "cmd.vm.run.flag.template": "Run from a LinuxKit template (build + run)", + "cmd.vm.run.flag.var": "Template variable in KEY=VALUE format (can be repeated)", + "cmd.vm.run.error.image_required": "image path is required (or use --template)", + + "cmd.vm.ps.short": "List running VMs", + "cmd.vm.ps.long": "Lists all VMs. By default, only shows running VMs.\n\nExamples:\n core vm ps\n core vm ps -a", + "cmd.vm.ps.flag.all": "Show all containers (including stopped)", + "cmd.vm.ps.header": "ID\tNAME\tIMAGE\tSTATUS\tSTARTED\tPID", + "cmd.vm.ps.no_containers": "No containers", + "cmd.vm.ps.no_running": "No running containers", + + "cmd.vm.stop.short": "Stop a running VM", + "cmd.vm.stop.long": "Stops a running VM by ID.\n\nExamples:\n core vm stop abc12345\n core vm stop abc1", + "cmd.vm.stop.stopping": "Stopping:", + "cmd.vm.stop.stopped": "Stopped", + + "cmd.vm.logs.short": "View VM logs", + "cmd.vm.logs.long": "View logs from a VM.\n\nExamples:\n core vm logs abc12345\n core vm logs -f abc1", + "cmd.vm.logs.flag.follow": "Follow log output", + + "cmd.vm.exec.short": "Execute a command in a VM", + "cmd.vm.exec.long": "Execute a command inside a running VM via SSH.\n\nExamples:\n core vm exec abc12345 ls -la\n core vm exec abc1 /bin/sh", + + "cmd.vm.templates.short": "Manage LinuxKit templates", + "cmd.vm.templates.long": "Manage LinuxKit YAML templates for building VMs.\n\nTemplates provide pre-configured LinuxKit configurations for common use cases.\nThey support variable substitution with ${VAR} and ${VAR:-default} syntax.\n\nExamples:\n core vm templates # List available templates\n core vm templates show core-dev # Show template content\n core vm templates vars server-php # Show template variables", + "cmd.vm.templates.title": "Available LinuxKit Templates", + "cmd.vm.templates.header": "NAME\tDESCRIPTION", + "cmd.vm.templates.no_templates": "No templates available.", + "cmd.vm.templates.hint.show": "Show template:", + "cmd.vm.templates.hint.vars": "Show variables:", + "cmd.vm.templates.hint.run": "Run from template:", + + "cmd.vm.templates.show.short": "Display template content", + "cmd.vm.templates.show.long": "Display the content of a LinuxKit template.\n\nExamples:\n core templates show core-dev\n core templates show server-php", + + "cmd.vm.templates.vars.short": "Show template variables", + "cmd.vm.templates.vars.long": "Display all variables used in a template.\n\nShows required variables (no default) and optional variables (with defaults).\n\nExamples:\n core templates vars core-dev\n core templates vars server-php", + "cmd.vm.templates.vars.required": "Required Variables (no default):", + "cmd.vm.templates.vars.optional": "Optional Variables (with defaults):", + "cmd.vm.templates.vars.none": "No variables in this template.", + + "cmd.vm.label.image": "Image:", + "cmd.vm.label.name": "Name:", + "cmd.vm.label.hypervisor": "Hypervisor:", + "cmd.vm.label.started": "Started:", + "cmd.vm.label.pid": "PID:", + "cmd.vm.label.container_stopped": "Container stopped:", + "cmd.vm.label.template": "Template:", + "cmd.vm.label.building": "Building:", + + "cmd.vm.hint.view_logs": "Use 'core vm logs {{.ID}}' to view output", + "cmd.vm.hint.stop": "Use 'core vm stop {{.ID}}' to stop", + + "cmd.vm.error.init_manager": "failed to initialize container manager", + "cmd.vm.error.run_container": "failed to run container", + "cmd.vm.error.list_containers": "failed to list containers", + "cmd.vm.error.stop_container": "failed to stop container", + "cmd.vm.error.get_logs": "failed to get logs", + "cmd.vm.error.id_required": "container ID is required", + "cmd.vm.error.id_and_cmd_required": "container ID and command are required", + "cmd.vm.error.no_match": "no container found matching: {{.ID}}", + "cmd.vm.error.multiple_match": "multiple containers match '{{.ID}}', be more specific", + "cmd.vm.error.template_required": "template name is required", + "cmd.vm.error.apply_template": "failed to apply template", + "cmd.vm.error.create_temp": "failed to create temp directory", + "cmd.vm.error.write_template": "failed to write template", + "cmd.vm.error.build_image": "failed to build image", + "cmd.vm.error.no_image_found": "no image found after build", + "cmd.vm.error.linuxkit_not_found": "linuxkit not found. Install with: brew install linuxkit (macOS) or see https://github.com/linuxkit/linuxkit", + + "cmd.docs.short": "Documentation management", + "cmd.docs.long": "Manage documentation across all repos.\nScan for docs, check coverage, and sync to core-php/docs/packages/.", + + "cmd.docs.list.short": "List documentation across repos", + "cmd.docs.list.long": "List documentation files for all repos in the workspace.\n\nShows README.md, CLAUDE.md, CHANGELOG.md, and docs/ directory status\nfor each repository.", + "cmd.docs.list.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.docs.list.header.repo": "Repo", + "cmd.docs.list.header.readme": "README", + "cmd.docs.list.header.claude": "CLAUDE", + "cmd.docs.list.header.changelog": "CHANGELOG", + "cmd.docs.list.header.docs": "docs/", + "cmd.docs.list.files_count": "{{.Count}} files", + "cmd.docs.list.coverage_label": "Coverage", + "cmd.docs.list.coverage_summary": "{{.WithDocs}} with docs, {{.WithoutDocs}} without", + + "cmd.docs.sync.short": "Sync documentation to core-php/docs/packages/", + "cmd.docs.sync.long": "Sync documentation from all repos to a central location.\n\nCopies docs/ directories from each package to core-php/docs/packages/\nfor unified documentation builds.", + "cmd.docs.sync.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.docs.sync.flag.dry_run": "Show what would be synced without copying", + "cmd.docs.sync.flag.output": "Output directory (default: core-php/docs/packages)", + "cmd.docs.sync.no_docs_found": "No documentation found in any repos.", + "cmd.docs.sync.found_label": "Found", + "cmd.docs.sync.repos_with_docs": "{{.Count}} repo(s) with docs/ directories", + "cmd.docs.sync.files_count": "({{.Count}} files)", + "cmd.docs.sync.total_label": "Total:", + "cmd.docs.sync.total_summary": "{{.Files}} files from {{.Repos}} repos → {{.Output}}", + "cmd.docs.sync.dry_run_notice": "Dry run - no files copied", + "cmd.docs.sync.confirm": "Sync?", + "cmd.docs.sync.done_label": "Done:", + "cmd.docs.sync.synced_packages": "Synced {{.Count}} packages", + + "cmd.docs.error.load_registry": "failed to load registry", + "cmd.docs.error.scan_directory": "failed to scan directory", + + "cmd.pkg.short": "Package management for core-* repos", + "cmd.pkg.long": "Manage host-uk/core-* packages and repositories.\n\nCommands:\n search Search GitHub for packages\n install Clone a package from GitHub\n list List installed packages\n update Update installed packages\n outdated Check for outdated packages", + "cmd.pkg.no_description": "(no description)", + + "cmd.pkg.search.short": "Search GitHub for packages", + "cmd.pkg.search.long": "Searches GitHub for repositories matching a pattern.\nUses gh CLI for authenticated search. Results are cached for 1 hour.\n\nExamples:\n core pkg search # List all host-uk repos\n core pkg search --pattern 'core-*' # Search for core-* repos\n core pkg search --org mycompany # Search different org\n core pkg search --refresh # Bypass cache", + "cmd.pkg.search.flag.org": "GitHub organization (default: host-uk)", + "cmd.pkg.search.flag.pattern": "Repo name pattern (* for wildcard)", + "cmd.pkg.search.flag.type": "Filter by type in name (mod, services, plug, website)", + "cmd.pkg.search.flag.limit": "Max results (default 50)", + "cmd.pkg.search.flag.refresh": "Bypass cache and fetch fresh data", + "cmd.pkg.search.cache_label": "Cache:", + "cmd.pkg.search.note_label": "Note:", + "cmd.pkg.search.fetching_label": "Fetching:", + "cmd.pkg.search.gh_token_warning": "GH_TOKEN env var is set - this may cause auth issues", + "cmd.pkg.search.gh_token_unset": "Unset it with: unset GH_TOKEN", + "cmd.pkg.search.no_repos_found": "No repositories found matching pattern.", + "cmd.pkg.search.found_repos": "Found {{.Count}} repositories:", + "cmd.pkg.search.private_label": "[private]", + "cmd.pkg.search.install_with": "Install with:", + + "cmd.pkg.install.short": "Clone a package from GitHub", + "cmd.pkg.install.long": "Clones a repository from GitHub.\n\nExamples:\n core pkg install host-uk/core-php\n core pkg install host-uk/core-tenant --dir ./packages\n core pkg install host-uk/core-admin --add", + "cmd.pkg.install.flag.dir": "Target directory (default: ./packages or current dir)", + "cmd.pkg.install.flag.add": "Add to repos.yaml registry", + "cmd.pkg.install.skip_label": "Skip:", + "cmd.pkg.install.already_exists": "{{.Name}} already exists at {{.Path}}", + "cmd.pkg.install.installing_label": "Installing:", + "cmd.pkg.install.target_label": "Target:", + "cmd.pkg.install.cloning": "Cloning", + "cmd.pkg.install.add_to_registry": "add to registry", + "cmd.pkg.install.added_to_registry": "added to repos.yaml", + "cmd.pkg.install.done_label": "Done:", + "cmd.pkg.install.installed": "Installed {{.Name}}", + + "cmd.pkg.list.short": "List installed packages", + "cmd.pkg.list.long": "Lists all packages in the current workspace.\n\nReads from repos.yaml or scans for git repositories.\n\nExamples:\n core pkg list", + "cmd.pkg.list.title": "Installed Packages", + "cmd.pkg.list.no_packages": "No packages in registry.", + "cmd.pkg.list.total_label": "Total:", + "cmd.pkg.list.summary": "{{.Installed}} installed, {{.Missing}} missing", + "cmd.pkg.list.install_missing": "Install missing:", + + "cmd.pkg.update.short": "Update installed packages", + "cmd.pkg.update.long": "Pulls latest changes for installed packages.\n\nExamples:\n core pkg update core-php # Update specific package\n core pkg update --all # Update all packages", + "cmd.pkg.update.flag.all": "Update all packages", + "cmd.pkg.update.update_label": "Update:", + "cmd.pkg.update.updating": "Updating {{.Count}} package(s)", + "cmd.pkg.update.not_installed": "not installed", + "cmd.pkg.update.up_to_date": "up to date", + "cmd.pkg.update.done_label": "Done:", + "cmd.pkg.update.summary": "{{.Updated}} updated, {{.Skipped}} skipped, {{.Failed}} failed", + + "cmd.pkg.outdated.short": "Check for outdated packages", + "cmd.pkg.outdated.long": "Checks which packages have unpulled commits.\n\nExamples:\n core pkg outdated", + "cmd.pkg.outdated.outdated_label": "Outdated:", + "cmd.pkg.outdated.checking": "Checking for updates...", + "cmd.pkg.outdated.commits_behind": "{{.Count}} commits behind", + "cmd.pkg.outdated.done_label": "Done:", + "cmd.pkg.outdated.all_up_to_date": "All packages up to date", + "cmd.pkg.outdated.summary_label": "Summary:", + "cmd.pkg.outdated.summary": "{{.Outdated}} outdated, {{.UpToDate}} up to date", + "cmd.pkg.outdated.update_with": "Update with:", + + "cmd.pkg.error.gh_not_authenticated": "gh CLI not authenticated. Run: gh auth login", + "cmd.pkg.error.auth_failed": "authentication failed - try: unset GH_TOKEN && gh auth login", + "cmd.pkg.error.search_failed": "search failed: %s", + "cmd.pkg.error.parse_results": "failed to parse results: %w", + "cmd.pkg.error.repo_required": "repository is required (e.g., core pkg install host-uk/core-php)", + "cmd.pkg.error.invalid_repo_format": "invalid repo format: use org/repo (e.g., host-uk/core-php)", + "cmd.pkg.error.create_directory": "failed to create directory: %w", + "cmd.pkg.error.no_repos_yaml": "no repos.yaml found", + "cmd.pkg.error.no_repos_yaml_workspace": "no repos.yaml found - run from workspace directory", + "cmd.pkg.error.load_registry": "failed to load registry: %w", + "cmd.pkg.error.specify_package": "specify package name or use --all", + + "cmd.ci.short": "Publish releases (dry-run by default)", + "cmd.ci.long": "Publishes pre-built artifacts from dist/ to configured targets.\nRun 'core build' first to create artifacts.\n\nSAFE BY DEFAULT: Runs in dry-run mode unless --we-are-go-for-launch is specified.\n\nConfiguration: .core/release.yaml", + + "cmd.ci.init.short": "Initialize release configuration", + "cmd.ci.init.long": "Creates a .core/release.yaml configuration file interactively.", + "cmd.ci.init.config_exists": "Configuration already exists at", + "cmd.ci.init.overwrite_prompt": "Overwrite? [y/N]: ", + "cmd.ci.init.creating": "Creating release configuration", + "cmd.ci.init.project_name": "Project name", + "cmd.ci.init.github_repo": "GitHub repository (owner/repo):", + "cmd.ci.init.config_written": "Configuration written to", + + "cmd.ci.changelog.short": "Generate changelog", + "cmd.ci.changelog.long": "Generates a changelog from conventional commits.", + "cmd.ci.changelog.flag.from": "Starting ref (default: previous tag)", + "cmd.ci.changelog.flag.to": "Ending ref (default: HEAD)", + + "cmd.ci.version.short": "Show or set version", + "cmd.ci.version.long": "Shows the determined version or validates a version string.", + + "cmd.ci.release.short": "Create a release", + + "cmd.ci.flag.go_for_launch": "Actually publish (default is dry-run for safety)", + "cmd.ci.flag.version": "Version to release (e.g., v1.2.3)", + "cmd.ci.flag.draft": "Create release as a draft", + "cmd.ci.flag.prerelease": "Mark release as a prerelease", + + "cmd.ci.publishing": "Publishing release", + "cmd.ci.dry_run_hint": "(dry-run) use --we-are-go-for-launch to publish", + "cmd.ci.go_for_launch": "GO FOR LAUNCH", + "cmd.ci.publish_completed": "Publish completed!", + + "cmd.ci.label.ci": "CI:", + "cmd.ci.label.init": "Init:", + "cmd.ci.label.note": "Note:", + "cmd.ci.label.error": "Error:", + "cmd.ci.label.success": "Success:", + "cmd.ci.label.version": "Version:", + "cmd.ci.label.artifacts": "Artifacts:", + "cmd.ci.label.published": "Published:", + + "cmd.ci.error.working_dir": "failed to get working directory", + "cmd.ci.error.load_config": "failed to load config", + "cmd.ci.error.write_config": "failed to write config", + "cmd.ci.error.no_publishers": "no publishers configured in .core/release.yaml", + "cmd.ci.error.generate_changelog": "failed to generate changelog", + "cmd.ci.error.determine_version": "failed to determine version", + + "cmd.sdk.short": "SDK validation and API compatibility tools", + "cmd.sdk.long": "Tools for validating OpenAPI specs and checking API compatibility.\nTo generate SDKs, use: core build sdk\n\nCommands:\n diff Check for breaking API changes\n validate Validate OpenAPI spec syntax", + + "cmd.sdk.diff.short": "Check for breaking API changes", + "cmd.sdk.diff.long": "Check for breaking API changes between spec versions.\n\nCompares a base spec (version tag or file) against the current spec\nand reports any breaking changes that would affect API consumers.", + "cmd.sdk.diff.flag.base": "Base spec (version tag or file)", + "cmd.sdk.diff.flag.spec": "Current spec file", + "cmd.sdk.diff.label": "SDK Diff:", + "cmd.sdk.diff.checking": "Checking for breaking changes", + "cmd.sdk.diff.base_label": "Base:", + "cmd.sdk.diff.current_label": "Current:", + "cmd.sdk.diff.breaking": "Breaking:", + "cmd.sdk.diff.error.base_required": "--base is required (version tag or file path)", + + "cmd.sdk.validate.short": "Validate OpenAPI spec", + "cmd.sdk.validate.long": "Validate OpenAPI spec syntax.\n\nChecks that the OpenAPI specification file is valid and well-formed.", + "cmd.sdk.validate.flag.spec": "Path to OpenAPI spec file", + "cmd.sdk.validate.validating": "Validating OpenAPI spec", + "cmd.sdk.validate.spec_label": "Spec:", + "cmd.sdk.validate.valid": "Spec is valid", + + "cmd.sdk.label.sdk": "SDK:", + "cmd.sdk.label.ok": "OK:", + "cmd.sdk.label.error": "Error:", + "cmd.sdk.error.working_dir": "failed to get working directory", + + "cmd.test.short": "Run tests with coverage", + "cmd.test.long": "Runs Go tests with coverage reporting.\n\nSets MACOSX_DEPLOYMENT_TARGET=26.0 to suppress linker warnings on macOS.\n\nExamples:\n core test # Run all tests with coverage summary\n core test --verbose # Show test output as it runs\n core test --coverage # Show detailed per-package coverage\n core test --pkg ./pkg/... # Test specific packages\n core test --run TestName # Run specific test by name\n core test --short # Skip long-running tests\n core test --race # Enable race detector\n core test --json # Output JSON for CI/agents", + "cmd.test.running": "Running tests", + "cmd.test.all_passed": "All tests passed", + "cmd.test.tests_failed": "Tests failed", + "cmd.test.passed": "{{.Count}} passed", + "cmd.test.failed": "{{.Count}} failed", + "cmd.test.skipped": "{{.Count}} skipped", + "cmd.test.failed_packages": "Failed packages:", + "cmd.test.coverage_by_package": "Coverage by package:", + + "cmd.test.flag.verbose": "Show test output as it runs (-v)", + "cmd.test.flag.coverage": "Show detailed per-package coverage", + "cmd.test.flag.short": "Skip long-running tests (-short)", + "cmd.test.flag.pkg": "Package pattern to test (default: ./...)", + "cmd.test.flag.run": "Run only tests matching this regex (-run)", + "cmd.test.flag.race": "Enable race detector (-race)", + "cmd.test.flag.json": "Output JSON for CI/agents", + + "cmd.test.label.test": "Test:", + "cmd.test.label.package": "Package:", + "cmd.test.label.filter": "Filter:", + "cmd.test.label.coverage": "Coverage:", + "cmd.test.label.average": "Average", + + "cmd.test.error.no_go_mod": "no go.mod found - run from a Go project directory", + "cmd.test.error.tests_failed": "tests failed", + + "error.not_found": "Not found: {{.Item}}", + "error.invalid": "Invalid: {{.Item}}", + "error.permission": "Permission denied: {{.Item}}", + "error.timeout": "Operation timed out", + "error.network": "Network error: {{.Message}}", + "error.gh_not_found": "'gh' CLI not found. Install from https://cli.github.com/", + "error.registry_not_found": "No repos.yaml found", + "error.repo_not_found": "Repository '{{.Name}}' not found", + + "label.status": "Status", + "label.branch": "Branch", + "label.commit": "Commit", + "label.message": "Message", + "label.author": "Author", + "label.date": "Date", + "label.duration": "Duration", + "label.coverage": "Coverage", + "label.package": "Package", + "label.registry": "Registry", + "label.scanning": "Scanning", + "label.total": "Total", + + "lang.en": "English", + "lang.de": "German", + "lang.es": "Spanish", + "lang.fr": "French", + "lang.zh": "Chinese" +} diff --git a/pkg/i18n/locales/en_US.json b/pkg/i18n/locales/en_US.json new file mode 100644 index 00000000..1e81caef --- /dev/null +++ b/pkg/i18n/locales/en_US.json @@ -0,0 +1,1205 @@ +{ + "cli.success": "Success", + "cli.error": "Error", + "cli.warning": "Warning", + "cli.info": "Info", + "cli.done": "Done", + "cli.failed": "Failed", + "cli.pass": "PASS", + "cli.fail": "FAIL", + "cli.ok": "OK", + "cli.skip": "Skipped", + "cli.pending": "Pending", + "cli.running": "Running", + "cli.completed": "Completed", + "cli.cancelled": "Cancelled", + "cli.aborted": "Aborted", + "cli.confirm.yes": "Yes", + "cli.confirm.no": "No", + "cli.confirm.proceed": "Proceed?", + "cli.confirm.continue": "Continue?", + "cli.confirm.abort": "Operation aborted", + "cli.progress.checking": "Checking", + "cli.progress.fetching": "Fetching", + "cli.progress.loading": "Loading", + "cli.progress.processing": "Processing", + "cli.progress.installing": "Installing", + "cli.progress.building": "Building", + "cli.progress.deploying": "Deploying", + "cli.progress.testing": "Testing", + "cli.time.just_now": "just now", + "cli.time.seconds_ago": "{{.Count}} seconds ago", + "cli.time.minute_ago": "1 minute ago", + "cli.time.minutes_ago": "{{.Count}} minutes ago", + "cli.time.hour_ago": "1 hour ago", + "cli.time.hours_ago": "{{.Count}} hours ago", + "cli.time.day_ago": "1 day ago", + "cli.time.days_ago": "{{.Count}} days ago", + "cli.time.week_ago": "1 week ago", + "cli.time.weeks_ago": "{{.Count}} weeks ago", + "cli.count.items": { + "one": "{{.Count}} item", + "other": "{{.Count}} items" + }, + "cli.count.files": { + "one": "{{.Count}} file", + "other": "{{.Count}} files" + }, + "cli.count.repos": { + "one": "{{.Count}} repo", + "other": "{{.Count}} repos" + }, + "cli.count.commits": { + "one": "{{.Count}} commit", + "other": "{{.Count}} commits" + }, + "cmd.dev.short": "Multi-repo development workflow", + "cmd.dev.long": "Manage multiple git repositories and GitHub integration.\n\nUses repos.yaml to discover repositories. Falls back to scanning\nthe current directory if no registry is found.\n\nGit Operations:\n work Combined status -> commit -> push workflow\n health Quick repo health summary\n commit Claude-assisted commit messages\n push Push repos with unpushed commits\n pull Pull repos behind remote\n\nGitHub Integration (requires gh CLI):\n issues List open issues across repos\n reviews List PRs awaiting review\n ci Check GitHub Actions status\n impact Analyze dependency impact\n\nDev Environment:\n install Download dev environment image\n boot Start dev environment VM\n stop Stop dev environment VM\n shell Open shell in dev VM\n status Check dev VM status", + "cmd.dev.work.short": "Multi-repo git operations", + "cmd.dev.work.long": "Manage git status, commits, and pushes across multiple repositories.\n\nReads repos.yaml to discover repositories and their relationships.\nShows status, optionally commits with Claude, and pushes changes.", + "cmd.dev.work.flag.status": "Show status only, don't push", + "cmd.dev.work.flag.commit": "Use Claude to commit dirty repos before pushing", + "cmd.dev.work.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.health.short": "Quick health check across all repos", + "cmd.dev.health.long": "Shows a summary of repository health:\ntotal repos, dirty repos, unpushed commits, etc.", + "cmd.dev.health.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.health.flag.verbose": "Show detailed breakdown", + "cmd.dev.commit.short": "Claude-assisted commits across repos", + "cmd.dev.commit.long": "Uses Claude to create commits for dirty repos.\nShows uncommitted changes and invokes Claude to generate commit messages.", + "cmd.dev.commit.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.commit.flag.all": "Commit all dirty repos without prompting", + "cmd.dev.push.short": "Push commits across all repos", + "cmd.dev.push.long": "Pushes unpushed commits for all repos.\nShows repos with commits to push and confirms before pushing.", + "cmd.dev.push.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.push.flag.force": "Skip confirmation prompt", + "cmd.dev.pull.short": "Pull updates across all repos", + "cmd.dev.pull.long": "Pulls updates for all repos.\nBy default only pulls repos that are behind. Use --all to pull all repos.", + "cmd.dev.pull.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.pull.flag.all": "Pull all repos, not just those behind", + "cmd.dev.issues.short": "List open issues across all repos", + "cmd.dev.issues.long": "Fetches open issues from GitHub for all repos in the registry.\nRequires the 'gh' CLI to be installed and authenticated.", + "cmd.dev.issues.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.issues.flag.limit": "Max issues per repo", + "cmd.dev.issues.flag.assignee": "Filter by assignee (use @me for yourself)", + "cmd.dev.reviews.short": "List PRs needing review across all repos", + "cmd.dev.reviews.long": "Fetches open PRs from GitHub for all repos in the registry.\nShows review status (approved, changes requested, pending).\nRequires the 'gh' CLI to be installed and authenticated.", + "cmd.dev.reviews.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.reviews.flag.author": "Filter by PR author", + "cmd.dev.reviews.flag.all": "Show all PRs including drafts", + "cmd.dev.ci.short": "Check CI status across all repos", + "cmd.dev.ci.long": "Fetches GitHub Actions workflow status for all repos.\nShows latest run status for each repo.\nRequires the 'gh' CLI to be installed and authenticated.", + "cmd.dev.ci.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.ci.flag.branch": "Filter by branch", + "cmd.dev.ci.flag.failed": "Show only failed runs", + "cmd.dev.impact.short": "Show impact of changing a repo", + "cmd.dev.impact.long": "Analyzes the dependency graph to show which repos\nwould be affected by changes to the specified repo.", + "cmd.dev.impact.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.dev.api.short": "Tools for managing service APIs", + "cmd.dev.sync.short": "Synchronizes public service APIs with internal implementations", + "cmd.dev.sync.long": "This command scans the 'pkg' directory for services and ensures that the\ntop-level public API for each service is in sync with its internal implementation.\nIt automatically generates the necessary Go files with type aliases.", + "cmd.dev.vm.install.short": "Download and install the dev environment image", + "cmd.dev.vm.install.long": "Downloads the platform-specific dev environment image.\n\nThe image includes Go, PHP, Node.js, Python, Docker, and Claude CLI.\nDownloads are cached at ~/.core/images/\n\nExamples:\n core dev install", + "cmd.dev.vm.boot.short": "Start the dev environment", + "cmd.dev.vm.boot.long": "Boots the dev environment VM.\n\nExamples:\n core dev boot\n core dev boot --memory 8192 --cpus 4\n core dev boot --fresh", + "cmd.dev.vm.boot.flag.memory": "Memory in MB (default: 4096)", + "cmd.dev.vm.boot.flag.cpus": "Number of CPUs (default: 2)", + "cmd.dev.vm.boot.flag.fresh": "Stop existing and start fresh", + "cmd.dev.vm.stop.short": "Stop the dev environment", + "cmd.dev.vm.stop.long": "Stops the running dev environment VM.\n\nExamples:\n core dev stop", + "cmd.dev.vm.status.short": "Show dev environment status", + "cmd.dev.vm.status.long": "Shows the current status of the dev environment.\n\nExamples:\n core dev vm-status", + "cmd.dev.vm.shell.short": "Connect to the dev environment", + "cmd.dev.vm.shell.long": "Opens an interactive shell in the dev environment.\n\nUses SSH by default, or serial console with --console.\n\nExamples:\n core dev shell\n core dev shell --console\n core dev shell -- ls -la", + "cmd.dev.vm.shell.flag.console": "Use serial console instead of SSH", + "cmd.dev.vm.serve.short": "Mount project and start dev server", + "cmd.dev.vm.serve.long": "Mounts the current project into the dev environment and starts a dev server.\n\nAuto-detects the appropriate serve command based on project files.\n\nExamples:\n core dev serve\n core dev serve --port 3000\n core dev serve --path public", + "cmd.dev.vm.serve.flag.port": "Port to serve on (default: 8000)", + "cmd.dev.vm.serve.flag.path": "Subdirectory to serve", + "cmd.dev.vm.test.short": "Run tests in the dev environment", + "cmd.dev.vm.test.long": "Runs tests in the dev environment.\n\nAuto-detects the test command based on project files, or uses .core/test.yaml.\n\nExamples:\n core dev test\n core dev test --name integration\n core dev test -- go test -v ./...", + "cmd.dev.vm.test.flag.name": "Run named test command from .core/test.yaml", + "cmd.dev.vm.claude.short": "Start sandboxed Claude session", + "cmd.dev.vm.claude.long": "Starts a Claude Code session inside the dev environment sandbox.\n\nProvides isolation while forwarding selected credentials.\nAuto-boots the dev environment if not running.\n\nAuth options (default: all):\n gh - GitHub CLI auth\n anthropic - Anthropic API key\n ssh - SSH agent forwarding\n git - Git config (name, email)\n\nExamples:\n core dev claude\n core dev claude --model opus\n core dev claude --auth gh,anthropic\n core dev claude --no-auth", + "cmd.dev.vm.claude.flag.no_auth": "Don't forward any auth credentials", + "cmd.dev.vm.claude.flag.model": "Model to use (opus, sonnet)", + "cmd.dev.vm.claude.flag.auth": "Selective auth forwarding (gh,anthropic,ssh,git)", + "cmd.dev.vm.update.short": "Check for and apply updates", + "cmd.dev.vm.update.long": "Checks for dev environment updates and optionally applies them.\n\nExamples:\n core dev update\n core dev update --apply", + "cmd.dev.vm.update.flag.apply": "Download and apply the update", + "cmd.dev.status.dirty": "dirty", + "cmd.dev.status.clean": "clean", + "cmd.dev.status.ahead": "ahead", + "cmd.dev.status.behind": "behind", + "cmd.dev.status.synced": "synced", + "cmd.dev.status.diverged": "diverged", + "cmd.dev.status.conflict": "conflict", + "cmd.dev.push.confirm": "Push all?", + "cmd.dev.push.success": "Pushed successfully", + "cmd.dev.push.failed": "Push failed", + "cmd.dev.push.nothing": "Nothing to push", + "cmd.dev.commit.committing": "Committing dirty repos with Claude...", + "cmd.dev.commit.success": "Committed successfully", + "cmd.dev.commit.failed": "Commit failed", + "cmd.dev.registry_label": "Registry:", + "cmd.dev.scanning_label": "Scanning:", + "cmd.dev.no_git_repos": "No git repositories found.", + "cmd.dev.no_changes": "No uncommitted changes found.", + "cmd.dev.repos_with_changes": "{{.Count}} repo(s) with uncommitted changes:", + "cmd.dev.modified": "{{.Count}} modified", + "cmd.dev.untracked": "{{.Count}} untracked", + "cmd.dev.staged": "{{.Count}} staged", + "cmd.dev.confirm_claude_commit": "Have Claude commit these repos?", + "cmd.dev.committing": "Committing", + "cmd.dev.committed": "committed", + "cmd.dev.done_succeeded": "Done: {{.Count}} succeeded", + "cmd.dev.count_failed": "{{.Count}} failed", + "cmd.dev.push.all_up_to_date": "All repos up to date. Nothing to push.", + "cmd.dev.push.repos_with_unpushed": "{{.Count}} repo(s) with unpushed commits:", + "cmd.dev.push.commits_count": "{{.Count}} commit(s)", + "cmd.dev.push.confirm_push": "Push {{.Commits}} commit(s) to {{.Repos}} repo(s)?", + "cmd.dev.push.done_pushed": "Done: {{.Count}} pushed", + "cmd.dev.pull.all_up_to_date": "All repos up to date. Nothing to pull.", + "cmd.dev.pull.pulling_repos": "Pulling {{.Count}} repo(s):", + "cmd.dev.pull.repos_behind": "{{.Count}} repo(s) behind upstream:", + "cmd.dev.pull.commits_behind": "{{.Count}} commit(s) behind", + "cmd.dev.pull.pulling": "Pulling", + "cmd.dev.pull.done_pulled": "Done: {{.Count}} pulled", + "cmd.dev.health.dirty_label": "Dirty:", + "cmd.dev.health.ahead_label": "Ahead:", + "cmd.dev.health.behind_label": "Behind:", + "cmd.dev.health.errors_label": "Errors:", + "cmd.dev.health.repos": "repos", + "cmd.dev.health.dirty": "dirty", + "cmd.dev.health.to_push": "to push", + "cmd.dev.health.synced": "synced", + "cmd.dev.health.up_to_date": "up to date", + "cmd.dev.health.to_pull": "to pull", + "cmd.dev.health.errors": "errors", + "cmd.dev.health.more": "+{{.Count}} more", + "cmd.dev.work.table_repo": "Repo", + "cmd.dev.work.table_modified": "Modified", + "cmd.dev.work.table_untracked": "Untracked", + "cmd.dev.work.table_staged": "Staged", + "cmd.dev.work.table_ahead": "Ahead", + "cmd.dev.work.error_prefix": "error:", + "cmd.dev.work.use_commit_flag": "Use --commit to have Claude create commits", + "cmd.dev.work.all_up_to_date": "All repos up to date.", + "cmd.dev.work.repos_with_unpushed": "{{.Count}} repo(s) with unpushed commits:", + "cmd.dev.work.commits_count": "{{.Count}} commit(s)", + "cmd.dev.issues.no_issues": "No open issues found.", + "cmd.dev.issues.open_issues": "{{.Count}} open issue(s):", + "cmd.dev.issues.error_label": "Error:", + "cmd.dev.reviews.no_prs": "No open PRs found.", + "cmd.dev.reviews.open_prs": "{{.Count}} open PR(s)", + "cmd.dev.reviews.pending": "{{.Count}} pending", + "cmd.dev.reviews.approved": "{{.Count}} approved", + "cmd.dev.reviews.changes_requested": "{{.Count}} changes requested", + "cmd.dev.reviews.status_approved": "v approved", + "cmd.dev.reviews.status_changes": "* changes requested", + "cmd.dev.reviews.status_pending": "o pending review", + "cmd.dev.reviews.draft": "[draft]", + "cmd.dev.ci.repos_checked": "{{.Count}} repos checked", + "cmd.dev.ci.passing": "{{.Count}} passing", + "cmd.dev.ci.failing": "{{.Count}} failing", + "cmd.dev.ci.pending": "{{.Count}} pending", + "cmd.dev.ci.no_ci": "{{.Count}} no CI", + "cmd.dev.ci.error_label": "Error:", + "cmd.dev.impact.analysis_for": "Impact analysis for", + "cmd.dev.impact.no_dependents": "No repos depend on {{.Name}}", + "cmd.dev.impact.direct_dependents": "{{.Count}} direct dependent(s):", + "cmd.dev.impact.transitive_dependents": "{{.Count}} transitive dependent(s):", + "cmd.dev.impact.summary": "Summary:", + "cmd.dev.impact.changes_affect": "Changes to {{.Repo}} affect {{.Affected}}/{{.Total}} repos", + "cmd.dev.impact.requires_registry": "impact analysis requires repos.yaml with dependency information", + "cmd.dev.sync.success": "Public APIs synchronized successfully.", + "cmd.dev.sync.error_prefix": "Error:", + "cmd.dev.vm.already_installed": "Dev environment already installed", + "cmd.dev.vm.check_updates": "Use {{.Command}} to check for updates", + "cmd.dev.vm.image_label": "Image:", + "cmd.dev.vm.downloading": "Downloading dev environment...", + "cmd.dev.vm.progress_label": "Progress:", + "cmd.dev.vm.installed_in": "Installed in {{.Duration}}", + "cmd.dev.vm.start_with": "Start with: {{.Command}}", + "cmd.dev.vm.not_installed": "dev environment not installed (run 'core dev install' first)", + "cmd.dev.vm.config_label": "Config:", + "cmd.dev.vm.config_value": "{{.Memory}}MB, {{.CPUs}} CPUs", + "cmd.dev.vm.booting": "Booting dev environment...", + "cmd.dev.vm.running": "Dev environment running", + "cmd.dev.vm.connect_with": "Connect with: {{.Command}}", + "cmd.dev.vm.ssh_port": "SSH port:", + "cmd.dev.vm.not_running": "Dev environment is not running", + "cmd.dev.vm.stopping": "Stopping dev environment...", + "cmd.dev.vm.stopped": "Stopped", + "cmd.dev.vm.status_title": "Dev Environment Status", + "cmd.dev.vm.installed_label": "Installed:", + "cmd.dev.vm.installed_yes": "Yes", + "cmd.dev.vm.installed_no": "No", + "cmd.dev.vm.version_label": "Version:", + "cmd.dev.vm.install_with": "Install with: {{.Command}}", + "cmd.dev.vm.status_label": "Status:", + "cmd.dev.vm.status_running": "Running", + "cmd.dev.vm.status_stopped": "Stopped", + "cmd.dev.vm.container_label": "Container:", + "cmd.dev.vm.memory_label": "Memory:", + "cmd.dev.vm.cpus_label": "CPUs:", + "cmd.dev.vm.uptime_label": "Uptime:", + "cmd.dev.vm.checking_updates": "Checking for updates...", + "cmd.dev.vm.current_label": "Current:", + "cmd.dev.vm.latest_label": "Latest:", + "cmd.dev.vm.up_to_date": "Already up to date", + "cmd.dev.vm.update_available": "Update available", + "cmd.dev.vm.run_to_update": "Run {{.Command}} to update", + "cmd.dev.vm.stopping_current": "Stopping current instance...", + "cmd.dev.vm.downloading_update": "Downloading update...", + "cmd.dev.vm.updated_in": "Updated in {{.Duration}}", + "cmd.php.short": "Laravel/PHP development tools", + "cmd.php.long": "Manage Laravel development environment with FrankenPHP.\n\nServices orchestrated:\n - FrankenPHP/Octane (port 8000, HTTPS on 443)\n - Vite dev server (port 5173)\n - Laravel Horizon (queue workers)\n - Laravel Reverb (WebSocket, port 8080)\n - Redis (port 6379)", + "cmd.php.dev.short": "Start Laravel development environment", + "cmd.php.dev.long": "Starts all detected Laravel services.\n\nAuto-detects:\n - Vite (vite.config.js/ts)\n - Horizon (config/horizon.php)\n - Reverb (config/reverb.php)\n - Redis (from .env)", + "cmd.php.dev.starting": "Starting {{.AppName}} development environment", + "cmd.php.dev.detected_services": "Detected services:", + "cmd.php.dev.services_started": "Services started:", + "cmd.php.dev.shutting_down": "Shutting down...", + "cmd.php.dev.all_stopped": "All services stopped", + "cmd.php.dev.press_ctrl_c": "Press Ctrl+C to stop all services", + "cmd.php.dev.logs_failed": "Failed to get logs: {{.Error}}", + "cmd.php.dev.stop_error": "Error stopping services: {{.Error}}", + "cmd.php.logs.short": "View service logs", + "cmd.php.logs.long": "Stream logs from Laravel services.\n\nServices: frankenphp, vite, horizon, reverb, redis", + "cmd.php.stop.short": "Stop all Laravel services", + "cmd.php.stop.stopping": "Stopping services...", + "cmd.php.status.short": "Show service status", + "cmd.php.status.project": "Project:", + "cmd.php.status.detected_services": "Detected services:", + "cmd.php.status.package_manager": "Package manager:", + "cmd.php.status.octane_server": "Octane server:", + "cmd.php.status.ssl_certs": "SSL certificates:", + "cmd.php.status.ssl_installed": "installed", + "cmd.php.status.ssl_not_setup": "not setup", + "cmd.php.status.running": "running", + "cmd.php.status.stopped": "stopped", + "cmd.php.status.error": "error: {{.Error}}", + "cmd.php.status.port": "port {{.Port}}", + "cmd.php.status.pid": "pid {{.PID}}", + "cmd.php.ssl.short": "Setup SSL certificates with mkcert", + "cmd.php.ssl.setting_up": "Setting up SSL for {{.Domain}}", + "cmd.php.ssl.mkcert_not_installed": "mkcert is not installed", + "cmd.php.ssl.install_with": "Install with:", + "cmd.php.ssl.install_macos": "macOS: brew install mkcert", + "cmd.php.ssl.install_linux": "Linux: see https://github.com/FiloSottile/mkcert", + "cmd.php.ssl.certs_exist": "Certificates already exist", + "cmd.php.ssl.certs_created": "SSL certificates created", + "cmd.php.ssl.cert_label": "Cert:", + "cmd.php.ssl.key_label": "Key:", + "cmd.php.ssl.flag.domain": "Domain for certificate (default: from APP_URL)", + "cmd.php.dev.flag.no_vite": "Skip Vite dev server", + "cmd.php.dev.flag.no_horizon": "Skip Laravel Horizon", + "cmd.php.dev.flag.no_reverb": "Skip Laravel Reverb", + "cmd.php.dev.flag.no_redis": "Skip Redis server", + "cmd.php.dev.flag.https": "Enable HTTPS with mkcert", + "cmd.php.dev.flag.domain": "Domain for SSL certificate (default: from APP_URL or localhost)", + "cmd.php.dev.flag.port": "FrankenPHP port (default: 8000)", + "cmd.php.logs.flag.follow": "Follow log output", + "cmd.php.logs.flag.service": "Specific service (default: all)", + "cmd.php.build.short": "Build Docker or LinuxKit image", + "cmd.php.build.long": "Build a production-ready container image for the PHP project.\n\nBy default, builds a Docker image using FrankenPHP.\nUse --type linuxkit to build a LinuxKit VM image instead.", + "cmd.php.build.building_docker": "Building Docker image...", + "cmd.php.build.building_linuxkit": "Building LinuxKit image...", + "cmd.php.build.php_version": "PHP Version:", + "cmd.php.build.laravel": "Laravel:", + "cmd.php.build.octane": "Octane:", + "cmd.php.build.frontend": "Frontend:", + "cmd.php.build.extensions": "Extensions:", + "cmd.php.build.image": "Image:", + "cmd.php.build.platform": "Platform:", + "cmd.php.build.template": "Template:", + "cmd.php.build.format": "Format:", + "cmd.php.build.docker_success": "Docker image built successfully", + "cmd.php.build.docker_run_with": "Run with:", + "cmd.php.build.linuxkit_success": "LinuxKit image built successfully", + "cmd.php.build.flag.type": "Build type: docker (default) or linuxkit", + "cmd.php.build.flag.name": "Image name (default: project directory name)", + "cmd.php.build.flag.tag": "Image tag (default: latest)", + "cmd.php.build.flag.platform": "Target platform (e.g., linux/amd64, linux/arm64)", + "cmd.php.build.flag.dockerfile": "Path to custom Dockerfile", + "cmd.php.build.flag.output": "Output path for LinuxKit image", + "cmd.php.build.flag.format": "LinuxKit output format: qcow2 (default), iso, raw, vmdk", + "cmd.php.build.flag.template": "LinuxKit template name (default: server-php)", + "cmd.php.build.flag.no_cache": "Build without cache", + "cmd.php.serve.short": "Run production container", + "cmd.php.serve.long": "Run a production PHP container.\n\nThis starts the built Docker image in production mode.", + "cmd.php.serve.running": "Running production container...", + "cmd.php.serve.ports": "Ports:", + "cmd.php.serve.stopped": "Container stopped", + "cmd.php.serve.name_required": "--name is required: specify the Docker image name", + "cmd.php.serve.flag.name": "Docker image name (required)", + "cmd.php.serve.flag.tag": "Image tag (default: latest)", + "cmd.php.serve.flag.container": "Container name", + "cmd.php.serve.flag.port": "HTTP port (default: 80)", + "cmd.php.serve.flag.https_port": "HTTPS port (default: 443)", + "cmd.php.serve.flag.detach": "Run in detached mode", + "cmd.php.serve.flag.env_file": "Path to environment file", + "cmd.php.shell.short": "Open shell in running container", + "cmd.php.shell.long": "Open an interactive shell in a running PHP container.", + "cmd.php.shell.opening": "Opening shell in container {{.Container}}...", + "cmd.php.packages.short": "Manage local PHP packages", + "cmd.php.packages.long": "Link and manage local PHP packages for development.\n\nSimilar to npm link, this adds path repositories to composer.json\nfor developing packages alongside your project.", + "cmd.php.packages.link.short": "Link local packages", + "cmd.php.packages.link.long": "Link local PHP packages for development.\n\nAdds path repositories to composer.json with symlink enabled.\nThe package name is auto-detected from each path's composer.json.", + "cmd.php.packages.link.linking": "Linking packages...", + "cmd.php.packages.link.done": "Packages linked. Run 'composer update' to install.", + "cmd.php.packages.unlink.short": "Unlink packages", + "cmd.php.packages.unlink.long": "Remove linked packages from composer.json.\n\nRemoves path repositories by package name.", + "cmd.php.packages.unlink.unlinking": "Unlinking packages...", + "cmd.php.packages.unlink.done": "Packages unlinked. Run 'composer update' to remove.", + "cmd.php.packages.update.short": "Update linked packages", + "cmd.php.packages.update.long": "Run composer update for linked packages.\n\nIf no packages specified, updates all packages.", + "cmd.php.packages.update.updating": "Updating packages...", + "cmd.php.packages.update.done": "Packages updated", + "cmd.php.packages.list.short": "List linked packages", + "cmd.php.packages.list.long": "List all locally linked packages.\n\nShows package name, path, and version for each linked package.", + "cmd.php.packages.list.none_found": "No linked packages found", + "cmd.php.packages.list.linked": "Linked packages:", + "cmd.php.packages.list.unknown": "(unknown)", + "cmd.php.packages.list.path": "Path:", + "cmd.php.packages.list.version": "Version:", + "cmd.php.test.short": "Run PHP tests (PHPUnit/Pest)", + "cmd.php.test.long": "Run PHP tests using PHPUnit or Pest.\n\nAuto-detects Pest if tests/Pest.php exists, otherwise uses PHPUnit.", + "cmd.php.test.running": "Running tests with {{.Runner}}", + "cmd.php.test.passed": "All tests passed", + "cmd.php.test.failed": "Some tests failed", + "cmd.php.test.flag.parallel": "Run tests in parallel", + "cmd.php.test.flag.coverage": "Generate code coverage", + "cmd.php.test.flag.filter": "Filter tests by name pattern", + "cmd.php.test.flag.group": "Run only tests in specified group", + "cmd.php.fmt.short": "Format PHP code with Laravel Pint", + "cmd.php.fmt.long": "Format PHP code using Laravel Pint.", + "cmd.php.fmt.checking": "Checking code with {{.Formatter}}", + "cmd.php.fmt.formatting": "Formatting code with {{.Formatter}}", + "cmd.php.fmt.no_formatter": "no formatter found (install Laravel Pint: composer require laravel/pint --dev)", + "cmd.php.fmt.success": "Code formatted successfully", + "cmd.php.fmt.no_issues": "No formatting issues found", + "cmd.php.fmt.flag.fix": "Auto-fix formatting issues", + "cmd.php.fmt.flag.diff": "Show diff of changes", + "cmd.php.analyse.short": "Run PHPStan static analysis", + "cmd.php.analyse.long": "Run PHPStan or Larastan static analysis.\n\nAuto-detects Larastan if installed, otherwise uses PHPStan.", + "cmd.php.analyse.running": "Running static analysis with {{.Analyzer}}", + "cmd.php.analyse.no_analyser": "no static analyzer found (install PHPStan: composer require phpstan/phpstan --dev)", + "cmd.php.analyse.no_issues": "No issues found", + "cmd.php.analyse.flag.level": "PHPStan analysis level (0-9)", + "cmd.php.analyse.flag.memory": "Memory limit (e.g., 2G)", + "cmd.php.psalm.short": "Run Psalm static analysis", + "cmd.php.psalm.long": "Run Psalm deep static analysis with Laravel plugin support.\n\nPsalm provides deeper type inference than PHPStan and catches\ndifferent classes of bugs. Both should be run for best coverage.", + "cmd.php.psalm.not_found": "Psalm not found", + "cmd.php.psalm.install": "composer require --dev vimeo/psalm", + "cmd.php.psalm.setup": "./vendor/bin/psalm --init", + "cmd.php.psalm.analysing": "Analysing code with Psalm", + "cmd.php.psalm.analysing_fixing": "Analysing and fixing code with Psalm", + "cmd.php.psalm.no_issues": "No issues found", + "cmd.php.psalm.flag.level": "Error level (1=strictest, 8=most lenient)", + "cmd.php.psalm.flag.fix": "Auto-fix issues where possible", + "cmd.php.psalm.flag.baseline": "Generate/update baseline file", + "cmd.php.psalm.flag.show_info": "Show info-level issues", + "cmd.php.audit.short": "Security audit for dependencies", + "cmd.php.audit.long": "Check PHP and JavaScript dependencies for known vulnerabilities.\n\nRuns composer audit and npm audit (if package.json exists).", + "cmd.php.audit.scanning": "Scanning dependencies for vulnerabilities", + "cmd.php.audit.secure": "secure", + "cmd.php.audit.error": "error", + "cmd.php.audit.vulnerabilities": "{{.Count}} vulnerabilities", + "cmd.php.audit.found_vulns": "Found {{.Count}} vulnerabilities across dependencies", + "cmd.php.audit.fix_hint": "composer update && npm update", + "cmd.php.audit.completed_errors": "audit completed with errors", + "cmd.php.audit.all_secure": "All dependencies are secure", + "cmd.php.audit.flag.json": "Output in JSON format", + "cmd.php.audit.flag.fix": "Auto-fix vulnerabilities (npm only)", + "cmd.php.security.short": "Security vulnerability scanning", + "cmd.php.security.long": "Scan for security vulnerabilities in configuration and code.\n\nChecks environment config, file permissions, code patterns,\nand runs security-focused static analysis.", + "cmd.php.security.running": "Running security checks", + "cmd.php.security.checks_suffix": " CHECKS:", + "cmd.php.security.summary": "Security scan complete", + "cmd.php.security.passed": "Passed:", + "cmd.php.security.critical": "Critical:", + "cmd.php.security.high": "High:", + "cmd.php.security.medium": "Medium:", + "cmd.php.security.low": "Low:", + "cmd.php.security.fix_label": "Fix:", + "cmd.php.security.flag.severity": "Minimum severity (critical, high, medium, low)", + "cmd.php.security.flag.json": "Output in JSON format", + "cmd.php.security.flag.sarif": "Output in SARIF format (for GitHub Security)", + "cmd.php.security.flag.url": "URL to check HTTP headers (optional)", + "cmd.php.qa.short": "Run full QA pipeline", + "cmd.php.qa.long": "Run the complete quality assurance pipeline.\n\nStages:\n quick: Security audit, code style, PHPStan\n standard: Psalm, tests\n full: Rector dry-run, mutation testing (slow)", + "cmd.php.qa.running": "Running QA pipeline ({{.Stages}})", + "cmd.php.qa.no_checks": "No checks available", + "cmd.php.qa.stage_prefix": "═══ ", + "cmd.php.qa.stage_suffix": " STAGE ═══", + "cmd.php.qa.passed": "passed", + "cmd.php.qa.failed": "failed", + "cmd.php.qa.all_passed": "All checks passed ({{.Passed}}/{{.Total}})", + "cmd.php.qa.some_failed": "Some checks failed ({{.Passed}}/{{.Total}} passed)", + "cmd.php.qa.to_fix": "To fix:", + "cmd.php.qa.pipeline_failed": "QA pipeline failed", + "cmd.php.qa.fix_audit": "composer update && npm update", + "cmd.php.qa.fix_phpstan": "Fix PHPStan errors shown above", + "cmd.php.qa.fix_psalm": "Fix Psalm errors shown above", + "cmd.php.qa.fix_tests": "Fix failing tests shown above", + "cmd.php.qa.fix_infection": "Improve test coverage for mutated code", + "cmd.php.qa.issue_vulns": "vulnerabilities", + "cmd.php.qa.issue_style": "Code style issues found", + "cmd.php.qa.issue_analysis": "Static analysis errors", + "cmd.php.qa.issue_types": "Type errors found", + "cmd.php.qa.issue_tests": "Test failures", + "cmd.php.qa.issue_rector": "Code improvements available", + "cmd.php.qa.issue_mutation": "Mutation score below threshold", + "cmd.php.qa.flag.quick": "Only run quick checks", + "cmd.php.qa.flag.full": "Run all stages including slow checks", + "cmd.php.qa.flag.fix": "Auto-fix issues where possible", + "cmd.php.rector.short": "Automated code refactoring", + "cmd.php.rector.long": "Run Rector for automated code improvements and PHP upgrades.\n\nRector can automatically upgrade PHP syntax, improve code quality,\nand apply framework-specific refactorings.", + "cmd.php.rector.not_found": "Rector not found", + "cmd.php.rector.install": "composer require --dev rector/rector", + "cmd.php.rector.setup": "./vendor/bin/rector init", + "cmd.php.rector.analysing": "Analysing code with Rector", + "cmd.php.rector.refactoring": "Refactoring code with Rector", + "cmd.php.rector.changes_suggested": "Changes suggested (use --fix to apply)", + "cmd.php.rector.refactored": "Code refactored successfully", + "cmd.php.rector.no_changes": "No changes needed", + "cmd.php.rector.flag.fix": "Apply changes (default is dry-run)", + "cmd.php.rector.flag.diff": "Show detailed diff of changes", + "cmd.php.rector.flag.clear_cache": "Clear Rector cache before running", + "cmd.php.infection.short": "Mutation testing for test quality", + "cmd.php.infection.long": "Run Infection mutation testing to measure test suite quality.\n\nMutation testing modifies your code and checks if tests catch\nthe changes. High mutation score = high quality tests.\n\nWarning: This can be slow on large codebases.", + "cmd.php.infection.not_found": "Infection not found", + "cmd.php.infection.install": "composer require --dev infection/infection", + "cmd.php.infection.running": "Running mutation testing", + "cmd.php.infection.note": "This may take a while...", + "cmd.php.infection.complete": "Mutation testing complete", + "cmd.php.infection.flag.min_msi": "Minimum mutation score indicator (0-100, default: 50)", + "cmd.php.infection.flag.min_covered_msi": "Minimum covered mutation score (0-100, default: 70)", + "cmd.php.infection.flag.threads": "Number of parallel threads (default: 4)", + "cmd.php.infection.flag.filter": "Filter files by pattern", + "cmd.php.infection.flag.only_covered": "Only mutate covered code", + "cmd.php.deploy.short": "Deploy to Coolify", + "cmd.php.deploy.long": "Deploy the PHP application to Coolify.\n\nRequires configuration in .env:\n COOLIFY_URL=https://coolify.example.com\n COOLIFY_TOKEN=your-api-token\n COOLIFY_APP_ID=production-app-id\n COOLIFY_STAGING_APP_ID=staging-app-id (optional)", + "cmd.php.deploy.deploying": "Deploying to {{.Environment}}...", + "cmd.php.deploy.success": "Deployment completed successfully", + "cmd.php.deploy.warning_status": "Deployment ended with status: {{.Status}}", + "cmd.php.deploy.triggered": "Deployment triggered. Use 'core php deploy:status' to check progress.", + "cmd.php.deploy.flag.staging": "Deploy to staging environment", + "cmd.php.deploy.flag.force": "Force deployment even if no changes detected", + "cmd.php.deploy.flag.wait": "Wait for deployment to complete", + "cmd.php.deploy_status.short": "Show deployment status", + "cmd.php.deploy_status.long": "Show the status of a deployment.", + "cmd.php.deploy_status.checking": "Checking {{.Environment}} deployment status...", + "cmd.php.deploy_status.flag.staging": "Check staging environment", + "cmd.php.deploy_status.flag.id": "Specific deployment ID", + "cmd.php.deploy_rollback.short": "Rollback to previous deployment", + "cmd.php.deploy_rollback.long": "Rollback to a previous deployment.\n\nIf no deployment ID is specified, rolls back to the most recent\nsuccessful deployment.", + "cmd.php.deploy_rollback.rolling_back": "Rolling back {{.Environment}}...", + "cmd.php.deploy_rollback.success": "Rollback completed successfully", + "cmd.php.deploy_rollback.warning_status": "Rollback ended with status: {{.Status}}", + "cmd.php.deploy_rollback.triggered": "Rollback triggered. Use 'core php deploy:status' to check progress.", + "cmd.php.deploy_rollback.flag.staging": "Rollback staging environment", + "cmd.php.deploy_rollback.flag.id": "Specific deployment ID to rollback to", + "cmd.php.deploy_rollback.flag.wait": "Wait for rollback to complete", + "cmd.php.deploy_list.short": "List recent deployments", + "cmd.php.deploy_list.long": "List recent deployments.", + "cmd.php.deploy_list.recent": "Recent {{.Environment}} deployments:", + "cmd.php.deploy_list.none_found": "No deployments found", + "cmd.php.deploy_list.flag.staging": "List staging deployments", + "cmd.php.deploy_list.flag.limit": "Number of deployments to list (default: 10)", + "cmd.php.label.php": "PHP:", + "cmd.php.label.services": "Services:", + "cmd.php.label.running": "Running:", + "cmd.php.label.app_url": "App URL:", + "cmd.php.label.vite": "Vite:", + "cmd.php.label.warning": "Warning:", + "cmd.php.label.error": "Error:", + "cmd.php.label.done": "Done:", + "cmd.php.label.skip": "Skip:", + "cmd.php.label.info": "Info:", + "cmd.php.label.install": "Install:", + "cmd.php.label.setup": "Setup:", + "cmd.php.label.fix": "Fix:", + "cmd.php.label.audit": "Audit:", + "cmd.php.label.security": "Security:", + "cmd.php.label.summary": "Summary:", + "cmd.php.label.qa": "QA:", + "cmd.php.label.psalm": "Psalm:", + "cmd.php.label.rector": "Rector:", + "cmd.php.label.infection": "Infection:", + "cmd.php.label.deploy": "Deploy:", + "cmd.php.label.status": "Status:", + "cmd.php.label.id": "ID:", + "cmd.php.label.url": "URL:", + "cmd.php.label.branch": "Branch:", + "cmd.php.label.commit": "Commit:", + "cmd.php.label.message": "Message:", + "cmd.php.label.started": "Started:", + "cmd.php.label.completed": "Completed:", + "cmd.php.label.duration": "Duration:", + "cmd.php.error.not_laravel": "not a Laravel project (missing artisan or laravel/framework)", + "cmd.php.error.not_laravel_short": "not a Laravel project", + "cmd.php.error.not_php": "not a PHP project (missing composer.json)", + "cmd.php.error.working_dir": "failed to get working directory", + "cmd.php.error.start_services": "failed to start services", + "cmd.php.error.stop_services": "failed to stop services", + "cmd.php.error.get_logs": "failed to get logs", + "cmd.php.error.detect_config": "failed to detect project configuration", + "cmd.php.error.build_failed": "build failed", + "cmd.php.error.start_container": "failed to start container", + "cmd.php.error.open_shell": "failed to open shell", + "cmd.php.error.link_packages": "failed to link packages", + "cmd.php.error.unlink_packages": "failed to unlink packages", + "cmd.php.error.update_packages": "composer update failed", + "cmd.php.error.list_packages": "failed to list packages", + "cmd.php.error.tests_failed": "tests failed", + "cmd.php.error.fmt_failed": "formatting failed", + "cmd.php.error.fmt_issues": "formatting issues found", + "cmd.php.error.analysis_issues": "analysis found issues", + "cmd.php.error.psalm_issues": "psalm found issues", + "cmd.php.error.psalm_not_installed": "psalm not installed", + "cmd.php.error.audit_failed": "audit failed", + "cmd.php.error.vulns_found": "vulnerabilities found", + "cmd.php.error.security_failed": "security check failed", + "cmd.php.error.critical_high_issues": "critical or high severity issues found", + "cmd.php.error.rector_failed": "rector failed", + "cmd.php.error.rector_not_installed": "rector not installed", + "cmd.php.error.infection_failed": "mutation testing failed", + "cmd.php.error.infection_not_installed": "infection not installed", + "cmd.php.error.mkcert_not_installed": "mkcert not installed", + "cmd.php.error.ssl_setup": "failed to setup SSL", + "cmd.php.error.deploy_failed": "deployment failed", + "cmd.php.error.status_failed": "failed to get status", + "cmd.php.error.rollback_failed": "rollback failed", + "cmd.php.error.list_deployments": "failed to list deployments", + "cmd.go.short": "Go development tools", + "cmd.go.long": "Go development tools with enhanced output and environment setup.\n\nCommands:\n test Run tests\n cov Run tests with coverage report\n fmt Format Go code\n lint Run golangci-lint\n install Install Go binary\n mod Module management (tidy, download, verify)\n work Workspace management", + "cmd.go.test.short": "Run tests with coverage", + "cmd.go.test.long": "Run Go tests with coverage reporting.\n\nSets MACOSX_DEPLOYMENT_TARGET=26.0 to suppress linker warnings.\nFilters noisy output and provides color-coded coverage.\n\nExamples:\n core go test\n core go test --coverage\n core go test --pkg ./pkg/crypt\n core go test --run TestHash", + "cmd.go.test.label": "Test:", + "cmd.go.test.running": "Running tests", + "cmd.go.test.package_label": "Package:", + "cmd.go.test.passed": "{{.Count}} passed", + "cmd.go.test.passed_failed": "{{.Passed}} passed, {{.Failed}} failed", + "cmd.go.test.all_passed": "PASS All tests passed", + "cmd.go.test.some_failed": "FAIL Some tests failed", + "cmd.go.test.coverage": "Coverage", + "cmd.go.test.flag.coverage": "Show detailed per-package coverage", + "cmd.go.test.flag.pkg": "Package to test (default: ./...)", + "cmd.go.test.flag.run": "Run only tests matching regexp", + "cmd.go.test.flag.short": "Run only short tests", + "cmd.go.test.flag.race": "Enable race detector", + "cmd.go.test.flag.json": "Output JSON results", + "cmd.go.test.flag.verbose": "Verbose output", + "cmd.go.cov.short": "Run tests with coverage report", + "cmd.go.cov.long": "Run tests and generate coverage report.\n\nExamples:\n core go cov # Run with coverage summary\n core go cov --html # Generate HTML report\n core go cov --open # Generate and open HTML report\n core go cov --threshold 80 # Fail if coverage < 80%", + "cmd.go.cov.label": "Coverage:", + "cmd.go.cov.running": "Running tests with coverage", + "cmd.go.cov.html_label": "HTML:", + "cmd.go.cov.open_manually": "(open manually)", + "cmd.go.cov.below_threshold": "FAIL Coverage {{.Actual}}% is below threshold {{.Threshold}}%", + "cmd.go.cov.error.discover": "failed to discover test packages", + "cmd.go.cov.error.no_packages": "no test packages found", + "cmd.go.cov.error.create_file": "failed to create coverage file", + "cmd.go.cov.error.get_coverage": "failed to get coverage", + "cmd.go.cov.error.generate_html": "failed to generate HTML", + "cmd.go.cov.error.below_threshold": "coverage below threshold", + "cmd.go.cov.flag.pkg": "Package to test (default: ./...)", + "cmd.go.cov.flag.html": "Generate HTML coverage report", + "cmd.go.cov.flag.open": "Generate and open HTML report in browser", + "cmd.go.cov.flag.threshold": "Minimum coverage percentage (exit 1 if below)", + "cmd.go.fmt.short": "Format Go code", + "cmd.go.fmt.long": "Format Go code using gofmt or goimports.\n\nExamples:\n core go fmt # Check formatting\n core go fmt --fix # Fix formatting\n core go fmt --diff # Show diff", + "cmd.go.fmt.flag.fix": "Fix formatting in place", + "cmd.go.fmt.flag.diff": "Show diff of changes", + "cmd.go.fmt.flag.check": "Check only, exit 1 if not formatted", + "cmd.go.lint.short": "Run golangci-lint", + "cmd.go.lint.long": "Run golangci-lint on the codebase.\n\nExamples:\n core go lint\n core go lint --fix", + "cmd.go.lint.flag.fix": "Fix issues automatically", + "cmd.go.install.short": "Install Go binary", + "cmd.go.install.long": "Install Go binary to $GOPATH/bin.\n\nExamples:\n core go install # Install current module\n core go install ./cmd/core # Install specific path\n core go install --no-cgo # Pure Go (no C dependencies)\n core go install -v # Verbose output", + "cmd.go.install.label": "Install:", + "cmd.go.install.installing": "Installing", + "cmd.go.install.path_label": "Path:", + "cmd.go.install.cgo_label": "CGO:", + "cmd.go.install.cgo_disabled": "disabled", + "cmd.go.install.failed": "FAIL Install failed", + "cmd.go.install.success": "OK", + "cmd.go.install.installed_to": "Installed to {{.Path}}", + "cmd.go.install.flag.verbose": "Verbose output", + "cmd.go.install.flag.no_cgo": "Disable CGO (CGO_ENABLED=0)", + "cmd.go.mod.short": "Module management", + "cmd.go.mod.long": "Go module management commands.\n\nCommands:\n tidy Add missing and remove unused modules\n download Download modules to local cache\n verify Verify dependencies\n graph Print module dependency graph", + "cmd.go.mod.tidy.short": "Tidy go.mod", + "cmd.go.mod.download.short": "Download modules", + "cmd.go.mod.verify.short": "Verify dependencies", + "cmd.go.mod.graph.short": "Print dependency graph", + "cmd.go.work.short": "Workspace management", + "cmd.go.work.long": "Go workspace management commands.\n\nCommands:\n sync Sync go.work with modules\n init Initialize go.work\n use Add module to workspace", + "cmd.go.work.sync.short": "Sync workspace", + "cmd.go.work.init.short": "Initialize workspace", + "cmd.go.work.use.short": "Add module to workspace", + "cmd.go.work.added": "Added {{.Module}}", + "cmd.go.work.error.no_modules": "no go.mod files found", + "cmd.go.build.short": "Build Go binaries", + "cmd.doctor.short": "Check development environment", + "cmd.doctor.long": "Checks that all required tools are installed and configured.\nRun this before 'core setup' to ensure your environment is ready.", + "cmd.doctor.checking": "Checking development environment...", + "cmd.doctor.required": "Required:", + "cmd.doctor.optional": "Optional:", + "cmd.doctor.github": "GitHub Access:", + "cmd.doctor.workspace": "Workspace:", + "cmd.doctor.ready": "Doctor: Environment ready", + "cmd.doctor.issues": "Doctor: {{.Count}} issues found", + "cmd.doctor.issues_error": "{{.Count}} required tools missing", + "cmd.doctor.install_missing": "Install missing tools:", + "cmd.doctor.verbose_flag": "Show detailed version information", + "cmd.doctor.ssh_found": "SSH key found", + "cmd.doctor.ssh_missing": "SSH key missing - run: ssh-keygen && gh ssh-key add", + "cmd.doctor.cli_auth": "CLI authenticated", + "cmd.doctor.cli_auth_missing": "CLI authentication - run: gh auth login", + "cmd.doctor.repos_yaml_found": "Found repos.yaml at {{.Path}}", + "cmd.doctor.repos_cloned": "{{.Cloned}}/{{.Total}} repos cloned", + "cmd.doctor.no_repos_yaml": "No repos.yaml found (run from workspace directory)", + "cmd.doctor.install_macos": "brew install git gh php composer node pnpm docker", + "cmd.doctor.install_macos_cask": "brew install --cask claude", + "cmd.doctor.install_linux_header": "# Install via your package manager or:", + "cmd.doctor.install_linux_git": "# Git: apt install git", + "cmd.doctor.install_linux_gh": "# GitHub CLI: https://cli.github.com/", + "cmd.doctor.install_linux_php": "# PHP: apt install php8.3-cli", + "cmd.doctor.install_linux_node": "# Node: https://nodejs.org/", + "cmd.doctor.install_linux_pnpm": "# pnpm: npm install -g pnpm", + "cmd.doctor.install_other": "See documentation for your OS", + "cmd.doctor.check.git.name": "Git", + "cmd.doctor.check.git.description": "Version control", + "cmd.doctor.check.gh.name": "GitHub CLI", + "cmd.doctor.check.gh.description": "GitHub integration (issues, PRs, CI)", + "cmd.doctor.check.php.name": "PHP", + "cmd.doctor.check.php.description": "Laravel packages", + "cmd.doctor.check.composer.name": "Composer", + "cmd.doctor.check.composer.description": "PHP dependencies", + "cmd.doctor.check.node.name": "Node.js", + "cmd.doctor.check.node.description": "Frontend builds", + "cmd.doctor.check.pnpm.name": "pnpm", + "cmd.doctor.check.pnpm.description": "Fast package manager", + "cmd.doctor.check.claude.name": "Claude Code", + "cmd.doctor.check.claude.description": "AI-assisted development", + "cmd.doctor.check.docker.name": "Docker", + "cmd.doctor.check.docker.description": "Container runtime", + "cmd.setup.short": "Bootstrap workspace or clone packages from registry", + "cmd.setup.long": "Sets up a development workspace.\n\nREGISTRY MODE (repos.yaml exists):\n Clones all repositories defined in repos.yaml into packages/.\n Skips repos that already exist. Use --only to filter by type.\n\nBOOTSTRAP MODE (no repos.yaml):\n 1. Clones core-devops to set up the workspace\n 2. Presents an interactive wizard to select packages\n 3. Clones selected packages\n\nUse --all to skip the wizard and clone everything.", + "cmd.setup.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.setup.flag.only": "Only clone repos of these types (comma-separated: foundation,module,product)", + "cmd.setup.flag.dry_run": "Show what would be cloned without cloning", + "cmd.setup.flag.all": "Skip wizard, clone all packages (non-interactive)", + "cmd.setup.flag.name": "Project directory name for bootstrap mode", + "cmd.setup.flag.build": "Run build after cloning", + "cmd.setup.bootstrap_mode": "Bootstrap mode (no repos.yaml found)", + "cmd.setup.cloning_current_dir": "Cloning into current directory", + "cmd.setup.creating_project_dir": "Creating project directory", + "cmd.setup.cloning": "Cloning", + "cmd.setup.cloned": "cloned", + "cmd.setup.would_clone": "Would clone", + "cmd.setup.already_exists": "already exists", + "cmd.setup.would_load_registry": "Would load registry from", + "cmd.setup.registry_label": "Registry:", + "cmd.setup.org_label": "Org:", + "cmd.setup.target_label": "Target:", + "cmd.setup.filter_label": "Filter:", + "cmd.setup.to_clone": "{{.Count}} to clone", + "cmd.setup.exist": "{{.Count}} exist", + "cmd.setup.skipped": "{{.Count}} skipped", + "cmd.setup.nothing_to_clone": "Nothing to clone.", + "cmd.setup.would_clone_list": "Would clone:", + "cmd.setup.cancelled": "Cancelled.", + "cmd.setup.done": "done", + "cmd.setup.done_label": "Done:", + "cmd.setup.cloned_count": "{{.Count}} cloned", + "cmd.setup.failed_count": "{{.Count}} failed", + "cmd.setup.already_exist_count": "{{.Count}} already exist", + "cmd.setup.running_build": "Running build...", + "cmd.setup.complete": "Setup complete", + "cmd.setup.repo.setting_up": "Setting up repository", + "cmd.setup.repo.detected_type": "Detected project type", + "cmd.setup.repo.would_create": "Would create", + "cmd.setup.repo.created": "Created", + "cmd.setup.wizard.git_repo_title": "This directory is a git repository", + "cmd.setup.wizard.what_to_do": "What would you like to do?", + "cmd.setup.wizard.option_setup": "Setup Working Directory", + "cmd.setup.wizard.option_package": "Create Package (clone repos into subdirectory)", + "cmd.setup.wizard.project_name_title": "Project directory name", + "cmd.setup.wizard.project_name_desc": "Enter the name for your new workspace directory", + "cmd.setup.wizard.package_selection": "Package Selection", + "cmd.setup.wizard.selection_hint": "Use space to select/deselect, enter to confirm", + "cmd.setup.wizard.select_packages": "Select packages to clone", + "cmd.setup.wizard.confirm_clone": "Clone {{.Count}} packages to {{.Target}}?", + "cmd.setup.wizard.confirm_yes": "Yes, clone", + "cmd.setup.wizard.confirm_cancel": "Cancel", + "cmd.setup.error.build_failed": "build failed", + "cmd.build.short": "Build projects with auto-detection and cross-compilation", + "cmd.build.long": "Builds the current project with automatic type detection.\nSupports Go, Wails, Docker, LinuxKit, and Taskfile projects.\nConfiguration can be provided via .core/build.yaml or command-line flags.\n\nExamples:\n core build # Auto-detect and build\n core build --type docker # Build Docker image\n core build --type linuxkit # Build LinuxKit image\n core build --type linuxkit --config linuxkit.yml --format qcow2-bios", + "cmd.build.from_path.short": "Build from a local directory", + "cmd.build.from_path.starting": "Starting build from path:", + "cmd.build.from_path.generating_template": "Generating application from template...", + "cmd.build.from_path.copying_files": "Copying application files...", + "cmd.build.from_path.compiling": "Compiling application...", + "cmd.build.from_path.success": "Build successful! Executable created at:", + "cmd.build.from_path.flag.path": "The path to the static web application files", + "cmd.build.from_path.error.invalid_path": "invalid path specified", + "cmd.build.from_path.error.must_be_directory": "path specified must be a directory", + "cmd.build.from_path.error.clean_build_dir": "failed to clean build directory", + "cmd.build.from_path.error.anchor_template": "failed to anchor template filesystem", + "cmd.build.from_path.error.create_sod": "failed to create new sod instance", + "cmd.build.from_path.error.extract_template": "failed to extract template", + "cmd.build.from_path.error.copy_files": "failed to copy application files", + "cmd.build.from_path.error.go_mod_tidy": "go mod tidy failed", + "cmd.build.from_path.error.go_build": "go build failed", + "cmd.build.pwa.short": "Build from a live PWA URL", + "cmd.build.pwa.starting": "Starting PWA build from URL:", + "cmd.build.pwa.downloading_to": "Downloading PWA to temporary directory:", + "cmd.build.pwa.found_manifest": "Found manifest:", + "cmd.build.pwa.download_complete": "PWA download complete.", + "cmd.build.pwa.warning": "Warning:", + "cmd.build.pwa.no_manifest": "no manifest file found. Proceeding with basic site download.", + "cmd.build.pwa.asset_download_failed": "failed to download asset", + "cmd.build.pwa.flag.url": "The URL of the PWA to build", + "cmd.build.pwa.error.create_temp_dir": "failed to create temporary directory", + "cmd.build.pwa.error.download_failed": "failed to download PWA", + "cmd.build.pwa.error.fetch_url": "failed to fetch URL", + "cmd.build.pwa.error.read_response": "failed to read response body", + "cmd.build.pwa.error.write_index": "failed to write index.html", + "cmd.build.pwa.error.fetch_manifest": "failed to fetch or parse manifest", + "cmd.build.pwa.error.no_manifest_tag": "no tag found", + "cmd.build.sdk.short": "Generate API SDKs from OpenAPI spec", + "cmd.build.sdk.long": "Generates typed API clients from OpenAPI specifications.\nSupports TypeScript, Python, Go, and PHP.\n\nExamples:\n core build sdk # Generate all configured SDKs\n core build sdk --lang typescript # Generate only TypeScript SDK\n core build sdk --spec api.yaml # Use specific OpenAPI spec", + "cmd.build.sdk.label": "Build SDK:", + "cmd.build.sdk.generating": "Generating SDKs", + "cmd.build.sdk.dry_run_mode": "(dry-run mode)", + "cmd.build.sdk.spec_label": "Spec:", + "cmd.build.sdk.language_label": "Language:", + "cmd.build.sdk.languages_label": "Languages:", + "cmd.build.sdk.generated_label": "Generated:", + "cmd.build.sdk.would_generate": "Would generate SDKs (dry-run)", + "cmd.build.sdk.complete": "SDK generation complete", + "cmd.build.sdk.flag.spec": "Path to OpenAPI spec file", + "cmd.build.sdk.flag.lang": "Generate only this language (typescript, python, go, php)", + "cmd.build.sdk.flag.version": "Version to embed in generated SDKs", + "cmd.build.sdk.flag.dry_run": "Show what would be generated without writing files", + "cmd.build.flag.type": "Builder type (go, wails, docker, linuxkit, taskfile) - auto-detected if not specified", + "cmd.build.flag.ci": "CI mode - minimal output with JSON artifact list at the end", + "cmd.build.flag.targets": "Comma-separated OS/arch pairs (e.g., linux/amd64,darwin/arm64)", + "cmd.build.flag.output": "Output directory for artifacts (default: dist)", + "cmd.build.flag.archive": "Create archives (tar.gz for linux/darwin, zip for windows)", + "cmd.build.flag.checksum": "Generate SHA256 checksums and CHECKSUMS.txt", + "cmd.build.flag.config": "Config file path (for linuxkit: YAML config, for docker: Dockerfile)", + "cmd.build.flag.format": "Output format for linuxkit (iso-bios, qcow2-bios, raw, vmdk)", + "cmd.build.flag.push": "Push Docker image after build", + "cmd.build.flag.image": "Docker image name (e.g., host-uk/core-devops)", + "cmd.build.flag.no_sign": "Skip all code signing", + "cmd.build.flag.notarize": "Enable macOS notarization (requires Apple credentials)", + "cmd.build.label.build": "Build:", + "cmd.build.label.type": "Type:", + "cmd.build.label.output": "Output:", + "cmd.build.label.binary": "Binary:", + "cmd.build.label.targets": "Targets:", + "cmd.build.label.error": "Error:", + "cmd.build.label.success": "Success:", + "cmd.build.label.sign": "Sign:", + "cmd.build.label.archive": "Archive:", + "cmd.build.label.checksum": "Checksum:", + "cmd.build.label.ok": "OK:", + "cmd.build.building_project": "Building project", + "cmd.build.built_artifacts": "Built {{.Count}} artifact(s)", + "cmd.build.signing_binaries": "Signing binaries...", + "cmd.build.creating_archives": "Creating archives...", + "cmd.build.computing_checksums": "Computing checksums...", + "cmd.build.error.working_dir": "failed to get working directory", + "cmd.build.error.load_config": "failed to load config", + "cmd.build.error.detect_type": "failed to detect project type", + "cmd.build.error.no_project_type": "no supported project type detected in {{.Dir}}\nSupported types: go (go.mod), wails (wails.json), node (package.json), php (composer.json)", + "cmd.build.error.build_failed": "build failed", + "cmd.build.error.signing_failed": "signing failed", + "cmd.build.error.notarization_failed": "notarization failed", + "cmd.build.error.archive_failed": "archive failed", + "cmd.build.error.marshal_artifacts": "failed to marshal artifacts", + "cmd.build.error.checksum_failed": "checksum failed", + "cmd.build.error.write_checksums": "failed to write CHECKSUMS.txt", + "cmd.build.error.gpg_signing_failed": "GPG signing failed", + "cmd.build.error.invalid_target": "invalid target format \"{{.Target}}\", expected OS/arch (e.g., linux/amd64)", + "cmd.build.error.no_targets": "no valid targets specified", + "cmd.build.error.node_not_implemented": "Node.js builder not yet implemented", + "cmd.build.error.php_not_implemented": "PHP builder not yet implemented", + "cmd.build.error.unsupported_type": "unsupported project type", + "cmd.ai.short": "AI agent task management", + "cmd.ai.long": "Manage tasks from the core-agentic service for AI-assisted development.\n\nCommands:\n tasks List tasks (filterable by status, priority, labels)\n task View task details or auto-select highest priority\n task:update Update task status or progress\n task:complete Mark task as completed or failed\n task:commit Create git commit with task reference\n task:pr Create GitHub PR linked to task\n claude Claude Code integration\n\nWorkflow:\n core ai tasks # List pending tasks\n core ai task --auto --claim # Auto-select and claim a task\n core ai task:commit -m 'msg' # Commit with task reference\n core ai task:complete # Mark task done", + "cmd.ai.claude.short": "Claude Code integration", + "cmd.ai.claude.long": "Tools for working with Claude Code.\n\nCommands:\n run Run Claude in the current directory\n config Manage Claude configuration", + "cmd.ai.claude.run.short": "Run Claude Code in the current directory", + "cmd.ai.claude.config.short": "Manage Claude configuration", + "cmd.ai.tasks.short": "List available tasks from core-agentic", + "cmd.ai.tasks.long": "Lists tasks from the core-agentic service.\n\nConfiguration is loaded from:\n 1. Environment variables (AGENTIC_TOKEN, AGENTIC_BASE_URL)\n 2. .env file in current directory\n 3. ~/.core/agentic.yaml\n\nExamples:\n core ai tasks\n core ai tasks --status pending --priority high\n core ai tasks --labels bug,urgent", + "cmd.ai.tasks.none_found": "No tasks found.", + "cmd.ai.tasks.found": "{{.Count}} task(s) found:", + "cmd.ai.tasks.hint": "Use 'core ai task ' to view details", + "cmd.ai.tasks.flag.status": "Filter by status (pending, in_progress, completed, blocked)", + "cmd.ai.tasks.flag.priority": "Filter by priority (critical, high, medium, low)", + "cmd.ai.tasks.flag.labels": "Filter by labels (comma-separated)", + "cmd.ai.tasks.flag.limit": "Max number of tasks to return", + "cmd.ai.tasks.flag.project": "Filter by project", + "cmd.ai.task.short": "Show task details or auto-select a task", + "cmd.ai.task.long": "Shows details of a specific task or auto-selects the highest priority task.\n\nExamples:\n core ai task abc123 # Show task details\n core ai task abc123 --claim # Show and claim the task\n core ai task abc123 --context # Show task with gathered context\n core ai task --auto # Auto-select highest priority pending task", + "cmd.ai.task.no_pending": "No pending tasks available.", + "cmd.ai.task.id_required": "task ID required (or use --auto)", + "cmd.ai.task.context_failed": "Failed to build context", + "cmd.ai.task.claiming": "Claiming task...", + "cmd.ai.task.claimed": "Task claimed successfully!", + "cmd.ai.task.flag.auto": "Auto-select highest priority pending task", + "cmd.ai.task.flag.claim": "Claim the task after showing details", + "cmd.ai.task.flag.context": "Show gathered context for AI collaboration", + "cmd.ai.task_update.short": "Update task status or progress", + "cmd.ai.task_update.long": "Updates a task's status, progress, or adds notes.\n\nExamples:\n core ai task:update abc123 --status in_progress\n core ai task:update abc123 --progress 50 --notes 'Halfway done'", + "cmd.ai.task_update.flag_required": "at least one of --status, --progress, or --notes required", + "cmd.ai.task_update.success": "Task {{.ID}} updated successfully", + "cmd.ai.task_update.flag.status": "New status (pending, in_progress, completed, blocked)", + "cmd.ai.task_update.flag.progress": "Progress percentage (0-100)", + "cmd.ai.task_update.flag.notes": "Notes about the update", + "cmd.ai.task_complete.short": "Mark a task as completed", + "cmd.ai.task_complete.long": "Marks a task as completed with optional output and artifacts.\n\nExamples:\n core ai task:complete abc123 --output 'Feature implemented'\n core ai task:complete abc123 --failed --error 'Build failed'", + "cmd.ai.task_complete.success": "Task {{.ID}} completed successfully", + "cmd.ai.task_complete.failed": "Task {{.ID}} marked as failed", + "cmd.ai.task_complete.flag.output": "Summary of the completed work", + "cmd.ai.task_complete.flag.failed": "Mark the task as failed", + "cmd.ai.task_complete.flag.error": "Error message if failed", + "cmd.ai.task_commit.short": "Auto-commit changes with task reference", + "cmd.ai.task_commit.long": "Creates a git commit with a task reference and co-author attribution.\n\nCommit message format:\n feat(scope): description\n\n Task: #123\n Co-Authored-By: Claude \n\nExamples:\n core ai task:commit abc123 --message 'add user authentication'\n core ai task:commit abc123 -m 'fix login bug' --scope auth\n core ai task:commit abc123 -m 'update docs' --push", + "cmd.ai.task_commit.message_required": "commit message required (--message or -m)", + "cmd.ai.task_commit.no_changes": "No uncommitted changes to commit.", + "cmd.ai.task_commit.creating": "Creating commit for task {{.ID}}...", + "cmd.ai.task_commit.committed": "Committed:", + "cmd.ai.task_commit.pushing": "Pushing changes...", + "cmd.ai.task_commit.pushed": "Changes pushed successfully", + "cmd.ai.task_commit.flag.message": "Commit message (without task reference)", + "cmd.ai.task_commit.flag.scope": "Scope for the commit type (e.g., auth, api, ui)", + "cmd.ai.task_commit.flag.push": "Push changes after committing", + "cmd.ai.task_pr.short": "Create a pull request for a task", + "cmd.ai.task_pr.long": "Creates a GitHub pull request linked to a task.\n\nRequires the GitHub CLI (gh) to be installed and authenticated.\n\nExamples:\n core ai task:pr abc123\n core ai task:pr abc123 --title 'Add authentication feature'\n core ai task:pr abc123 --draft --labels 'enhancement,needs-review'\n core ai task:pr abc123 --base develop", + "cmd.ai.task_pr.branch_error": "cannot create PR from {{.Branch}} branch; create a feature branch first", + "cmd.ai.task_pr.pushing_branch": "Pushing branch {{.Branch}}...", + "cmd.ai.task_pr.creating": "Creating pull request...", + "cmd.ai.task_pr.created": "Pull request created!", + "cmd.ai.task_pr.flag.title": "PR title (defaults to task title)", + "cmd.ai.task_pr.flag.draft": "Create as draft PR", + "cmd.ai.task_pr.flag.labels": "Labels to add (comma-separated)", + "cmd.ai.task_pr.flag.base": "Base branch (defaults to main)", + "cmd.ai.priority.critical": "CRITICAL", + "cmd.ai.priority.high": "HIGH", + "cmd.ai.priority.medium": "MEDIUM", + "cmd.ai.priority.low": "LOW", + "cmd.ai.status.pending": "pending", + "cmd.ai.status.in_progress": "in_progress", + "cmd.ai.status.completed": "completed", + "cmd.ai.status.blocked": "blocked", + "cmd.ai.label.id": "ID:", + "cmd.ai.label.title": "Title:", + "cmd.ai.label.priority": "Priority:", + "cmd.ai.label.status": "Status:", + "cmd.ai.label.project": "Project:", + "cmd.ai.label.labels": "Labels:", + "cmd.ai.label.claimed_by": "Claimed by:", + "cmd.ai.label.created": "Created:", + "cmd.ai.label.description": "Description:", + "cmd.ai.label.related_files": "Related files:", + "cmd.ai.label.blocked_by": "Blocked by:", + "cmd.ai.label.url": "URL:", + "cmd.ai.error.load_config": "failed to load config", + "cmd.ai.error.list_tasks": "failed to list tasks", + "cmd.ai.error.get_task": "failed to get task", + "cmd.ai.error.claim_task": "failed to claim task", + "cmd.ai.error.update_task": "failed to update task", + "cmd.ai.error.complete_task": "failed to complete task", + "cmd.ai.error.working_dir": "failed to get working directory", + "cmd.ai.error.git_status": "failed to check git status", + "cmd.ai.error.commit": "failed to commit", + "cmd.ai.error.push": "failed to push", + "cmd.ai.error.get_branch": "failed to get current branch", + "cmd.ai.error.push_branch": "failed to push branch", + "cmd.ai.error.create_pr": "failed to create PR", + "cmd.vm.short": "LinuxKit VM management", + "cmd.vm.long": "Manage LinuxKit virtual machines.\n\nLinuxKit VMs are lightweight, immutable VMs built from YAML templates.\nThey run using qemu or hyperkit depending on your system.\n\nCommands:\n run Run a VM from image or template\n ps List running VMs\n stop Stop a running VM\n logs View VM logs\n exec Execute command in VM\n templates Manage LinuxKit templates", + "cmd.vm.run.short": "Run a LinuxKit image or template", + "cmd.vm.run.long": "Runs a LinuxKit image as a VM using the available hypervisor.\n\nSupported image formats: .iso, .qcow2, .vmdk, .raw\n\nYou can also run from a template using --template, which will build and run\nthe image automatically. Use --var to set template variables.\n\nExamples:\n core vm run image.iso\n core vm run -d image.qcow2\n core vm run --name myvm --memory 2048 --cpus 4 image.iso\n core vm run --template core-dev --var SSH_KEY=\"ssh-rsa AAAA...\"\n core vm run --template server-php --var SSH_KEY=\"...\" --var DOMAIN=example.com", + "cmd.vm.run.flag.name": "Name for the container", + "cmd.vm.run.flag.detach": "Run in detached mode (background)", + "cmd.vm.run.flag.memory": "Memory in MB (default: 1024)", + "cmd.vm.run.flag.cpus": "Number of CPUs (default: 1)", + "cmd.vm.run.flag.ssh_port": "SSH port for exec commands (default: 2222)", + "cmd.vm.run.flag.template": "Run from a LinuxKit template (build + run)", + "cmd.vm.run.flag.var": "Template variable in KEY=VALUE format (can be repeated)", + "cmd.vm.run.error.image_required": "image path is required (or use --template)", + "cmd.vm.ps.short": "List running VMs", + "cmd.vm.ps.long": "Lists all VMs. By default, only shows running VMs.\n\nExamples:\n core vm ps\n core vm ps -a", + "cmd.vm.ps.flag.all": "Show all containers (including stopped)", + "cmd.vm.ps.header": "ID\tNAME\tIMAGE\tSTATUS\tSTARTED\tPID", + "cmd.vm.ps.no_containers": "No containers", + "cmd.vm.ps.no_running": "No running containers", + "cmd.vm.stop.short": "Stop a running VM", + "cmd.vm.stop.long": "Stops a running VM by ID.\n\nExamples:\n core vm stop abc12345\n core vm stop abc1", + "cmd.vm.stop.stopping": "Stopping:", + "cmd.vm.stop.stopped": "Stopped", + "cmd.vm.logs.short": "View VM logs", + "cmd.vm.logs.long": "View logs from a VM.\n\nExamples:\n core vm logs abc12345\n core vm logs -f abc1", + "cmd.vm.logs.flag.follow": "Follow log output", + "cmd.vm.exec.short": "Execute a command in a VM", + "cmd.vm.exec.long": "Execute a command inside a running VM via SSH.\n\nExamples:\n core vm exec abc12345 ls -la\n core vm exec abc1 /bin/sh", + "cmd.vm.templates.short": "Manage LinuxKit templates", + "cmd.vm.templates.long": "Manage LinuxKit YAML templates for building VMs.\n\nTemplates provide pre-configured LinuxKit configurations for common use cases.\nThey support variable substitution with ${VAR} and ${VAR:-default} syntax.\n\nExamples:\n core vm templates # List available templates\n core vm templates show core-dev # Show template content\n core vm templates vars server-php # Show template variables", + "cmd.vm.templates.title": "Available LinuxKit Templates", + "cmd.vm.templates.header": "NAME\tDESCRIPTION", + "cmd.vm.templates.no_templates": "No templates available.", + "cmd.vm.templates.hint.show": "Show template:", + "cmd.vm.templates.hint.vars": "Show variables:", + "cmd.vm.templates.hint.run": "Run from template:", + "cmd.vm.templates.show.short": "Display template content", + "cmd.vm.templates.show.long": "Display the content of a LinuxKit template.\n\nExamples:\n core templates show core-dev\n core templates show server-php", + "cmd.vm.templates.vars.short": "Show template variables", + "cmd.vm.templates.vars.long": "Display all variables used in a template.\n\nShows required variables (no default) and optional variables (with defaults).\n\nExamples:\n core templates vars core-dev\n core templates vars server-php", + "cmd.vm.templates.vars.required": "Required Variables (no default):", + "cmd.vm.templates.vars.optional": "Optional Variables (with defaults):", + "cmd.vm.templates.vars.none": "No variables in this template.", + "cmd.vm.label.image": "Image:", + "cmd.vm.label.name": "Name:", + "cmd.vm.label.hypervisor": "Hypervisor:", + "cmd.vm.label.started": "Started:", + "cmd.vm.label.pid": "PID:", + "cmd.vm.label.container_stopped": "Container stopped:", + "cmd.vm.label.template": "Template:", + "cmd.vm.label.building": "Building:", + "cmd.vm.hint.view_logs": "Use 'core vm logs {{.ID}}' to view output", + "cmd.vm.hint.stop": "Use 'core vm stop {{.ID}}' to stop", + "cmd.vm.error.init_manager": "failed to initialize container manager", + "cmd.vm.error.run_container": "failed to run container", + "cmd.vm.error.list_containers": "failed to list containers", + "cmd.vm.error.stop_container": "failed to stop container", + "cmd.vm.error.get_logs": "failed to get logs", + "cmd.vm.error.id_required": "container ID is required", + "cmd.vm.error.id_and_cmd_required": "container ID and command are required", + "cmd.vm.error.no_match": "no container found matching: {{.ID}}", + "cmd.vm.error.multiple_match": "multiple containers match '{{.ID}}', be more specific", + "cmd.vm.error.template_required": "template name is required", + "cmd.vm.error.apply_template": "failed to apply template", + "cmd.vm.error.create_temp": "failed to create temp directory", + "cmd.vm.error.write_template": "failed to write template", + "cmd.vm.error.build_image": "failed to build image", + "cmd.vm.error.no_image_found": "no image found after build", + "cmd.vm.error.linuxkit_not_found": "linuxkit not found. Install with: brew install linuxkit (macOS) or see https://github.com/linuxkit/linuxkit", + "cmd.docs.short": "Documentation management", + "cmd.docs.long": "Manage documentation across all repos.\nScan for docs, check coverage, and sync to core-php/docs/packages/.", + "cmd.docs.list.short": "List documentation across repos", + "cmd.docs.list.long": "List documentation files for all repos in the workspace.\n\nShows README.md, CLAUDE.md, CHANGELOG.md, and docs/ directory status\nfor each repository.", + "cmd.docs.list.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.docs.list.header.repo": "Repo", + "cmd.docs.list.header.readme": "README", + "cmd.docs.list.header.claude": "CLAUDE", + "cmd.docs.list.header.changelog": "CHANGELOG", + "cmd.docs.list.header.docs": "docs/", + "cmd.docs.list.files_count": "{{.Count}} files", + "cmd.docs.list.coverage_label": "Coverage", + "cmd.docs.list.coverage_summary": "{{.WithDocs}} with docs, {{.WithoutDocs}} without", + "cmd.docs.sync.short": "Sync documentation to core-php/docs/packages/", + "cmd.docs.sync.long": "Sync documentation from all repos to a central location.\n\nCopies docs/ directories from each package to core-php/docs/packages/\nfor unified documentation builds.", + "cmd.docs.sync.flag.registry": "Path to repos.yaml (auto-detected if not specified)", + "cmd.docs.sync.flag.dry_run": "Show what would be synced without copying", + "cmd.docs.sync.flag.output": "Output directory (default: core-php/docs/packages)", + "cmd.docs.sync.no_docs_found": "No documentation found in any repos.", + "cmd.docs.sync.found_label": "Found", + "cmd.docs.sync.repos_with_docs": "{{.Count}} repo(s) with docs/ directories", + "cmd.docs.sync.files_count": "({{.Count}} files)", + "cmd.docs.sync.total_label": "Total:", + "cmd.docs.sync.total_summary": "{{.Files}} files from {{.Repos}} repos → {{.Output}}", + "cmd.docs.sync.dry_run_notice": "Dry run - no files copied", + "cmd.docs.sync.confirm": "Sync?", + "cmd.docs.sync.done_label": "Done:", + "cmd.docs.sync.synced_packages": "Synced {{.Count}} packages", + "cmd.docs.error.load_registry": "failed to load registry", + "cmd.docs.error.scan_directory": "failed to scan directory", + "cmd.pkg.short": "Package management for core-* repos", + "cmd.pkg.long": "Manage host-uk/core-* packages and repositories.\n\nCommands:\n search Search GitHub for packages\n install Clone a package from GitHub\n list List installed packages\n update Update installed packages\n outdated Check for outdated packages", + "cmd.pkg.no_description": "(no description)", + "cmd.pkg.search.short": "Search GitHub for packages", + "cmd.pkg.search.long": "Searches GitHub for repositories matching a pattern.\nUses gh CLI for authenticated search. Results are cached for 1 hour.\n\nExamples:\n core pkg search # List all host-uk repos\n core pkg search --pattern 'core-*' # Search for core-* repos\n core pkg search --org mycompany # Search different org\n core pkg search --refresh # Bypass cache", + "cmd.pkg.search.flag.org": "GitHub organization (default: host-uk)", + "cmd.pkg.search.flag.pattern": "Repo name pattern (* for wildcard)", + "cmd.pkg.search.flag.type": "Filter by type in name (mod, services, plug, website)", + "cmd.pkg.search.flag.limit": "Max results (default 50)", + "cmd.pkg.search.flag.refresh": "Bypass cache and fetch fresh data", + "cmd.pkg.search.cache_label": "Cache:", + "cmd.pkg.search.note_label": "Note:", + "cmd.pkg.search.fetching_label": "Fetching:", + "cmd.pkg.search.gh_token_warning": "GH_TOKEN env var is set - this may cause auth issues", + "cmd.pkg.search.gh_token_unset": "Unset it with: unset GH_TOKEN", + "cmd.pkg.search.no_repos_found": "No repositories found matching pattern.", + "cmd.pkg.search.found_repos": "Found {{.Count}} repositories:", + "cmd.pkg.search.private_label": "[private]", + "cmd.pkg.search.install_with": "Install with:", + "cmd.pkg.install.short": "Clone a package from GitHub", + "cmd.pkg.install.long": "Clones a repository from GitHub.\n\nExamples:\n core pkg install host-uk/core-php\n core pkg install host-uk/core-tenant --dir ./packages\n core pkg install host-uk/core-admin --add", + "cmd.pkg.install.flag.dir": "Target directory (default: ./packages or current dir)", + "cmd.pkg.install.flag.add": "Add to repos.yaml registry", + "cmd.pkg.install.skip_label": "Skip:", + "cmd.pkg.install.already_exists": "{{.Name}} already exists at {{.Path}}", + "cmd.pkg.install.installing_label": "Installing:", + "cmd.pkg.install.target_label": "Target:", + "cmd.pkg.install.cloning": "Cloning", + "cmd.pkg.install.add_to_registry": "add to registry", + "cmd.pkg.install.added_to_registry": "added to repos.yaml", + "cmd.pkg.install.done_label": "Done:", + "cmd.pkg.install.installed": "Installed {{.Name}}", + "cmd.pkg.list.short": "List installed packages", + "cmd.pkg.list.long": "Lists all packages in the current workspace.\n\nReads from repos.yaml or scans for git repositories.\n\nExamples:\n core pkg list", + "cmd.pkg.list.title": "Installed Packages", + "cmd.pkg.list.no_packages": "No packages in registry.", + "cmd.pkg.list.total_label": "Total:", + "cmd.pkg.list.summary": "{{.Installed}} installed, {{.Missing}} missing", + "cmd.pkg.list.install_missing": "Install missing:", + "cmd.pkg.update.short": "Update installed packages", + "cmd.pkg.update.long": "Pulls latest changes for installed packages.\n\nExamples:\n core pkg update core-php # Update specific package\n core pkg update --all # Update all packages", + "cmd.pkg.update.flag.all": "Update all packages", + "cmd.pkg.update.update_label": "Update:", + "cmd.pkg.update.updating": "Updating {{.Count}} package(s)", + "cmd.pkg.update.not_installed": "not installed", + "cmd.pkg.update.up_to_date": "up to date", + "cmd.pkg.update.done_label": "Done:", + "cmd.pkg.update.summary": "{{.Updated}} updated, {{.Skipped}} skipped, {{.Failed}} failed", + "cmd.pkg.outdated.short": "Check for outdated packages", + "cmd.pkg.outdated.long": "Checks which packages have unpulled commits.\n\nExamples:\n core pkg outdated", + "cmd.pkg.outdated.outdated_label": "Outdated:", + "cmd.pkg.outdated.checking": "Checking for updates...", + "cmd.pkg.outdated.commits_behind": "{{.Count}} commits behind", + "cmd.pkg.outdated.done_label": "Done:", + "cmd.pkg.outdated.all_up_to_date": "All packages up to date", + "cmd.pkg.outdated.summary_label": "Summary:", + "cmd.pkg.outdated.summary": "{{.Outdated}} outdated, {{.UpToDate}} up to date", + "cmd.pkg.outdated.update_with": "Update with:", + "cmd.pkg.error.gh_not_authenticated": "gh CLI not authenticated. Run: gh auth login", + "cmd.pkg.error.auth_failed": "authentication failed - try: unset GH_TOKEN && gh auth login", + "cmd.pkg.error.search_failed": "search failed: %s", + "cmd.pkg.error.parse_results": "failed to parse results: %w", + "cmd.pkg.error.repo_required": "repository is required (e.g., core pkg install host-uk/core-php)", + "cmd.pkg.error.invalid_repo_format": "invalid repo format: use org/repo (e.g., host-uk/core-php)", + "cmd.pkg.error.create_directory": "failed to create directory: %w", + "cmd.pkg.error.no_repos_yaml": "no repos.yaml found", + "cmd.pkg.error.no_repos_yaml_workspace": "no repos.yaml found - run from workspace directory", + "cmd.pkg.error.load_registry": "failed to load registry: %w", + "cmd.pkg.error.specify_package": "specify package name or use --all", + "cmd.ci.short": "Publish releases (dry-run by default)", + "cmd.ci.long": "Publishes pre-built artifacts from dist/ to configured targets.\nRun 'core build' first to create artifacts.\n\nSAFE BY DEFAULT: Runs in dry-run mode unless --we-are-go-for-launch is specified.\n\nConfiguration: .core/release.yaml", + "cmd.ci.init.short": "Initialize release configuration", + "cmd.ci.init.long": "Creates a .core/release.yaml configuration file interactively.", + "cmd.ci.init.config_exists": "Configuration already exists at", + "cmd.ci.init.overwrite_prompt": "Overwrite? [y/N]: ", + "cmd.ci.init.creating": "Creating release configuration", + "cmd.ci.init.project_name": "Project name", + "cmd.ci.init.github_repo": "GitHub repository (owner/repo):", + "cmd.ci.init.config_written": "Configuration written to", + "cmd.ci.changelog.short": "Generate changelog", + "cmd.ci.changelog.long": "Generates a changelog from conventional commits.", + "cmd.ci.changelog.flag.from": "Starting ref (default: previous tag)", + "cmd.ci.changelog.flag.to": "Ending ref (default: HEAD)", + "cmd.ci.version.short": "Show or set version", + "cmd.ci.version.long": "Shows the determined version or validates a version string.", + "cmd.ci.release.short": "Create a release", + "cmd.ci.flag.go_for_launch": "Actually publish (default is dry-run for safety)", + "cmd.ci.flag.version": "Version to release (e.g., v1.2.3)", + "cmd.ci.flag.draft": "Create release as a draft", + "cmd.ci.flag.prerelease": "Mark release as a prerelease", + "cmd.ci.publishing": "Publishing release", + "cmd.ci.dry_run_hint": "(dry-run) use --we-are-go-for-launch to publish", + "cmd.ci.go_for_launch": "GO FOR LAUNCH", + "cmd.ci.publish_completed": "Publish completed!", + "cmd.ci.label.ci": "CI:", + "cmd.ci.label.init": "Init:", + "cmd.ci.label.note": "Note:", + "cmd.ci.label.error": "Error:", + "cmd.ci.label.success": "Success:", + "cmd.ci.label.version": "Version:", + "cmd.ci.label.artifacts": "Artifacts:", + "cmd.ci.label.published": "Published:", + "cmd.ci.error.working_dir": "failed to get working directory", + "cmd.ci.error.load_config": "failed to load config", + "cmd.ci.error.write_config": "failed to write config", + "cmd.ci.error.no_publishers": "no publishers configured in .core/release.yaml", + "cmd.ci.error.generate_changelog": "failed to generate changelog", + "cmd.ci.error.determine_version": "failed to determine version", + "cmd.sdk.short": "SDK validation and API compatibility tools", + "cmd.sdk.long": "Tools for validating OpenAPI specs and checking API compatibility.\nTo generate SDKs, use: core build sdk\n\nCommands:\n diff Check for breaking API changes\n validate Validate OpenAPI spec syntax", + "cmd.sdk.diff.short": "Check for breaking API changes", + "cmd.sdk.diff.long": "Check for breaking API changes between spec versions.\n\nCompares a base spec (version tag or file) against the current spec\nand reports any breaking changes that would affect API consumers.", + "cmd.sdk.diff.flag.base": "Base spec (version tag or file)", + "cmd.sdk.diff.flag.spec": "Current spec file", + "cmd.sdk.diff.label": "SDK Diff:", + "cmd.sdk.diff.checking": "Checking for breaking changes", + "cmd.sdk.diff.base_label": "Base:", + "cmd.sdk.diff.current_label": "Current:", + "cmd.sdk.diff.breaking": "Breaking:", + "cmd.sdk.diff.error.base_required": "--base is required (version tag or file path)", + "cmd.sdk.validate.short": "Validate OpenAPI spec", + "cmd.sdk.validate.long": "Validate OpenAPI spec syntax.\n\nChecks that the OpenAPI specification file is valid and well-formed.", + "cmd.sdk.validate.flag.spec": "Path to OpenAPI spec file", + "cmd.sdk.validate.validating": "Validating OpenAPI spec", + "cmd.sdk.validate.spec_label": "Spec:", + "cmd.sdk.validate.valid": "Spec is valid", + "cmd.sdk.label.sdk": "SDK:", + "cmd.sdk.label.ok": "OK:", + "cmd.sdk.label.error": "Error:", + "cmd.sdk.error.working_dir": "failed to get working directory", + "cmd.test.short": "Run tests with coverage", + "cmd.test.long": "Runs Go tests with coverage reporting.\n\nSets MACOSX_DEPLOYMENT_TARGET=26.0 to suppress linker warnings on macOS.\n\nExamples:\n core test # Run all tests with coverage summary\n core test --verbose # Show test output as it runs\n core test --coverage # Show detailed per-package coverage\n core test --pkg ./pkg/... # Test specific packages\n core test --run TestName # Run specific test by name\n core test --short # Skip long-running tests\n core test --race # Enable race detector\n core test --json # Output JSON for CI/agents", + "cmd.test.running": "Running tests", + "cmd.test.all_passed": "All tests passed", + "cmd.test.tests_failed": "Tests failed", + "cmd.test.passed": "{{.Count}} passed", + "cmd.test.failed": "{{.Count}} failed", + "cmd.test.skipped": "{{.Count}} skipped", + "cmd.test.failed_packages": "Failed packages:", + "cmd.test.coverage_by_package": "Coverage by package:", + "cmd.test.flag.verbose": "Show test output as it runs (-v)", + "cmd.test.flag.coverage": "Show detailed per-package coverage", + "cmd.test.flag.short": "Skip long-running tests (-short)", + "cmd.test.flag.pkg": "Package pattern to test (default: ./...)", + "cmd.test.flag.run": "Run only tests matching this regex (-run)", + "cmd.test.flag.race": "Enable race detector (-race)", + "cmd.test.flag.json": "Output JSON for CI/agents", + "cmd.test.label.test": "Test:", + "cmd.test.label.package": "Package:", + "cmd.test.label.filter": "Filter:", + "cmd.test.label.coverage": "Coverage:", + "cmd.test.label.average": "Average", + "cmd.test.error.no_go_mod": "no go.mod found - run from a Go project directory", + "cmd.test.error.tests_failed": "tests failed", + "error.not_found": "Not found: {{.Item}}", + "error.invalid": "Invalid: {{.Item}}", + "error.permission": "Permission denied: {{.Item}}", + "error.timeout": "Operation timed out", + "error.network": "Network error: {{.Message}}", + "error.gh_not_found": "'gh' CLI not found. Install from https://cli.github.com/", + "error.registry_not_found": "No repos.yaml found", + "error.repo_not_found": "Repository '{{.Name}}' not found", + "label.status": "Status", + "label.branch": "Branch", + "label.commit": "Commit", + "label.message": "Message", + "label.author": "Author", + "label.date": "Date", + "label.duration": "Duration", + "label.coverage": "Coverage", + "label.package": "Package", + "label.registry": "Registry", + "label.scanning": "Scanning", + "label.total": "Total", + "lang.en": "English", + "lang.de": "German", + "lang.es": "Spanish", + "lang.fr": "French", + "lang.zh": "Chinese" +}