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

Co-authored-by: Peter Feerick <5500713+pfeerick@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Peter Feerick
2026-08-22 10:19:03 +10:00
committed by GitHub
co-authored by Peter Feerick Claude Opus 5
parent a51946c4e2
commit e2bcbd6c7f
7 changed files with 1157 additions and 275 deletions
+35 -1
View File
@@ -29,6 +29,10 @@ on:
- 'radio/util/yaml_parser.tmpl'
- 'radio/util/hw_defs/**'
- 'radio/src/boards/hw_defs/**'
# web simulator radio list (also fed by the hw_defs above)
- 'fw.json'
- 'web/scripts/gen-radios-json.js'
- 'web/public/radios.json'
pull_request:
paths: *trigger-paths
workflow_dispatch:
@@ -54,6 +58,7 @@ jobs:
cfn: ${{ steps.filter.outputs.cfn }}
fonts: ${{ steps.filter.outputs.fonts }}
yaml: ${{ steps.filter.outputs.yaml }}
radios: ${{ steps.filter.outputs.radios }}
steps:
- name: Check out the repo
uses: actions/checkout@v7
@@ -69,7 +74,7 @@ jobs:
- name: Check the recipes this workflow calls still resolve
run: |
just --list >/dev/null
for recipe in cfn-sort gen-fonts gen-yaml; do
for recipe in cfn-sort gen-fonts gen-yaml gen-radios; do
just --show "${recipe}" >/dev/null
done
@@ -108,6 +113,13 @@ jobs:
- 'radio/util/yaml_parser.tmpl'
- 'radio/util/hw_defs/**'
- 'radio/src/boards/hw_defs/**'
radios:
- '.github/workflows/codegen_drift.yml'
- '.github/actions/codegen_drift/action.yml'
- 'fw.json'
- 'radio/src/boards/hw_defs/**'
- 'web/scripts/gen-radios-json.js'
- 'web/public/radios.json'
cfn-sort:
name: Custom function sort order
@@ -180,3 +192,25 @@ jobs:
recipe: gen-yaml
paths: radio/src/storage/yaml
label: YAML parsers
radios:
name: Web simulator radio list
needs: changes
if: needs.changes.outputs.radios == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
timeout-minutes: 10
container:
image: ghcr.io/edgetx/edgetx-dev:latest
volumes:
- ${{ github.workspace }}:/src
steps:
- name: Check out the repo
uses: actions/checkout@v7
- name: Check for drift
uses: ./.github/actions/codegen_drift
with:
just-version: ${{ env.JUST_VERSION }}
recipe: gen-radios
paths: web/public/radios.json
label: Web simulator radio list
+3 -3
View File
@@ -47,15 +47,15 @@ jobs:
- id: color-2
target: [pl18u, t15, t16, t18, t22]
- id: bw-1
target: [zorro, pocket, mt12, commando8, tprov2, tpros, bumblebee, t14]
target: [zorro, pocket, commando8, tprov2, tpros, bumblebee, t14]
- id: bw-2
target: [mt12, gx12, t20, t20v2, t12max, tx12mk2, boxer]
- id: color-3
target: [tx15, tx16s, x12s, f16]
- id: mixed-1
target: [v14, v14lcd, v16, x10, x10express]
target: [v12, v14, v14lcd, v16, x10, x10express]
- id: bw-3
target: [x7access, x9dp2019, x9e, x9e-hall]
target: [x7access, x9dp2019, x9e]
- id: color-4
target: [nb4p, st16, pa01, c14]
- id: color-5
+15 -3
View File
@@ -37,9 +37,16 @@ cfn-sort:
gen-yaml FLAVOR='':
FLAVOR="{{ FLAVOR }}" tools/generate-yaml.sh
[doc('Regenerate the YAML parsers, LVGL fonts and cfn sort order')]
# Needs: node. Which radios are included comes from fw.json, so this only
# picks up a new target once it is listed there.
[doc('Regenerate the web simulator radio list (web/public/radios.json)')]
[group('codegen')]
codegen: gen-fonts cfn-sort gen-yaml
gen-radios:
node web/scripts/gen-radios-json.js
[doc('Regenerate the YAML parsers, LVGL fonts, cfn sort order and radio list')]
[group('codegen')]
codegen: gen-fonts cfn-sort gen-yaml gen-radios
[doc('Regenerate the LVGL fonts in the dev container')]
[group('codegen (docker)')]
@@ -60,6 +67,11 @@ docker-gen-yaml FLAVOR='':
FETCHCONTENT_BASE_DIR=/src/.cache/fetchcontent-docker \
tools/generate-yaml.sh
[doc('Regenerate the web simulator radio list in the dev container')]
[group('codegen (docker)')]
docker-gen-radios:
{{ _docker }} node web/scripts/gen-radios-json.js
[doc('Regenerate everything in the dev container')]
[group('codegen (docker)')]
docker-codegen: docker-gen-fonts docker-cfn-sort docker-gen-yaml
docker-codegen: docker-gen-fonts docker-cfn-sort docker-gen-yaml docker-gen-radios
+2 -2
View File
@@ -223,13 +223,13 @@ else
boxer bumblebee commando8
gx12 mt12 pocket t12max
t14 t20 t20v2 tpros tprov2
tx12mk2 zorro v12 v14 v14lcd
tx12mk2 zorro v14 v14lcd
x7access x9dp2019 x9e
# colour
c14 el18 nb4p nv14 st16 pa01
pl18 pl18ev pl18u
t15 t15pro t16 t18 t22
tx15 tx16s tx16smk3 f16 v16
tx15 gx15 tx16s tx16smk3 f16 v12 v16
x10 x10express x12s
)
fi
+7 -1
View File
@@ -42,14 +42,20 @@ cp output/*.wasm web/public/
### Supported Radios
The radios available in the web UI are defined in `public/radios.json`. This file is **generated** from the authoritative hardware definitions in `radio/src/boards/hw_defs/`. To regenerate it (e.g. after adding a new radio target):
The radios available in the web UI are defined in `public/radios.json`. This file is **generated** from the authoritative hardware definitions in `radio/src/boards/hw_defs/`. To regenerate it (e.g. after adding a new radio target), from the repo root:
```bash
just gen-radios
# or, without just:
node web/scripts/gen-radios-json.js
```
The script extracts inputs, switches, trims, keys, and display info from the hw_defs JSON files. Key left/right side placement matches Companion's layout.
*Which* radios are included comes from the `targets` list in the repo-root `fw.json`, so a new board only appears here once it is a released target. Targets with no matching hw_defs file are skipped with a warning: `x9e-hall` always warns, as it is a build option of `x9e` rather than a board of its own.
Passing flavour names as arguments limits generation to those radios only — the whole file is rewritten, so use that for inspection, not to update the committed list.
## Architecture
```
+1092 -262
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -123,9 +123,9 @@ function processFlavour(flavour) {
// Display / LCD info
const disp = hw.display ?? {};
const display = {
w: disp.w ?? 480,
h: disp.h ?? 272,
depth: disp.depth ?? 16,
w: disp.lcd_w ?? 480,
h: disp.lcd_h ?? 272,
depth: disp.lcd_depth ?? 16,
};
// WASM filename uses the flavour name directly