build(sim): colour-touch (ui-lvgl) WASM in the solo-sim release zip

- build-solo-sim.yml clones LVGL at the version pinned in
  solo/wio-tracker-l2/platformio.ini and builds the SIM_UI=lvgl sim into
  wasm/lvgl/ of solo-sim-wasm.zip, for the site's device switch.
- build_wasm.sh: LVGL_DIR can be overridden (CI has no .pio libdeps).
- sim_test_set_node_name(): names a sim node, for site screenshots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-09-29 10:18:39 +02:00
co-authored by Claude Opus 5.5
parent e822242660
commit 890ee6533e
3 changed files with 34 additions and 4 deletions
+19 -2
View File
@@ -1,7 +1,8 @@
name: Build Solo Sim (WASM)
# Builds the companion_radio browser sim (real firmware compiled to WASM via
# Emscripten, see variants/sim/) and attaches it to the same draft release
# Emscripten, see variants/sim/) -- the OLED ui-new build, the Wio Tracker L2
# ui-lvgl build and the repeater -- and attaches it to the same draft release
# build-solo-firmwares.yml creates for this tag, as a single fixed-name
# asset: solo-sim-wasm.zip. Fixed name (no version in it) so
# meshcore-solo-site's server-side deploy script can always fetch it from
@@ -59,13 +60,29 @@ jobs:
FIRMWARE_VERSION: ${{ env.BUILD_VERSION }}
run: variants/sim/build_wasm.sh
# LVGL at the version the L2 firmware pins, straight from its repo --
# no PlatformIO needed just for the sources.
- name: Fetch LVGL
run: |
LV_VER="$(grep -m1 -oE 'lvgl/lvgl @ [0-9.]+' solo/wio-tracker-l2/platformio.ini | awk '{print $3}')"
echo "LVGL $LV_VER"
git clone --depth 1 --branch "v$LV_VER" https://github.com/lvgl/lvgl.git "$RUNNER_TEMP/lvgl"
- name: Build L2 (LVGL) WASM
env:
FIRMWARE_VERSION: ${{ env.BUILD_VERSION }}
SIM_UI: lvgl
LVGL_DIR: ${{ runner.temp }}/lvgl
run: variants/sim/build_wasm.sh
- name: Build repeater WASM
run: variants/sim/build_wasm_repeater.sh
- name: Package
run: |
mkdir -p out/wasm/companion out/wasm/repeater
mkdir -p out/wasm/companion out/wasm/lvgl out/wasm/repeater
cp variants/sim/web/build/meshcore_sim.js variants/sim/web/build/meshcore_sim.wasm out/wasm/companion/
cp variants/sim/web/build/meshcore_sim_lvgl.js variants/sim/web/build/meshcore_sim_lvgl.wasm out/wasm/lvgl/
cp variants/sim/web/build/repeater/meshcore_sim_repeater.js variants/sim/web/build/repeater/meshcore_sim_repeater.wasm out/wasm/repeater/
cd out && zip -r solo-sim-wasm.zip wasm
+11
View File
@@ -551,6 +551,17 @@ extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_set_timezone_hours(int hours) {
// UITask::loop() entirely -- there's no separate flag to touch. A demo
// running on a visitor's screen has no battery to save and no reason to
// go dark or lock itself while they're reading it.
// Renames this instance (NodePrefs::node_name, what Settings > Name sets) so
// a host page's peers have readable names in screenshots, instead of the
// default hex of their public key. In memory only; the next advert carries it.
extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_set_node_name(const char* name) {
if (!g_sim_ready || !name || !*name) return 0;
NodePrefs* prefs = the_mesh.getNodePrefs();
if (!prefs) return 0;
snprintf(prefs->node_name, sizeof(prefs->node_name), "%s", name);
return 1;
}
extern "C" EMSCRIPTEN_KEEPALIVE int sim_test_disable_screen_timeout() {
if (!g_sim_ready) return 0;
NodePrefs* prefs = the_mesh.getNodePrefs();
+4 -2
View File
@@ -55,9 +55,11 @@ fi
# Which frontend: SIM_UI=new (default, 128x64 OLED-style ui-new) or
# SIM_UI=lvgl (320x240 touch ui-lvgl, Wio Tracker L2 shape -> web/lvgl.html).
# The lvgl build takes the LVGL 9 sources from PlatformIO's libdeps of the L2
# env, so run `pio run -e Wio_Tracker_L2_companion_solo_lvgl` once first.
# env, so run `pio run -e Wio_Tracker_L2_companion_solo_lvgl` once first, or
# point LVGL_DIR at a checkout of the same version (CI does, see
# .github/workflows/build-solo-sim.yml).
SIM_UI="${SIM_UI:-new}"
LVGL_DIR="$REPO_ROOT/.pio/libdeps/Wio_Tracker_L2_companion_solo_lvgl/lvgl"
LVGL_DIR="${LVGL_DIR:-$REPO_ROOT/.pio/libdeps/Wio_Tracker_L2_companion_solo_lvgl/lvgl}"
if [ "$SIM_UI" = "lvgl" ] && [ ! -f "$LVGL_DIR/lvgl.h" ]; then
echo "error: LVGL sources not found at $LVGL_DIR" >&2
echo "Fetch them first: pio run -e Wio_Tracker_L2_companion_solo_lvgl" >&2