CREATORJD commited on
Commit
fe43b68
·
verified ·
1 Parent(s): 2778e60

Publish MASSFRONT web 1.33.80 (part 2)

Browse files
assets/data/exploration-pack-remote.json CHANGED
@@ -1,10 +1,10 @@
1
  {
2
  "schema": "MassfrontExplorationPackRemoteV2",
3
  "kind": "ExplorationPackRemote",
4
- "version": "1.33.79",
5
- "base": "https://massfront-update.jasondixon1994.workers.dev/f/1.33.79/content-r1/",
6
- "manifest": "https://massfront-update.jasondixon1994.workers.dev/f/1.33.79/content-r1/exploration-content-manifest-v2.json",
7
- "manifestSha256": "edc34c6b67b26026da6e46db37a0890b85d9342e7073c76afec696c312193d6d",
8
  "manifestBytes": 241496,
9
  "downloadQuery": ""
10
  }
 
1
  {
2
  "schema": "MassfrontExplorationPackRemoteV2",
3
  "kind": "ExplorationPackRemote",
4
+ "version": "1.33.80",
5
+ "base": "https://massfront-update.jasondixon1994.workers.dev/f/1.33.80/content-r1/",
6
+ "manifest": "https://massfront-update.jasondixon1994.workers.dev/f/1.33.80/content-r1/exploration-content-manifest-v2.json",
7
+ "manifestSha256": "cf335988b9caaf13af45a80cc05f1f7f4ae57d28c37d70fe18631e6853c99014",
8
  "manifestBytes": 241496,
9
  "downloadQuery": ""
10
  }
