Commit graph

806 commits

Author SHA1 Message Date
Snider
ef778936b6 docs: add next steps for docs sync setup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:55:39 +00:00
Snider
d112dab0d1 docs: reorganize into docs/cmd/ and add missing commands
- Move command docs to docs/cmd/ for better organization
- Add work.md: multi-repo operations (health, issues, reviews, etc.)
- Add docs.md: documentation management (list, sync)
- Add templates.md: LinuxKit template management
- Add setup.md: clone repos from registry
- Update index.md with full command reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:44:28 +00:00
Snider
229cde534d docs: add comprehensive CLI documentation
- Add sdk.md: SDK generation and API diff commands
- Add dev.md: DevOps portable environment (100+ tools)
- Add doctor.md: Environment health check
- Add search.md: GitHub search and install commands
- Update build.md: Add code signing flags (--no-sign, --notarize)
- Update release.md: Add --target sdk flag
- Update index.md: Organize commands by category

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:34:57 +00:00
Snider
032e5ae4cc test(release): add SDK release integration tests
Add additional test coverage for SDK release functionality:
- TestRunSDK_Good_WithDiffEnabledNoFailOnBreaking
- TestRunSDK_Good_MultipleLanguages
- TestRunSDK_Good_WithPackageConfig
- TestToSDKConfig_Good_EmptyPackageConfig
- TestToSDKConfig_Good_DiffDisabled

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:28:05 +00:00
Snider
afc0b0400e feat(cli): implement runReleaseSDK for SDK generation
Add the runReleaseSDK function that calls release.RunSDK() to
enable SDK-only releases via `core release --target sdk`. The
function loads configuration, applies CLI overrides, and displays
styled output for the SDK generation process.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:25:44 +00:00
Snider
accabe288a feat(cli): add --target flag to release command
Add target flag to support different release targets (e.g., sdk).
The runReleaseSDK function will be implemented in a follow-up commit.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:23:17 +00:00
Snider
d9c4af07c2 feat(release): implement RunSDK for SDK-only releases
Add RunSDK function that orchestrates SDK-only releases by:
- Validating config and SDK configuration
- Determining version from git tags or config override
- Running optional breaking change detection via oasdiff
- Generating SDKs for configured languages (unless dry run)

The function supports dry run mode for previewing what would be done
without actually generating SDKs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:20:56 +00:00
Snider
e3d9aa2b90 feat(release): add SDK release types and config converter
Add SDKRelease struct to hold SDK release results and toSDKConfig
helper function to convert release.SDKConfig to sdk.Config.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:17:07 +00:00
Snider
eaa35fb718 feat(sdk): add SetVersion method for release integration
Add version field to SDK struct and SetVersion method that updates both
the internal version and the config's Package.Version. This enables the
release system to pass version information to SDK generators.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:15:08 +00:00
Snider
6ac40d93ac docs(release): add SDK release integration design and plan
S3.4 - Add `core release --target sdk` to generate SDKs as a
separate release target with breaking change detection.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:12:49 +00:00
Snider
ae96820393 test(signing): add integration tests
Tests for skip conditions and disabled configs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:59:11 +00:00
Snider
0b949b9e07 feat(cli): integrate signing into build command
Adds --no-sign and --notarize flags.
Signs macOS binaries after build, GPG signs checksums.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:57:46 +00:00
Snider
8852d0a273 feat(signing): add orchestration helpers
SignBinaries, NotarizeBinaries, SignChecksums for pipeline integration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:54:06 +00:00
Snider
1e0d9e4ebd feat(build): add SignConfig to BuildConfig
Loads signing configuration from .core/build.yaml.
Expands environment variables for secrets.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:52:12 +00:00
Snider
dff008fff7 feat(signing): add Windows signtool placeholder
Placeholder for future Windows code signing support.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:49:51 +00:00
Snider
471cd1f903 feat(signing): add macOS codesign + notarization
Signs binaries with Developer ID and hardened runtime.
Notarization submits to Apple and staples ticket.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:48:54 +00:00
Snider
e0c1945f00 feat(signing): add GPG signer
Signs files with detached ASCII-armored signatures (.asc).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:47:17 +00:00
Snider
1861274909 feat(signing): add Signer interface and config types
Defines interface for GPG, macOS, and Windows signing.
Config supports env var expansion for secrets.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:46:08 +00:00
Snider
f3789f6f4c docs: add code signing implementation plan
9 TDD tasks for GPG + macOS codesign + notarization.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:44:21 +00:00
Snider
fd7c15c753 docs: add code signing design (S3.3)
GPG signs checksums.txt by default. macOS codesign + notarization.
Windows signtool deferred.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:41:18 +00:00
Snider
acd0f90424 feat(cli): add dev command group
Commands:
- core dev install/boot/stop/status
- core dev shell/serve/test
- core dev claude (sandboxed AI session)
- core dev update

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:23:29 +00:00
Snider
c00b374147 feat(devops): add Claude sandbox session
Starts Claude in immutable dev environment with auth forwarding.
Auto-boots VM, mounts project, forwards credentials.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:17:34 +00:00
Snider
86ba93edd3 feat(devops): add Serve with project mounting
Mounts project via SSHFS and runs auto-detected dev server.
Supports Laravel, Node.js, PHP, Go, Python projects.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:16:01 +00:00
Snider
0664eb2591 feat(devops): add test detection and execution
Auto-detects test framework from project files.
Supports .core/test.yaml for custom configuration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:14:40 +00:00
Snider
fe5cf71d5e feat(devops): add Shell for SSH and console access
Connects to dev VM via SSH (default) or serial console (--console).
Supports SSH agent forwarding for credential access.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:12:52 +00:00
Snider
95017cdc8a feat(devops): add Boot/Stop/Status methods
Manages dev VM lifecycle using LinuxKitManager.
Supports fresh boot, status checking, graceful stop.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:11:53 +00:00
Snider
cd7930af2a feat(devops): add ImageManager
Manages image downloads, manifest tracking, and update checking.
Tries sources in priority order (GitHub, CDN).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:10:16 +00:00
Snider
5d750c4170 feat(devops): add CDN/S3 source
Downloads core-devops images from custom CDN with progress reporting.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:07:47 +00:00
Snider
4286052c9e feat(devops): add GitHub Releases source
Downloads core-devops images from GitHub Releases using gh CLI.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:06:20 +00:00
Snider
919ecd3eba feat(devops): add ImageSource interface
Defines common interface for GitHub, Registry, and CDN sources.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:05:01 +00:00
Snider
7275961769 feat(devops): add config loading
Loads ~/.core/config.yaml with image source preferences.
Defaults to auto-detection with host-uk/core-images.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:04:01 +00:00
Snider
cead09feb2 feat(devops): add package structure
Initial pkg/devops setup with DevOps type and path helpers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 02:02:46 +00:00
Snider
a30e101281 docs: add core-devops CLI implementation plan
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>
2026-01-29 01:59:44 +00:00
Snider
e5f9276fcd docs: add core-devops CLI design (S4.6)
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>
2026-01-29 01:55:02 +00:00
Snider
5e0252b5ee chore(deps): sync go modules after SDK implementation
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>
2026-01-29 01:29:39 +00:00
Snider
f70c6fb1c1 docs: add SDK configuration example
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>
2026-01-29 01:24:41 +00:00
Snider
7970e984e4 feat(release): add SDK configuration to release.yaml
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>
2026-01-29 01:24:37 +00:00
Snider
674b1cd021 feat(cli): add sdk command with generate, diff, validate
Commands:
- core sdk generate [--spec FILE] [--lang LANG]
- core sdk diff --base VERSION [--spec FILE]
- core sdk validate [--spec FILE]

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:22:40 +00:00
Snider
fe72111236 feat(sdk): wire up Generate to use all generators
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>
2026-01-29 01:20:58 +00:00
Snider
5690fa63ae feat(sdk): add breaking change detection with oasdiff
Compares OpenAPI specs to detect breaking changes:
- Removed endpoints
- Changed required parameters
- Modified response schemas

