Packaging & Maple Market

Maple Market now supports two install formats for developers: a stable self-contained HTML bundle and a package-based .mpak flow for multi-file web apps and packaged WASM modules.

HTML bundles are still the simplest option when everything can live in one file. If your app needs multiple files or a packaged WASM entry, upload a ZIP renamed to .mpak with a root manifest.

In both cases, users still get the same MapleOS experience: Download → install into VFS → open now. No restart should be required.

Upload today

Upload one self-contained HTML file for single-file apps, or upload one .mpak package for multi-file web/JS and WASM apps.

WASM today

Inline WASM still works inside a single HTML bundle, and packaged WASM modules now use manifest.entry.wasm inside .mpak uploads.

Required manifest

Every .mpak must include a root manifest.json with name, version, type, loader, and entry.

Install experience

Download writes files into VFS, dispatches a file-system update, and hot-loads the app without restart.

Which file should I upload?

Pick the format that matches how your app is built.

Single-file HTML bundle

  • • Upload one index.html file.
  • • Inline CSS, JS, images, fonts, and icons.
  • • If you use WASM here, embed the compiled bytes directly into the HTML.
  • • Maple Market generates the install manifest for this format.

.mpak package

  • • Zip your app, rename it to .mpak, and upload that file.
  • • Put manifest.json at the package root.
  • • Use it for multi-file web/JS apps and packaged WASM modules.
  • • MapleOS unpacks the files and launches by manifest type.

Web HTML bundle

Supported now

Best for self-contained apps that can ship in one HTML file.

HTML bundle with inline WASM

Supported now

Use this when you want a single-file web app but still need WASM.

.mpak package

Supported now

Use this for multi-file web/JS apps or packaged WASM modules with a root manifest.

Manifest basics

MapleOS apps are manifest-driven. HTML bundles still get an installer-generated manifest. Every .mpak must include its own root manifest.

Installer-generated HTML bundle manifest

{
  "type": "web",
  "loader": "bundle",
  "entry": { "html": "index.html" },
  "assets": "vfs://app/"
}

Required .mpak web manifest

{
  "name": "My Web App",
  "version": "1.0.0",
  "type": "web",
  "loader": "package",
  "entry": { "html": "index.html" }
}

Required .mpak WASM manifest

{
  "name": "My WASM Module",
  "version": "1.0.0",
  "type": "wasm",
  "loader": "package",
  "entry": { "wasm": "build/module.wasm" }
}

What happens when a user clicks Download?

Both delivery formats preserve the no-restart install/open flow.

  1. 1. Maple Market resolves a signed URL. MapleOS downloads either HTML text or .mpak archive bytes.
  2. 2. MapleOS creates a module folder. The install target is C:\Program Files\Modules\<App Name>.
  3. 3. MapleOS writes app files. HTML bundles write manifest.json and index.html; .mpak installs unpack all files and preserve their manifest.
  4. 4. The file system announces the change. MapleOS dispatches a file-system update event so the runtime sees the new app immediately.
  5. 5. The app opens right away. type: "web" launches the web runtime and type: "wasm" launches ModuleHost.

How hot-loading works

MapleOS behaves like a hot-loading desktop for marketplace installs. The installer writes into the virtual file system, notifies the system that files changed, and opens the app immediately.

For developers, the expected experience is still: Download → install into VFS → open app now.