assets/data/runtime-compatibility.json CHANGED
@@ -1,12 +1,12 @@
1
  {
2
  "schema": "massfront.runtime-compatibility",
3
  "schemaVersion": 1,
4
- "buildVersion": "1.33.79",
5
  "channel": "packaged-www",
6
  "identityScheme": "massfront.canonical-source.v1",
7
  "transportScheme": "massfront.emitted-bytes.v1",
8
- "manifestHash": "28b732e135e404247b007bb1f33bed1bce2ac147059cf151af4c1ed48d9318c5",
9
- "balanceHash": "e5ce2aa6f07d817a256bcaba91eebc5b67a4806b3f7e3ebef6c105bdc19a16e8",
10
  "algorithm": {
11
  "leaf": "sha256(raw-artifact-bytes)",
12
  "root": "sha256(domain\\0 + utf8ByteLength(path):path\\0decimalSize\\0leaf\\n for each ordered entry)",
@@ -20,18 +20,18 @@
20
  "manifestEntries": [
21
  {
22
  "path": "index.html",
23
- "size": 444990,
24
- "sha256": "4183f7af6e066a6fec62ca3c3680a9c1c8609f2ad4e2afd164cc0afc3a450cea"
25
  },
26
  {
27
  "path": "boot.js",
28
- "size": 51018,
29
- "sha256": "1e56ebbfa923bad46aa0de3216279e5f971914a7756045db0f1b0fadd71f465e"
30
  },
31
  {
32
  "path": "sw.js",
33
  "size": 11191,
34
- "sha256": "94066d7a39eacbc08ec53af1d818a7da691b4a0fb7cc412f8b8d4d873277e004"
35
  },
36
  {
37
  "path": "src/styles/ui.css",
@@ -360,8 +360,8 @@
360
  },
361
  {
362
  "path": "src/game/sim.js",
363
- "size": 553749,
364
- "sha256": "8b2a334e062f64927be0a2d7ef9232c95bf4d5c41ba4bc123047a773d27774f6"
365
  },
366
  {
367
  "path": "src/game/airwarfare.js",
@@ -390,8 +390,8 @@
390
  },
391
  {
392
  "path": "src/ui/input.js",
393
- "size": 90130,
394
- "sha256": "82fe08555189f44d677dcfcf8ca212973948769390585ffde38c3848db3d269c"
395
  },
396
  {
397
  "path": "src/ui/facticons.js",
@@ -400,8 +400,8 @@
400
  },
401
  {
402
  "path": "src/ui/hud.js",
403
- "size": 207210,
404
- "sha256": "08b16448d0d964e7383341fc6af1703ca898e9822f316250c2766f9708d1c699"
405
  },
406
  {
407
  "path": "src/ui/render3d.js",
@@ -410,8 +410,8 @@
410
  },
411
  {
412
  "path": "src/ui/orderfx.js",
413
- "size": 7499,
414
- "sha256": "d14b54ab3b181f8bb42992b02bc32f4f52f6da790bb8165c922f9ffc499d2b5e"
415
  },
416
  {
417
  "path": "src/airlift.js",
@@ -541,7 +541,7 @@
541
  {
542
  "path": "src/updater.js",
543
  "size": 164739,
544
- "sha256": "09309b73644663ed689a5e689442a6c087e7736c219d97b1c55f08034ab1a05d"
545
  },
546
  {
547
  "path": "src/intro.js",
@@ -610,8 +610,8 @@
610
  },
611
  {
612
  "path": "src/ui/hotslots.js",
613
- "size": 26540,
614
- "sha256": "057e5d6bda59582c2a75633417e0725ccf99aeef0053666765a2e971fc206dde"
615
  },
616
  {
617
  "path": "src/ui/unit-stack-hotbar.js",
@@ -620,8 +620,8 @@
620
  },
621
  {
622
  "path": "src/galactic-operations.js",
623
- "size": 70231,
624
- "sha256": "45699c40cb57838407712ac485f9063ad7d075c5f3270f2988adf1e744e4bb26"
625
  },
626
  {
627
  "path": "src/onboarding.js",
@@ -707,8 +707,8 @@
707
  },
708
  {
709
  "path": "src/game/sim.js",
710
- "size": 553749,
711
- "sha256": "8b2a334e062f64927be0a2d7ef9232c95bf4d5c41ba4bc123047a773d27774f6"
712
  },
713
  {
714
  "path": "src/game/airwarfare.js",
@@ -807,27 +807,27 @@
807
  },
808
  {
809
  "path": "src/galactic-operations.js",
810
- "size": 70231,
811
- "sha256": "45699c40cb57838407712ac485f9063ad7d075c5f3270f2988adf1e744e4bb26"
812
  }
813
  ],
814
- "transportManifestHash": "28b732e135e404247b007bb1f33bed1bce2ac147059cf151af4c1ed48d9318c5",
815
- "transportBalanceHash": "e5ce2aa6f07d817a256bcaba91eebc5b67a4806b3f7e3ebef6c105bdc19a16e8",
816
  "transportManifestEntries": [
817
  {
818
  "path": "index.html",
819
- "size": 444990,
820
- "sha256": "4183f7af6e066a6fec62ca3c3680a9c1c8609f2ad4e2afd164cc0afc3a450cea"
821
  },
822
  {
823
  "path": "boot.js",
824
- "size": 51018,
825
- "sha256": "1e56ebbfa923bad46aa0de3216279e5f971914a7756045db0f1b0fadd71f465e"
826
  },
827
  {
828
  "path": "sw.js",
829
  "size": 11191,
830
- "sha256": "94066d7a39eacbc08ec53af1d818a7da691b4a0fb7cc412f8b8d4d873277e004"
831
  },
832
  {
833
  "path": "src/styles/ui.css",
@@ -1156,8 +1156,8 @@
1156
  },
1157
  {
1158
  "path": "src/game/sim.js",
1159
- "size": 553749,
1160
- "sha256": "8b2a334e062f64927be0a2d7ef9232c95bf4d5c41ba4bc123047a773d27774f6"
1161
  },
1162
  {
1163
  "path": "src/game/airwarfare.js",
@@ -1186,8 +1186,8 @@
1186
  },
1187
  {
1188
  "path": "src/ui/input.js",
1189
- "size": 90130,
1190
- "sha256": "82fe08555189f44d677dcfcf8ca212973948769390585ffde38c3848db3d269c"
1191
  },
1192
  {
1193
  "path": "src/ui/facticons.js",
@@ -1196,8 +1196,8 @@
1196
  },
1197
  {
1198
  "path": "src/ui/hud.js",
1199
- "size": 207210,
1200
- "sha256": "08b16448d0d964e7383341fc6af1703ca898e9822f316250c2766f9708d1c699"
1201
  },
1202
  {
1203
  "path": "src/ui/render3d.js",
@@ -1206,8 +1206,8 @@
1206
  },
1207
  {
1208
  "path": "src/ui/orderfx.js",
1209
- "size": 7499,
1210
- "sha256": "d14b54ab3b181f8bb42992b02bc32f4f52f6da790bb8165c922f9ffc499d2b5e"
1211
  },
1212
  {
1213
  "path": "src/airlift.js",
@@ -1337,7 +1337,7 @@
1337
  {
1338
  "path": "src/updater.js",
1339
  "size": 164739,
1340
- "sha256": "09309b73644663ed689a5e689442a6c087e7736c219d97b1c55f08034ab1a05d"
1341
  },
1342
  {
1343
  "path": "src/intro.js",
@@ -1406,8 +1406,8 @@
1406
  },
1407
  {
1408
  "path": "src/ui/hotslots.js",
1409
- "size": 26540,
1410
- "sha256": "057e5d6bda59582c2a75633417e0725ccf99aeef0053666765a2e971fc206dde"
1411
  },
1412
  {
1413
  "path": "src/ui/unit-stack-hotbar.js",
@@ -1416,8 +1416,8 @@
1416
  },
1417
  {
1418
  "path": "src/galactic-operations.js",
1419
- "size": 70231,
1420
- "sha256": "45699c40cb57838407712ac485f9063ad7d075c5f3270f2988adf1e744e4bb26"
1421
  },
1422
  {
1423
  "path": "src/onboarding.js",
@@ -1503,8 +1503,8 @@
1503
  },
1504
  {
1505
  "path": "src/game/sim.js",
1506
- "size": 553749,
1507
- "sha256": "8b2a334e062f64927be0a2d7ef9232c95bf4d5c41ba4bc123047a773d27774f6"
1508
  },
1509
  {
1510
  "path": "src/game/airwarfare.js",
@@ -1603,8 +1603,8 @@
1603
  },
1604
  {
1605
  "path": "src/galactic-operations.js",
1606
- "size": 70231,
1607
- "sha256": "45699c40cb57838407712ac485f9063ad7d075c5f3270f2988adf1e744e4bb26"
1608
  }
1609
  ],
1610
  "excluded": [
 
1
  {
2
  "schema": "massfront.runtime-compatibility",
3
  "schemaVersion": 1,
4
+ "buildVersion": "1.33.80",
5
  "channel": "packaged-www",
6
  "identityScheme": "massfront.canonical-source.v1",
7
  "transportScheme": "massfront.emitted-bytes.v1",
8
+ "manifestHash": "efbd76875ce8b3a22014e99ebf961136d8090517ab4f2a8e0bf5353875930e0d",
9
+ "balanceHash": "c5e65018fcefce1625a416bf44e14aa832839b69b1af3a372cccd9f10b30bea6",
10
  "algorithm": {
11
  "leaf": "sha256(raw-artifact-bytes)",
12
  "root": "sha256(domain\\0 + utf8ByteLength(path):path\\0decimalSize\\0leaf\\n for each ordered entry)",
 
20
  "manifestEntries": [
21
  {
22
  "path": "index.html",
23
+ "size": 636688,
24
+ "sha256": "2f527f79756f18f08581aa5c3b204420c5dc419faedf3120c51fbb7e014172cf"
25
  },
26
  {
27
  "path": "boot.js",
28
+ "size": 49636,
29
+ "sha256": "42d6167edbf2c0df49176fb3928cef850ffe6969f4bd37f0ec38b0c4b6ec7a5c"
30
  },
31
  {
32
  "path": "sw.js",
33
  "size": 11191,
34
+ "sha256": "2f3533d63d20b623a0345c19ed9f2a5dbf935f8d48734b2899f21ab94a769b83"
35
  },
36
  {
37
  "path": "src/styles/ui.css",
 
360
  },
361
  {
362
  "path": "src/game/sim.js",
363
+ "size": 554100,
364
+ "sha256": "49786873ac6f2c9913e7c007b0e9aa76867337f5bf70ec0924a66347e5b40b9c"
365
  },
366
  {
367
  "path": "src/game/airwarfare.js",
 
390
  },
391
  {
392
  "path": "src/ui/input.js",
393
+ "size": 90592,
394
+ "sha256": "7b18f3970339674ff00845754094f2643fa8a73a512b7ebd31bba95bee74da7b"
395
  },
396
  {
397
  "path": "src/ui/facticons.js",
 
400
  },
401
  {
402
  "path": "src/ui/hud.js",
403
+ "size": 207228,
404
+ "sha256": "962b9f5adc994e7d47446a8db2034a13baeff97a13fd98dd2cc0e12ccfe3772b"
405
  },
406
  {
407
  "path": "src/ui/render3d.js",
 
410
  },
411
  {
412
  "path": "src/ui/orderfx.js",
413
+ "size": 8274,
414
+ "sha256": "732c0b1c5bc8532a0b93ea74bb34f09e5a9bfb939a3cbe6fdc486683a2892a8d"
415
  },
416
  {
417
  "path": "src/airlift.js",
 
541
  {
542
  "path": "src/updater.js",
543
  "size": 164739,
544
+ "sha256": "da40acc187eff27eafbcd19945873a8d4458df0aee743a7c155113bd304cb9e6"
545
  },
546
  {
547
  "path": "src/intro.js",
 
610
  },
611
  {
612
  "path": "src/ui/hotslots.js",
613
+ "size": 26914,
614
+ "sha256": "da9b59abe5598db08c134304a41eb511a03310283504e49817e475f7c26e040c"
615
  },
616
  {
617
  "path": "src/ui/unit-stack-hotbar.js",
 
620
  },
621
  {
622
  "path": "src/galactic-operations.js",
623
+ "size": 73553,
624
+ "sha256": "41dc62a138601fa2f49d3c4be60f508f30721aa1591f3f4ba9b3fa049ad2f3c7"
625
  },
626
  {
627
  "path": "src/onboarding.js",
 
707
  },
708
  {
709
  "path": "src/game/sim.js",
710
+ "size": 554100,
711
+ "sha256": "49786873ac6f2c9913e7c007b0e9aa76867337f5bf70ec0924a66347e5b40b9c"
712
  },
713
  {
714
  "path": "src/game/airwarfare.js",
 
807
  },
808
  {
809
  "path": "src/galactic-operations.js",
810
+ "size": 73553,
811
+ "sha256": "41dc62a138601fa2f49d3c4be60f508f30721aa1591f3f4ba9b3fa049ad2f3c7"
812
  }
813
  ],
814
+ "transportManifestHash": "efbd76875ce8b3a22014e99ebf961136d8090517ab4f2a8e0bf5353875930e0d",
815
+ "transportBalanceHash": "c5e65018fcefce1625a416bf44e14aa832839b69b1af3a372cccd9f10b30bea6",
816
  "transportManifestEntries": [
817
  {
818
  "path": "index.html",
819
+ "size": 636688,
820
+ "sha256": "2f527f79756f18f08581aa5c3b204420c5dc419faedf3120c51fbb7e014172cf"
821
  },
822
  {
823
  "path": "boot.js",
824
+ "size": 49636,
825
+ "sha256": "42d6167edbf2c0df49176fb3928cef850ffe6969f4bd37f0ec38b0c4b6ec7a5c"
826
  },
827
  {
828
  "path": "sw.js",
829
  "size": 11191,
830
+ "sha256": "2f3533d63d20b623a0345c19ed9f2a5dbf935f8d48734b2899f21ab94a769b83"
831
  },
832
  {
833
  "path": "src/styles/ui.css",
 
1156
  },
1157
  {
1158
  "path": "src/game/sim.js",
1159
+ "size": 554100,
1160
+ "sha256": "49786873ac6f2c9913e7c007b0e9aa76867337f5bf70ec0924a66347e5b40b9c"
1161
  },
1162
  {
1163
  "path": "src/game/airwarfare.js",
 
1186
  },
1187
  {
1188
  "path": "src/ui/input.js",
1189
+ "size": 90592,
1190
+ "sha256": "7b18f3970339674ff00845754094f2643fa8a73a512b7ebd31bba95bee74da7b"
1191
  },
1192
  {
1193
  "path": "src/ui/facticons.js",
 
1196
  },
1197
  {
1198
  "path": "src/ui/hud.js",
1199
+ "size": 207228,
1200
+ "sha256": "962b9f5adc994e7d47446a8db2034a13baeff97a13fd98dd2cc0e12ccfe3772b"
1201
  },
1202
  {
1203
  "path": "src/ui/render3d.js",
 
1206
  },
1207
  {
1208
  "path": "src/ui/orderfx.js",
1209
+ "size": 8274,
1210
+ "sha256": "732c0b1c5bc8532a0b93ea74bb34f09e5a9bfb939a3cbe6fdc486683a2892a8d"
1211
  },
1212
  {
1213
  "path": "src/airlift.js",
 
1337
  {
1338
  "path": "src/updater.js",
1339
  "size": 164739,
1340
+ "sha256": "da40acc187eff27eafbcd19945873a8d4458df0aee743a7c155113bd304cb9e6"
1341
  },
1342
  {
1343
  "path": "src/intro.js",
 
1406
  },
1407
  {
1408
  "path": "src/ui/hotslots.js",
1409
+ "size": 26914,
1410
+ "sha256": "da9b59abe5598db08c134304a41eb511a03310283504e49817e475f7c26e040c"
1411
  },
1412
  {
1413
  "path": "src/ui/unit-stack-hotbar.js",
 
1416
  },
1417
  {
1418
  "path": "src/galactic-operations.js",
1419
+ "size": 73553,
1420
+ "sha256": "41dc62a138601fa2f49d3c4be60f508f30721aa1591f3f4ba9b3fa049ad2f3c7"
1421
  },
1422
  {
1423
  "path": "src/onboarding.js",
 
1503
  },
1504
  {
1505
  "path": "src/game/sim.js",
1506
+ "size": 554100,
1507
+ "sha256": "49786873ac6f2c9913e7c007b0e9aa76867337f5bf70ec0924a66347e5b40b9c"
1508
  },
1509
  {
1510
  "path": "src/game/airwarfare.js",
 
1603
  },
1604
  {
1605
  "path": "src/galactic-operations.js",
1606
+ "size": 73553,
1607
+ "sha256": "41dc62a138601fa2f49d3c4be60f508f30721aa1591f3f4ba9b3fa049ad2f3c7"
1608
  }
1609
  ],
1610
  "excluded": [
boot.js CHANGED
@@ -30,7 +30,7 @@
30
  otherwise reuse a stale source even after the installer or local preview
31
  has changed, which made new settings appear to be missing until cache was
32
  cleared manually. Patch bundles keep their content-addressed Blob URLs. */
33
- var PACKAGED_REV='1.33.79';
34
  /* Source-cache revision is deliberately independent from the user-facing
35
  release number. Local/hotfix rebuilds of the same release must not reuse
36
  an older gl.js merely because its ?v= version string is unchanged. */
@@ -549,28 +549,16 @@
549
  });
550
  }
551
 
552
- var bootStartedAt=Date.now(),bootSourceLabel='Checking installed content',bootElapsedTimer=0;
553
  function bootText(id,value){var el=document.getElementById(id);if(el)el.textContent=value;}
554
- function bootElapsed(){
555
- bootElapsedTimer=0;
556
- if(!document.getElementById('mfBootCover'))return;
557
- var seconds=Math.max(0,Math.floor((Date.now()-bootStartedAt)/1000));
558
- bootText('mfBootElapsed',seconds+'s elapsed');
559
- if(seconds<120)bootElapsedTimer=setTimeout(bootElapsed,1000);
560
- }
561
  function bootProgress(done,total,path,stage){
562
- // innerHTML shell swaps do not execute inline scripts. Restore the same
563
- // existing title art there too, without generating or fetching a new logo.
564
- var title=document.getElementById('mfBootTitleArt'),original=document.getElementById('menuBrand');
565
- if(title&&original&&!title.getAttribute('src'))title.src=original.getAttribute('src');
566
  var verifying=stage==='verify',finished=total>0&&done>=total&&!verifying;
567
  var clean=String(path||'').replace(/^\.\//,'').split('?')[0];
568
- var phase=finished?'Starting game':verifying?'Verifying installed update':
569
- /engine\/gl\.js/.test(clean)?'Initializing graphics':
570
- /engine\/|assets\/data\//.test(clean)?'Preparing world systems':
571
- /audio|factions|story|tutorial/.test(clean)?'Preparing game content':
572
- /ui\/|intro|launcher|main\.js/.test(clean)?'Preparing command interface':'Loading game systems';
573
- bootText('mfBootPct',total?Math.min(100,Math.floor(done/total*100))+'% FILES':'STARTING');
574
  bootText('mfBootPhase',phase);
575
  var detail=/glrecover/.test(clean)?'Preparing graphics recovery and reconnect controls.':
576
  /engine\//.test(clean)?'Loading terrain, models and visual systems.':
@@ -579,16 +567,12 @@
579
  /ui\/|intro|launcher|main\.js/.test(clean)?'Preparing menus and command controls.':
580
  /assets\/data\//.test(clean)?'Loading world and unit definitions.':'Preparing game rules and career systems.';
581
  bootText('mfBootDetail',finished?'Preparing the first frame and launch interface.':verifying?'Checking the integrity of stored runtime files.':detail);
582
- bootText('mfBootCount',done+' / '+total+' scripts '+(verifying?'verified':'loaded'));
583
- bootText('mfBootSource',bootSourceLabel);
584
  var bar=document.getElementById('mfBootBar'),fill=document.getElementById('mfBootFill');
585
- if(bar&&bar.setAttribute){bar.setAttribute('aria-valuemin','0');bar.setAttribute('aria-valuemax',String(total||1));bar.setAttribute('aria-valuenow',String(done));bar.setAttribute('aria-valuetext',finished?'Scripts loaded; starting game':done+' of '+total+' scripts '+(verifying?'verified':'loaded'));}
586
  if(fill&&fill.style)fill.style.width=(total?Math.max(0,Math.min(100,done/total*100)):0)+'%';
587
  var cover=document.getElementById('mfBootCover');
588
- if(cover&&cover.style&&cover.style.setProperty)cover.style.setProperty('--boot-progress',String(total?Math.max(0,Math.min(100,done/total*100)):0));
589
- if(!document.getElementById('mfBootCover')){if(bootElapsedTimer)clearTimeout(bootElapsedTimer);bootElapsedTimer=0;}
590
  }
591
- bootElapsed();
592
  function rendererGateIndex(order){
593
  for(var i=0;i<order.length;i++)
594
  if(String(order[i]||'').replace(/^\.\//,'')==='src/engine/gl.js') return i;
@@ -611,12 +595,12 @@
611
  left--;
612
  if(src)failedCount++;
613
  bootProgress(total-left-failedCount,total,order&&order[i]);
614
- if(failedCount){bootText('mfBootPhase','Game file failed to load');bootText('mfBootDetail','Restart to retry loading installed content.');}
615
  if(src) console.error('boot: failed',src);
616
  if(i===gate){
617
  gateFailed=!!src||window.__MF_GL_BOOT_FAILED===true;
618
  if(gateFailed){
619
- bootText('mfBootPhase','Graphics initialization needs attention');
620
  bootText('mfBootDetail','Use the graphics retry control to continue.');
621
  console.warn('boot: renderer phase stopped after WebGL2 initialization failed');
622
  clearBootShield();
@@ -644,7 +628,6 @@
644
  appendRange(0,Math.min(total,gate+1));
645
  }
646
  function runPackaged(){
647
- if(bootSourceLabel==='Checking installed content')bootSourceLabel='Packaged game';
648
  injectScripts(function(s,i){ s.src=MANIFEST[i]+'?v='+PACKAGED_SRC_REV; },
649
  MANIFEST.length,rendererGateIndex(MANIFEST),MANIFEST);
650
  }
@@ -661,8 +644,7 @@
661
  function rangeFailure(path,reason){
662
  if(stopped) return;
663
  stopped=true;
664
- bootSourceLabel='Recovery · packaged game';
665
- bootText('mfBootPhase','Recovering installed game');
666
  console.error('boot: failed',path,reason||'stored artifact unavailable');
667
  clearBootShield();
668
  try{if(typeof window.__MASSFRONT_CLEAR_INPUT_GUARD==='function')
@@ -716,7 +698,7 @@
716
  var current=index++; executed++;
717
  bootProgress(index,total,path);
718
  if(current===gate&&window.__MF_GL_BOOT_FAILED===true){
719
- bootText('mfBootPhase','Graphics initialization needs attention');
720
  console.warn('boot: renderer phase stopped after WebGL2 initialization failed');
721
  clearBootShield();
722
  try{if(typeof window.__MASSFRONT_CLEAR_INPUT_GUARD==='function')
@@ -767,7 +749,6 @@
767
  return actual;
768
  });
769
  }).then(function(){
770
- bootSourceLabel='Verified update '+(b.version||'');
771
  index=0;bootProgress(0,total);next();
772
  }).catch(function(error){ rangeFailure('__runtime__',error&&error.message); });
773
  return;
@@ -797,7 +778,6 @@
797
  preflight(0);
798
  }
799
  function runBundle(b){
800
- bootSourceLabel='Installed update '+(b.version||'');
801
  /* Blob URLs rather than inline text: the browser keeps a real filename for
802
  each source, so a stack trace from a patched build is still readable. */
803
  var order=b.order&&b.order.length? b.order : MANIFEST;
@@ -846,7 +826,6 @@
846
  }
847
  if(decision.failedVersion)
848
  console.warn('boot: patch '+decision.failedVersion+' rejected, using packaged build');
849
- if(decision.failedVersion)bootSourceLabel='Recovery · packaged game';
850
  runPackaged();
851
  });
852
  }).catch(runPackaged);
@@ -886,7 +865,7 @@
886
  if(!secure) return;
887
  window.__mfPwaDiag={supported:true,registered:false,controlled:!!navigator.serviceWorker.controller,error:null,updateError:null};
888
  window.addEventListener('load',function(){
889
- navigator.serviceWorker.register('./sw.js?v=1.33.79-shell1',{scope:'./',updateViaCache:'none'})
890
  .then(function(reg){
891
  window.__mfPwaDiag.registered=true;
892
  window.__mfPwaDiag.scope=reg.scope;
 
30
  otherwise reuse a stale source even after the installer or local preview
31
  has changed, which made new settings appear to be missing until cache was
32
  cleared manually. Patch bundles keep their content-addressed Blob URLs. */
33
+ var PACKAGED_REV='1.33.80';
34
  /* Source-cache revision is deliberately independent from the user-facing
35
  release number. Local/hotfix rebuilds of the same release must not reuse
36
  an older gl.js merely because its ?v= version string is unchanged. */
 
549
  });
550
  }
551
 
 
552
  function bootText(id,value){var el=document.getElementById(id);if(el)el.textContent=value;}
 
 
 
 
 
 
 
553
  function bootProgress(done,total,path,stage){
 
 
 
 
554
  var verifying=stage==='verify',finished=total>0&&done>=total&&!verifying;
555
  var clean=String(path||'').replace(/^\.\//,'').split('?')[0];
556
+ var phase=finished?'STARTING MASSFRONT':verifying?'VERIFYING INSTALLED UPDATE':
557
+ /engine\/gl\.js/.test(clean)?'INITIALIZING GRAPHICS':
558
+ /engine\/|assets\/data\//.test(clean)?'PREPARING WORLD SYSTEMS':
559
+ /audio|factions|story|tutorial/.test(clean)?'PREPARING GAME CONTENT':
560
+ /ui\/|intro|launcher|main\.js/.test(clean)?'PREPARING COMMAND INTERFACE':'PREPARING COMMAND SYSTEMS';
561
+ bootText('mfBootPct',total?Math.max(0,Math.min(total,done))+' / '+total:'STARTING');
562
  bootText('mfBootPhase',phase);
563
  var detail=/glrecover/.test(clean)?'Preparing graphics recovery and reconnect controls.':
564
  /engine\//.test(clean)?'Loading terrain, models and visual systems.':
 
567
  /ui\/|intro|launcher|main\.js/.test(clean)?'Preparing menus and command controls.':
568
  /assets\/data\//.test(clean)?'Loading world and unit definitions.':'Preparing game rules and career systems.';
569
  bootText('mfBootDetail',finished?'Preparing the first frame and launch interface.':verifying?'Checking the integrity of stored runtime files.':detail);
 
 
570
  var bar=document.getElementById('mfBootBar'),fill=document.getElementById('mfBootFill');
571
+ if(bar&&bar.setAttribute){bar.setAttribute('aria-valuemin','0');bar.setAttribute('aria-valuemax',String(total||1));bar.setAttribute('aria-valuenow',String(done));bar.setAttribute('aria-valuetext',finished?'Game systems loaded; starting MASSFRONT':done+' of '+total+' game systems '+(verifying?'verified':'loaded'));}
572
  if(fill&&fill.style)fill.style.width=(total?Math.max(0,Math.min(100,done/total*100)):0)+'%';
573
  var cover=document.getElementById('mfBootCover');
574
+ if(cover){cover.setAttribute('data-progress','determinate');cover.setAttribute('aria-busy','true');}
 
575
  }
 
576
  function rendererGateIndex(order){
577
  for(var i=0;i<order.length;i++)
578
  if(String(order[i]||'').replace(/^\.\//,'')==='src/engine/gl.js') return i;
 
595
  left--;
596
  if(src)failedCount++;
597
  bootProgress(total-left-failedCount,total,order&&order[i]);
598
+ if(failedCount){bootText('mfBootPhase','GAME FILE FAILED TO LOAD');bootText('mfBootDetail','Restart to retry loading installed content.');}
599
  if(src) console.error('boot: failed',src);
600
  if(i===gate){
601
  gateFailed=!!src||window.__MF_GL_BOOT_FAILED===true;
602
  if(gateFailed){
603
+ bootText('mfBootPhase','GRAPHICS INITIALIZATION NEEDS ATTENTION');
604
  bootText('mfBootDetail','Use the graphics retry control to continue.');
605
  console.warn('boot: renderer phase stopped after WebGL2 initialization failed');
606
  clearBootShield();
 
628
  appendRange(0,Math.min(total,gate+1));
629
  }
630
  function runPackaged(){
 
631
  injectScripts(function(s,i){ s.src=MANIFEST[i]+'?v='+PACKAGED_SRC_REV; },
632
  MANIFEST.length,rendererGateIndex(MANIFEST),MANIFEST);
633
  }
 
644
  function rangeFailure(path,reason){
645
  if(stopped) return;
646
  stopped=true;
647
+ bootText('mfBootPhase','RECOVERING PACKAGED GAME');
 
648
  console.error('boot: failed',path,reason||'stored artifact unavailable');
649
  clearBootShield();
650
  try{if(typeof window.__MASSFRONT_CLEAR_INPUT_GUARD==='function')
 
698
  var current=index++; executed++;
699
  bootProgress(index,total,path);
700
  if(current===gate&&window.__MF_GL_BOOT_FAILED===true){
701
+ bootText('mfBootPhase','GRAPHICS INITIALIZATION NEEDS ATTENTION');
702
  console.warn('boot: renderer phase stopped after WebGL2 initialization failed');
703
  clearBootShield();
704
  try{if(typeof window.__MASSFRONT_CLEAR_INPUT_GUARD==='function')
 
749
  return actual;
750
  });
751
  }).then(function(){
 
752
  index=0;bootProgress(0,total);next();
753
  }).catch(function(error){ rangeFailure('__runtime__',error&&error.message); });
754
  return;
 
778
  preflight(0);
779
  }
780
  function runBundle(b){
 
781
  /* Blob URLs rather than inline text: the browser keeps a real filename for
782
  each source, so a stack trace from a patched build is still readable. */
783
  var order=b.order&&b.order.length? b.order : MANIFEST;
 
826
  }
827
  if(decision.failedVersion)
828
  console.warn('boot: patch '+decision.failedVersion+' rejected, using packaged build');
 
829
  runPackaged();
830
  });
831
  }).catch(runPackaged);
 
865
  if(!secure) return;
866
  window.__mfPwaDiag={supported:true,registered:false,controlled:!!navigator.serviceWorker.controller,error:null,updateError:null};
867
  window.addEventListener('load',function(){
868
+ navigator.serviceWorker.register('./sw.js?v=1.33.80-shell1',{scope:'./',updateViaCache:'none'})
869
  .then(function(reg){
870
  window.__mfPwaDiag.registered=true;
871
  window.__mfPwaDiag.scope=reg.scope;
index.html CHANGED
The diff for this file is too large to render. See raw diff