TiGa-RCE commited on
Commit
857589b
·
verified ·
1 Parent(s): 9c8994d

Fix TrackMap UMD root reference and inline track-map.js in index route to prevent stale cache

Browse files
Files changed (4) hide show
  1. FRONTEND_SOURCE.json +2 -2
  2. RELEASE_MANIFEST.json +3 -3
  3. server.py +3 -1
  4. track-map.js +7 -7
FRONTEND_SOURCE.json CHANGED
@@ -16,8 +16,8 @@
16
  "hf-auth.js": "3f3938bbc0935e4e9230c094029ef46e03beea74be199887c50e053e03dafcfe",
17
  "index.html": "16c6a720e3383e23aca7065466b25d573e50b0ea625fcca00e10d6844c9161b7",
18
  "track-library.js": "351ec4c026b49420ce963f4310cb000d9e987fd28e6dac5ecd0176509340f6e6",
19
- "track-map.js": "cf84f311e64d2d029c0fba43dd7b8ebc8d63177c9edd3577a45591c1c28c41e4"
20
  },
21
- "packaged_frontend_sha256": "c25cad5b810984dd9e428c8019b33d7a4d347b375d9cb5fd30ad579fe13fa137",
22
  "status": "Local measured-capacity candidate; hosted qualification pending"
23
  }
 
16
  "hf-auth.js": "3f3938bbc0935e4e9230c094029ef46e03beea74be199887c50e053e03dafcfe",
17
  "index.html": "16c6a720e3383e23aca7065466b25d573e50b0ea625fcca00e10d6844c9161b7",
18
  "track-library.js": "351ec4c026b49420ce963f4310cb000d9e987fd28e6dac5ecd0176509340f6e6",
19
+ "track-map.js": "c002c18bc6932af274ec2a0d722662588a27f0afe8af9957ca892b6bd63ae0ae"
20
  },
21
+ "packaged_frontend_sha256": "cf14ef732f3b2b3a2360aa91f2bf7fd6e4d2edfeb5cbecbe37d601d591412876",
22
  "status": "Local measured-capacity candidate; hosted qualification pending"
23
  }
RELEASE_MANIFEST.json CHANGED
@@ -7,7 +7,7 @@
7
  "CUDA_REFERENCE.md": "f7453c3254d244f8b0de41fde5851cb025159f5cea4a4d1a5d8208a955550c6c",
8
  "DATA_POLICY.md": "fc5978528abe1c21c14882417ac8a706e04a0831bbd3fdb3de8c64442c1a7b3d",
9
  "FEEDBACK.md": "f95b8f6afbf4a360976c0edca5d52f5b3a0b668c9a944d4947b840a7c53a122a",
10
- "FRONTEND_SOURCE.json": "e91215aedc0af1b701817e50196e3e9beef118b703413f109d3bf2b75c58513d",
11
  "GODOT_LICENSE": "fb2b3bb82c60f1e76841ba2122eb902f8e39c151476fe21ce10c9a05d1045304",
12
  "IMPORTER_BUILD_RECEIPT.json": "4ba5c533cc617105478e4d85c83f456a7dfa68b1388049624619871ba9e42e9d",
13
  "LICENSE": "53d5851b6440feeae36f72a5f57fcab37858c48b7084765ece4b0c54b9a28ed8",
@@ -79,11 +79,11 @@
79
  "native/upstream-v1.3.patch": "a9810c9abd40ddcbac5fcf6914320d5fc04fcde23849df9437ec293c83be15ed",
80
  "portable_bundle.py": "58df5b87956745ea909c41c4b12a23cf9ab8c40a7df47d1529f47ae4de9bf51f",
81
  "requirements.txt": "fc7e0703ad2289fd3926a36efbdce8c61f0edc00f7575a87e2b565e46588c5a4",
82
- "server.py": "1f82c9046324661d7bd4acf1cf37eef3445f985351159d88acdcaf89d1edf859",
83
  "star_check.py": "5c17080957b81ffccf0de8314635b471562e55c92c97a1207d9034a99279b2c3",
84
  "steam_leaderboard.py": "d76397c39cae58f636ddf9a9be1a46ae3d77fefd6b7269feac73d34d97165481",
85
  "track-library.js": "351ec4c026b49420ce963f4310cb000d9e987fd28e6dac5ecd0176509340f6e6",
