* Add vehicle texture editing Parse and serialize Act1State textures in save files. Add a texture picker modal with default presets (from .tex files) and custom uploads persisted to IndexedDB per texture name. Quantize uploaded images against the WDB palette and render texture changes in the 3D preview. Support resetting textures to the WDB default. * Fix vehicle texture not updating when switching save slots Include slot number in the part key so that switching save slots triggers a full part reload with the new slot's textures. * Preload default textures for instant texture picker opening Fetch and parse .tex files in the background when a textured part loads, and pass the results to TexturePickerModal as a prop. The modal no longer fetches on mount, eliminating the loading delay. * Cleanup: parallel fetching, error recovery, dead code removal - Fetch .tex files in parallel with Promise.all instead of sequentially - Clear cached IndexedDB promise on rejection so subsequent calls retry - Remove unused textureOrder array from Act1State parser - Unify selectDefault/applyCustom into single applyTexture function - Remove redundant squareTexture call on already-squared wdbTexture * Add vehicle texture editor to February 2026 changelog * Fix mouseenter error on non-Element targets |
||
|---|---|---|
| .github/workflows | ||
| public | ||
| scripts | ||
| src | ||
| src-sw | ||
| .gitignore | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| vite.config.js | ||
| workbox-config.cjs | ||
isle.pizza Frontend
A custom web frontend for the Emscripten port of isle-portable, allowing LEGO Island to run directly in modern web browsers.
Requirements
Quick Start
-
Clone the repository:
git clone https://github.com/isledecomp/isle.pizza.git cd isle.pizza -
Install dependencies:
npm install -
Obtain the game files (
isle.jsandisle.wasm) by building the Emscripten version of isle-portable, then copy them to the project root. -
Set up the LEGO Island game assets:
npm run prepare:assetsThis will prompt you for the path to your LEGO Island installation or mounted ISO and create the necessary symlinks. You can also provide the path directly:
npm run prepare:assets -- -p /path/to/your/LEGO -
Start the development server:
npm run dev -
Open the URL shown in the terminal (usually
http://localhost:5173).
Scripts
| Command | Description |
|---|---|
npm run prepare:assets |
Set up LEGO Island game assets via symlinks |
npm run dev |
Start development server with hot reload |
npm run build |
Build for production (outputs to dist/) |
npm run preview |
Preview the production build locally |
Project Structure
isle.pizza/
├── src/
│ ├── App.svelte # Main application component
│ ├── app.css # Global styles
│ ├── stores.js # Svelte stores for state management
│ ├── core/ # Core modules (audio, OPFS, service worker, etc.)
│ └── lib/ # UI components
├── public/ # Static assets (images, fonts, PDFs)
├── scripts/ # Build scripts
├── src-sw/ # Service worker source
├── index.html # HTML entry point
├── isle.js # Emscripten JS (not in repo, build from isle-portable)
├── isle.wasm # Emscripten WASM (not in repo, build from isle-portable)
└── LEGO/ # Game data directory (not in repo)
Building the Game Files
The isle.js and isle.wasm files are not included in this repository. To obtain them:
- Follow the isle-portable build instructions for the Emscripten target
- Copy the resulting
isle.jsandisle.wasmto this project's root directory
Alternatively, a Docker image that bundles the runtime with this frontend is available.
Tech Stack
- Svelte 5 - UI framework
- Vite - Build tool and dev server
- Workbox - Service worker and offline support
License
See LICENSE for details.