Skip to content

feat(tui): host-side Mission Control TUI for hm run/dev/cloud watch #5

feat(tui): host-side Mission Control TUI for hm run/dev/cloud watch

feat(tui): host-side Mission Control TUI for hm run/dev/cloud watch #5

Workflow file for this run

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