A Windows XP-style desktop for playing classic browser games with Ruffle, js-dos, ScummVM, and embedded web runtimes.
- Authentic Windows XP shell, Explorer, Notepad, themes, and display settings
- Draggable game windows, task switching, fullscreen, and volume controls
- Favorites, recently played games, categories, search, and deep links
- Automatic offline support with optional per-game downloads
- Internet Games catalog backed by Flashpoint Archive
Install dependencies and run the checks:
bun install --frozen-lockfile
bun run quality
bun run testBuild and serve the production site locally:
bun run devOpen http://127.0.0.1:8000. The development server also provides the local
/api/games proxy used by Internet Games. It builds automatically when source
files change and starts immediately when dist/ is already current. Use
bun run dev -- --rebuild to force a rebuild or --no-sync to serve the
existing output unchanged.
site/— authored static siteworker/— Cloudflare Worker for the Internet Games catalogtools/— build, validation, and asset maintenance scriptstests/— Bun/TypeScript testsdist/— generated production build; ignored by Git
Included games are defined in site/js/games.js. Ruffle games use type: "swf";
embedded HTML5, js-dos, ScummVM, and reVCDOS games use type: "iframe".
The Windows XP shell is cached automatically. Included games can be downloaded individually or all at once from Settings > Offline. The shared Ruffle and ScummVM runtimes are downloaded only when needed.
Games installed through Internet Games are stored separately in IndexedDB and Cache Storage. GameZIP titles are installed fully; Legacy titles cache additional files as they are requested.
Pushes to main run tests, build the site, deploy and smoke-test the Cloudflare
Worker, and then publish to GitHub Pages. Pull requests run the same validation
without deploying.
The repository requires these GitHub Actions secrets:
CLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_TOKEN
The API token needs Workers Scripts: Edit for the account and Workers
Routes: Edit for the 4st.li zone.
Deploy the Worker manually with:
bun run deploy:workerRuffle is pinned in tools/ruffle-release.json. A weekly workflow checks for
new stable releases and opens a reviewable pull request.
Test game compatibility, controls, frame rate, and categorization before
submitting a pull request. Run bun run quality && bun run test before pushing.