Skip to content

Commit da67b2f

Browse files
Merge pull request #563 from ExtremeFiretop/dev
Dev 1.6.1 as Next Stable Release
2 parents 9940b10 + 9aef23c commit da67b2f

6 files changed

Lines changed: 195 additions & 78 deletions

File tree

.gitattributes

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
* text eol=lf
2+
*.sh text eol=lf
3+
*.md text eol=lf
4+
*.asp text eol=lf
5+
*.js text eol=lf
6+
*.css text eol=lf
7+
*.gz binary
8+
*.png binary
9+
*.jpg binary
10+
*.jpeg binary
11+
*.zip binary
12+
*.tar.gz binary

.github/workflows/Create-NewReleases.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
git push origin ${{ steps.nextver.outputs.tag }}
8686
8787
- name: Create Release with Automated Release Notes
88-
uses: softprops/action-gh-release@v2.6.1
88+
uses: softprops/action-gh-release@v3.0.0
8989
with:
9090
token: ${{ secrets.GITHUB_TOKEN }}
9191
tag_name: ${{ steps.nextver.outputs.tag }}

MerlinAU.asp

Lines changed: 67 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<script language="JavaScript" type="text/javascript">
2828
2929
/**----------------------------**/
30-
/** Last Modified: 2026-Jan-24 **/
30+
/** Last Modified: 2026-Apr-05 **/
3131
/**----------------------------**/
3232
3333
// Separate variables for shared and AJAX settings //
@@ -301,8 +301,8 @@ function RunScriptUpdateFirmwareGateCheck()
301301
return;
302302
}
303303
304-
let installedNum = FWVersionStrToNum(installedStr);
305-
let requiredNum = FWVersionStrToNum(requiredStr);
304+
let installedNum = FWVersionStrToNum(installedStr, false);
305+
let requiredNum = FWVersionStrToNum(requiredStr, false);
306306
307307
pendingScriptUpdateGateCheck = false;
308308
isFormSubmitting = false;
@@ -1287,45 +1287,76 @@ function ConfirmLoginTest(formInput)
12871287
}
12881288
12891289
/**----------------------------------------**/
1290-
/** Modified by Martinski W. [2025-Jan-26] **/
1290+
/** Modified by ExtremeFiretop [2026-Apr-05] **/
12911291
/**----------------------------------------**/
12921292
// Converts F/W version string with the format: "3006.102.5.2" //
12931293
// to a number of the format: '30061020502' //
1294-
function FWVersionStrToNum (verStr)
1295-
{
1296-
if (verStr === null ||
1297-
verStr.length === 0 ||
1298-
verStr === 'TBD')
1294+
//
1295+
// If usePrereleaseRank is true:
1296+
// release > rc > beta > alpha for the SAME numeric version.
1297+
//
1298+
// If usePrereleaseRank is false:
1299+
// only the numeric version parts are compared.
1300+
//
1301+
function FWVersionStrToNum(verStr, usePrereleaseRank)
1302+
{
1303+
if (verStr == null)
12991304
{ return 0; }
13001305
1301-
let nonProductionVersionWeight = 0;
1302-
let foundAlphaBetaVersion = verStr.match (/([Aa]lpha|[Bb]eta)/);
1303-
if (foundAlphaBetaVersion == null)
1304-
{ nonProductionVersionWeight = 0; }
1305-
else
1306+
let versionText = String(verStr).trim();
1307+
if (versionText === '' || versionText === 'TBD')
1308+
{ return 0; }
1309+
1310+
let numericMatch = versionText.match(/^\d+(?:\.\d+)*/);
1311+
if (numericMatch == null)
1312+
{ return 0; }
1313+
1314+
let versionCore = numericMatch[0];
1315+
let segments = versionCore.split('.');
1316+
let versionNumStr = '';
1317+
1318+
for (let index = 0; index < segments.length; index++)
13061319
{
1307-
nonProductionVersionWeight = 100;
1308-
verStr = verStr.replace (/([Aa]lpha|[Bb]eta)[0-9]*/,'0');
1320+
let segmentText = segments[index];
1321+
1322+
if (segmentText.length > 2)
1323+
{ versionNumStr += segmentText; }
1324+
else
1325+
{ versionNumStr += segmentText.padStart(2, '0'); }
13091326
}
13101327
1311-
// Remove everything after the first non-numeric-and-dot character //
1312-
// e.g. "3006.102.1.alpha1" => "3006.102.1" //
1313-
verStr = verStr.split(/[^\d.]/, 1)[0];
1328+
let baseVersionNum = parseInt(versionNumStr, 10);
1329+
if (isNaN(baseVersionNum))
1330+
{ return 0; }
13141331
1315-
let segments = verStr.split('.');
1316-
let partNum=0, partStr='', verNumStr='';
1332+
// Default: numeric-only comparison //
1333+
if (usePrereleaseRank !== true)
1334+
{ return (baseVersionNum * 100); }
13171335
1318-
for (var index=0 ; index < segments.length ; index++)
1336+
let lowerVersionText = versionText.toLowerCase();
1337+
let prereleaseRank = 99; // release //
1338+
1339+
let rcMatch = lowerVersionText.match(/rc(\d*)/);
1340+
let betaMatch = lowerVersionText.match(/beta(\d*)/);
1341+
let alphaMatch = lowerVersionText.match(/alpha(\d*)/);
1342+
1343+
if (alphaMatch != null)
13191344
{
1320-
if (segments[index].length > 2)
1321-
{ partStr = segments[index]; }
1322-
else
1323-
{ partStr = segments[index].padStart(2, '0'); }
1324-
verNumStr = (verNumStr + partStr);
1345+
let alphaNum = parseInt(alphaMatch[1] || '0', 10);
1346+
prereleaseRank = 20 + Math.min(alphaNum, 19);
1347+
}
1348+
else if (betaMatch != null)
1349+
{
1350+
let betaNum = parseInt(betaMatch[1] || '0', 10);
1351+
prereleaseRank = 50 + Math.min(betaNum, 19);
1352+
}
1353+
else if (rcMatch != null)
1354+
{
1355+
let rcNum = parseInt(rcMatch[1] || '0', 10);
1356+
prereleaseRank = 80 + Math.min(rcNum, 19);
13251357
}
1326-
let verNum = (parseInt(verNumStr, 10) - nonProductionVersionWeight);
13271358
1328-
return (verNum);
1359+
return ((baseVersionNum * 100) + prereleaseRank);
13291360
}
13301361
13311362
/**----------------------------------------**/
@@ -1826,9 +1857,13 @@ function InitializeFields()
18261857
var fwUpdateAvailable = FW_NewUpdateVersAvailable;
18271858
var fwVersionInstalled = fwVersionInstalledElement.textContent.trim();
18281859
1860+
// Only apply beta/alpha/release weighting if Beta-to-Release Updates is enabled //
1861+
var usePrereleaseRank =
1862+
(custom_settings.FW_Allow_Beta_Production_Up === 'ENABLED');
1863+
18291864
// Convert both to numeric forms //
1830-
var verNumAvailable = FWVersionStrToNum(fwUpdateAvailable);
1831-
var verNumInstalled = FWVersionStrToNum(fwVersionInstalled);
1865+
var verNumAvailable = FWVersionStrToNum(fwUpdateAvailable, usePrereleaseRank);
1866+
var verNumInstalled = FWVersionStrToNum(fwVersionInstalled, usePrereleaseRank);
18321867
18331868
// If verNumAvailable is 0, maybe treat as "NONE FOUND" //
18341869
if (verNumAvailable === 0)
@@ -1840,7 +1875,7 @@ function InitializeFields()
18401875
{ // Update available //
18411876
fwUpdateAvailableElement.innerHTML = InvYLWct + fwUpdateAvailable + InvCLEAR;
18421877
isFwUpdateAvailable = true;
1843-
}
1878+
}
18441879
else // No update //
18451880
{
18461881
fwUpdateAvailableElement.innerHTML = InvYLWct + "NONE FOUND" + InvCLEAR;

0 commit comments

Comments
 (0)