v0.55.0 — aliases in, job control out
A version-only release
No code changes since v0.53.0 — the tree is identical, as it was for v0.54.0. Cut deliberately, so moshcode upgrade and npm both have a fresh version to move to.
What these releases actually carry, if you are coming from v0.51.0 or earlier:
Your shell aliases work in the pit
The pit runs what you type through $SHELL, and it used to do that with -c. A shell started with -c is non-interactive, and a non-interactive shell does not read ~/.zshrc or ~/.bashrc — so a /alias that named a shell alias failed with command not found while the identical word worked when typed at a prompt. Naming a shell command is most of what /alias is for, so that was the common case, not an edge one.
Pit commands now load your rc file, and your aliases and functions resolve.
…without the pit suspending itself
Asking for an interactive shell brings job control along, unasked, and that had a sharp edge. An interactive shell makes itself a process group leader and claims the terminal, then on exit hands it back to what it believes the shell before it was. The pit is not a shell and does not play that game, so the terminal could be left belonging to a process group that had already exited — and the pit's very next write took SIGTTOU:
· shell exited (code 0). back in the pit.
[1] + 3034615 suspended (tty output) moshcode
Pit commands now run with +m, which keeps the rc file and drops job control. Nothing is given up: job control is for managing several jobs at a prompt, and this shell runs one command and exits. It also restores exactly the signal behaviour of the plain -c it replaced.
bash is left alone on purpose — an interactive bash turns job control back on regardless of +m, so passing it there would advertise a protection that is not real.
The root password is asked for before the work
Some installers escalate on their own, partway through their own work: tailscale's goes through your distro's package manager, so it asks for a password only after it has already spent time refreshing package lists. Tolerable on its own, and not inside moshcode update, which walks a plan of moshcode + every installed engine + every tool. On a machine with tailscale installed that prompt landed at step 17 of 18 — long after anyone was still watching.
The password is now asked for once, before the first hand-off. It stays quiet when no step in the plan needs root, when a credential is already cached or the rule is NOPASSWD, when there is no terminal to type into, when the box has no sudo/doas, and when you are already root. macOS is exempt for tailscale, where the App Store does its own authorisation. A declined prompt is never fatal — the installer still prompts for itself if it turns out to need to.
Full changelog: v0.54.0...v0.55.0