Repository navigation
Releases: gblach/climate
Releases · gblach/climate
Release list
v0.4.0
New
network = "localnet": a network mode that lets an app reach the local network but not the internet. It works through a TUN device and a userspace TCP/IP stack.climate check: validates app definitions without running them. Unknown keys in a definition are now reported as errors, so typos no longer pass silently.[image].install: an app can build its own image layer with a shell script on top of a base image, for tools that ship no pre-built image.climate pull -u -r(--rebuild) runs the install scripts again.- App configuration overrides: a TOML file in
~/.config/climate/overrides/changes only the keys it sets. Tables are merged and other values are replaced.climate showprints the definition with the override applied. - Builds without systemd:
cargo build --no-default-featuresmakes a binary for distros without systemd (Alpine, Void, Gentoo with OpenRC, ...). Such a build ignores[limits]with a warning.
Fixed
climate pull -ucontacts the registry only once for apps that share an image, not once per app.- When cgroup v2 isn't mounted at
/sys/fs/cgroup, climate now says so and explains how to enable it on OpenRC. Before, youki failed with an unclear "failed to detect cgroup setup". - Updated rustls to 0.23.45 for RUSTSEC-2026-0285 (TLS 1.3 handshake messages accepted across encryption levels).
Changed
- The seccomp filter is now built with
seacomb, which is pure Rust, instead oflibseccomp. Building climate no longer needslibseccomp-devel/libseccomp-dev.
v0.3.0
New
capabilitiesin[run], so an app can ask for the kernel capabilities it needs.- Seccomp syscall filtering with a docker/podman-style default profile, plus
seccomp-allow/seccomp-denyin[run]. - Per-app
[limits]:memory,swap,memory-high,cpu,cpu-shares,pids, enforced via cgroup v2.
Fixed
network = "localhost": bridges the container's loopback with the host's, both ways.- Stdout/stderr are writable again when the host streams point at
/dev/null.
Changed
- Containers hold no capabilities by default.
- App definitions moved into first-character subdirectories:
f/ffmpeg.toml. - The update timer runs
climate syncbeforeclimate pull --update.
v0.2.1
v0.2.0
New
- climate show subcommand - prints the effective app definition with omitted keys filled in as grayed-out defaults; -n/--no-defaults prints only what the definition states, so output can be redirected as a starting point for a custom *.toml.
- Extra host path mounts - new run.mount key: extra host paths shared with the container, with source:destination form, :ro/:rw flags, ~ expansion, creation of missing sources, and a refusal to mount /.
Changed
- run.cwd renamed to run.mount-cwd - breaking config change; the old key is silently ignored and falls back to the default true.
- app.description now required - the field lost its default and must be non-empty; also breaking for definitions that omitted it.
- sync reports file counts - climate sync prints synced apps: N added, N changed, N removed instead of the target directory.
v0.1.1
New
--versionflag prints the climate version.- Running
climatewithout a subcommand now prints the full help message
instead of a bare error.
Fixed
- App names are validated (
[A-Za-z0-9._-], no leading dot), closing a path traversal via crafted names inrun,pullandlink. - Bind-mounting
/or a home directory into a container is now rejected. SIGINT/SIGTERMare forwarded to the container init (repeat sendsSIGKILL), so interrupted non-tty runs clean up their mounts and containers instead of leaking them.- Terminal resizes are forwarded to the container (
SIGWINCH), so TUI apps redraw correctly. climate pull --updatekeeps going when one app fails to pull instead of aborting the whole run.- Image garbage collection is more reliable: orphaned overlay directories are detected via
/proc/self/mounts, and stored manifests keep their original bytes so digests always verify. - A vanished child process is now treated as an error in the wait loop rather than hanging.
Changed
- Release builds use LTO for a smaller, faster binary.
- Dependencies updated.