13 tasks with TDD approach:
- Package structure and config
- Image sources (GitHub, CDN)
- ImageManager with manifest tracking
- Boot/Stop/Status
- Shell (SSH + serial console)
- Test detection and execution
- Serve with project mounting
- Claude sandbox with auth forwarding
- CLI commands
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Design for portable dev environment commands:
- core dev install/boot/shell/serve/test/update/status/stop
- core dev claude - sandboxed AI session with auth forwarding
- Image sources: GitHub Releases, Container Registry, CDN
- Mount & serve with auto-detection
- Test config via .core/test.yaml
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updates go.mod and go.sum files across all workspace modules
after adding oasdiff and kin-openapi dependencies for SDK generation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add sdk-full.yaml example showing full SDK generation configuration
including spec path, languages, package naming, diff detection,
and publish settings.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add SDKConfig struct and related types (SDKPackageConfig, SDKDiffConfig,
SDKPublishConfig) to support SDK generation configuration within the
release.yaml configuration file.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SDK.Generate() and SDK.GenerateLanguage() now use the
generator registry to generate SDKs for configured languages.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements PHP SDK generator using Docker-only approach:
- Requires Docker with openapitools/openapi-generator-cli
- No native PHP generator tool; Docker is the only option
Includes tests following _Good convention for Available and Generate.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements Go SDK generator with two-level fallback:
1. Native oapi-codegen if installed (generates types and client)
2. Docker openapitools/openapi-generator-cli as fallback
Native generation also creates a minimal go.mod file.
Includes tests following _Good convention for Available and Generate.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements Python SDK generator with two-level fallback:
1. Native openapi-python-client if installed
2. Docker openapitools/openapi-generator-cli as fallback
Includes tests following _Good convention for Available and Generate.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements TypeScript SDK generator with three-level fallback:
1. Native openapi-typescript-codegen if installed globally
2. npx openapi-typescript-codegen if npx available
3. Docker openapitools/openapi-generator-cli as fallback
Includes tests following _Good convention for Available and Generate.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Defines the common interface for SDK generators with:
- Generate(), Available(), Install() methods
- Registry for managing multiple generators
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Initial pkg/sdk setup with Config types for OpenAPI SDK generation.
Includes language selection, diff config, and publish config.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
LinuxKit can now output docker format tarballs that can be loaded with
`docker load`. This gives you immutable, reproducible LinuxKit images
in Docker-compatible format.
Supported formats now include:
- iso, iso-bios, iso-efi
- raw, raw-bios, raw-efi
- qcow2, qcow2-bios, qcow2-efi
- vmdk, vhd, gcp, aws
- docker (tarball for `docker load`)
- tar, kernel+initrd
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add publishers for distributing CLI binaries to package managers:
- npm: binary wrapper pattern with postinstall download
- Homebrew: formula generation + tap auto-commit
- Scoop: JSON manifest + bucket auto-commit
- AUR: PKGBUILD + .SRCINFO + AUR push
- Chocolatey: NuSpec + install script + optional push
Each publisher supports:
- Dry-run mode for previewing changes
- Auto-commit to own repos (tap/bucket/AUR)
- Generate files for PRs to official repos via `official` config
Also includes Docker and LinuxKit build helpers.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Context gathering:
- BuildTaskContext for AI consumption
- GatherRelatedFiles from task references
- Keyword search for related code
- Git status and recent commits
Task completion:
- AutoCommit with task reference and Co-Authored-By
- CreatePR using gh CLI
- SyncStatus back to agentic service
- CreateBranch with {type}/{id}-{title} format
CLI commands:
- core dev task <id> --context - show with AI context
- core dev task:commit <id> - auto-commit
- core dev task:pr <id> - create PR
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add pkg/agentic for AI-assisted task management:
- API client for core-agentic service
- Task listing, claiming, updating, completion
- Config from .env or ~/.core/agentic.yaml
CLI commands:
- core dev tasks - list available tasks
- core dev task <id> - show/claim task
- core dev task --auto - AI picks highest priority
- core dev task:update <id> - update progress
- core dev task:complete <id> - mark complete
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Templates:
- core-dev: Development environment (Go, Node, PHP, Docker-in-LinuxKit)
- server-php: Production FrankenPHP server with Caddy
Features:
- Variable substitution: ${VAR} (required), ${VAR:-default} (optional)
- Template listing, viewing, and variable extraction
- Run directly from template: core run --template <name>
CLI commands:
- core templates - list available templates
- core templates show <name> - display template
- core templates vars <name> - show variables
- core run --template <name> --var KEY=value
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add pkg/build package replacing goreleaser with native build system:
- Project discovery (go.mod, wails.json, package.json, composer.json)
- Go cross-compilation with GOOS/GOARCH, CGO_ENABLED=0, ldflags
- Config loading from .core/build.yaml with sensible defaults
- Archive creation (tar.gz for linux/darwin, zip for windows)
- SHA256 checksum generation with CHECKSUMS.txt
CLI integration via `core build`:
- Auto-detect project type or specify with --type
- Cross-compile with --targets (e.g., linux/amd64,darwin/arm64)
- CI mode with --ci for JSON output
- Archive/checksum flags (--archive, --checksum)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add dev-release.yml workflow that builds CLI for linux/darwin/windows
(amd64/arm64) on every push to dev branch
- Update .goreleaser.yaml repo owner from Snider to host-uk
- Dev release is automatically updated with latest binaries
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add exceptions in .gitignore to track build configuration files
(Taskfile.yml, info.json, manifests, etc.) while keeping build
outputs (bin/) ignored.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move Go module from github.com/Snider/Core to github.com/host-uk/core
to match the new repository location under the host-uk organization.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add pkg/cache for file-based caching with TTL
- Cache lives in workspace .core/cache/ (not home dir)
- Search command now caches repo lists for 1 hour
- Shows "Cache: host-uk (5s ago)" on cache hit
- Use --refresh to bypass cache
- Add .core/ to core-devops .gitignore
Structure:
.core/cache/github/<org>/repos.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add `core search --org <org>` to list repos from GitHub
- Supports --pattern for glob filtering (e.g., 'core-*')
- Supports --type for type filtering (e.g., 'service', 'mod')
- Uses `gh repo list` for reliable API access
- Add `core install --repo <org/repo>` to clone individual repos
- Auto-detects target directory from repos.yaml
- Optional --add flag to add to registry
- Detects repo type from naming convention
- Update gitClone to use HTTPS URL with gh (no SSH key needed)
- Falls back to SSH if HTTPS fails
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add `core setup` to clone repos from registry into packages/
- Supports --dry-run, --only type filter
- Skips repos with clone: false
- Detects existing clones
- Add `core doctor` to check development environment
- Checks git, gh, php, composer, node
- Verifies SSH key exists
- Checks gh CLI authentication
- Shows workspace registry status
- Update Repo struct with Clone field for skip control
- Change Repo.Type from RepoType to string for flexibility
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Show which registry file is being used (or if scanning directory)
for better debugging when commands behave unexpectedly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>