2026-01-30 01:42:53 +00:00
|
|
|
{
|
2026-01-30 13:28:29 +00:00
|
|
|
"gram": {
|
2026-01-30 13:11:58 +00:00
|
|
|
"verb": {
|
|
|
|
|
"be": { "base": "be", "past": "was", "gerund": "being" },
|
|
|
|
|
"go": { "base": "go", "past": "went", "gerund": "going" },
|
|
|
|
|
"do": { "base": "do", "past": "did", "gerund": "doing" },
|
|
|
|
|
"have": { "base": "have", "past": "had", "gerund": "having" },
|
|
|
|
|
"make": { "base": "make", "past": "made", "gerund": "making" },
|
|
|
|
|
"get": { "base": "get", "past": "got", "gerund": "getting" },
|
|
|
|
|
"run": { "base": "run", "past": "ran", "gerund": "running" },
|
|
|
|
|
"write": { "base": "write", "past": "wrote", "gerund": "writing" },
|
|
|
|
|
"build": { "base": "build", "past": "built", "gerund": "building" },
|
|
|
|
|
"send": { "base": "send", "past": "sent", "gerund": "sending" },
|
|
|
|
|
"find": { "base": "find", "past": "found", "gerund": "finding" },
|
|
|
|
|
"take": { "base": "take", "past": "took", "gerund": "taking" },
|
|
|
|
|
"begin": { "base": "begin", "past": "began", "gerund": "beginning" },
|
|
|
|
|
"keep": { "base": "keep", "past": "kept", "gerund": "keeping" },
|
|
|
|
|
"hold": { "base": "hold", "past": "held", "gerund": "holding" },
|
|
|
|
|
"bring": { "base": "bring", "past": "brought", "gerund": "bringing" },
|
|
|
|
|
"think": { "base": "think", "past": "thought", "gerund": "thinking" },
|
|
|
|
|
"buy": { "base": "buy", "past": "bought", "gerund": "buying" },
|
|
|
|
|
"catch": { "base": "catch", "past": "caught", "gerund": "catching" },
|
|
|
|
|
"choose": { "base": "choose", "past": "chose", "gerund": "choosing" },
|
|
|
|
|
"lose": { "base": "lose", "past": "lost", "gerund": "losing" },
|
|
|
|
|
"win": { "base": "win", "past": "won", "gerund": "winning" },
|
|
|
|
|
"meet": { "base": "meet", "past": "met", "gerund": "meeting" },
|
|
|
|
|
"lead": { "base": "lead", "past": "led", "gerund": "leading" },
|
|
|
|
|
"leave": { "base": "leave", "past": "left", "gerund": "leaving" },
|
|
|
|
|
"spend": { "base": "spend", "past": "spent", "gerund": "spending" },
|
|
|
|
|
"pay": { "base": "pay", "past": "paid", "gerund": "paying" },
|
2026-01-30 14:24:23 +00:00
|
|
|
"sell": { "base": "sell", "past": "sold", "gerund": "selling" },
|
|
|
|
|
"commit": { "base": "commit", "past": "committed", "gerund": "committing" },
|
|
|
|
|
"stop": { "base": "stop", "past": "stopped", "gerund": "stopping" },
|
|
|
|
|
"scan": { "base": "scan", "past": "scanned", "gerund": "scanning" },
|
|
|
|
|
"format": { "base": "format", "past": "formatted", "gerund": "formatting" },
|
|
|
|
|
"set": { "base": "set", "past": "set", "gerund": "setting" },
|
|
|
|
|
"put": { "base": "put", "past": "put", "gerund": "putting" },
|
|
|
|
|
"cut": { "base": "cut", "past": "cut", "gerund": "cutting" },
|
|
|
|
|
"hit": { "base": "hit", "past": "hit", "gerund": "hitting" },
|
|
|
|
|
"sit": { "base": "sit", "past": "sat", "gerund": "sitting" },
|
|
|
|
|
"split": { "base": "split", "past": "split", "gerund": "splitting" },
|
|
|
|
|
"shut": { "base": "shut", "past": "shut", "gerund": "shutting" }
|
2026-01-30 13:11:58 +00:00
|
|
|
},
|
|
|
|
|
"noun": {
|
2026-01-30 14:24:23 +00:00
|
|
|
"file": { "one": "file", "other": "files" },
|
|
|
|
|
"repo": { "one": "repo", "other": "repos" },
|
|
|
|
|
"repository": { "one": "repository", "other": "repositories" },
|
|
|
|
|
"commit": { "one": "commit", "other": "commits" },
|
|
|
|
|
"branch": { "one": "branch", "other": "branches" },
|
|
|
|
|
"change": { "one": "change", "other": "changes" },
|
|
|
|
|
"item": { "one": "item", "other": "items" },
|
|
|
|
|
"issue": { "one": "issue", "other": "issues" },
|
|
|
|
|
"task": { "one": "task", "other": "tasks" },
|
|
|
|
|
"person": { "one": "person", "other": "people" },
|
|
|
|
|
"child": { "one": "child", "other": "children" },
|
|
|
|
|
"package": { "one": "package", "other": "packages" },
|
|
|
|
|
"artifact": { "one": "artifact", "other": "artifacts" },
|
|
|
|
|
"vulnerability": { "one": "vulnerability", "other": "vulnerabilities" },
|
|
|
|
|
"dependency": { "one": "dependency", "other": "dependencies" },
|
|
|
|
|
"directory": { "one": "directory", "other": "directories" },
|
|
|
|
|
"category": { "one": "category", "other": "categories" },
|
|
|
|
|
"query": { "one": "query", "other": "queries" }
|
2026-01-30 13:11:58 +00:00
|
|
|
},
|
|
|
|
|
"article": {
|
|
|
|
|
"indefinite": { "default": "a", "vowel": "an" },
|
|
|
|
|
"definite": "the"
|
refactor(i18n): use grammar engine for progress messages
- Replace cli.progress.* keys with i18n.P() dynamic generation
- Remove 7 static progress keys from en_GB.json (building, checking, etc.)
- Add additional core.* intents (format, analyse, link, unlink, fetch, etc.)
- Add grammar helpers: Progress(), ProgressSubject(), ActionResult(), Label()
- Add package-level convenience functions: P(), PS(), L()
- Update commands to use common.prompt.abort instead of cli.confirm.abort
The grammar engine now generates progress messages dynamically:
i18n.P("check") → "Checking..."
i18n.P("fetch") → "Fetching..."
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 12:43:03 +00:00
|
|
|
},
|
2026-01-30 14:24:23 +00:00
|
|
|
"word": {
|
|
|
|
|
"url": "URL",
|
|
|
|
|
"id": "ID",
|
|
|
|
|
"ok": "OK",
|
|
|
|
|
"ci": "CI",
|
|
|
|
|
"qa": "QA",
|
|
|
|
|
"php": "PHP",
|
|
|
|
|
"sdk": "SDK",
|
|
|
|
|
"html": "HTML",
|
|
|
|
|
"cgo": "CGO",
|
|
|
|
|
"pid": "PID",
|
|
|
|
|
"cpus": "CPUs",
|
|
|
|
|
"ssh": "SSH",
|
|
|
|
|
"ssl": "SSL",
|
|
|
|
|
"api": "API",
|
|
|
|
|
"pr": "PR",
|
|
|
|
|
"vite": "Vite",
|
|
|
|
|
"pnpm": "pnpm",
|
|
|
|
|
"app_url": "app URL",
|
|
|
|
|
"blocked_by": "blocked by",
|
|
|
|
|
"claimed_by": "claimed by",
|
|
|
|
|
"related_files": "related files",
|
refactor(i18n): consolidate duplicate translation keys into common section
Add common.* keys for reusable translations:
- common.label.* - UI labels (error, done, status, version, etc.)
- common.status.* - status words (running, stopped, dirty, synced)
- common.error.* - error messages (failed, not_found, working_dir)
- common.flag.* - CLI flag descriptions (registry, verbose, etc.)
- common.count.* - count templates (failed, passed, skipped)
- common.result.* - result messages (all_passed, no_issues)
- common.progress.* - progress messages (running, checking)
- common.hint.* - help hints (install_with, fix_deps)
Update all cmd/* files to use common keys instead of duplicated
command-specific keys. Reduces translation maintenance burden
and ensures consistency across the CLI.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:32:25 +00:00
|
|
|
"up_to_date": "up to date",
|
2026-01-30 14:24:23 +00:00
|
|
|
"dry_run": "dry run",
|
|
|
|
|
"go_mod": "go.mod"
|
refactor(i18n): consolidate duplicate translation keys into common section
Add common.* keys for reusable translations:
- common.label.* - UI labels (error, done, status, version, etc.)
- common.status.* - status words (running, stopped, dirty, synced)
- common.error.* - error messages (failed, not_found, working_dir)
- common.flag.* - CLI flag descriptions (registry, verbose, etc.)
- common.count.* - count templates (failed, passed, skipped)
- common.result.* - result messages (all_passed, no_issues)
- common.progress.* - progress messages (running, checking)
- common.hint.* - help hints (install_with, fix_deps)
Update all cmd/* files to use common keys instead of duplicated
command-specific keys. Reduces translation maintenance burden
and ensures consistency across the CLI.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:32:25 +00:00
|
|
|
},
|
2026-01-30 14:24:23 +00:00
|
|
|
"punct": {
|
|
|
|
|
"label": ":",
|
|
|
|
|
"progress": "..."
|
feat(i18n): add localized number formatting helpers
New i18n.* namespace patterns for number formatting:
- T("i18n.number", 1234567) → "1,234,567" (en) / "1.234.567" (de)
- T("i18n.decimal", 1234.56) → "1,234.56" (en) / "1.234,56" (de)
- T("i18n.percent", 0.85) → "85%" (en) / "85 %" (de)
- T("i18n.bytes", 1536000) → "1.5 MB" (en) / "1,5 MB" (de)
- T("i18n.ordinal", 3) → "3rd" (en) / "3." (de)
Also available as direct functions:
- FormatNumber(n), FormatDecimal(f), FormatPercent(f)
- FormatBytes(n), FormatOrdinal(n)
Language-aware formatting for en, de, fr, es, zh.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:39:15 +00:00
|
|
|
},
|
|
|
|
|
"number": {
|
|
|
|
|
"thousands": ",",
|
|
|
|
|
"decimal": ".",
|
|
|
|
|
"percent": "%s%%"
|
refactor(i18n): consolidate duplicate translation keys into common section
Add common.* keys for reusable translations:
- common.label.* - UI labels (error, done, status, version, etc.)
- common.status.* - status words (running, stopped, dirty, synced)
- common.error.* - error messages (failed, not_found, working_dir)
- common.flag.* - CLI flag descriptions (registry, verbose, etc.)
- common.count.* - count templates (failed, passed, skipped)
- common.result.* - result messages (all_passed, no_issues)
- common.progress.* - progress messages (running, checking)
- common.hint.* - help hints (install_with, fix_deps)
Update all cmd/* files to use common keys instead of duplicated
command-specific keys. Reduces translation maintenance burden
and ensures consistency across the CLI.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:32:25 +00:00
|
|
|
}
|
|
|
|
|
},
|
2026-01-30 14:24:23 +00:00
|
|
|
"prompt": {
|
|
|
|
|
"yes": "y",
|
|
|
|
|
"no": "n",
|
|
|
|
|
"continue": "Continue?",
|
|
|
|
|
"proceed": "Proceed?",
|
|
|
|
|
"confirm": "Are you sure?",
|
|
|
|
|
"overwrite": "Overwrite?",
|
|
|
|
|
"discard": "Discard changes?"
|
|
|
|
|
},
|
|
|
|
|
"time": {
|
|
|
|
|
"just_now": "just now",
|
|
|
|
|
"ago": {
|
|
|
|
|
"second": { "one": "{{.Count}} second ago", "other": "{{.Count}} seconds ago" },
|
|
|
|
|
"minute": { "one": "{{.Count}} minute ago", "other": "{{.Count}} minutes ago" },
|
|
|
|
|
"hour": { "one": "{{.Count}} hour ago", "other": "{{.Count}} hours ago" },
|
|
|
|
|
"day": { "one": "{{.Count}} day ago", "other": "{{.Count}} days ago" },
|
|
|
|
|
"week": { "one": "{{.Count}} week ago", "other": "{{.Count}} weeks ago" }
|
|
|
|
|
}
|
2026-01-30 01:42:53 +00:00
|
|
|
},
|
2026-01-30 11:11:07 +00:00
|
|
|
"cmd": {
|
|
|
|
|
"ai": {
|
|
|
|
|
"short": "AI agent task management",
|
2026-01-30 14:24:23 +00:00
|
|
|
"claude.short": "Claude Code integration",
|
|
|
|
|
"task.short": "Show task details or auto-select a task",
|
|
|
|
|
"task.id_required": "task ID required (or use --auto)",
|
|
|
|
|
"task.no_pending": "No pending tasks available.",
|
|
|
|
|
"tasks.short": "List available tasks from core-agentic",
|
|
|
|
|
"task_commit.short": "Auto-commit changes with task reference",
|
|
|
|
|
"task_commit.no_changes": "No uncommitted changes to commit.",
|
|
|
|
|
"task_complete.short": "Mark a task as completed",
|
|
|
|
|
"task_pr.short": "Create a pull request for a task",
|
|
|
|
|
"task_pr.branch_error": "cannot create PR from {{.Branch}} branch; create a feature branch first",
|
|
|
|
|
"task_update.short": "Update task status or progress"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"build": {
|
|
|
|
|
"short": "Build projects with auto-detection and cross-compilation",
|
2026-01-30 14:24:23 +00:00
|
|
|
"error.invalid_target": "invalid target format \"{{.Target}}\", expected OS/arch (e.g., linux/amd64)",
|
|
|
|
|
"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)",
|
|
|
|
|
"from_path.short": "Build from a local directory",
|
|
|
|
|
"pwa.short": "Build from a live PWA URL",
|
|
|
|
|
"sdk.short": "Generate API SDKs from OpenAPI spec"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"ci": {
|
2026-01-30 14:24:23 +00:00
|
|
|
"short": "Publish releases (dry-run by default)",
|
2026-01-30 11:11:07 +00:00
|
|
|
"dry_run_hint": "(dry-run) use --we-are-go-for-launch to publish",
|
|
|
|
|
"go_for_launch": "GO FOR LAUNCH",
|
2026-01-30 14:24:23 +00:00
|
|
|
"init.short": "Initialize release configuration",
|
|
|
|
|
"changelog.short": "Generate changelog",
|
|
|
|
|
"version.short": "Show or set version"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"dev": {
|
2026-01-30 14:24:23 +00:00
|
|
|
"short": "Multi-repo development workflow",
|
2026-01-30 11:11:07 +00:00
|
|
|
"no_changes": "No uncommitted changes found.",
|
|
|
|
|
"no_git_repos": "No git repositories found.",
|
2026-01-30 14:24:23 +00:00
|
|
|
"confirm_claude_commit": "Have Claude commit these repos?",
|
|
|
|
|
"health.short": "Quick health check across all repos",
|
2026-02-01 03:55:01 +00:00
|
|
|
"health.long": "Shows a summary of repository health across all repos in the workspace.",
|
|
|
|
|
"health.flag.verbose": "Show detailed breakdown",
|
|
|
|
|
"health.repos": "repos",
|
|
|
|
|
"health.to_push": "to push",
|
|
|
|
|
"health.to_pull": "to pull",
|
|
|
|
|
"health.errors": "errors",
|
|
|
|
|
"health.more": "+{{.Count}} more",
|
|
|
|
|
"health.dirty_label": "Dirty:",
|
|
|
|
|
"health.ahead_label": "Ahead:",
|
|
|
|
|
"health.behind_label": "Behind:",
|
|
|
|
|
"health.errors_label": "Errors:",
|
|
|
|
|
"status.clean": "clean",
|
2026-01-30 14:24:23 +00:00
|
|
|
"commit.short": "Claude-assisted commits across repos",
|
|
|
|
|
"push.short": "Push commits across all repos",
|
|
|
|
|
"push.diverged": "branch has diverged from remote",
|
|
|
|
|
"push.diverged_help": "Some repos have diverged (local and remote have different commits).",
|
|
|
|
|
"push.uncommitted_changes_commit": "You have uncommitted changes. Commit with Claude first?",
|
|
|
|
|
"pull.short": "Pull updates across all repos",
|
|
|
|
|
"work.short": "Multi-repo git operations",
|
|
|
|
|
"work.use_commit_flag": "Use --commit to have Claude create commits",
|
|
|
|
|
"issues.short": "List open issues across all repos",
|
|
|
|
|
"reviews.short": "List PRs needing review across all repos",
|
|
|
|
|
"ci.short": "Check CI status across all repos",
|
|
|
|
|
"impact.short": "Show impact of changing a repo",
|
|
|
|
|
"impact.requires_registry": "impact analysis requires repos.yaml with dependency information",
|
|
|
|
|
"sync.short": "Synchronizes public service APIs with internal implementations",
|
|
|
|
|
"vm.short": "Dev environment commands",
|
|
|
|
|
"vm.not_installed": "dev environment not installed (run 'core dev install' first)",
|
|
|
|
|
"vm.not_running": "Dev environment is not running"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"docs": {
|
|
|
|
|
"short": "Documentation management",
|
2026-01-30 14:24:23 +00:00
|
|
|
"list.short": "List documentation across repos",
|
|
|
|
|
"sync.short": "Sync documentation to core-php/docs/packages/"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"doctor": {
|
|
|
|
|
"short": "Check development environment",
|
2026-01-30 14:24:23 +00:00
|
|
|
"ready": "Doctor: Environment ready",
|
|
|
|
|
"no_repos_yaml": "No repos.yaml found (run from workspace directory)",
|
|
|
|
|
"install_missing": "Install missing tools:",
|
|
|
|
|
"install_macos": "brew install git gh php composer node pnpm docker",
|
|
|
|
|
"ssh_missing": "SSH key missing - run: ssh-keygen && gh ssh-key add"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"go": {
|
|
|
|
|
"short": "Go development tools",
|
2026-01-30 14:24:23 +00:00
|
|
|
"test.short": "Run Go tests",
|
|
|
|
|
"cov.short": "Run tests with coverage report",
|
|
|
|
|
"fmt.short": "Format Go code",
|
|
|
|
|
"lint.short": "Run golangci-lint",
|
|
|
|
|
"install.short": "Install Go binary",
|
|
|
|
|
"mod.short": "Module management",
|
|
|
|
|
"work.short": "Workspace management"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"php": {
|
|
|
|
|
"short": "Laravel/PHP development tools",
|
2026-01-30 14:24:23 +00:00
|
|
|
"dev.short": "Start Laravel development environment",
|
|
|
|
|
"dev.press_ctrl_c": "Press Ctrl+C to stop all services",
|
|
|
|
|
"test.short": "Run PHP tests (PHPUnit/Pest)",
|
|
|
|
|
"fmt.short": "Format PHP code with Laravel Pint",
|
|
|
|
|
"analyse.short": "Run PHPStan static analysis",
|
|
|
|
|
"audit.short": "Security audit for dependencies",
|
|
|
|
|
"psalm.short": "Run Psalm static analysis",
|
|
|
|
|
"rector.short": "Automated code refactoring",
|
|
|
|
|
"infection.short": "Mutation testing for test quality",
|
|
|
|
|
"security.short": "Security vulnerability scanning",
|
|
|
|
|
"qa.short": "Run full QA pipeline",
|
|
|
|
|
"build.short": "Build Docker or LinuxKit image",
|
|
|
|
|
"deploy.short": "Deploy to Coolify",
|
|
|
|
|
"serve.short": "Run production container",
|
|
|
|
|
"ssl.short": "Setup SSL certificates with mkcert",
|
|
|
|
|
"packages.short": "Manage local PHP packages"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"pkg": {
|
|
|
|
|
"short": "Package management for core-* repos",
|
2026-01-30 14:24:23 +00:00
|
|
|
"install.short": "Clone a package from GitHub",
|
|
|
|
|
"list.short": "List installed packages",
|
|
|
|
|
"update.short": "Update installed packages",
|
|
|
|
|
"outdated.short": "Check for outdated packages",
|
|
|
|
|
"search.short": "Search GitHub for packages",
|
|
|
|
|
"error.invalid_repo_format": "invalid repo format: use org/repo (e.g., host-uk/core-php)"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"sdk": {
|
|
|
|
|
"short": "SDK validation and API compatibility tools",
|
2026-01-30 14:24:23 +00:00
|
|
|
"diff.short": "Check for breaking API changes",
|
|
|
|
|
"validate.short": "Validate OpenAPI spec"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"setup": {
|
2026-01-30 14:24:23 +00:00
|
|
|
"short": "Bootstrap workspace or clone packages from registry",
|
2026-01-30 11:11:07 +00:00
|
|
|
"complete": "Setup complete",
|
2026-01-30 14:24:23 +00:00
|
|
|
"bootstrap_mode": "Bootstrap mode (no repos.yaml found)",
|
2026-01-30 11:11:07 +00:00
|
|
|
"nothing_to_clone": "Nothing to clone.",
|
2026-01-30 14:24:23 +00:00
|
|
|
"wizard.select_packages": "Select packages to clone",
|
2026-02-01 03:37:06 +00:00
|
|
|
"wizard.what_to_do": "What would you like to do?",
|
|
|
|
|
"github.short": "Configure GitHub repos with org standards",
|
|
|
|
|
"github.long": "Configure GitHub repositories with organisation standards including labels, webhooks, branch protection, and security settings.",
|
|
|
|
|
"github.flag.repo": "Specific repo to setup",
|
|
|
|
|
"github.flag.all": "Setup all repos in registry",
|
|
|
|
|
"github.flag.labels": "Only sync labels",
|
|
|
|
|
"github.flag.webhooks": "Only sync webhooks",
|
|
|
|
|
"github.flag.protection": "Only sync branch protection",
|
|
|
|
|
"github.flag.security": "Only sync security settings",
|
|
|
|
|
"github.flag.check": "Dry-run: show what would change",
|
|
|
|
|
"github.flag.config": "Path to github.yaml config",
|
|
|
|
|
"github.dry_run_mode": "(dry run) no changes will be made",
|
|
|
|
|
"github.no_repos_specified": "No repos specified.",
|
|
|
|
|
"github.usage_hint": "Use --repo <name> for a single repo, or --all for all repos",
|
|
|
|
|
"github.no_changes": "no changes needed",
|
|
|
|
|
"github.repos_checked": "Repos checked",
|
|
|
|
|
"github.repos_with_changes": "Repos with changes",
|
|
|
|
|
"github.all_up_to_date": "All repos are up to date",
|
|
|
|
|
"github.to_create": "To create",
|
|
|
|
|
"github.to_update": "To update",
|
|
|
|
|
"github.to_delete": "To delete",
|
|
|
|
|
"github.run_without_check": "Run without --check to apply changes",
|
|
|
|
|
"github.error.not_authenticated": "GitHub CLI not authenticated. Run: gh auth login",
|
|
|
|
|
"github.error.config_not_found": "GitHub config file not found",
|
|
|
|
|
"github.error.conflicting_flags": "Cannot use --repo and --all together"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
2026-02-01 03:37:16 +00:00
|
|
|
"qa": {
|
|
|
|
|
"short": "Quality assurance workflows",
|
|
|
|
|
"long": "Quality assurance commands for verifying work - CI status, reviews, issues.",
|
|
|
|
|
"watch.short": "Watch GitHub Actions after a push",
|
|
|
|
|
"watch.long": "Monitor GitHub Actions workflow runs triggered by a commit, showing live progress and actionable failure details.",
|
|
|
|
|
"watch.flag.repo": "Repository to watch (default: current)",
|
|
|
|
|
"watch.flag.commit": "Commit SHA to watch (default: HEAD)",
|
|
|
|
|
"watch.flag.timeout": "Timeout duration (default: 10m)",
|
|
|
|
|
"watch.commit": "Commit:",
|
|
|
|
|
"watch.waiting_for_workflows": "Waiting for workflows to start...",
|
|
|
|
|
"watch.timeout": "Timeout after {{.Duration}} waiting for workflows",
|
|
|
|
|
"watch.workflows_failed": "{{.Count}} workflow(s) failed",
|
|
|
|
|
"watch.all_passed": "All workflows passed",
|
|
|
|
|
"watch.error.not_git_repo": "Not in a git repository",
|
feat(qa): add review command for PR status (#64)
* feat(qa): add qa watch command for CI monitoring (#47)
Implements `core qa watch` to monitor GitHub Actions after a push:
- Polls workflow runs for a commit until completion
- Shows live progress with pass/fail counts
- On failure, shows job name, failed step, and link to logs
- Exits with appropriate code (0 = passed, 1 = failed)
Usage:
core qa watch # Watch current repo's HEAD
core qa watch --repo X # Watch specific repo
core qa watch --timeout 5m # Custom timeout
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(qa): address CodeRabbit feedback on watch command
- Add length check before slicing commitSha to prevent panic on short SHAs
- Count all non-success conclusions as failures (cancelled, timed_out, etc.)
- Use errors.E/Wrap pattern for consistent error handling with operation context
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(qa): add context-aware commands and log parsing
- Use exec.CommandContext with timeout context for all gh invocations
so commands are cancelled when deadline expires
- Implement fetchErrorFromLogs using 'gh run view --log-failed'
to extract first meaningful error line from failed workflows
- Pass context through call chain for proper timeout propagation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(qa): add review command for PR status (#62)
Add `core qa review` command to show PR review status with actionable
next steps. Answers: "What do I need to do to get my PRs merged?"
and "What reviews am I blocking?"
Features:
- Shows your open PRs with merge status (CI, reviews, conflicts)
- Shows PRs where your review is requested
- Provides actionable suggestions (rebase, address feedback, etc.)
- Flags: --mine, --requested, --repo
Closes #62
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(qa): add review command for PR status (#62)
Add `core qa review` command to show PR review status with actionable
next steps. Answers: "What do I need to do to get my PRs merged?"
and "What reviews am I blocking?"
Features:
- Shows your open PRs with merge status (CI, reviews, conflicts)
- Shows PRs where your review is requested
- Provides actionable suggestions (rebase, address feedback, etc.)
- Flags: --mine, --requested, --repo
Closes #62
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(qa): address CodeRabbit feedback on review command
- Fix truncate to use runes for UTF-8 safe string slicing
- Remove unused user parameter from showMyPRs and showRequestedReviews
- Remove unused getCurrentUser function
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(qa): remove duplicate i18n block and improve error handling
- Remove duplicate cmd.qa block in en_GB.json
- Use errors.E consistently for error wrapping
- Require --repo flag when not in a git repository
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 03:56:48 +00:00
|
|
|
"watch.error.repo_format": "Invalid repo format. Use --repo org/name or run from a git repo",
|
|
|
|
|
"review.short": "Check PR review status",
|
|
|
|
|
"review.long": "Show PR review status with actionable next steps. Answers: What do I need to do to get my PRs merged? What reviews am I blocking?",
|
|
|
|
|
"review.flag.mine": "Show only your open PRs",
|
|
|
|
|
"review.flag.requested": "Show only PRs where your review is requested",
|
|
|
|
|
"review.flag.repo": "Specific repository (default: current)",
|
|
|
|
|
"review.your_prs": "Your PRs",
|
|
|
|
|
"review.review_requested": "Review Requested",
|
|
|
|
|
"review.no_prs": "No open PRs",
|
|
|
|
|
"review.no_reviews": "No reviews requested",
|
|
|
|
|
"review.error.no_repo": "Not in a git repository. Use --repo to specify one"
|
2026-02-01 03:37:16 +00:00
|
|
|
},
|
2026-01-30 11:11:07 +00:00
|
|
|
"test": {
|
2026-01-30 14:24:23 +00:00
|
|
|
"short": "Run Go tests with coverage"
|
2026-01-30 11:11:07 +00:00
|
|
|
},
|
|
|
|
|
"vm": {
|
|
|
|
|
"short": "LinuxKit VM management",
|
2026-01-30 14:24:23 +00:00
|
|
|
"run.short": "Run a LinuxKit image or template",
|
|
|
|
|
"ps.short": "List running VMs",
|
|
|
|
|
"stop.short": "Stop a running VM",
|
|
|
|
|
"logs.short": "View VM logs",
|
|
|
|
|
"exec.short": "Execute a command in a VM",
|
|
|
|
|
"templates.short": "Manage LinuxKit templates"
|
2026-01-30 11:11:07 +00:00
|
|
|
}
|
2026-01-30 01:42:53 +00:00
|
|
|
},
|
2026-01-30 20:51:32 +00:00
|
|
|
"common": {
|
2026-02-01 03:55:01 +00:00
|
|
|
"status": {
|
|
|
|
|
"dirty": "dirty",
|
|
|
|
|
"clean": "clean",
|
|
|
|
|
"synced": "synced",
|
|
|
|
|
"up_to_date": "up to date"
|
|
|
|
|
},
|
2026-01-30 20:51:32 +00:00
|
|
|
"label": {
|
|
|
|
|
"done": "Done",
|
|
|
|
|
"error": "Error",
|
|
|
|
|
"warning": "Warning",
|
|
|
|
|
"info": "Info",
|
|
|
|
|
"fix": "Fix:",
|
|
|
|
|
"install": "Install:",
|
|
|
|
|
"summary": "Summary:",
|
2026-02-01 03:37:06 +00:00
|
|
|
"setup": "Setup:",
|
|
|
|
|
"config": "Config:",
|
|
|
|
|
"repo": "Repo:"
|
2026-01-30 20:51:32 +00:00
|
|
|
},
|
|
|
|
|
"flag": {
|
|
|
|
|
"fix": "Auto-fix issues where possible",
|
|
|
|
|
"diff": "Show diff of changes",
|
2026-02-01 03:37:06 +00:00
|
|
|
"json": "Output as JSON",
|
2026-02-01 03:55:01 +00:00
|
|
|
"verbose": "Show detailed output",
|
|
|
|
|
"registry": "Path to repos.yaml registry file"
|
2026-01-30 20:51:32 +00:00
|
|
|
},
|
|
|
|
|
"progress": {
|
|
|
|
|
"running": "Running {{.Task}}...",
|
|
|
|
|
"checking": "Checking {{.Item}}..."
|
|
|
|
|
},
|
|
|
|
|
"result": {
|
|
|
|
|
"no_issues": "No issues found"
|
|
|
|
|
},
|
|
|
|
|
"success": {
|
|
|
|
|
"completed": "{{.Action}} successfully"
|
|
|
|
|
},
|
|
|
|
|
"error": {
|
|
|
|
|
"failed": "Failed to {{.Action}}"
|
|
|
|
|
},
|
|
|
|
|
"hint": {
|
|
|
|
|
"fix_deps": "Update dependencies to fix vulnerabilities"
|
|
|
|
|
}
|
|
|
|
|
},
|
2026-01-30 11:11:07 +00:00
|
|
|
"error": {
|
|
|
|
|
"gh_not_found": "'gh' CLI not found. Install from https://cli.github.com/",
|
|
|
|
|
"registry_not_found": "No repos.yaml found",
|
2026-01-30 14:24:23 +00:00
|
|
|
"repo_not_found": "Repository '{{.Name}}' not found"
|
2026-01-30 01:42:53 +00:00
|
|
|
},
|
2026-01-30 11:11:07 +00:00
|
|
|
"lang": {
|
|
|
|
|
"de": "German",
|
|
|
|
|
"en": "English",
|
|
|
|
|
"es": "Spanish",
|
|
|
|
|
"fr": "French",
|
|
|
|
|
"zh": "Chinese"
|
|
|
|
|
}
|
2026-01-30 01:42:53 +00:00
|
|
|
}
|