All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
max-width from 44rem to 55rem.cacher docker download --pull — on cache miss, falls back to
docker pull <image:tag> and seeds the S3 cache. Mirrors the
--url fallback on file download; collapses the if/else
cache-or-pull bash dance in CI manifests to a single command.First public release. Replaces the s3_cache_or_curl /
s3_cache_docker_image shell helpers in tarantool-protobuf/.builds/lib/ci-lib.sh
with a single static Go binary.
cacher init / cacher doctor — persist config to
~/.config/cacher/config.toml and smoke-test S3 credentials (HEAD bucket
cacher download / upload / exists / list / delete for single
files. Download falls back to --url on cache miss and back-fills the
cache. Optional --sha256 verifies the fetched content.cacher docker {exists,download,upload} — streamed docker save | zstd
→ S3 multipart upload (and inverse). Pure-Go zstd via
klauspost/compress, no external
zstd binary on the host.cacher dir {download,upload} — tar+zstd of a directory tree keyed by
content hash. Closes the gap left by the shell version, which only
cached single files.cacher key — resolve a key template (substituting {hash}) for shell
scripting.--hash-from <path> (repeatable; files or directories) on every command.
For a single file path the digest exactly matches sha256sum file | cut -c1-N,
so existing keys migrate without recomputation.--arch-suffix opt-in to suffix every key with -<goos>-<goarch>.list --recursive for flat listing; list --root to ignore the
configured prefix and list at bucket root. Default output style mirrors
aws s3 ls (delimited by /).when_required (Garage
doesn't implement boto3 1.36+ trailing CRC32 checksums).go test -tags=e2e) against a real Garage
container via testcontainers-go using dxflrs/garage:v2.3.0's
--single-node --default-bucket mode.unit.yml (every push), e2e.yml (every push, with
Docker), publish.yml (tags only, ships cross-platform binaries via
goreleaser to pages.sr.ht and as build artifacts).doctor uses ListObjectsV2 (1-key) instead of HeadBucket — Garage
rejects HeadBucket with 403 even for valid credentials.~/.config/cacher/config.toml on every platform
(previously fell into ~/Library/Application Support/cacher on macOS
via os.UserConfigDir). cacher is a CI tool; dev-macs and Linux runners
must look in the same place.