From 08ee91c6be7fd708147d11d9ffa10478e60f2086 Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Wed, 10 Jun 2026 14:37:22 -0700 Subject: [PATCH 1/2] fix --multi hash decoding and add saner options --- docs/multi.html | 28 ++++++++++++++++++++++++---- webapp/public/multi.html | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/docs/multi.html b/docs/multi.html index a887e5b8ee02..e3a9960dcb2f 100644 --- a/docs/multi.html +++ b/docs/multi.html @@ -146,10 +146,30 @@ ifrm.src = select.value + flags + h; } function handleHash() { - var route = (window.location.hash || "#"); - var parts = route.replace(/^#/, '').split(':|:', 2); - updateSrc(left, selectLeft, parts[0]); - updateSrc(right, selectRight, parts[1]); + var route = decodeURIComponent(window.location.hash || "#"); + + if (route.indexOf(":|:") !== -1) { + var parts = route.replace(/^#/, '').split(':|:', 2); + updateSrc(left, selectLeft, parts[0]); + updateSrc(right, selectRight, parts[1]); + } + else { + route = route.replace(/^#/, ''); + var params = new URLSearchParams(route); + if (params.has("left")) { + updateSrc(left, selectLeft, params.get("left")); + } + else if (params.has("leftscript")) { + updateSrc(left, selectLeft, "pub:" + params.get("leftscript")); + } + if (params.has("right")) { + updateSrc(right, selectRight, params.get("right")); + } + else if (params.has("rightscript")) { + updateSrc(right, selectRight, "pub:" + params.get("rightscript")); + } + } + window.history.replaceState('', '', '#') } diff --git a/webapp/public/multi.html b/webapp/public/multi.html index bbe86044d2a8..63ba1afa212a 100644 --- a/webapp/public/multi.html +++ b/webapp/public/multi.html @@ -70,10 +70,36 @@ function handleHash() { var hashLeft = "" var hashRight = "" - var route = (window.location.hash || "#"); - var parts = route.replace(/^#/, '').split(':|:', 2); - updateSrc(left, parts[0]); - updateSrc(right, parts[1]); + var route = decodeURIComponent(window.location.hash || "#"); + + if (route.indexOf(":|:") !== -1) { + var parts = route.replace(/^#/, '').split(':|:', 2); + updateSrc(left, parts[0]); + updateSrc(right, parts[1]); + } + else { + route = route.replace(/^#/, ''); + var params = new URLSearchParams(route); + if (params.has("left")) { + updateSrc(left, params.get("left")); + } + else if (params.has("leftscript")) { + updateSrc(left, "pub:" + params.get("leftscript")); + } + else { + updateSrc(left); + } + if (params.has("right")) { + updateSrc(right, params.get("right")); + } + else if (params.has("rightscript")) { + updateSrc(right, "pub:" + params.get("rightscript")); + } + else { + updateSrc(right); + } + } + window.history.replaceState('', '', '#') } function handleMessage(msg) { From 0c6dfce14af07947d4a68eba32ebd2088094ba1f Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Wed, 10 Jun 2026 14:38:32 -0700 Subject: [PATCH 2/2] sync docs --- docs/multi.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/multi.html b/docs/multi.html index e3a9960dcb2f..cd8cdf83e5be 100644 --- a/docs/multi.html +++ b/docs/multi.html @@ -162,12 +162,18 @@ else if (params.has("leftscript")) { updateSrc(left, selectLeft, "pub:" + params.get("leftscript")); } + else { + updateSrc(left, selectLeft); + } if (params.has("right")) { updateSrc(right, selectRight, params.get("right")); } else if (params.has("rightscript")) { updateSrc(right, selectRight, "pub:" + params.get("rightscript")); } + else { + updateSrc(right, selectRight); + } } window.history.replaceState('', '', '#')