Releases: omattsson/stackctl
Release list
v0.3.1
Highlights
-
stackctl definition update-chartno longer wipes fields (#108) — The command was sending only 4 of the 8 fields the backend stores, sorepository_url,chart_path,build_pipeline_id, anddeploy_orderwere silently cleared on every call. Subsequent stack deploys would then fail with helm'snon-absolute URLs should be in form of repo_name/path_to_chart. The CLI now seeds the request from the fullGETresponse and lets user flags override individual fields. -
New
--repository-urlflag forstackctl definition update-chart(#108) — explicitly set the chartrepository_url(validated: onlyoci://,http://,https://schemes; empty host rejected). Without this flag there was no path to set the field from the CLI.
Compatibility
Pairs with k8s-stack-manager 0.4.0, which makes the backend PUT merge-safe so partial bodies stop wiping fields. Either side alone closes the bug; both together is belt-and-suspenders. Older backends (≤ 0.3.1) will still accept v0.3.1's full-record PUT correctly.
Install
# macOS / Linux via Homebrew
brew install omattsson/tap/stackctl
brew upgrade omattsson/tap/stackctl
# Manual: pick the archive matching your OS/arch from Assets below
curl -fsSL "https://github.com/omattsson/stackctl/releases/download/v0.3.1/stackctl_0.3.1_linux_amd64.tar.gz" \
| tar -xz -C /tmp && sudo install -m 755 /tmp/stackctl /usr/local/bin/stackctlFull changelog
Fixes
- fix(definition): update-chart preserves all fields + add --repository-url (#108)
Dependencies
- deps(actions): bump actions/checkout from 6 to 7 (#107)
- deps(docker): bump alpine from
a2d49eato28bd5fe(#106)
Full diff: v0.3.0...v0.3.1
v0.3.0
Highlights
This release closes out epic #59 — stackctl now covers the full K8s Stack Manager API surface as of backend v0.3.1.
~20 new commands across 9 groups
| Group | New subcommands |
|---|---|
template |
create, update, clone, publish, unpublish, versions list/get/diff |
cluster |
create, update, delete, set-default, health, test-connection, nodes, namespaces, utilization, quota get/set/delete |
cleanup-policy |
list, get, create, update, delete, run [--dry-run] |
apikey |
list, create, revoke |
user |
list, disable, enable, delete, reset-password (+ auth register) |
audit |
log list (with filters), `log export json |
analytics |
overview, templates, users |
notification |
list, `read [id |
favorite |
list, add, remove |
git |
providers |
stack |
watch — subscribe to /ws for deploy/stop events |
bulk template |
delete, publish, unpublish |
Wire-contract fixes
- Bulk endpoints now send
instance_ids/template_idsand decodeinstance_id/template_id+statusto match the backend (#98). The previous shape (ids/id+successbool) failed every bulk call with400 instance_ids is required. CreateClusterRequest/UpdateClusterRequestcarryregistry_passwordso registry credentials can be set via API (#95).ChartConfigwidened to the union of backendmodels.ChartConfig+models.TemplateChartConfig— picks upchart_path,deploy_order,build_pipeline_id,locked_values,requiredthat were silently dropped on read.
New test infrastructure
- Live tests (
cli/test/live/) — boot a real backend in CI and exercise every endpoint group end-to-end. Now runs on every PR against a freshly-bootedk8s-stack-manager:main(#99, #100). - Contract tests (
cli/test/contract/) — reflect eachpkg/types/request struct against the vendored backend swagger schema. Catchesomitemptydrift, typos, and added/removed fields without needing a live backend (#101).
Compatibility
Requires k8s-stack-manager v0.3.1 or newer.
stackctl stack watchuses WS subprotocol auth (added in backend #262).stackctl template create --from-fileuses inline charts onPOST /api/v1/templates(added in backend #264).
Older backends will return 404 or 400 on these endpoints.
Install
# macOS / Linux via Homebrew
brew install omattsson/tap/stackctl
brew upgrade omattsson/tap/stackctl # if already tapped
# Manual: pick the archive matching your OS/arch from Assets below
curl -fsSL "https://github.com/omattsson/stackctl/releases/download/v0.3.0/stackctl_0.3.0_linux_amd64.tar.gz" \
| tar -xz -C /tmp && sudo install -m 755 /tmp/stackctl /usr/local/bin/stackctlFull changelog
Features
- feat(stack): watch — subscribe to /ws for deploy/stop events (#93)
- feat(template): create / update / clone (#77), publish / unpublish (#79), versions list/get/diff (#80)
- feat(bulk): bulk template delete / publish / unpublish (#81)
- feat(cluster): create / update / delete / set-default (#82), health / test-connection / nodes / namespaces / utilization (#83), quota get/set/delete (#84)
- feat(cleanup-policy): CRUD (#85), run [--dry-run] (#86)
- feat(user, auth): admin user lifecycle + auth register (#87)
- feat(apikey): list / create / revoke per user (#88)
- feat(analytics): overview / templates / users (#89)
- feat(audit): list with filters + export json/csv (#90)
- feat(notification): list / count / read + preferences (#91)
- feat(favorite, git): favorites CRUD + git providers (#92)
- chore(stack): polish logs --follow path (#94)
Fixes
- fix(cluster): include registry_password in Create/UpdateClusterRequest (#95)
- fix(bulk, types): align bulk + ChartConfig wire contracts with backend (#98)
- fix(test): reset persistent flags between in-process integration test runs
Tests + CI
- ci(live): run cli/test/live/ on every PR against a freshly-booted backend (#99)
- test(live): apikey CRUD, user lifecycle, template versions, cleanup policies, cluster CRUD (#100)
- test(contract): assert pkg/types request shapes against backend swagger (#101)
- test(contract): refresh vendored swagger from k8s-stack-manager v0.3.1 (#105)
Plus dependabot updates and CodeRabbit-driven cleanups.
Full diff: v0.2.0...v0.3.0
v0.2.0
v0.1.0
Changelog
- 80f34ac Add CLAUDE.md and agent definitions for stackctl CLI project
- 229d2dd Fix JSON field mapping and response types for API compatibility (#39)
- b2e388a Phase 1.1: Scaffold CLI module, config, and HTTP client (#11)
- 24f6489 Phase 3.4: Code review and documentation (#20)
- f2bc94e build(deps): bump alpine from 3.20 to 3.23 (#22)
- 5c41276 build(deps): bump alpine from
2510918to5b10f43(#36) - 373225c build(deps): bump docker/setup-buildx-action in the actions group (#25)
- 8150b36 build(deps): bump github.com/spf13/pflag (#34)
- 6729789 build(deps): bump golang from 1.26.1-alpine to 1.26.2-alpine (#27)
- aaccc66 build(deps): bump golang.org/x/term in /cli in the go-minor-patch group (#26)
- 85fcb2a build(deps): bump the actions group with 8 updates (#23)
- 1d56fd6 ci: add security scanning, Docker publishing, coverage tracking, and Dependabot (#21)
- 65ec3d5 docs: add terminal screenshots to README
- 2efb4f6 feat(plugin): external command discovery; remove stack refresh-db (#35)
- d085754 feat: Override, values, and compare commands (issue #6) (#16)
- a03a933 feat: Template and definition commands (issue #5) (#15)
- 7bdcd25 feat: add CI/CD pipeline, Makefile, Docker, and goreleaser (#18)
- f949fd5 feat: add bulk, git, cluster, and completion commands (#17)
- bca060c feat: add integration tests and full workflow validation (#19)
- 98232a2 feat: add login, logout, whoami commands (#12)
- 63f79f5 feat: add stack history, rollback, and history-values commands (#37)
- bd60ee6 feat: add stack instance lifecycle commands (#13)
- 51f877a feat: resolve definition names in --definition flag (#48) (#53)
- 713a0d6 feat: stackctl stack refresh-db subcommand (#32)
- 9f35447 feat: stream deployment logs with --follow flag (#51) (#54)
- daaa054 feat: support stack name as alternative to ID in all commands (#42)
- 38a4684 feat: support stack names in bulk commands (#49)
- 4671cc2 feat: template delete, orphaned namespaces, definition update-chart (#50)
- 4798187 fix(ci): add setup-buildx-action for GHA cache support
- 4c7fb7e fix(test): e2e mock server should return string IDs after UUID migration (#33)
- 4ebde1d fix: cluster list response format and Version type
- b4f3b61 fix: migrate all ID types from uint to string (UUID)
- 197be6c fix: override set sends YAML string; add cluster shared-values commands (#52)
- dc9dc34 fix: remaining %d format strings for string UUIDs in client and commands
- 888faae refactor: reduce code duplication flagged by SonarQube (#24)
- 8250ebb test: comprehensive unit tests for foundation and core commands (#14)