ci: sync the portal page to the flasher site for /webconfig

The flasher's /webconfig page frames webui/index.html — the real page this
firmware serves — and runs it against a browser simulator, so visitors drive the
actual product rather than looking at screenshots of it. That only stays true if
the page travels with the docs, so it joins the .md files this workflow already
syncs, and the flasher's build-webconfig-demo.py re-injects the simulator.

Triggers on webui/index.html alongside the existing markdown paths. Still gated
on observer-firmware, so nothing publishes until the portal CLI reaches the
release channel at v1.17.0; the flasher carries a hand-copied page until then.
This commit is contained in:
agessaman
2026-08-08 20:02:31 -07:00
parent 2125917f15
commit 339bffa97d
@@ -19,6 +19,9 @@ on:
- '**.md'
- 'docs/**'
- 'scripts/gen_changelog.py'
# /webconfig frames the real portal page against a browser simulator, so
# the page itself is a synced doc asset like the .md files above.
- 'webui/index.html'
# Own group: serialize doc syncs against each other only. Deliberately NOT shared
# with build-observer-firmwares.yml — a shared group let one workflow cancel the
@@ -59,6 +62,21 @@ jobs:
fi
done
- name: Sync the WebConfig Portal Page into Flasher
run: |
# flasher/webconfig.html embeds the REAL portal page in a device
# surround and runs it against lib/webconfig-sim.js, which intercepts
# fetch() so no device is needed. Syncing the page is what keeps that
# demo honest — the alternative is screenshots, which go stale without
# anyone noticing. The build script only injects a <script> tag; it
# refuses a page that already carries the simulator.
if [ -f webui/index.html ]; then
python3 flasher/scripts/build-webconfig-demo.py webui/index.html
echo "rebuilt flasher/webconfig-demo.html from webui/index.html"
else
echo "WARNING: webui/index.html not found; leaving the demo as-is" >&2
fi
- name: Generate Changelog
run: |
# Append-only and idempotent; preserves the hand-curated history and