Changelog
Short notes for yeet + catch releases.
- Web deploy terminals now keep the local output stream alive long enough to show the successful completion state instead of reporting a lost stream.
yeet service set <service> -p ...now points users toyeet initwhen an older catch install does not yet support published-port changes.
yeet service set <service> -p ...can now update Docker published ports after a service exists, while--publish-resetmakes intentional replacements explicit.yeet run -p ...andyeet.tomlnow use the same persistent published-port model as follow-up service changes.yeet infonow shows saved published-port mappings for services that use yeet-managed network namespaces.
- The web deploy terminal now clips its header inside the rounded shell, so the deploy output panel corners render cleanly.
- Web deployments now render interactive TTY progress in the browser terminal instead of blank lines.
- The web deploy command preview now includes the selected catch host as
service@host, matching the CLI command you would run.
- Added
yeet run --web, a browser-based deployment form for creating new services from a local project checkout. - Web deployments now include host validation, project file picking, and the same first-run options as the CLI, including networking, env files, service roots, ZFS, snapshots, Tailscale, and LAN settings.
- The website homepage and manual now show the web deploy flow alongside CLI deployment examples.
- Service-root migrations now rewrite optional systemd
EnvironmentFile=-...paths, so moved binary services no longer keep reading env files from the old root.
yeet run <svc> <payload>now reuses savedyeet.tomlrun options on existing services, so payload-only redeploys no longer require restating network flags.- ZFS-backed service roots now allow existing datasets and non-empty mountpoints with warnings, making service recreation safer when persistent data already exists.
- Added automatic ZFS snapshots before service redeploys, Docker image updates, and ZFS-backed service-root migrations.
- Added catch-wide snapshot defaults and per-service overrides with
yeet snapshots defaultsandyeet service set --snapshots=.... yeet service syncnow mirrors snapshot overrides intoyeet.tomlfor replay from another checkout.
- Added per-service roots so
yeet run --service-root=...can place a service's files under a custom root on the catch host. - Added ZFS-backed service roots with
--zfs, using a dataset name that catch accepts or creates and resolves to its mountpoint. - Added
yeet service setfor stopped-service reconfiguration, including service-root moves with--copyor empty-root changes with--empty.
yeet docker update <svc...>can update multiple compose services in one command, including mixedsvc@hosttargets.yeet docker update --outdatednow reports skipped scan issues instead of treating them as clean no-update results.- Docker image update checks now include command stderr in scan errors, making registry and DNS failures visible.
--net=lanservices now keep separate DHCP lease files, avoiding corrupt shared lease state when multiple services use LAN namespaces.- Remote sessions now close their stdin proxy reliably, preventing a rare hang during cleanup.
yeet docker outdatednow shows compact compose image update tables while keeping exact running and upstream digests available in JSON output.yeet docker update --outdatedupdates only compose services with available image updates and streams the normal per-service update output.- Docker image checks now compare running containers against upstream registry digests for more accurate update detection.
- Yeet now ships with broader regression coverage across CLI routing, catch RPC, Docker, registry, TTY, installer, and service flows.
- The standard local checks now enforce coverage, complexity, lint, and Go vulnerability gates before commits.
- Docker published ports on yeet-managed network namespaces now replay from catch state when catch starts.
- Docker container restarts now keep yeet port forwarding in sync through Docker's external-connectivity callbacks.
- Services with shared namespaces no longer clear each other's published-port rules during container churn.
- Docker startup prerequisites now avoid stop cascades when
catchor yeet network units are refreshed. - Per-service Tailscale sidecars recover when LAN network namespaces are delayed during host boot.
- Yeet refreshes the shared bridge namespace unit without interrupting an already-running namespace.
- Docker services on yeet-managed networks now come back more reliably after host reboots.
catchnow installs Docker startup ordering so Docker waits for yeet's network plugin and service namespaces before restoring containers.- Existing hosts migrate their catch and network namespace systemd units during
yeet initwithout forcing service redeploys.
yeet logsnow streams Docker Compose output reliably in interactive terminals instead of truncating or varying between runs.yeet logs --no-ttyonce again prints Docker Compose service logs instead of returning a blank result.yeet initnow cross-buildscatchcorrectly for Linux hosts when run from a macOS checkout.
- Docker Compose updates and deploys once again stream remote progress in interactive terminals.
- Fixed Compose commands falling back to
catchlogs instead of staying attached to the yeet session TTY.
yeet rmno longer hangs after the second confirmation prompt in interactive terminals.- Fixed terminal cleanup after remote prompts so the local
yeet.tomlremoval prompt reads normally.
- Docker services on
svcnow recover automatically when their named network namespace is recreated. - Yeet now reconciles service-netns port forwarding to the current Docker endpoint state, removing stale DNAT rules during container churn.
- Docker image deploys on
svcno longer try to start a missing primary systemd unit before bringing containers up.
- Fixed
--net=lanselecting the wrong parent interface on some hosts. lanservices now pick the host default-route interface more reliably unless--macvlan-parentis set.
yeet ts <svc> updatenow runs a yeet-managed update flow for per-service Tailscale.yeet ts <svc> updatenow asks for confirmation before upgrading.- Added pinned upgrades (
yeet ts <svc> update <version>) and explicit official passthrough (yeet ts <svc> -- update).
yeet run --env-fileuploads env files and detects changes on deploy.stage cleardiscards staged changes without applying them.yeet tailscale setupstreamlines Tailscale onboarding for hosts.
yeet initcan download and install catch from GitHub releases when using a released yeet (or--from-github).- Catch now reports a build/release version during init and info.
- Initial release.
May 31, 2026
v0.4.4
v0.4.3
v0.4.2
v0.4.1
May 30, 2026
v0.4.0
May 28, 2026
v0.3.3
May 25, 2026
v0.3.2
v0.3.1
May 24, 2026
v0.3.0
May 19, 2026
v0.2.10
May 10, 2026
v0.2.9
v0.2.8
May 3, 2026
v0.2.7
May 2, 2026
v0.2.6
v0.2.5
v0.2.4
April 12, 2026
v0.2.3
March 29, 2026
v0.2.2
March 28, 2026
v0.2.1
v0.2.0
March 22, 2026
v0.1.4
February 19, 2026
v0.1.3
January 17, 2026
v0.1.2
January 12, 2026
v0.1.1
v0.1.0