ModLoader Installer for SugarCube
Add ModLoader and its standard mods to a SugarCube 2 game in a few clicks.
Your original game file is never touched.
| File | Notes | |
|---|---|---|
| Installer | MIFS-Setup-<version>.exe |
Per user, no admin rights needed |
| Portable | MIFS-<version>-portable.exe |
Run from anywhere, nothing installed |
Note
Builds are unsigned, so Windows SmartScreen warns on first run: choose More info → Run anyway.
MIFS updates itself when a new release is published.
- Three-step wizard: pick a loader, pick your game file, install.
- Safe by design: a new
.mod.htmlis written next to your game; the original is never modified. - Always current: a catalog of ready-made ModLoader bundles, rebuilt automatically when upstream publishes a new version.
- Update detection: MIFS tells you when a newer build with different content is available.
- Themes: Interstellar and Lilypad, with optional 3D backdrops.
| Choose a loader | Choose a game |
|---|---|
![]() |
![]() |
| Create your game | Done |
![]() |
![]() |
| Game | Status |
|---|---|
| Degrees of Lewdity (vanilla) | Supported (compiled from source, needs Git) |
| Degrees of Lewdity Plus | Supported |
| DoL X-Change | Supported |
| More SugarCube 2 games | Planned |
MIFS only produces the modded HTML. Game images and audio are not handled; keep the resource folders next to the file, as the game already expects.
flowchart LR
A[Pick loader<br/>from catalog] --> B[Pick game<br/>HTML file]
B --> C[Patch + inject<br/>ModLoader and mods]
C --> D[(Game.mod.html)]
U[Upstream release] -. weekly check .-> CI[CI builds bundle] -. publishes .-> A
Repository layout
| Package | Contents |
|---|---|
packages/core |
Patch and inject logic, manifest parsing, dependency resolution. No runtime dependencies on Node or the browser. |
packages/ui |
React + Tailwind UI, the Platform interface it talks to, and a mock platform |
packages/desktop |
Electron app: main process services, sandboxed preload, installer packaging |
bundle/ |
Scripts that build a loader bundle (BeforeSC2.js, mods, licenses, manifest.json) |
Commands
npm install
npm run dev # Electron app with hot reload
npm run dev:ui # UI in a browser against the mock platform (http://localhost:5199)
npm run typecheck
npm test # core unit tests; conformance tests need ../modloader-lab built
npm run e2e # drives the built Electron app; needs a bundle in bundle/dist
npm run dist -w @mifs/desktop # installer + portable exe -> packages/desktop/release/Bundles and the catalog (CI)
- Build ModLoader bundle (
build-bundle.yml, manual): builds any ModLoader repo and ref, publishes it as a release (loader-<id>) and updates thecatalogrelease. Forks are published as pre-releases. - Check upstream for new releases (
check-upstream.yml, Mondays 06:17 UTC or manual): builds officialx.y.ztags newer than the newest published upstream bundle (at most 2 per run). - Notify on CI failure (
notify-failure.yml): opens aci-failureissue when either workflow fails and closes it when the same job succeeds. - Mod list: each ref is built with its own
modList.json;bundle/mods.jsonis the fallback.
Packaging
- Output:
MIFS-Setup-<version>.exe(NSIS) andMIFS-<version>-portable.exe. - electron-vite bundles everything, so no
node_modulesship. Electron is pinned to an exact version. - User data (bundles, downloaded games, logs) is in
%APPDATA%\MIFS.
PolyForm Noncommercial 1.0.0: free to use, modify and share for noncommercial purposes. Selling it or using it commercially needs the author's permission. ModLoader and the bundled mods keep their own licenses.
MIFS is free. If it is useful to you, you can support it on Ko-fi:



