feat(tui): host-side Mission Control TUI for hm run/dev/cloud watch #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: demo-tape-smoke | |
| on: | |
| pull_request: | |
| paths: | |
| - "crates/hm/src/tui/**" | |
| - "docs/demo/**" | |
| - ".github/workflows/demo.yml" | |
| jobs: | |
| vhs: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| # The vhs tape is a best-effort smoke test: the TUI may legitimately | |
| # not have docker/harmont-py available in CI, and vhs+ttyd has its own | |
| # flakiness. Failures here annotate the PR but don't block merging. | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: install rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-wasip1 | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| shared-key: demo-vhs | |
| - name: cargo build hm | |
| # Debug profile keeps RAM + time in CI limits. The smoke test | |
| # only verifies the TUI exits cleanly; release perf is moot. | |
| run: cargo build -p harmont-cli | |
| - name: install vhs + ffmpeg + ttyd | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ffmpeg ttyd | |
| curl -fsSL https://github.com/charmbracelet/vhs/releases/download/v0.7.2/vhs_0.7.2_amd64.deb -o /tmp/vhs.deb | |
| sudo dpkg -i /tmp/vhs.deb | |
| - name: smoke-run run.tape | |
| # Non-deterministic frames are OK — we only assert exit-zero. | |
| # The dev.tape references examples/dev-demo/ which doesn't | |
| # exist yet, so it is intentionally skipped here. | |
| # We DON'T require Docker — `hm run` will fail fast without it | |
| # and the TUI will render the failed-build path. We assert vhs | |
| # itself exits OK (tape syntax + binary launched), not that | |
| # the build succeeded. | |
| run: | | |
| if [ -d examples/rust ]; then | |
| export PATH="$PWD/target/debug:$PATH" | |
| vhs docs/demo/run.tape || { | |
| echo "vhs run.tape failed — TUI smoke regression"; | |
| exit 1; | |
| } | |
| else | |
| echo "examples/rust missing, skipping" | |
| fi |