86
- "track-map.js": "cf84f311e64d2d029c0fba43dd7b8ebc8d63177c9edd3577a45591c1c28c41e4",
87
  "training_config.py": "6eb7282bbee3b3a6273bddc29c949d9904067414c26e501d815012f033173a1c",
88
  "vendor/gradio-client/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
89
  "vendor/gradio-client/dist/index.min.js": "fdd776db8633354f118fe2908c980592283968737e6b91dc3aa86d648da5c3fd",
 
7
  "CUDA_REFERENCE.md": "f7453c3254d244f8b0de41fde5851cb025159f5cea4a4d1a5d8208a955550c6c",
8
  "DATA_POLICY.md": "fc5978528abe1c21c14882417ac8a706e04a0831bbd3fdb3de8c64442c1a7b3d",
9
  "FEEDBACK.md": "f95b8f6afbf4a360976c0edca5d52f5b3a0b668c9a944d4947b840a7c53a122a",
10
+ "FRONTEND_SOURCE.json": "757dc50e6e1e8ae47be23220da9c4e07ed05cdf3078804598e1803aeb9bd8f75",
11
  "GODOT_LICENSE": "fb2b3bb82c60f1e76841ba2122eb902f8e39c151476fe21ce10c9a05d1045304",
12
  "IMPORTER_BUILD_RECEIPT.json": "4ba5c533cc617105478e4d85c83f456a7dfa68b1388049624619871ba9e42e9d",
13
  "LICENSE": "53d5851b6440feeae36f72a5f57fcab37858c48b7084765ece4b0c54b9a28ed8",
 
79
  "native/upstream-v1.3.patch": "a9810c9abd40ddcbac5fcf6914320d5fc04fcde23849df9437ec293c83be15ed",
80
  "portable_bundle.py": "58df5b87956745ea909c41c4b12a23cf9ab8c40a7df47d1529f47ae4de9bf51f",
81
  "requirements.txt": "fc7e0703ad2289fd3926a36efbdce8c61f0edc00f7575a87e2b565e46588c5a4",
82
+ "server.py": "803d1f9d639c47e032c3a27f040763a3bb358145c65e0eb012f7a3863fbfa0ee",
83
  "star_check.py": "5c17080957b81ffccf0de8314635b471562e55c92c97a1207d9034a99279b2c3",
84
  "steam_leaderboard.py": "d76397c39cae58f636ddf9a9be1a46ae3d77fefd6b7269feac73d34d97165481",
85
  "track-library.js": "351ec4c026b49420ce963f4310cb000d9e987fd28e6dac5ecd0176509340f6e6",
86
+ "track-map.js": "c002c18bc6932af274ec2a0d722662588a27f0afe8af9957ca892b6bd63ae0ae",
87
  "training_config.py": "6eb7282bbee3b3a6273bddc29c949d9904067414c26e501d815012f033173a1c",
88
  "vendor/gradio-client/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
89
  "vendor/gradio-client/dist/index.min.js": "fdd776db8633354f118fe2908c980592283968737e6b91dc3aa86d648da5c3fd",
