Repository navigation
Releases: syy/ulak
Releases · syy/ulak
Release list
0.3.1
Release Notes
No changes to Ulak. 0.3.0 never reached the crates.io index, so
cargo install ulak still installed 0.2.0; this release brings 0.3.0's
changes there.
Install ulak 0.3.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/syy/ulak/releases/download/v0.3.1/ulak-installer.sh | shInstall prebuilt binaries via Homebrew
brew install syy/tap/ulakDownload ulak 0.3.1
| File | Platform | Checksum |
|---|---|---|
| ulak-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| ulak-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| ulak-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| ulak-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.3.0
Release Notes
Changed
- Remote commands run as channels of one SSH connection. A helper Ulak
starts on the server, without installing anything, runs each command, so
parallel commands no longer hit sshd'sMaxSessionslimit, and a command
whose caller is stopped stops on the server too. A command killed by a
signal exits with 128+n instead of 255. Afterusermod -aG docker, the
next command logs in again and has the group. Servers withoutpython3or
unix-socket forwarding keep using SSH sessions;ulak doctorshows which
is in use. Pon the dashboard's Images tab deletes every image no container
uses, not only dangling ones. It quotesdocker system dffirst and says
how much Docker freed.
Added
Iin the dashboard installs, starts or restarts the background service
when it has a problem, after asking.Bon the Images tab prunes the build cache.- A stack's row shows the forwarded ports that fit;
olists them all and
says why a port would not answer.
Fixed
Pon the Volumes tab never removes a named volume; before Docker 23 it
now prunes nothing.- Clicks and keys made in the dashboard no longer end up in the shell.
- A stack's merged logs use one SSH session instead of one per container.
- The dashboard wakes the background service when it reaches the server.
Ports no service forwards are no longer shown, and every tab says when no
service is running. ?andqstay on a footer too narrow for every key.
Install ulak 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/syy/ulak/releases/download/v0.3.0/ulak-installer.sh | shInstall prebuilt binaries via Homebrew
brew install syy/tap/ulakDownload ulak 0.3.0
| File | Platform | Checksum |
|---|---|---|
| ulak-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| ulak-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| ulak-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| ulak-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.2.0
Release Notes
The first four changes below can change what an existing project sends or
requires; read them before upgrading.
Changed
- The server needs Python 3.7 or later. Ulak sends its helpers over SSH
without installing anything. A command that synchronizes stops before
sending anything if the server lackspython3;ulak doctorreports it. - A file edited on both ends is held as a conflict instead of last write
winning. Sync compares both copies with the content the two ends last
agreed on. A file changed on both is kept on both and named in a warning,
and a file deleted here is not deleted there if the server changed it.
Before there is agreed content,[sync] no_historydecides:send(the
default) sends this machine's copy and names each file it sent;hold
keeps both.ULAK_SYNC_NO_HISTORYsets it too. .gitignoreis no longer read, because Docker does not read it either.
Mounted directories sync whole except.git,.DS_Storeand Ulak's
temporary files; build contexts are still filtered by.dockerignore. Use
[sync] excludeto keep paths local;[sync] includeoverrides both.[sync]paths are relative to the Compose project directory, not to
the workspace anchor;../reaches a sibling. Projects whose anchor is the
project directory are unaffected.- Saves, deletions and small server output travel over one persistent SSH
channel; large files and new directories still use rsync. A full sync
compares both ends by directory digests and hands rsync only what differs.
On Linux servers with Python 3.9 or later, files the stack writes come back
shortly after they change. - Pulled files land through directories held open from the project root, so
a directory swapped for a symlink cannot redirect them. - The background service picks up
[sync]changes without a restart.
Added
ulak ui(beta): a full-screen terminal dashboard for the server's Docker.
It shows containers grouped by Compose project with live CPU and memory,
merged stack logs with search, inspect, stats, images, volumes, networks
and this machine's live stacks. Keys and layout may still change; see
docs/dashboard.md.ulak status,sync,doctorandcleantake a stack's Compose project
name and work from any directory;ulak statusalone shows every stack
declared in the checkout. Writename@serverwhen two servers have a stack
of that name; seedocs/stacks.md.--rawon those four commands prints suggested commands in full instead of
by stack name.
Fixed
- A file saved during a sync no longer becomes a permanent conflict: it is
sent as it is then, or, if it changes while being read, waits for the next
sync. - A directory a pull brings home keeps the server's mode, so later pushes no
longer fail on directories the SSH user does not own. - A profile that stays inside the project keeps the wider layout the
workspace already uses, instead of asking to run again on every run. - After a reinstall, the service warns that it is still running the build it
started from.
Install ulak 0.2.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/syy/ulak/releases/download/v0.2.0/ulak-installer.sh | shInstall prebuilt binaries via Homebrew
brew install syy/tap/ulakDownload ulak 0.2.0
| File | Platform | Checksum |
|---|---|---|
| ulak-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| ulak-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| ulak-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| ulak-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.0
Release Notes
First public release. macOS and Linux.
ulak docker <command>runs a supported Docker or Compose command on a
server over SSH after rsync has placed the files it needs. No local daemon,
no agent on the server.- The Compose model, resolved on the server, decides which local paths travel:
bind mounts,env_file,configs, build contexts, and siblings such as
../shared. - Commands are routed by a table; one the table lacks is refused by name.
docs/docker-commands.mdis generated from it. - rsync never runs with
--delete. A remote file is deleted only if Ulak
recorded sending it and it is gone locally. More than 25 deletions ask first.
[sync] protectpaths never travel. - Files written by containers come back to the local checkout. Last write
wins. - Published ports are forwarded to
localhostover SSH tunnels. - A user-level background service (launchd or systemd) keeps sync and tunnels
alive for running stacks. It installs only from an interactive terminal;
[service] auto = falseturns it off. ulak shimputs a stand-indockeronPATHso project scripts reach the
server unchanged.ulak doctorchecks local tools, the server, and every path in the Compose
model.- A running stack keeps its declared server after a
hostedit;
ulak clean --forget-destinationretires a declaration for a dead server
without contacting it. - Configuration in three TOML layers,
ULAK_*variables, and flags;
ulak configshows the effective value and its source. ulak init,ulak sync --dry-run,ulak status,ulak completions.- Prebuilt binaries for macOS (arm64, x86_64) and Linux (x86_64, aarch64),
and a Homebrew tap:brew install syy/tap/ulak.
Install ulak 0.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/syy/ulak/releases/download/v0.1.0/ulak-installer.sh | shInstall prebuilt binaries via Homebrew
brew install syy/tap/ulakDownload ulak 0.1.0
| File | Platform | Checksum |
|---|---|---|
| ulak-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| ulak-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| ulak-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| ulak-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |