66 < title > M45 Core Firmware Flasher</ title >
77 < script
88 type ="module "
9- src ="https://unpkg.com /esp-web-tools@10 /dist/web/install-button.js?module "
9+ src ="https://jason2866.github.io /esp-web-tools/dist/web/install-button.js?module "
1010 > </ script >
1111 < style >
1212 : root {
@@ -291,14 +291,17 @@ <h2>Settings</h2>
291291 return document . querySelector ( "input[name='display']:checked" ) . value ;
292292 }
293293
294- function findAsset ( release , suffix ) {
295- return release . assets . find ( ( asset ) => asset . name . endsWith ( suffix ) ) ;
294+ function assetName ( release , variant , eraseSettings ) {
295+ if ( variant === "oled" ) {
296+ return `m45-core-${ release . tag_name } -oled${ eraseSettings ? "-merged" : "" } .bin` ;
297+ }
298+ return `m45-core-${ release . tag_name } -ideaspark-19-lcd${ eraseSettings ? "-merged" : "" } .bin` ;
296299 }
297300
298- function findRequiredAsset ( release , suffix ) {
299- const asset = findAsset ( release , suffix ) ;
301+ function findRequiredAsset ( release , name ) {
302+ const asset = release . assets . find ( ( item ) => item . name === name ) ;
300303 if ( ! asset ) {
301- throw new Error ( `Latest release is missing ${ suffix } .` ) ;
304+ throw new Error ( `Latest release is missing ${ name } .` ) ;
302305 }
303306 if ( ! asset . digest || ! asset . digest . startsWith ( "sha256:" ) ) {
304307 throw new Error ( `GitHub did not publish a SHA-256 digest for ${ asset . name } .` ) ;
@@ -341,8 +344,9 @@ <h2>Settings</h2>
341344 const mode = eraseSettingsEl . checked ? "erase" : "keep" ;
342345 const choice = assetsByMode [ display ] [ mode ] ;
343346 const label = display === "oled" ? "OLED" : "LCD" ;
344- const action = mode === "erase" ? "Erase Settings" : "Keep Settings" ;
345- setManifest ( manifestFor ( `M45 Core ${ label } ${ action } ` , choice . asset , choice . offset ) ) ;
347+ setManifest ( manifestFor ( "Flash Device" , choice . asset , choice . offset ) ) ;
348+ statusEl . innerHTML =
349+ `Ready to flash ${ label } ${ releaseTag } . ${ mode === "erase" ? "WiFi/pool settings will be erased." : "WiFi/pool settings will be kept." } ` ;
346350 }
347351
348352 function applyBaudRate ( ) {
@@ -359,17 +363,15 @@ <h2>Settings</h2>
359363 releaseTag = release . tag_name ;
360364 assetsByMode = {
361365 oled : {
362- keep : { asset : findRequiredAsset ( release , "- oled.bin" ) , offset : 0x10000 } ,
363- erase : { asset : findRequiredAsset ( release , "- oled-merged.bin" ) , offset : 0 }
366+ keep : { asset : findRequiredAsset ( release , assetName ( release , " oled" , false ) ) , offset : 0x10000 } ,
367+ erase : { asset : findRequiredAsset ( release , assetName ( release , " oled" , true ) ) , offset : 0 }
364368 } ,
365369 lcd : {
366- keep : { asset : findRequiredAsset ( release , "-ideaspark-19- lcd.bin" ) , offset : 0x10000 } ,
367- erase : { asset : findRequiredAsset ( release , "-ideaspark-19- lcd-merged.bin" ) , offset : 0 }
370+ keep : { asset : findRequiredAsset ( release , assetName ( release , " lcd" , false ) ) , offset : 0x10000 } ,
371+ erase : { asset : findRequiredAsset ( release , assetName ( release , " lcd" , true ) ) , offset : 0 }
368372 }
369373 } ;
370-
371374 refreshManifest ( ) ;
372- statusEl . innerHTML = `Ready to flash <a href="${ release . html_url } ">${ releaseTag } </a>. Firmware checks passed.` ;
373375 }
374376
375377 displayInputs . forEach ( ( input ) => input . addEventListener ( "change" , refreshManifest ) ) ;
0 commit comments