Commit graph

4 commits

Author SHA1 Message Date
Claude
23b82482f2 refactor: rename module from github.com/host-uk/core to forge.lthn.ai/core/cli
Move module identity to our own Forgejo instance. All import paths
updated across 434 Go files, sub-module go.mod files, and go.work.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 05:53:52 +00:00
Snider
bd665e0892 feat(container): migrate filesystem operations to io.Local abstraction
Migrate state.go:
- os.ReadFile → io.Local.Read
- os.MkdirAll → io.Local.EnsureDir
- os.WriteFile → io.Local.Write

Migrate templates.go:
- os.Stat → io.Local.IsFile/IsDir
- os.ReadFile → io.Local.Read
- os.ReadDir → io.Local.List

Part of #101 (io.Medium migration tracking issue).

Closes #108

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 04:35:09 +00:00
Snider
8c4b526ef4 fix(container): prevent data race in State.Get and State.All (#238)
Return copies of Container structs instead of pointers to the map
entries. This prevents data races when containers are modified
concurrently by waitForExit and Stop.

Fixes #76

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 04:16:05 +00:00
Snider
3bd9f9bc3d feat(container): implement LinuxKit container runtime
Add pkg/container for running LinuxKit VMs:
- Manager interface with Run, Stop, List, Logs, Exec
- Hypervisor abstraction (QEMU, Hyperkit)
- Auto-detect available hypervisor and image format
- State persistence in ~/.core/containers.json
- Log management in ~/.core/logs/

CLI commands:
- core run <image> - run LinuxKit image (-d for detach)
- core ps - list containers (-a for all)
- core stop <id> - stop container
- core logs <id> - view logs (-f to follow)
- core exec <id> <cmd> - execute via SSH

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 18:50:32 +00:00