v0.19.0
Highlights
Interactive TUI (#44)
strut with no arguments now opens an interactive picker from a terminal: stack → command → env → confirm → run. Uses fzf when available, falls back to POSIX select otherwise.
strut # interactive picker
strut --print # print the resolved command without running
strut --no-tui # fall through to usage (scripts, CI)
STRUT_NO_TUI=1 strut # permanent disableSafe in non-interactive contexts — the TUI only launches when stdin is a tty and the user hasn't opted out. Scripts keep their old behavior.
Per-recipe integration coverage
Every official recipe (static-site, python-api, next-postgres) now has its docker-compose.yml validated in CI against placeholder env. python-api gets a full end-to-end test: scaffold → deploy → curl /health (verifies Postgres is reachable) → stop. Runs under the Integration (bats, Docker) workflow.
Under the hood
lib/cmd_tui.sh— new module with_tui_stacks/_tui_commands/_tui_envs/_tui_pick/tui_main. All helpers are small and easy to stub in tests.- 16 new unit tests for the TUI (
tests/test_tui.bats) - 4 new integration tests for recipes (
tests/integration/test_recipes_e2e.bats) - Full suite: 1017 unit tests + 7 integration tests, all green
Docs
- New wiki page: Interactive TUI
- CLI Reference updated with
--no-tui,STRUT_NO_TUI, and the no-arg TUI form
Upgrading
strut upgradeNothing to migrate. Existing stacks and scripts are unaffected.