server.py CHANGED
@@ -299,7 +299,7 @@ def create_app(worker=run_reported,store=None,gpu_worker=None,track_library=None
299
  @app.get('/track-library.js')
300
  def track_script():return FileResponse(ROOT/'track-library.js',media_type='text/javascript')
301
  @app.get('/track-map.js')
302
- def map_script():return FileResponse(ROOT/'track-map.js',media_type='text/javascript')
303
  @app.get('/assets/track-atlas.json')
304
  def track_atlas():return FileResponse(ROOT/'assets/track-atlas.json',media_type='application/json')
305
  @app.get('/api/auth/config')
@@ -317,7 +317,9 @@ def create_app(worker=run_reported,store=None,gpu_worker=None,track_library=None
317
  # Deliver the bootstrap with the authenticated document: private HF
318
  # iframe subresource access can fail before an external script runs.
319
  script=(ROOT/'client.js').read_text().replace('</script','<\\/script')
 
320
  return HTMLResponse((ROOT/'index.html').read_text().replace(
 
321
  '<script src="/client.js"></script>','<script>'+script+'</script>'),
322
  headers={'Referrer-Policy':'no-referrer','Cache-Control':'no-store'})
323
  @app.get('/client.js')
 
299
  @app.get('/track-library.js')
300
  def track_script():return FileResponse(ROOT/'track-library.js',media_type='text/javascript')
301
  @app.get('/track-map.js')
302
+ def map_script():return FileResponse(ROOT/'track-map.js',media_type='text/javascript',headers={'Cache-Control':'no-store'})
303
  @app.get('/assets/track-atlas.json')
304
  def track_atlas():return FileResponse(ROOT/'assets/track-atlas.json',media_type='application/json')
305
  @app.get('/api/auth/config')
 
317
  # Deliver the bootstrap with the authenticated document: private HF
318
  # iframe subresource access can fail before an external script runs.
319
  script=(ROOT/'client.js').read_text().replace('</script','<\\/script')
320
+ map_js=(ROOT/'track-map.js').read_text().replace('</script','<\\/script')
321
  return HTMLResponse((ROOT/'index.html').read_text().replace(
322
+ '<script src="/track-map.js"></script>','<script>'+map_js+'</script>').replace(
323
  '<script src="/client.js"></script>','<script>'+script+'</script>'),
324
  headers={'Referrer-Policy':'no-referrer','Cache-Control':'no-store'})
325
  @app.get('/client.js')
track-map.js CHANGED
@@ -1,8 +1,8 @@
1
  /* Browser-only preview and zero-compute telemetry replay of the selected saved track. No upload for preview. */
2
  (function(root,factory){
3
- if(typeof module==='object'&&module.exports)module.exports=factory();
4
- else root.TrackMap=factory();
5
- })(typeof window==='undefined'?this:window,function(){
6
  const COLOURS=['#607e96','#b89561','#b9d9ed'];
7
  const NAMES=['Asphalt','Dirt','Ice'];
8
  const VEHICLE_NAMES=['Formula','Rally','Snowmobile','Truck'];
@@ -1047,22 +1047,22 @@
1047
  const dt=Math.min(0.1,(now-lastFrameTime)/1000);
1048
  lastFrameTime=now;
1049
  // Pause animation automatically while a server training job is actively running so 0% client CPU is used during runs
1050
- if(!window.TrainingClient?.isBusy?.()){
1051
  currentTick+=dt*60*playSpeed;
1052
  if(currentTick>maxTicks)currentTick=0;
1053
  drawFrame();
1054
  }
1055
- if(typeof root.requestAnimationFrame==='function')animId=root.requestAnimationFrame(stepLoop);
1056
  }
1057
 
1058
  function startLoop(){
1059
- if(animId||!playing||typeof root.requestAnimationFrame!=='function')return;
1060
  lastFrameTime=0;
1061
  animId=root.requestAnimationFrame(stepLoop);
1062
  }
1063
 
1064
  function stopLoop(){
1065
- if(animId&&typeof root.cancelAnimationFrame==='function')root.cancelAnimationFrame(animId);
1066
  animId=null;
1067
  }
1068
 
 
1
  /* Browser-only preview and zero-compute telemetry replay of the selected saved track. No upload for preview. */
2
  (function(root,factory){
3
+ if(typeof module==='object'&&module.exports)module.exports=factory(root);
4
+ else root.TrackMap=factory(root);
5
+ })(typeof window==='undefined'?this:window,function(root){
6
  const COLOURS=['#607e96','#b89561','#b9d9ed'];
7
  const NAMES=['Asphalt','Dirt','Ice'];
8
  const VEHICLE_NAMES=['Formula','Rally','Snowmobile','Truck'];
 
1047
  const dt=Math.min(0.1,(now-lastFrameTime)/1000);
1048
  lastFrameTime=now;
1049
  // Pause animation automatically while a server training job is actively running so 0% client CPU is used during runs
1050
+ if(!root?.TrainingClient?.isBusy?.()){
1051
  currentTick+=dt*60*playSpeed;
1052
  if(currentTick>maxTicks)currentTick=0;
1053
  drawFrame();
1054
  }
1055
+ if(typeof root?.requestAnimationFrame==='function')animId=root.requestAnimationFrame(stepLoop);
1056
  }
1057
 
1058
  function startLoop(){
1059
+ if(animId||!playing||typeof root?.requestAnimationFrame!=='function')return;
1060
  lastFrameTime=0;
1061
  animId=root.requestAnimationFrame(stepLoop);
1062
  }
1063
 
1064
  function stopLoop(){
1065
+ if(animId&&typeof root?.cancelAnimationFrame==='function')root.cancelAnimationFrame(animId);
1066
  animId=null;
1067
  }
1068