version sync

This commit is contained in:
recrof 2025-05-04 10:11:29 +02:00
parent 56892c5ef7
commit 4d696db87f
8 changed files with 523 additions and 59 deletions

View file

@ -27,12 +27,12 @@
"repeater": {
"icon": "cell_tower",
"title": "Repeater",
"tooltip": "Special role just for routing packets. Configured via <b>Console</b> on flasher main page"
"tooltip": "Special role just for routing packets. Configured via Config/Console on flasher main page"
},
"roomServer": {
"icon": "forum",
"title": "Room Server",
"tooltip": "Special role for local room and routing packets. Configured via <b>Console</b> on flasher main page"
"tooltip": "Special role for local room and routing packets. Configured via Config/Console on flasher main page"
}
},
"device": [
@ -44,6 +44,51 @@
{
"role": "gui",
"version": {
"v6.6": {
"files": [
{
"type": "flash",
"name": "RippleUltra-TDeck-v6.6-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-TDeck-v6.6.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* now saves repeater and room server passwords.\n* new 'auto advert ON/OFF' option"
},
"v6.5": {
"files": [
{
"type": "flash",
"name": "RippleUltra-TDeck-v6.5-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-TDeck-v6.5.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* Existing profiles have SF editable"
},
"v6.3": {
"files": [
{
"type": "flash",
"name": "RippleUltra-TDeck-v6.3-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-TDeck-v6.3.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* BUG Fix: advert verify caused memory corruption"
},
"v6.2": {
"files": [
{
@ -77,6 +122,51 @@
{
"role": "guiSD",
"version": {
"v6.6": {
"files": [
{
"type": "flash",
"name": "RippleUltra-TDeck-SD-v6.6-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-TDeck-SD-v6.6.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* now saves repeater and room server passwords.\n* new 'auto advert ON/OFF' option"
},
"v6.5": {
"files": [
{
"type": "flash",
"name": "RippleUltra-TDeck-SD-v6.5-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-TDeck-SD-v6.5.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* Existing profiles have SF editable"
},
"v6.3": {
"files": [
{
"type": "flash",
"name": "RippleUltra-TDeck-SD-v6.3-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-TDeck-SD-v6.3.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* BUG Fix: advert verify caused memory corruption"
},
"v6.2": {
"files": [
{
@ -117,6 +207,51 @@
{
"role": "gui",
"version": {
"v6.6": {
"files": [
{
"type": "flash",
"name": "RippleUltra-T5-epaper-v6.6-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-T5-epaper-v6.6.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* now saves repeater and room server passwords.\n* new 'auto advert ON/OFF' option"
},
"v6.5": {
"files": [
{
"type": "flash",
"name": "RippleUltra-T5-epaper-v6.5-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-T5-epaper-v6.5.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* Existing profiles have SF editable"
},
"v6.3": {
"files": [
{
"type": "flash",
"name": "RippleUltra-T5-epaper-v6.3-merged.bin",
"title": "Combined app+partition+bootloader firmware bin"
},
{
"type": "download",
"name": "RippleUltra-T5-epaper-v6.3.bin",
"title": "App firmware bin (use with m5 booloader)"
}
],
"notes": "* BUG Fix: advert verify caused memory corruption"
},
"v6.0-beta22": {
"files": [
{
@ -136,7 +271,7 @@
]
},
{
"name": "Lilygo T3 S3",
"name": "Lilygo T3 S3 (SX126x)",
"type": "esp32",
"tooltip": "<img class='device' src='/img/lilygo_t3s3.png'>",
"firmware": [
@ -145,7 +280,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["LilyGo_T3S3_sx1262_companion_radio_usb","merged.bin"]
"flash": "LilyGo_T3S3_sx1262_companion_radio_usb.*?-merged\\.bin",
"download": "LilyGo_T3S3_sx1262_companion_radio_usb.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -154,7 +290,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["LilyGo_T3S3_sx1262_companion_radio_ble","merged.bin"]
"flash": "LilyGo_T3S3_sx1262_companion_radio_ble.*?-merged\\.bin",
"download": "LilyGo_T3S3_sx1262_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -163,7 +300,112 @@
"github": {
"type": "repeater",
"files": {
"flash": ["LilyGo_T3S3_sx1262_Repeater","merged.bin"]
"flash": "LilyGo_T3S3_sx1262_Repeater.*?-merged\\.bin",
"download": "LilyGo_T3S3_sx1262_Repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "LilyGo_T3S3_sx1262_room_server.*?-merged\\.bin",
"download": "LilyGo_T3S3_sx1262_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
]
},
{
"name": "Lilygo T-Beam 1.2 (SX1276)",
"type": "esp32",
"tooltip": "<img class='device' src='/img/lilygo_tbeam.png'>",
"firmware": [
{
"role": "companionUsb",
"github": {
"type": "companion",
"files": {
"flash": "Tbeam_companion_radio_usb.*?-merged\\.bin",
"download": "Tbeam_companion_radio_usb.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "companionBle",
"github": {
"type": "companion",
"files": {
"flash": "Tbeam_companion_radio_ble.*?-merged\\.bin",
"download": "Tbeam_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "repeater",
"github": {
"type": "repeater",
"files": {
"flash": "Tbeam_repeater.*?-merged\\.bin",
"download": "Tbeam_repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "Tbeam_room_server.*?-merged\\.bin",
"download": "Tbeam_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
]
},
{
"name": "Lilygo T-Beam Supreme (SX1262)",
"type": "esp32",
"tooltip": "<img class='device' src='/img/lilygo_tbeam_supreme.png'>",
"firmware": [
{
"role": "companionUsb",
"github": {
"type": "companion",
"files": {
"flash": "T_Beam_S3_Supreme_SX1262_companion_radio_usb.*?-merged\\.bin",
"download": "T_Beam_S3_Supreme_SX1262_companion_radio_usb.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "companionBle",
"github": {
"type": "companion",
"files": {
"flash": "T_Beam_S3_Supreme_SX1262_companion_radio_ble.*?-merged\\.bin",
"download": "T_Beam_S3_Supreme_SX1262_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "repeater",
"github": {
"type": "repeater",
"files": {
"flash": "T_Beam_S3_Supreme_SX1262_repeater.*?-merged\\.bin",
"download": "T_Beam_S3_Supreme_SX1262_repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "T_Beam_S3_Supreme_SX1262_room_server.*?-merged\\.bin",
"download": "T_Beam_S3_Supreme_SX1262_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
@ -179,8 +421,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["LilyGo_T-Echo_companion_radio_ble","zip"],
"download": ["LilyGo_T-Echo_companion_radio_ble","uf2"]
"flash": "LilyGo_T-Echo_companion_radio_ble.*?\\.zip",
"download": "LilyGo_T-Echo_companion_radio_ble.*?\\.uf2"
}
}
},
@ -189,8 +431,8 @@
"github": {
"type": "repeater",
"files": {
"flash": ["LilyGo_T-Echo_repeater","zip"],
"download": ["LilyGo_T-Echo_repeater","uf2"]
"flash": "LilyGo_T-Echo_repeater.*?\\.zip",
"download": "LilyGo_T-Echo_repeater.*?\\.uf2"
}
}
},
@ -199,8 +441,8 @@
"github": {
"type": "room-server",
"files": {
"flash": ["LilyGo_T-Echo_room_server","zip"],
"download": ["LilyGo_T-Echo_room_server","uf2"]
"flash": "LilyGo_T-Echo_room_server.*?\\.zip",
"download": "LilyGo_T-Echo_room_server.*?\\.uf2"
}
}
}
@ -216,7 +458,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["LilyGo_TLora_V2_1_1_6_companion_radio_usb","merged.bin"]
"flash": "LilyGo_TLora_V2_1_1_6_companion_radio_usb.*?-merged\\.bin",
"download": "LilyGo_TLora_V2_1_1_6_companion_radio_usb.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -225,7 +468,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["LilyGo_TLora_V2_1_1_6_companion_radio_ble","merged.bin"]
"flash": "LilyGo_TLora_V2_1_1_6_companion_radio_ble.*?-merged\\.bin",
"download": "LilyGo_TLora_V2_1_1_6_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -234,7 +478,8 @@
"github": {
"type": "repeater",
"files": {
"flash": ["LilyGo_TLora_V2_1_1_6_Repeater","merged.bin"]
"flash": "LilyGo_TLora_V2_1_1_6_Repeater.*?-merged\\.bin",
"download": "LilyGo_TLora_V2_1_1_6_Repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -243,7 +488,8 @@
"github": {
"type": "room-server",
"files": {
"flash": ["LilyGo_TLora_V2_1_1_6_room_server","merged.bin"]
"flash": "LilyGo_TLora_V2_1_1_6_room_server.*?-merged\\.bin",
"download": "LilyGo_TLora_V2_1_1_6_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
@ -259,7 +505,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["Heltec_v2_companion_radio_usb","merged.bin"]
"flash": "Heltec_v2_companion_radio_usb.*?-merged\\.bin",
"download": "Heltec_v2_companion_radio_usb.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -268,7 +515,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["Heltec_v2_companion_radio_ble","merged.bin"]
"flash": "Heltec_v2_companion_radio_ble.*?-merged\\.bin",
"download": "Heltec_v2_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -277,7 +525,18 @@
"github": {
"type": "repeater",
"files": {
"flash": ["Heltec_v2_repeater","merged.bin"]
"flash": "Heltec_v2_repeater.*?-merged\\.bin",
"download": "Heltec_v2_repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "Heltec_v2_room_server.*?-merged\\.bin",
"download": "Heltec_v2_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
@ -293,7 +552,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["Heltec_v3_companion_radio_usb","merged.bin"]
"flash": "Heltec_v3_companion_radio_usb.*?-merged\\.bin",
"download": "Heltec_v3_companion_radio_usb.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -302,7 +562,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["Heltec_v3_companion_radio_ble","merged.bin"]
"flash": "Heltec_v3_companion_radio_ble.*?-merged\\.bin",
"download": "Heltec_v3_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -311,7 +572,8 @@
"github": {
"type": "repeater",
"files": {
"flash": ["Heltec_v3_repeater","merged.bin"]
"flash": "Heltec_v3_repeater.*?-merged\\.bin",
"download": "Heltec_v3_repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -320,7 +582,8 @@
"github": {
"type": "room-server",
"files": {
"flash": ["Heltec_v3_room_server","merged.bin"]
"flash": "Heltec_v3_room_server.*?-merged\\.bin",
"download": "Heltec_v3_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
@ -336,8 +599,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["Heltec_t114_companion_radio_ble","zip"],
"download": ["Heltec_t114_companion_radio_ble","uf2"]
"flash": "Heltec_t114_companion_radio_ble.*?\\.zip",
"download": "Heltec_t114_companion_radio_ble.*?\\.uf2"
}
}
},
@ -346,8 +609,8 @@
"github": {
"type": "repeater",
"files": {
"flash": ["Heltec_t114_repeater","zip"],
"download": ["Heltec_t114_repeater","uf2"]
"flash": "Heltec_t114_repeater.*?\\.zip",
"download": "Heltec_t114_repeater.*?\\.uf2"
}
}
},
@ -356,8 +619,8 @@
"github": {
"type": "room-server",
"files": {
"flash": ["Heltec_t114_room_server","zip"],
"download": ["Heltec_t114_room_server","uf2"]
"flash": "Heltec_t114_room_server.*?\\.zip",
"download": "Heltec_t114_room_server.*?\\.uf2"
}
}
}
@ -373,7 +636,28 @@
"github": {
"type": "companion",
"files": {
"flash": ["Heltec_WSL3_companion_radio_ble","merged.bin"]
"flash": "Heltec_WSL3_companion_radio_ble.*?-merged\\.bin",
"download": "Heltec_WSL3_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "repeater",
"github": {
"type": "repeater",
"files": {
"flash": "Heltec_WSL3_repeater.*?-merged\\.bin",
"download": "Heltec_WSL3_repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "Heltec_WSL3_room_server.*?-merged\\.bin",
"download": "Heltec_WSL3_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
@ -389,8 +673,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["RAK_4631_companion_radio_usb", "zip"],
"download": ["RAK_4631_companion_radio_usb", "uf2"]
"flash": "RAK_4631_companion_radio_usb.*?\\.zip",
"download": "RAK_4631_companion_radio_usb.*?\\.uf2"
}
}
},
@ -399,8 +683,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["RAK_4631_companion_radio_ble", "zip"],
"download": ["RAK_4631_companion_radio_ble", "uf2"]
"flash": "RAK_4631_companion_radio_ble.*?\\.zip",
"download": "RAK_4631_companion_radio_ble.*?\\.uf2"
}
}
},
@ -409,8 +693,8 @@
"github": {
"type": "repeater",
"files": {
"flash": ["RAK_4631_Repeater", "zip"],
"download": ["RAK_4631_Repeater", "uf2"]
"flash": "RAK_4631_Repeater.*?\\.zip",
"download": "RAK_4631_Repeater.*?\\.uf2"
}
}
},
@ -419,8 +703,8 @@
"github": {
"type": "room-server",
"files": {
"flash": ["RAK_4631_room_server", "zip"],
"download": ["RAK_4631_room_server", "uf2"]
"flash": "RAK_4631_room_server.*?\\.zip",
"download": "RAK_4631_room_server.*?\\.uf2"
}
}
}
@ -436,8 +720,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["t1000e_companion_radio_ble", "zip"],
"download": ["t1000e_companion_radio_ble", "uf2"]
"flash": "t1000e_companion_radio_ble.*?\\.zip",
"download": "t1000e_companion_radio_ble.*?\\.uf2"
}
}
}
@ -450,21 +734,23 @@
"firmware": [
{
"role": "repeater",
"subTitle": "(sx1262 version)",
"subTitle": "(SX1262 version)",
"github": {
"type": "repeater",
"files": {
"flash": ["Xiao_C3_Repeater_sx1262","merged.bin"]
"flash": "Xiao_C3_Repeater_sx1262.*?-merged\\.bin",
"download": "Xiao_C3_Repeater_sx1262.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "repeater",
"subTitle": "(sx1268 version)",
"subTitle": "(SX1268 version)",
"github": {
"type": "repeater",
"files": {
"flash": ["Xiao_C3_Repeater_sx1268","merged.bin"]
"flash": "Xiao_C3_Repeater_sx1268.*?-merged\\.bin",
"download": "Xiao_C3_Repeater_sx1268.*?-[a-f0-9]{7}\\.bin"
}
}
}
@ -480,7 +766,8 @@
"github": {
"type": "companion",
"files": {
"flash": ["Xiao_S3_WIO_companion_radio_ble","merged.bin"]
"flash": "Xiao_S3_WIO_companion_radio_ble.*?-merged\\.bin",
"download": "Xiao_S3_WIO_companion_radio_ble.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -489,7 +776,55 @@
"github": {
"type": "repeater",
"files": {
"flash": ["Xiao_S3_WIO_Repeater","merged.bin"]
"flash": "Xiao_S3_WIO_Repeater.*?-merged\\.bin",
"download": "Xiao_S3_WIO_Repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "Xiao_S3_WIO_room_server.*?-merged\\.bin",
"download": "Xiao_S3_WIO_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
]
},
{
"name": "Seeed Studio Xiao nRF52 WIO",
"tooltip": "<img class='device' src='/img/xiao_nrf52.png'>",
"type": "nrf52",
"firmware": [
{
"role": "companionBle",
"github": {
"type": "companion",
"files": {
"flash": "Xiao_nrf52_companion_radio_ble.*?\\.zip",
"download": "Xiao_nrf52_companion_radio_ble.*?\\.uf2"
}
}
},
{
"role": "repeater",
"github": {
"type": "repeater",
"files": {
"flash": "Xiao_nrf52_repeater.*?\\.zip",
"download": "Xiao_nrf52_repeater.*?\\.uf2"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "Xiao_nrf52_room_server.*?\\.zip",
"download": "Xiao_nrf52_room_server.*?\\.uf2"
}
}
}
@ -505,7 +840,8 @@
"github": {
"type": "repeater",
"files": {
"flash": ["Station_G2_repeater", "merged.bin"]
"flash": "Station_G2_repeater.*?-merged\\.bin",
"download": "Station_G2_repeater.*?-[a-f0-9]{7}\\.bin"
}
}
},
@ -514,7 +850,102 @@
"github": {
"type": "room-server",
"files": {
"flash": ["Station_G2_room_server", "merged.bin"]
"flash": "Station_G2_room_server.*?-merged\\.bin",
"download": "Station_G2_room_server.*?-[a-f0-9]{7}\\.bin"
}
}
}
]
},
{
"name": "ProMicro (SX1262)",
"type": "nrf52",
"tooltip": "<img class='device' src='/img/promicro_sx1262.png'>",
"firmware": [
{
"role": "companionUsb",
"github": {
"type": "companion",
"files": {
"flash": "Faketec_companion_radio_usb.*?\\.zip",
"download": "Faketec_companion_radio_usb.*?\\.uf2"
}
}
},
{
"role": "companionBle",
"github": {
"type": "companion",
"files": {
"flash": "Faketec_companion_radio_ble.*?\\.zip",
"download": "Faketec_companion_radio_ble.*?\\.uf2"
}
}
},
{
"role": "repeater",
"github": {
"type": "repeater",
"files": {
"flash": "Faketec_Repeater.*?\\.zip",
"download": "Faketec_Repeater.*?\\.uf2"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "Faketec_room_server.*?\\.zip",
"download": "Faketec_room_server.*?\\.uf2"
}
}
}
]
},
{
"name": "ProMicro (LLCC68)",
"type": "nrf52",
"tooltip":"",
"firmware": [
{
"role": "companionUsb",
"github": {
"type": "companion",
"files": {
"flash": "ProMicroLLCC68_companion_radio_usb.*?\\.zip",
"download": "ProMicroLLCC68_companion_radio_usb.*?\\.uf2"
}
}
},
{
"role": "companionBle",
"github": {
"type": "companion",
"files": {
"flash": "ProMicroLLCC68_companion_radio_ble.*?\\.zip",
"download": "ProMicroLLCC68_companion_radio_ble.*?\\.uf2"
}
}
},
{
"role": "repeater",
"github": {
"type": "repeater",
"files": {
"flash": "ProMicroLLCC68_Repeater.*?\\.zip",
"download": "ProMicroLLCC68_Repeater.*?\\.uf2"
}
}
},
{
"role": "roomServer",
"github": {
"type": "room-server",
"files": {
"flash": "ProMicroLLCC68_room_server.*?\\.zip",
"download": "ProMicroLLCC68_room_server.*?\\.uf2"
}
}
}

View file

@ -52,4 +52,14 @@ body {
}
#app .console-input:focus, #app console-input:focus{
outline: none;
}
#app .pre {
white-space-collapse: preserve;
min-width: 300px;
}
#app .version {
flex-wrap: wrap;
}
#app .version div.field {
min-width: 140px;
}

View file

@ -43,7 +43,7 @@ const commandReference = {
function getGithubReleases(roleType, files) {
const versions = {};
for(const [fileType, [startsWith, endsWith]] of Object.entries(files)) {
for(const [fileType, matchRE] of Object.entries(files)) {
for(const versionType of github) {
if(versionType.type !== roleType) { continue }
const version = versions[versionType.version] ??= {
@ -51,7 +51,7 @@ function getGithubReleases(roleType, files) {
files: []
};
for(const file of versionType.files) {
if(!(file.name.startsWith(startsWith) && file.name.endsWith(endsWith))) { continue }
if(!new RegExp(matchRE).test(file.name)) { continue }
version.files.push({
type: fileType,
name: file.url,
@ -70,6 +70,11 @@ function addGithubFiles() {
const gDef = firmware.github;
if(!gDef?.files) { continue }
firmware.version = getGithubReleases(gDef.type, gDef.files);
// clean versions without files
for(const [verName, verValue] of Object.entries(firmware.version)) {
if(verValue.files.length === 0) delete firmware.version[verName]
}
}
}
@ -179,10 +184,17 @@ function setup() {
flashing.instance = null;
}
const openSerialGUI = () => {
window.open('https://config.meshcore.dev','meshcore_config','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=1000,height=800');
}
const openSerialCon = async() => {
const port = selected.port = await navigator.serial.requestPort();
const serialConsole = serialCon.instance = new SerialConsole(port);
serialCon.content = 'Welcome to MeshCore serial console.\n';
serialCon.content = 'Welcome to MeshCore serial console.\n'
serialCon.content += '-------------------------------------------------------------------------\n';
serialCon.content += 'WARNING: This console only works with *Repeater* and *Room server* roles.\n';
serialCon.content += '-------------------------------------------------------------------------\n';
serialCon.content += 'If you came here right after flashing, please restart your device.\n';
serialCon.content += 'Click on the cursor to get all supported commands.\n\n';
serialConsole.onOutput = (text) => {
@ -350,7 +362,8 @@ function setup() {
consoleEditBox, consoleWindow,
config, selected, flashing,
flashDevice, flasherCleanup, dfuMode,
serialCon, openSerialCon, sendCommand, closeSerialCon,
serialCon, closeSerialCon, openSerialCon,
sendCommand, openSerialGUI,
refresh, commandReference,
stepBack,
customFirmwareLoad, getFirmwarePath, getSelFwValue, getRoleFwValue,

BIN
img/lilygo_tbeam.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
img/promicro_sx1262.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
img/xiao_nrf52.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View file

@ -9,7 +9,6 @@
<link href="./css/flasher.css" rel="stylesheet">
<script type="module" src="./flasher.js"></script>
</head>
<body class="dark">
<div id="app" v-cloak>
<div class="flash-container">
@ -40,13 +39,16 @@
</div>
<div class="max" v-else>
<h6>Flashing complete!</h6>
<p v-if="selected.firmware.role === 'roomServer' || selected.firmware.role === 'repeater'">
Before you use <b><a target="_blank" href="https://config.meshcore.dev/">Repeater/Room server setup</a></b>, please restart your device.
</p>
<p>
<button @click="flasherCleanup()">Close</button>
</p>
</div>
</div>
<div class="autoscroller">
<pre class="term" v-if="flashing.terminal">{{ flashing.terminal }}</pre>
<pre class="term" v-if="flashing.log">{{ flashing.log }}</pre>
</div>
<nav>
<progress :value="flashing.percentage" max="100"></progress>
@ -63,7 +65,7 @@
<i>{{ getRoleFwValue(selected.firmware, 'icon') }}</i>
<span class="small">{{ getRoleFwValue(selected.firmware, 'title') }}</span>
</nav>
<nav>
<nav class="version">
<div class="field label suffix border small">
<select v-model="selected.version">
<template v-for="(version, versionName) in selected.firmware.version">
@ -73,9 +75,9 @@
<label>Version</label>
<i>arrow_drop_down</i>
</div>
<span v-if="getSelFwValue('notes')" class="max">
<div class="max small-padding pre" v-if="getSelFwValue('notes')">
{{ getSelFwValue('notes') }}
</span>
</div>
</nav>
</header>
<ul class="list border" v-if="selected.device.type === 'esp32'">
@ -90,7 +92,9 @@
</label>
</li>
</ul>
<button @click="dfuMode" :disabled="flashing.dfuComplete || !flashing.supported" v-if="selected.device.type === 'nrf52'">
<template v-if="selected.device.type === 'nrf52'">
<div class="small-space"></div>
<button @click="dfuMode" :disabled="flashing.dfuComplete || !flashing.supported">
<i>{{ flashing.dfuComplete ? 'check' : 'code' }}</i>
<span>{{ flashing.dfuComplete ? 'DFU mode active' : 'Enter DFU mode' }}</span>
<div class="tooltip right max" v-if="flashing.supported">
@ -101,6 +105,7 @@
Your browser doesn't support Web Serial API. Please use Chrome or Edge on Desktop
</div>
</button>
</template>
<div class="medium-space"></div>
<nav class="small-margin">
<button @click="flashDevice" :disabled="!flashing.supported">
@ -157,6 +162,11 @@
<nav>
<i>bolt</i>
<h5 class="small max">MeshCore flasher</h5>
<button class="transparent hide-mobile" @click="openSerialGUI()">
<i>manufacturing</i>
<span>Repeater Setup</span>
<div class="tooltip left max">Open GUI to configure Repeaters and Room servers via USB serial</div>
</button>
<button class="transparent" @click="openSerialCon()">
<i>terminal</i>
<span>Console</span>
@ -210,5 +220,5 @@
</div>
</body>
<script type="module" src="https://cdn.jsdelivr.net/npm/@open-iframe-resizer/core@latest/dist/index.js"></script>
</html>