play-probe: include JS version (detect stale-cache phones)

This commit is contained in:
jozamudi committed 2026-08-31 20:12:50 +00:00
1 parent c7f5ad4c7a
commit 66a6ed5d93
2 files changed
+6 -4

No files matched your search

+4 -2
View File
@@ -1,4 +1,6 @@
// app.js — ani-web frontend: search -> detail -> play, vanilla JS + hls.js // app.js — ani-web frontend: search -> detail -> play, vanilla JS + hls.js
const JSV = 10; // bump with every app.js change; play-probe reports it so a
// stale-cache phone is detectable server-side
// BASE = this page's directory, so the app works at / or behind a // BASE = this page's directory, so the app works at / or behind a
// prefixing reverse proxy (e.g. https://host/ani/) // prefixing reverse proxy (e.g. https://host/ani/)
const BASE = (() => { const BASE = (() => {
@@ -73,7 +75,7 @@ function showStreamError(msg, retry) {
// + report the client's capabilities so a failing browser is diagnosable // + report the client's capabilities so a failing browser is diagnosable
// from server.log instead of by guesswork // from server.log instead of by guesswork
try { try {
postEvent({type: "client-fail", msg, postEvent({type: "client-fail", jsv: JSV, msg,
ua: navigator.userAgent, ua: navigator.userAgent,
hls_lib: typeof window.Hls, hls_lib: typeof window.Hls,
mse: (window.Hls && Hls.isSupported) ? Hls.isSupported() : null, mse: (window.Hls && Hls.isSupported) ? Hls.isSupported() : null,
@@ -877,7 +879,7 @@ async function play(ep_id, ep_no) {
try { try {
const nativeOK = (() => { try { return document.createElement("video").canPlayType("application/vnd.apple.mpegurl") || "none"; } catch { return "err"; } })(); const nativeOK = (() => { try { return document.createElement("video").canPlayType("application/vnd.apple.mpegurl") || "none"; } catch { return "err"; } })();
const mse = (() => { try { return (window.Hls && Hls.isSupported) ? Hls.isSupported() : null; } catch { return "err"; } })(); const mse = (() => { try { return (window.Hls && Hls.isSupported) ? Hls.isSupported() : null; } catch { return "err"; } })();
postEvent({type: "play-probe", postEvent({type: "play-probe", jsv: JSV,
branch: (!window.Hls || !Hls.isSupported()) ? (nativeOK !== "none" && nativeOK !== "" ? "native" : "none-throw") : "hlsjs", branch: (!window.Hls || !Hls.isSupported()) ? (nativeOK !== "none" && nativeOK !== "" ? "native" : "none-throw") : "hlsjs",
hls_lib: typeof window.Hls, hls_lib: typeof window.Hls,
mse, native_hls: nativeOK, ua: navigator.userAgent}); mse, native_hls: nativeOK, ua: navigator.userAgent});
+2 -2
View File
@@ -6,7 +6,7 @@
<title>ani-web</title> <title>ani-web</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='14' fill='%23f97316'/%3E%3Ctext x='32' y='45' font-family='sans-serif' font-size='42' font-weight='700' text-anchor='middle' fill='%230e0f13'%3Ea%3C/text%3E%3C/svg%3E"> <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' rx='14' fill='%23f97316'/%3E%3Ctext x='32' y='45' font-family='sans-serif' font-size='42' font-weight='700' text-anchor='middle' fill='%230e0f13'%3Ea%3C/text%3E%3C/svg%3E">
<link rel="stylesheet" href="style.css?v=9"> <link rel="stylesheet" href="style.css?v=10">
</head> </head>
<body> <body>
<header> <header>
@@ -30,6 +30,6 @@
max-age=300 in browser AND possibly in your HTTPS proxy, and a stale max-age=300 in browser AND possibly in your HTTPS proxy, and a stale
copy is exactly how users keep seeing an old UI after a deploy --> copy is exactly how users keep seeing an old UI after a deploy -->
<script src="hls.min.js"></script> <script src="hls.min.js"></script>
<script src="app.js?v=9"></script> <script src="app.js?v=10"></script>
</body> </body>
</html> </html>