Skip to content

Releases: gblach/climate

v0.4.0

Choose a tag to compare

@gblach gblach released this 11 Oct 13:09

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 show prints the definition with the override applied.
  • Builds without systemd: cargo build --no-default-features makes a binary for distros without systemd (Alpine, Void, Gentoo with OpenRC, ...). Such a build ignores [limits] with a warning.

Fixed

  • climate pull -u contacts 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 of libseccomp. Building climate no longer needs libseccomp-devel / libseccomp-dev.

v0.3.0

Choose a tag to compare

@gblach gblach released this 08 Sep 20:33

New

  • capabilities in [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-deny in [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 sync before climate pull --update.

v0.2.1

Choose a tag to compare

@gblach gblach released this 24 Aug 18:52

Fixed

  • The detach flag is now set whenever a console socket is provided, instead of always being false.

v0.2.0

Choose a tag to compare

@gblach gblach released this 08 Aug 11:28

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

Choose a tag to compare

@gblach gblach released this 18 Jul 09:12

New

  • --version flag prints the climate version.
  • Running climate without 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 in run, pull and link.
  • Bind-mounting / or a home directory into a container is now rejected.
  • SIGINT/SIGTERM are forwarded to the container init (repeat sends SIGKILL), 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 --update keeps 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.

v0.1.0

Choose a tag to compare

@gblach gblach released this 01 Jul 20:47

Initial release