Manual upload is the most direct way to add games to Zeno. You supply a game folder from your computer, and Zeno handles validation, transferring the files to the Service Worker, and persisting everything to IndexedDB so the game is available on every future visit.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.
Required folder structure
Every game must be a self-contained folder with anindex.html at the top level. All other assets — scripts, stylesheets, images, audio, fonts, and WASM — can be organised however you like inside the folder.
.js), CSS (.css), images (.png, .jpg, .gif, .svg, .webp), audio (.ogg, .mp3, .wav), and WebAssembly (.wasm). Relative paths in index.html work as normal.
Method 1: Drag and drop
You can drop game folders directly anywhere on the games page. Zeno accepts up to five folders in a single drop.Open the games page
Navigate to
games.html. If your library is empty, the page shows a drop target in the centre of the screen.Drag your game folder(s)
Drag one to five game folders from your file manager and drop them onto the page. A bulk drop zone auto-fills multiple slots from a single drag operation.
Method 2: ADD GAMES modal
The ADD GAMES button in the top bar opens a modal with a FOLDERS tab that gives you explicit control over each upload slot.Open the modal
Click ADD GAMES in the top bar, or press the button in the empty-state screen. The modal opens on the FOLDERS tab by default.
Drop or browse for folders
The drop zone in the modal accepts folders by drag and drop or by clicking to open a system file picker. The picker supports
webkitdirectory selection so you can choose an entire folder.Review queued folders
Selected folders appear as pills below the drop zone, each showing the folder name. You can remove individual folders by clicking the × on each pill, or clear all with the CLEAR button.
What happens after upload
Once you confirm the upload, Zeno processes each folder in sequence:- File buffers are read — every file in the folder is read into an
ArrayBuffer. - Registration message sent — Zeno sends a
REGISTER_GAMEmessage to the Service Worker viapostMessage, transferring all file buffers and their paths and MIME types. - SW confirms registration — the Service Worker responds with
GAME_REGISTERED, confirming the files are in its in-memory store and ready to serve at/zeno-games/{gameId}/. - Saved to IndexedDB — the game record (name, icon, and all
Fileobjects) is written to thezeno-games-dbIndexedDB database so the library persists across page reloads. - Card appears in the grid — the new game card is rendered immediately in the library.
File buffers are always cloned (
.slice(0)) before being transferred to the Service Worker. The originals remain in memory so they can be re-sent if the SW restarts — see Playing games for details.