Releases: hops-ops/hops-cli
v0.20.0
What's changed in v0.20.0
-
feat(config-install): handle multi-function package builds (#42) (by @patrickleet)
up project buildfor a Configuration repo with multiplefunctions/<name>/
subdirectories produces multiple Function package images, named
<repo>_<funcname>per function (not<repo>_render). The local-install
path filtered on_rendersuffix and only created an ImageConfig rewrite- digest patch for the single render function, which broke multi-function
repos:
- Function images for
cluster,branch, etc. were tagged and pushed
to the local registry but no rewrite was created, so Crossplane tried
to pull them from ghcr.io by their (unpublished) digest and failed. - The Configuration's package metadata wasn't patched with local digests
for those functions, so dependency resolution failed even when the
images were technically reachable.
The configuration-vs-function distinction is already established by the
is_configuration_imagefilter above the loop. All remaining images are
Function packages; treat them uniformly.Tested against psql-stack (apis/{psqlstacks,psqlclusters,psqlbranches})
on colima — all three Functions install Ready and all three XRDs become
available. - digest patch for the single render function, which broke multi-function
See full diff: v0.19.2...v0.20.0
v0.19.2
What's changed in v0.19.2
-
docs(skills): rename BaseStack/aws-base-stack to LBCStack/aws-lbc-stack (by @patrickleet)
The configuration package was renamed since it only installs the AWS
Load Balancer Controller. Update the embedded skill reference so the
hops binary regenerates correct content via 'hops ai claude/codex'.
See full diff: v0.19.1...v0.19.2
v0.19.1
What's changed in v0.19.1
-
refactor(install): drop --reload flag; rely on unique dev tags (by @patrickleet)
Each source build is already tagged with a unique dev- derived from
the .uppkg content, so the Configuration's spec.package changes on every
rebuild and Crossplane creates a fresh ConfigurationRevision on its own.
Force-deleting revisions before re-apply (what --reload did) is now dead
weight.Removes:
- ConfigArgs.reload and reload: bool parameters threaded through
run_local_path, run_repo_install, run_repo_clone,
resolve_repo_install_target, run_watch, apply_configuration - force_reload_configuration_revisions + list_configuration_revisions_for +
revision_belongs_to_configuration helpers and their unused struct siblings - validate_reload_args and 4 obsolete unit tests
Skill doc (skills/claude/references/config-install.md) updated to document
the re-run-to-upgrade loop, add --watch/--debounce/--context to the flags
table, and drop the --reload row.Implements [[tasks/hops-remove-install-reload-flag]]
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- ConfigArgs.reload and reload: bool parameters threaded through
See full diff: v0.19.0...v0.19.1
v0.19.0
What's changed in v0.19.0
-
feat: context | install --watch (by @patrickleet)
-
fix(watch): unbreak tests, lower debounce default, stop losing edits (by @patrickleet)
- Update ConfigArgs fixtures in validate_reload_args tests to include
the watch/context/debounce fields added in b916b6d (unbreaks CI quality). - Lower --debounce default from 30s to 15s; agent-driven edits felt
sluggish at 30s. - Remove post-rebuild drain_pending + wait_for_quiet + drain_pending
block in run_watch. The drain silently discarded edits made during
a rebuild, and recv_timeout inside the second wait_for_quiet
consumed events in the 15s post-rebuild window without requeueing
them. The main loop's rx.recv() + wait_for_quiet(debounce) already
debounces correctly on its own; should_ignore_path filters the
build's own writes to _output/. - Log each notify event at debug level so LOG_LEVEL=debug reveals
which paths the rebuild itself actually touches.
Implements [[tasks/cli-config-install-watch-context]]
- Update ConfigArgs fixtures in validate_reload_args tests to include
See full diff: v0.18.1...v0.19.0
v0.18.1
What's changed in v0.18.1
- fix: install removes stale functions at the end instead of beginning (by @patrickleet)
See full diff: v0.18.0...v0.18.1
v0.18.0
What's changed in v0.18.0
-
fix: local package install (by @patrickleet)
-
feat: more skills (by @patrickleet)
See full diff: v0.17.0...v0.18.0
v0.17.0
v0.16.0
What's changed in v0.16.0
-
feat: robust local/published config switching in config install (by @patrickleet)
-
Always delete stale render Function packages before pushing new images,
not just with --reload. Fixes ImagePullBackOff when local registry has
a different digest than the previously installed Function. -
Fix config install --path naming: use org-repo (e.g. hops-ops-aws-secret-stack)
instead of just repo name, matching published Configuration names. -
Fix Docker build cache corruption: replace multi-stage Dockerfile patching
(FROM source AS src / COPY --from=src) with docker create + export approach.
The old method broke when Docker's snapshot cache was stale for images loaded
via docker load. -
When installing a published --version, clean up local install artifacts:
delete stale render Functions, local ImageConfig rewrites, and inactive
ConfigurationRevisions pointing at the local registry.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
-
See full diff: v0.15.0...v0.16.0
v0.15.0
What's changed in v0.15.0
- feat: github .env secrets (by @patrickleet)
See full diff: v0.14.1...v0.15.0
v0.14.1
What's changed in v0.14.1
-
fix(deps): update rust crate tokio to v1.51.0 (#36) (by @renovate[bot])
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
See full diff: v0.14.0...v0.14.1