From 17eefb0be6191e1bf9916bcdd26c45419dda0fb3 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 4 Jan 2026 16:05:21 -0700 Subject: [PATCH] Improvements --- app.js | 15 ++++++++++++--- index.html | 7 ++++--- style.css | 47 +++++++++++++++++++++++++++++------------------ sw.js | 2 +- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/app.js b/app.js index 9142271..be9e8de 100644 --- a/app.js +++ b/app.js @@ -407,6 +407,9 @@ document.addEventListener('DOMContentLoaded', function () { document.getElementById('config-form').querySelectorAll('input, select').forEach(element => { element.disabled = true; }); + document.querySelectorAll('.preset-btn').forEach(btn => { + btn.disabled = true; + }); return null; } }, @@ -688,9 +691,12 @@ document.addEventListener('DOMContentLoaded', function () { const updateReloadBtn = document.getElementById('update-reload-btn'); const updateDismissBtn = document.getElementById('update-dismiss-btn'); - function showUpdatePopup() { + let waitingServiceWorker = null; + + function showUpdatePopup(waitingSW) { if (updatePopup) { updatePopup.style.display = 'flex'; + waitingServiceWorker = waitingSW; } } @@ -702,6 +708,9 @@ document.addEventListener('DOMContentLoaded', function () { if (updateReloadBtn) { updateReloadBtn.addEventListener('click', () => { + if (waitingServiceWorker) { + waitingServiceWorker.postMessage({ type: 'SKIP_WAITING' }); + } window.location.reload(); }); } @@ -782,7 +791,7 @@ document.addEventListener('DOMContentLoaded', function () { // Check if there's already a waiting service worker (update ready) if (swRegistration.waiting) { - showUpdatePopup(); + showUpdatePopup(swRegistration.waiting); } // Listen for new service worker updates @@ -793,7 +802,7 @@ document.addEventListener('DOMContentLoaded', function () { // When the new worker is installed and waiting, show the update popup // Only show if there's an existing controller (this is an update, not first install) if (newWorker.state === 'installed' && navigator.serviceWorker.controller) { - showUpdatePopup(); + showUpdatePopup(newWorker); } }); } diff --git a/index.html b/index.html index 32ba012..cb5d7ae 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + @@ -370,7 +370,8 @@
- +

The original 15-page instruction manual from the 1997 CD-ROM release.

+ Open Manual in New Tab
@@ -847,7 +848,7 @@ diff --git a/style.css b/style.css index 0bc1b40..6295335 100644 --- a/style.css +++ b/style.css @@ -400,6 +400,12 @@ body { transform: scale(0.98); } +.preset-btn:disabled { + opacity: 0.5; + cursor: not-allowed; + pointer-events: none; +} + /* Config tabs */ .config-tabs { flex-grow: 1; @@ -1035,30 +1041,35 @@ select { color: #FFD700; } -/* Manual PDF Section */ +/* Manual Section */ .manual-container { - width: 100%; - margin-top: 15px; + display: flex; + align-items: center; + gap: 15px; } -.manual-pdf { - width: 100%; - height: 600px; - border: 1px solid #333; +.manual-description { + color: #888; + font-size: 0.95em; + margin: 0; +} + +.manual-open-btn { + display: inline-block; + padding: 12px 24px; + background: linear-gradient(135deg, #2a2a2a 0%, #1a1a1a 100%); + border: 1px solid #FFD700; border-radius: 8px; - background-color: #1c1c1c; + color: #FFD700; + font-size: 1em; + font-weight: bold; + text-decoration: none; + transition: all 0.2s ease; } -@media (max-width: 768px) { - .manual-pdf { - height: 450px; - } -} - -@media (max-width: 480px) { - .manual-pdf { - height: 350px; - } +.manual-open-btn:hover { + background: linear-gradient(135deg, #333 0%, #222 100%); + box-shadow: 0 0 10px rgba(255, 215, 0, 0.3); } /* Voices Section */ diff --git a/sw.js b/sw.js index 784799e..19c3ba2 100644 --- a/sw.js +++ b/sw.js @@ -10,7 +10,7 @@ const { Strategy } = workbox.strategies; const { CacheableResponsePlugin } = workbox.cacheableResponse; const { RangeRequestsPlugin } = workbox.rangeRequests; -precacheAndRoute([{"revision":"0338231ebc0aff76ea0b7563cae96530","url":"index.html"},{"revision":"013ceb7d67293d532e979dde0347f3af","url":"cancel_off.webp"},{"revision":"bfc1563be018d82685716c6130529129","url":"cancel_on.webp"},{"revision":"d282c260fd35522036936bb6faf8ad21","url":"cdspin.gif"},{"revision":"3d820bf72b19bd4e437a61e75f317b83","url":"configure_off.webp"},{"revision":"e2c0c5e6aa1f7703c385a433a2d2a519","url":"configure_on.webp"},{"revision":"88e1e81c930d8e6c24dfdc7af274e812","url":"favicon.png"},{"revision":"d16b293eca457e2fb1e7ef2caca8c904","url":"favicon.svg"},{"revision":"d2b9c2e128ef1e5e4265c603b0bc3305","url":"free_stuff_off.webp"},{"revision":"cbc6a6779897f932c3a3c8dceb329804","url":"free_stuff_on.webp"},{"revision":"05fba4ef1884cbbd6afe09ea3325efc0","url":"install_off.webp"},{"revision":"11247e92082ba3d978a2e3785b0acf51","url":"install_on.webp"},{"revision":"d23ea8243c18eb217ef08fe607097824","url":"island.webp"},{"revision":"c97d78e159b8bff44d41e56d0aa20220","url":"isle.js"},{"revision":"5f174d45de1e3c5e0abdbccfd64567b6","url":"isle.wasm"},{"revision":"6d4248f1a08c218943e582673179b7be","url":"poster.pdf"},{"revision":"a6fcac24a24996545c039a1755af33ea","url":"read_me_off.webp"},{"revision":"aae783d064996b4322e23b092d97ea4a","url":"read_me_on.webp"},{"revision":"766a9e6e6d890f24cef252e81753b29d","url":"run_game_off.webp"},{"revision":"70208e00e9ea641e4c98699f74100db3","url":"run_game_on.webp"},{"revision":"0a65c71d9983c9bb1bc6a5f405fd6fd9","url":"shark.webp"},{"revision":"88c1fd032e6fc16814690712a26c1ede","url":"uninstall_off.webp"},{"revision":"0118a4aca04c5fb0a525bf00b001844e","url":"uninstall_on.webp"},{"revision":"e8a8dd113d9bbfa2a1b81bbafa7b673d","url":"app.js"},{"revision":"debda137e612dedce0d0e7f7b545588f","url":"style.css"},{"revision":"060210979e13e305510de6285e085db1","url":"manifest.json"},{"revision":"4f0172bc7007d34cebf681cc233ab57f","url":"install.webp"},{"revision":"6a70d35dadf51d2ec6e38a6202d7fb0b","url":"install.mp3"},{"revision":"eac041a0b8835bfea706d997b0b7b224","url":"downloader.js"},{"revision":"6899f72755d4e84c707b93ac54a8fb06","url":"debug.js"},{"revision":"7817b36ddda9f07797c05a0ff6cacb21","url":"debug.html"},{"revision":"4ea2aac9446188b8a588811bc593919e","url":"ogel.webp"},{"revision":"c57d24598537443c5b8276c8dd5dbdc9","url":"bonus.webp"},{"revision":"d11c8c893d5525c8842555dc2861c393","url":"callfail.webp"},{"revision":"be9a89fb567b632cf8d4661cbf8afd9e","url":"getinfo.webp"},{"revision":"fe986681f41e96631f39f3288b23e538","url":"sysinfo.webp"},{"revision":"4ec902e0b0ce60ffd9dd565c9ddf40a1","url":"send.webp"},{"revision":"81f3c8fc38b876dc2fcfeefaadad1d1b","url":"congrats.webp"},{"revision":"f906318cb87e09a819e5916676caab2e","url":"register.webp"},{"revision":"c633a7500e6f30162bf1cf4ec4e95a6d","url":"later.webp"},{"revision":"d149d5709ac00fd5e2967ab4f3d74886","url":"comic.pdf"}]); +precacheAndRoute([{"revision":"56b3874bf39f8fd870f0d1bc208107e1","url":"index.html"},{"revision":"013ceb7d67293d532e979dde0347f3af","url":"cancel_off.webp"},{"revision":"bfc1563be018d82685716c6130529129","url":"cancel_on.webp"},{"revision":"d282c260fd35522036936bb6faf8ad21","url":"cdspin.gif"},{"revision":"3d820bf72b19bd4e437a61e75f317b83","url":"configure_off.webp"},{"revision":"e2c0c5e6aa1f7703c385a433a2d2a519","url":"configure_on.webp"},{"revision":"88e1e81c930d8e6c24dfdc7af274e812","url":"favicon.png"},{"revision":"d16b293eca457e2fb1e7ef2caca8c904","url":"favicon.svg"},{"revision":"d2b9c2e128ef1e5e4265c603b0bc3305","url":"free_stuff_off.webp"},{"revision":"cbc6a6779897f932c3a3c8dceb329804","url":"free_stuff_on.webp"},{"revision":"05fba4ef1884cbbd6afe09ea3325efc0","url":"install_off.webp"},{"revision":"11247e92082ba3d978a2e3785b0acf51","url":"install_on.webp"},{"revision":"d23ea8243c18eb217ef08fe607097824","url":"island.webp"},{"revision":"c97d78e159b8bff44d41e56d0aa20220","url":"isle.js"},{"revision":"5f174d45de1e3c5e0abdbccfd64567b6","url":"isle.wasm"},{"revision":"6d4248f1a08c218943e582673179b7be","url":"poster.pdf"},{"revision":"a6fcac24a24996545c039a1755af33ea","url":"read_me_off.webp"},{"revision":"aae783d064996b4322e23b092d97ea4a","url":"read_me_on.webp"},{"revision":"766a9e6e6d890f24cef252e81753b29d","url":"run_game_off.webp"},{"revision":"70208e00e9ea641e4c98699f74100db3","url":"run_game_on.webp"},{"revision":"0a65c71d9983c9bb1bc6a5f405fd6fd9","url":"shark.webp"},{"revision":"88c1fd032e6fc16814690712a26c1ede","url":"uninstall_off.webp"},{"revision":"0118a4aca04c5fb0a525bf00b001844e","url":"uninstall_on.webp"},{"revision":"ae9cf89bb78e59232bf16589adfb0cc9","url":"app.js"},{"revision":"3be62bbd2c9dbb1d15c423ebe8da7793","url":"style.css"},{"revision":"060210979e13e305510de6285e085db1","url":"manifest.json"},{"revision":"4f0172bc7007d34cebf681cc233ab57f","url":"install.webp"},{"revision":"6a70d35dadf51d2ec6e38a6202d7fb0b","url":"install.mp3"},{"revision":"eac041a0b8835bfea706d997b0b7b224","url":"downloader.js"},{"revision":"6899f72755d4e84c707b93ac54a8fb06","url":"debug.js"},{"revision":"7817b36ddda9f07797c05a0ff6cacb21","url":"debug.html"},{"revision":"4ea2aac9446188b8a588811bc593919e","url":"ogel.webp"},{"revision":"c57d24598537443c5b8276c8dd5dbdc9","url":"bonus.webp"},{"revision":"d11c8c893d5525c8842555dc2861c393","url":"callfail.webp"},{"revision":"be9a89fb567b632cf8d4661cbf8afd9e","url":"getinfo.webp"},{"revision":"fe986681f41e96631f39f3288b23e538","url":"sysinfo.webp"},{"revision":"4ec902e0b0ce60ffd9dd565c9ddf40a1","url":"send.webp"},{"revision":"81f3c8fc38b876dc2fcfeefaadad1d1b","url":"congrats.webp"},{"revision":"f906318cb87e09a819e5916676caab2e","url":"register.webp"},{"revision":"c633a7500e6f30162bf1cf4ec4e95a6d","url":"later.webp"},{"revision":"d149d5709ac00fd5e2967ab4f3d74886","url":"comic.pdf"}]); const gameFiles = [ "/LEGO/Scripts/CREDITS.SI", "/LEGO/Scripts/INTRO.SI", "/LEGO/Scripts/NOCD.SI", "/LEGO/Scripts/SNDANIM.SI",