Returns CI-friendly exit codes (0=ok, 1=breaking, 2=error).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:19:44 +00:00
Snider
b0c1c1eea5 feat(sdk): add PHP generator
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>
2026-01-29 01:16:05 +00:00
Snider
3d241e2a41 feat(sdk): add Go generator
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>
2026-01-29 01:16:01 +00:00
Snider
ea5b2fabaf feat(sdk): add Python generator
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>
2026-01-29 01:15:57 +00:00
Snider
3a7349ce5f feat(sdk): add TypeScript generator
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>
2026-01-29 01:15:47 +00:00
Snider
656ff728ff feat(sdk): add Generator interface and Registry
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>
2026-01-29 01:13:11 +00:00
Snider
c2b1e5dc61 feat(sdk): add OpenAPI spec detection
Detects OpenAPI spec via:
1. Configured spec path
2. Common paths (api/openapi.yaml, openapi.yaml, etc.)
3. Laravel Scramble (stub for now)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:11:15 +00:00
Snider
64a5b0e605 feat(sdk): add SDK package structure with types
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>
2026-01-29 01:07:19 +00:00
Snider
5e3ae3199b docs: add SDK generation implementation plan
13 tasks with TDD approach:
- Package structure and types
- OpenAPI spec detection
- Generators for TypeScript, Python, Go, PHP
- Breaking change detection with oasdiff
- CLI commands
- Release config integration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:03:05 +00:00
Snider
53b3d2613d docs: add SDK generation design (S3.4)
Design document for OpenAPI SDK generation feature:
- Hybrid generators (native + openapi-generator fallback)
- Core 4 languages: TypeScript, Python, Go, PHP
- Auto-detection: config → common paths → Laravel Scramble
- Breaking change detection with oasdiff
- Monorepo publish support

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 00:59:17 +00:00
Snider
4ae16dc09e docs(examples): add publish-* configuration examples
Publisher configuration examples for each target:
- publish-github.yaml - GitHub Releases (foundation)
- publish-npm.yaml - npm binary wrapper
- publish-homebrew.yaml - Homebrew formula + tap
- publish-scoop.yaml - Scoop manifest (Windows)
- publish-aur.yaml - AUR PKGBUILD (Arch Linux)
- publish-chocolatey.yaml - Chocolatey NuSpec (Windows)
- publish-docker.yaml - Multi-arch containers
- publish-linuxkit.yaml - Immutable images
- publish-all.yaml - All publishers combined

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 00:47:01 +00:00