Skip to content

v0.19.0

Choose a tag to compare

@gfargo gfargo released this 22 Apr 00:11
· 61 commits to main since this release
7a275bc

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 disable

Safe 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

Upgrading

strut upgrade

Nothing to migrate. Existing stacks and scripts are unaffected.