Launching a game in Zeno is a single click. Behind the scenes, Zeno checks whether the Service Worker still has the game’s files before the iframe loads — and silently re-registers them if it doesn’t. This makes Service Worker restarts invisible to the player.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/xXmizzeryXx/zenodeployment/llms.txt
Use this file to discover all available pages before exploring further.
Launching a game
Click any game card in the library grid. Zeno opens a fullscreen modal containing an iframe and begins the launch sequence immediately. You can also launch a game from:- The RECENTLY PLAYED row at the top of the page — click any chip.
- The keyboard launcher — press
/, type to filter, and press Enter. - The game info sidebar — click the PLAY button at the bottom.
The game modal
The modal fills most of the viewport and contains a slim header bar and the game iframe.| Control | Action |
|---|---|
| Expand icon (header) | Toggle browser fullscreen mode |
| × button (header) | Close the modal |
| Click outside the modal | Close the modal |
On mobile, you can swipe down on the backdrop to close the modal.
load event, indicating the game’s index.html has been received and parsed.
Service Worker health check
Before setting the iframesrc, Zeno sends a PING_GAME message to the Service Worker with the game’s ID. The SW checks whether any file for that game ID is present in its in-memory fileStore.
GAME_MISSING — automatic re-registration
The SW was restarted (the browser killed it to save memory) and the in-memory store is empty. Zeno reads the
File objects stored in the in-memory games array, clones each buffer with .slice(0), and sends a REGISTER_GAME message to re-populate the SW’s store. Once the SW responds with GAME_REGISTERED, the iframe loads normally.File buffers are always cloned before transfer so the originals in
fileRecords remain intact. This means a game can be re-registered as many times as needed across a single browser session without losing the source data.Why SW restarts happen
Service Workers are ephemeral. Browsers can terminate an idle SW at any time to reclaim memory — this is standard behaviour in Chrome, Edge, Firefox, and Safari. When the SW restarts, itsfileStore (a plain JavaScript Map) is empty. Without Zeno’s health-check logic, every game launch after an SW restart would result in 404 errors. The PING_GAME / GAME_MISSING flow makes this transparent: the player sees a brief extra load delay at most.
R2 games
R2-imported games skip the SW health check entirely. When you click an R2 game card, Zeno sets the iframesrc directly to the stored R2 URL. Because R2 games are served from Cloudflare’s CDN rather than the SW, they are unaffected by SW restarts and load without any pre-flight check.