- Rename "analyse" check to "stan" (PHPStan is commonly called "stan")
- Command: `core php stan` (with "analyse" alias for compatibility)
- Update QA pipeline to use "stan" for check name
- Update dependency chain: fmt → stan → psalm → test
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add QARunner that wraps process.Service and process.Runner
- Replace sequential runQACheck() with dependency-ordered execution
- Checks run in proper sequence: audit → fmt → analyse → psalm → test → rector/infection
- Process events broadcast via Core ACTION() messages
- Display results with stage grouping and duration tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These are now redundant with the i18n.* namespace magic:
- P("fetch") → T("i18n.progress.fetch")
- PS("build", "x") → T("i18n.progress.build", "x")
- L("status") → T("i18n.label.status")
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TimeAgo(t time.Time) for relative time strings
- Add FormatAgo(count, unit) for "N units ago" composition
- Add i18n.ago namespace pattern: T("i18n.ago", 5, "minute")
- Uses existing time.ago.{unit} keys with CLDR pluralization
- Remove local formatTimeAgo from cmd/php in favor of i18n.TimeAgo
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds cmd/i18n-validate that scans Go source files for i18n key usage
and validates them against locale JSON files and registered intents.
Features:
- Scans T(), C(), I(), and qualified i18n.* calls
- Expands ./... pattern to find all Go packages
- Validates message keys against locale JSON files
- Validates intent keys against registered core.* intents
- Reports missing keys with file:line locations
- Skips constant references (type-safe usage)
Usage:
go run ./cmd/i18n-validate ./...
task i18n:validate
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add i18n service wrapping pkg/i18n for translations via cli.T()
- Add log service with levels (quiet/error/warn/info/debug)
- Wire cli.Init() in cmd.Execute() with explicit service names
- Fix main.go to print errors to stderr and exit with code 1
- Update runtime.go to accept additional services via Options
Services use WithName() to avoid name collision since both are
defined in pkg/cli (WithService would auto-name both "cli").
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- cli.Success(), cli.Error(), etc. now print directly
- String-returning versions renamed to cli.FmtSuccess(), etc.
- Removes App() from common usage path
- Usage: cli.Success("done") instead of fmt.Println(cli.Success("done"))
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moves shared utilities (styles, utils) from cmd/shared to pkg/cli.
Adds CLI runtime with global singleton pattern:
- cli.Init() initialises the runtime
- cli.App() returns the global instance
- OutputService for styled terminal printing
- SignalService for graceful shutdown handling
All cmd/ packages now import pkg/cli instead of cmd/shared.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements the Core IPC design with four dispatch patterns:
- ACTION: fire-and-forget broadcast (existing)
- QUERY: first responder returns data
- QUERYALL: all responders return data
- PERFORM: first responder executes task
Updates git and agentic services to use Query/Task patterns.
Adds dev service for workflow orchestration.
Refactors dev work command to use worker bundles.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add pkg/framework/core with GUI-agnostic DI/service framework
(extracted from core-gui, Wails dependencies removed)
- Add pkg/agentic/prompts with embedded commit instructions
- Improve dev push: detect uncommitted changes, offer Claude commit
- Add claudeEditCommit for cases needing Write/Edit permissions
- Add i18n keys for diverged branches and uncommitted changes
- Fix infinite loop when only untracked files remain after commit
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add pull-and-retry logic for diverged branches in dev_work command,
matching the behaviour already present in dev_push. Also removes the
debug logging added during non-fast-forward detection development.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When push fails due to non-fast-forward rejection (local and remote
have diverged), offer to pull with rebase and retry the push instead
of just failing.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace hardcoded strings with i18n.T() calls across all cmd/* packages:
- ai, build, ci, dev, docs, doctor, go, php, pkg, sdk, setup, test, vm
Adds 500+ translation keys to en.json for command descriptions,
flag descriptions, labels, messages, and error strings.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ai: Replace task styles with shared TitleStyle, ValueStyle, AccentLabelStyle
- php: Use shared.StageStyle for QA stage headers
- setup: Use shared.TitleStyle instead of hardcoded colour
- shared: Add AccentLabelStyle and StageStyle
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- dev: Replace hardcoded colours in ci, issues, reviews, impact, work
- php: Use shared colour constants and deploy styles
- sdk: Replace local styles with shared aliases
- shared: Add Yellow500, Emerald500, Purple500 colours
- shared: Add PrNumberStyle and deploy status styles
Removes 111 lines of duplicate style definitions.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ai: Replace local task priority/status styles with shared equivalents
- go: Use FormatCoverage() and ProgressLabel() helpers in test output
- vm: Use shared colour constants instead of hardcoded values
- shared: Add FormatTaskStatus(), StatusPrefix(), ProgressLabel() helpers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add to shared package:
- Git status styles (dirty/ahead/behind/clean/conflict)
- CheckMark() helper for presence indicators (✓/—)
- Label() helper for key-value labels
- CheckResult() helper for environment check output
Update packages to use new shared utilities:
- cmd/dev: use shared git styles for table cells
- cmd/docs: use CheckMark() and Label() helpers
- cmd/doctor: use CheckResult() and Success()/Error() helpers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add reusable styles and helpers to shared package:
- Coverage styles (high/med/low) with FormatCoverage() helper
- Priority styles (high/medium/low) with FormatPriority() helper
- Severity styles (critical/high/medium/low) with FormatSeverity() helper
Update packages to use shared styles:
- cmd/test: use shared coverage styles and FormatCoverage()
- cmd/php: use shared status, QA, and severity styles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add comprehensive styling system for consistent DX across commands:
- Tailwind colour palette as named constants (30+ colours)
- Unicode symbols for status indicators, arrows, tree chars
- New styles: InfoStyle, AccentStyle, CodeStyle, NumberStyle, etc.
- Box styles with rounded borders for panels
- Helper functions: Success(), Error(), StatusLine(), KeyValue(), etc.
- Table struct with auto-width column rendering
Also:
- Fix cmd/build to use shared styles instead of duplicating
- Update cmd/dev/dev_health to use StatusLine() helper
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace leaanthony/clir with spf13/cobra across all command packages.
This provides better subcommand handling, built-in shell completion,
and a more widely-used CLI framework.
Changes:
- Update cmd/core.go with cobra root command and completion support
- Convert all subcommand packages to use *cobra.Command
- Use init() functions for flag registration instead of inline setup
- Maintain all existing functionality and flag behaviors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add comprehensive package-level documentation to all CLI command packages:
- cmd/core.go, core_ci.go, core_dev.go: Main CLI entry points
- cmd/shared: Lipgloss styles and utility functions
- cmd/ai: AI agent task management and Claude integration
- cmd/dev: Multi-repo git workflows and GitHub integration
- cmd/build, cmd/ci: Build and release automation
- cmd/sdk: OpenAPI validation and compatibility
- cmd/go: Go development tools with enhanced output
- cmd/php: Laravel development, build, and deployment
- cmd/docs: Documentation sync across repos
- cmd/doctor: Environment validation
- cmd/test: Test runner with coverage
- cmd/pkg: GitHub package management
- cmd/setup: Workspace initialisation
- cmd/vm: LinuxKit VM management
Each docblock now describes:
- Package purpose and commands
- Key features and configuration
- Package naming notes where relevant (gocmd, testcmd)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move cmd/core/cmd/* to cmd/* (flatten directory structure)
- Update module path from github.com/host-uk/core/cmd/core to github.com/host-uk/core
- Remove go.mod files from pkg/* (single module now)
- Simplify pkg/mcp to file operations only (no GUI deps)
- GUI features (display, webview, process) stay in core-gui/pkg/mcp
- Fix import aliases (sdkpkg) for package name conflicts
- Remove old backup directory (cmdbk)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move CLI commands into subdirectories matching command hierarchy:
dev/, go/, php/, build/, ci/, sdk/, pkg/, vm/, docs/, setup/, doctor/, test/, ai/
- Create shared/ package for common styles and utilities
- Add new `core ai` root command with claude subcommand
- Update package declarations and imports across all files
- Create commands.go entry points for each package
- Remove GUI-related files (moved to core-gui repo)
This makes the filesystem structure match the CLI command structure,
improving context capture and code organization.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add `core go cov` for coverage reports
- Generate HTML report with --html
- Open in browser with --open
- Fail on threshold with --threshold 80
- Colour-coded coverage output
- Update SKILL.md documentation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add `core go install` for installing Go binaries
- Auto-detects cmd/ subdirectories
- Optional --no-cgo flag for pure Go builds
- Shows install location on success
- Update SKILL.md documentation
Dogfood the CLI daily for better DX.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Default behavior is now dry-run (safe)
- Add --were-go-for-launch flag to actually publish
- Update help text to make this clear
- Update SKILL.md documentation
Now you must explicitly opt-in to publishing:
core ci # Preview (dry-run)
core ci --were-go-for-launch # Actually publish
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move SDK generation to `core build sdk` subcommand
- Make `core ci` publish-only (expects artifacts in dist/)
- Add release.Publish() for publishing pre-built artifacts
- Keep `core sdk diff` and `core sdk validate` for API validation
- Update SKILL.md documentation
This separation prevents accidental releases - running `core ci`
without first building will fail safely.
Workflow:
core build # Build binaries
core build sdk # Build SDKs
core ci # Publish what's in dist/
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename `release` command to `ci` for clarity
- Add build tag support for different binary variants:
- Default: full development binary (all commands)
- `-tags ci`: minimal CI binary (build, ci, sdk, doctor)
- Reorganize command registration into separate files:
- commands_dev.go: full fat (default)
- commands_ci.go: CI-only
Build CI variant: `go build -tags ci -o core-ci ./cmd/core/`
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add Go development tools under `core go`:
- test: Run tests with coverage (CGO_ENABLED=0)
- fmt: Format code with goimports/gofmt
- lint: Run golangci-lint
- mod: Module management (tidy, download, verify, graph)
- work: Workspace management (sync, init, use)
Update SKILL.md with Go Development section.
Keep `core test` at root for backward compatibility.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create new pkg.go with search, install, list, update, outdated subcommands
- Remove separate search.go and install.go files
- Update root.go to use AddPkgCommands instead of individual commands
- Update skill documentation with pkg commands in quick reference, decision tree, and common mistakes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Groups all LinuxKit VM commands under `core vm` for cleaner root help:
- core vm run - Run a VM from image or template
- core vm ps - List running VMs
- core vm stop - Stop a running VM
- core vm logs - View VM logs
- core vm exec - Execute command in VM
- core vm templates - Manage LinuxKit templates
Updates help text and output messages to use `core vm` prefix.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Simplifies CLI startup by removing the large ASCII art banner.
Now uses clir's standard header with version and description.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds `core test` command with:
- Coverage summary by default, detailed with --coverage
- Verbose mode (--verbose) to stream test output
- Package filtering (--pkg ./pkg/...)
- Test name filtering (--run TestName)
- Short mode (--short) for skipping integration tests
- Race detection (--race)
- JSON output (--json) for CI/agents
Sets MACOSX_DEPLOYMENT_TARGET=26.0 to suppress macOS linker warnings.
Filters linker warnings from output for clean DX.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>