Compare commits

..
3 Commits
47 changed files with 92 additions and 63 deletions
+2 -2
View File
@@ -20,10 +20,10 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<script src="./js/marked.min.js"></script>
<script type="text/javascript" src="./js/qrcode-svg.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.6/dist/purify.min.js"></script>
<script src="./js/vendor/purify.min.js"></script>
<style>
#divBody {
+2 -2
View File
@@ -23,11 +23,11 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<script src="./js/marked.min.js"></script>
<script type="text/javascript" src="./js/qrcode-generator.min.js"></script>
<script type="text/javascript" src="./js/qrcode-svg.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.6/dist/purify.min.js"></script>
<script src="./js/vendor/purify.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -10,7 +10,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<!-- Initialize theme BEFORE any components load -->
<script>
+1 -1
View File
@@ -19,7 +19,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -47,7 +47,7 @@
});
</script>
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
flex-direction: column !important;
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -20,7 +20,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -22,7 +22,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+2 -2
View File
@@ -20,10 +20,10 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<script src="./js/marked.min.js"></script>
<script type="text/javascript" src="./js/qrcode-svg.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.6/dist/purify.min.js"></script>
<script src="./js/vendor/purify.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
File diff suppressed because one or more lines are too long
+3
View File
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+3
View File
File diff suppressed because one or more lines are too long
+3
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -1,5 +1,5 @@
{
"VERSION": "v0.1.0",
"VERSION_NUMBER": "0.1.0",
"BUILD_DATE": "2026-04-17T20:56:45.995Z"
"VERSION": "v0.7.3",
"VERSION_NUMBER": "0.7.3",
"BUILD_DATE": "2026-04-19T17:43:13.562Z"
}
+1 -1
View File
@@ -18,7 +18,7 @@
})();
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+2 -2
View File
@@ -26,10 +26,10 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<script src="./js/marked.min.js"></script>
<script type="text/javascript" src="./js/qrcode-generator.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.6/dist/purify.min.js"></script>
<script src="./js/vendor/purify.min.js"></script>
<style>
#divBody {
+20 -10
View File
@@ -25,8 +25,8 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<script src="./js/vendor/dash.all.min.js"></script>
<style>
#divBody {
@@ -1617,6 +1617,21 @@ import { GreyscaleAPI } from './js/greyscale-api.mjs';
return message.includes('authentication required');
}
async function tryGetPubkeyWithoutPrompt({ attempts = 8, delayMs = 350 } = {}) {
for (let i = 0; i < attempts; i += 1) {
try {
const pubkey = await getPubkey();
if (pubkey) return pubkey;
} catch {
// Signer can attach slightly after initial script execution.
}
if (i < attempts - 1) {
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
}
return '';
}
function isReadOnlyTargetMode() {
return Boolean(targetPubkey && (!currentPubkey || targetPubkey !== currentPubkey));
}
@@ -1695,13 +1710,8 @@ import { GreyscaleAPI } from './js/greyscale-api.mjs';
throw error;
}
try {
currentPubkey = await getPubkey();
isAuthenticated = Boolean(currentPubkey);
} catch {
currentPubkey = null;
isAuthenticated = false;
}
currentPubkey = await tryGetPubkeyWithoutPrompt();
isAuthenticated = Boolean(currentPubkey);
}
async function initializeAuthenticatedPageFeatures() {
@@ -4327,7 +4337,7 @@ import { GreyscaleAPI } from './js/greyscale-api.mjs';
}
async function loadClientZipModule() {
return import('https://cdn.jsdelivr.net/npm/client-zip@2.4.5/+esm');
return import('./js/vendor/client-zip.esm.js');
}
async function fetchDownloadBlobForTrack(track) {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -22,7 +22,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divQRContainer {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="../js/vendor/svg.min.js"></script>
</head>
<body>
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="../js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="../js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="../js/vendor/svg.min.js"></script>
</head>
<body>
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="../js/vendor/svg.min.js"></script>
</head>
<body>
+2 -2
View File
@@ -22,11 +22,11 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="../js/vendor/svg.min.js"></script>
<script src="./js/marked.min.js"></script>
<script type="text/javascript" src="./js/qrcode-generator.min.js"></script>
<script type="text/javascript" src="./js/qrcode-svg.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.2.6/dist/purify.min.js"></script>
<script src="../js/vendor/purify.min.js"></script>
<style>
#divBody {
+2 -2
View File
@@ -173,8 +173,8 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script src="../js/vendor/svg.min.js"></script>
<script src="../js/vendor/hls.min.js"></script>
</head>
<body>
+2 -2
View File
@@ -172,8 +172,8 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script src="../js/vendor/svg.min.js"></script>
<script src="../js/vendor/hls.min.js"></script>
</head>
<body>
+1 -1
View File
@@ -19,7 +19,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -22,7 +22,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -21,7 +21,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -47,7 +47,7 @@
});
</script>
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
/* ================================================================
+1 -1
View File
@@ -20,7 +20,7 @@
})();
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -19,7 +19,7 @@
</script>
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
#divBody {
+1 -1
View File
@@ -24,7 +24,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<!-- Strudel REPL Library (locally built from source) -->
<script type="module" src="./strudel-repl/index.js"></script>
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
</head>
<body>
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style>
/* ================================================================
+1 -1
View File
@@ -23,7 +23,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
<style media="screen">
#divBody {
+1 -1
View File
@@ -175,7 +175,7 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="./js/vendor/svg.min.js"></script>
</head>
<body>
+4 -4
View File
@@ -26,9 +26,9 @@
<link rel="shortcut icon" type="image/x-icon" href="./favicon/favicon-dots2.ico" />
<!-- SVG.js library (required by HamburgerMorphing) -->
<script src="https://cdn.jsdelivr.net/npm/@svgdotjs/svg.js@3.0/dist/svg.min.js"></script>
<script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script src="./js/vendor/svg.min.js"></script>
<script src="./js/vendor/dash.all.min.js"></script>
<script src="./js/vendor/hls.min.js"></script>
<style>
#divBody {
@@ -5609,7 +5609,7 @@
}
async function loadClientZipModule() {
return import('https://cdn.jsdelivr.net/npm/client-zip@2.4.5/+esm');
return import('./js/vendor/client-zip.esm.js');
}
async function fetchDownloadBlobForTrack(track) {