Improvements

This commit is contained in:
Christian Semmler 2026-01-04 16:05:21 -07:00
parent 96097a01bc
commit 17eefb0be6
No known key found for this signature in database
GPG Key ID: 086DAA1360BEEE5C
4 changed files with 46 additions and 25 deletions

15
app.js
View File

@ -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);
}
});
}

View File

@ -12,7 +12,7 @@
<link rel="preload" href="isle.wasm" as="fetch" crossorigin>
<link rel="preload" href="install.webp" as="image">
<link rel="preload" href="island.webp" as="image">
<link rel="preload" href="bonus.webp" as="image">
<link rel="preload" href="bonus.webp" as="image">
<meta name="description"
content="Play the classic 1997 PC game LEGO® Island directly in your web browser! This fan-made web port, built with Emscripten from the isledecomp project, brings the beloved adventure back to life.">
@ -370,7 +370,8 @@
<div class="tab-panel" id="tab-manual">
<div class="manual-container">
<iframe src="comic.pdf" class="manual-pdf" title="LEGO Island Instruction Manual"></iframe>
<p class="manual-description">The original 15-page instruction manual from the 1997 CD-ROM release.</p>
<a href="comic.pdf" target="_blank" rel="noopener" class="manual-open-btn">Open Manual in New Tab</a>
</div>
</div>
@ -847,7 +848,7 @@
</div>
<div class="app-footer">
<p>Last updated: <span id="app-version">2026-01-04 22:40:07 UTC</span></p>
<p>Last updated: <span id="app-version">2026-01-04 22:56:00 UTC</span></p>
</div>
</div>

View File

@ -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 */

2
sw.js
View File

@ -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",