update-all is now a real command that always runs its own latest fix, and Groundwork's platform support is now an explicit contract
update-all: from shell function to launcher + runner
Previously update-all was a shell function baked into ~/.zshrc, so a terminal that was already open kept running the old copy — a fix shipped for update-all itself never applied to the run that delivered it. It is now two real commands:
~/.local/bin/update-all— a stable launcher that pulls and applies Groundwork, then hands the same invocation to the freshly applied runner.~/.local/bin/groundwork-update-run— the actual stages. Because the launcher execs the copy the sync just installed, a fix delivered bychezmoi updategoverns the rest of that same run. No shell reload, ever again.
Everything the old function did is preserved: the three-attempt brew update retry gate that stops before upgrading against stale metadata, brew upgrade --greedy-latest on macOS (avoids re-quarantining self-updating apps), autoremove/cleanup, relaunching always-on apps Homebrew quit, mise upgrade, the Xcode-beta reminder, and a success timestamp written only after the complete batch.
One-time step for existing users: terminals that were open before this update still have the old function in memory — run exec zsh once in those (a notice during chezmoi update explains this). Fresh installs and new terminals need nothing.
An honest platform support contract
Groundwork supports Linux directly; WSL2 is one supported way to run that Linux environment on a Windows-owned machine — and native Linux is the recommendation if you want no Microsoft dependency.
- macOS — full experience. Ubuntu LTS (native or WSL2) — the primary tested Linux path. Debian and Fedora stable — targeted next, promoted to supported as CI receipts land. WSL1 and native Windows shells (PowerShell, CMD, Git Bash) — unsupported, and they now fail closed with clear guidance instead of partially working.
- New
groundwork-platformreportsdarwin/linux/wsl2/wsl1/wsl-unknown/unsupported, correctly classifying oldermicrosoft-standardWSL2 kernels and refusing to guess on ambiguous ones. Newgroundwork-distroreports the distribution, with--familyfor bootstrap decisions. - The update runner fails closed before touching anything on unsupported platforms, the Linux runner drops macOS-only cask policy, and Groundwork never mutates the operating system it runs inside: no
apt/dnf/pacmanupgrades on Linux, nothing on the Windows host from WSL2. new-projectrefuses to scaffold repositories onto Windows-mounted drives (/mnt/c/...) under WSL — keep code in the Linux filesystem (~/code) where performance and file watching actually work.- The platforms page and command catalog document the contract and the command-ownership rule.
After chezmoi update
Run exec zsh once in already-open terminals if prompted; nothing else. Future update-all improvements take effect during the same run that fetches them.