Spaces:
Running on Zero
Running on Zero
Fix TrackMap UMD root reference and inline track-map.js in index route to prevent stale cache
Browse files- FRONTEND_SOURCE.json +2 -2
- RELEASE_MANIFEST.json +3 -3
- server.py +3 -1
- 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": "
|
| 20 |
},
|
| 21 |
-
"packaged_frontend_sha256": "
|
| 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": "
|
| 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": "
|
| 83 |
"star_check.py": "5c17080957b81ffccf0de8314635b471562e55c92c97a1207d9034a99279b2c3",
|
| 84 |
"steam_leaderboard.py": "d76397c39cae58f636ddf9a9be1a46ae3d77fefd6b7269feac73d34d97165481",
|
| 85 |
"track-library.js": "351ec4c026b49420ce963f4310cb000d9e987fd28e6dac5ecd0176509340f6e6",
|
| 86 |
-
"track-map.js": "
|
| 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(!
|
| 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 |
|