Skip to content

fix(ci): missing v12 and gx15 simulator targets - #7693

Merged
pfeerick merged 1 commit into
mainfrom
ci/wasm-sim-target-coverage
Aug 22, 2026
Merged

fix(ci): missing v12 and gx15 simulator targets#7693
pfeerick merged 1 commit into
mainfrom
ci/wasm-sim-target-coverage

Conversation

@pfeerick

Copy link
Copy Markdown
Member

Summary

The WASM simulator target lists had drifted from the supported radio set (fw.json / build_fw.yml, 44 targets) in both directions. Most visibly, Companion ships without a V12 simulator.

Follow-up to #7114 (HelloRadioSky V12) and #7643 (Radiomaster GX15) — both added the radio to the firmware build, but each missed one of the two simulator target lists.

Target companion.yml matrix build-wasm-modules.sh default
v12 ❌ missing #7114 updated build_fw.yml only
gx15 ❌ missing #7643 missed the local build list
mt12 ⚠️ listed twice (bw-1 + bw-2) built twice per CI run
x9e-hall ⚠️ built, unusable see below

x9e-hall is not a Companion firmware — Hall sticks is a build option of x9e (horussticks), so getSimulatorId() never returns it, and findSimulatorByName() only truncates x9e-hall down to x9e. The module could never be selected, so it is dropped from both lists rather than added to the second. It remains a firmware target in fw.json / build_fw.yml.

The two lists now hold the same 43 targets, which is every build_fw.yml target except x9e-hall.

Web simulator radio list

web/public/radios.json had drifted the same way, missing c14, gx15, t22, v12 and v14lcd.

Regenerating it surfaced a bug in gen-radios-json.js: it read disp.w / disp.h / disp.depth, but the hw_defs use lcd_w / lcd_h / lcd_depth, so every entry silently fell back to the 480x272x16 default. The committed file has correct values, so this only bites on the next regeneration — it would have flattened the display size of all 30 mono and non-480x272 radios in one go.

With the field mapping fixed, regeneration is a no-op for existing entries: the only changes are the 5 added radios, plus tpros/tprov2 moving to follow current fw.json ordering.

Keeping it in sync

radios.json is a generated file that was drifting unnoticed, so it now gets the same treatment as the other generated files:

  • just gen-radios (and docker-gen-radios), added to the codegen / docker-codegen aggregates
  • a Codegen drift job, triggered by fw.json, hw_defs/** and the script itself
  • a README note that fw.json — not the hw_defs — decides which radios are included, and that the x9e-hall skip warning is expected

Testing

  • just gen-radios verified idempotent; existing entries byte-identical after the display fix
  • just --list / just --show check the new recipes resolve, matching what the drift workflow does
  • Not verified locally: the v12 WASM module has never been built in CI, so this PR's Companion run is the first real test of it

🤖 Generated with Claude Code

The WASM simulator target lists had drifted from the supported radio set
(fw.json / build_fw.yml, 44 targets), in both directions:

- v12 was never added to the companion.yml module matrix (#7114 updated
  build_fw.yml only), so Companion shipped without a V12 simulator.
- gx15 was added to the matrix but not to the default plugin list in
  build-wasm-modules.sh (#7643), so local builds skipped it.
- mt12 was listed in both the bw-1 and bw-2 groups, and so built twice.
- x9e-hall was in the matrix, but Companion has no such firmware: Hall
  sticks is a build option of x9e, and findSimulatorByName() only ever
  truncates x9e-hall down to x9e. The module could never be selected, so
  drop it from both lists.

The two lists now hold the same 43 targets.

web/public/radios.json had drifted the same way, missing c14, gx15, t22,
v12 and v14lcd. Regenerating it surfaced a bug in gen-radios-json.js: it
read disp.w/h/depth, but the hw_defs use lcd_w/lcd_h/lcd_depth, so every
entry silently fell back to the 480x272x16 default. Left as-is that would
have flattened the display size of all 30 mono and non-480x272 radios on
the next regeneration.

To stop all of the above recurring silently, radios.json now has a
Justfile recipe (gen-radios, plus the docker- variant) and a codegen
drift job alongside the fonts, cfn sort order and YAML parsers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@pfeerick pfeerick added bug 🪲 Something isn't working ci/cd 🔧 Related to GitHub Actions and similar issues compilation Related to compiling the firmware and firmware options house keeping 🧹 Cleanup of code and house keeping labels Aug 21, 2026
@pfeerick pfeerick added this to the 3.0 milestone Aug 21, 2026
@pfeerick
pfeerick merged commit e2bcbd6 into main Aug 22, 2026
18 checks passed
@pfeerick
pfeerick deleted the ci/wasm-sim-target-coverage branch August 22, 2026 00:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug 🪲 Something isn't working ci/cd 🔧 Related to GitHub Actions and similar issues compilation Related to compiling the firmware and firmware options house keeping 🧹 Cleanup of code and house keeping

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant