Help keep AyakaMods servers running. You can now purchase Premium securely using credit cards via Patreon.
🔥 Lifetime Premium is available for a limited time! Offer Expires November 9th, 2026.
- A single launch that ends without a clean shutdown no longer blames a mod: closing the game from Task Manager looks just like a crash. A call is skipped, and counted against its mod, only when the next launch ends in it too.
- Works beside a loader that bundles the HD2 Lua Runtime: when that loader hands off to this one, the mods that name the runtime as a requirement are left to it, which runs them on the real runtime; deployed above it, this loader runs them itself. The log and chef_loader_health.txt say which.
- Run by another loader that handed off to it, the loader names that loader in the log and the health file, and the hang watchdog stays on: it takes the host's debug hook during the loader's own calls and gives it back after.
- Older log sessions are kept: when chef_loader.log starts fresh, its launches move to chef_loader.old.log (the newest whole launches within 4 MB).
- The log has a line when the mouse goes back to the game (once, however often a mod holds and lets go), and a mod can't take the mouse while the game closes.
- Lower cost a frame: faster text, chef.call, camera, lines, sprite sheets and triangles, HD2 Lua Runtime unit reads, options menu and performance monitor. The game's settings file is read every 90 s, not 30.
- Removed from the HD2 Lua Runtime look-alike: the live palette and cape calls, the inbox views, and the files and patches requests. Mods built on them run on their own runtime's loader.
- For mod authors: put -- HD2-Requires: chef-shared-loader in every addon that uses chef, so another loader deployed above this one leaves it alone.
- Fixed: a unit kept from an earlier world could pass as usable again two worlds later and end the game. It now stays refused as long as a mod keeps asking about it. (thanks sscoolqaz)
- Fixed: colors with channels that weren't whole numbers could be drawn as another color, and one mod's bad color could slow every mod's bitmaps or turn every mod's triangles into rects for the session.
- A hang watchdog: a mod's call that runs on for more than 3 seconds (an endless loop; 10 seconds for its start) is stopped and the mod switched off for the session, so a stuck mod no longer freezes the game for good. Other mods' boot scripts are watched too while they load and run. It can't stop a stuck engine call.
- CRASH RECOVERY (F9 > Chef Shared Loader) lists the mods the crash guard holds back, each with a "Try again next launch" button, so deleting chef_loader_state.txt by hand is no longer the only way.
- Every mod has an on/off switch at the top of its options, mods without options included (they're listed now): off stops the mod at once and it stays off; on again, it starts again the next time you launch the game.
- Each mod's title bar in the menu says how it's doing: running, off, kept off, stopped or not started (and why), its start's time and memory, and its last error. A screenshot of it makes a good bug report.
- No loader mod can make the game write files, change or save its settings, open a browser or run console commands any more, and chef.call says why when it refuses one.
- No loader mod can read other mods' saved data, the loader's own files or logs it didn't write, or load code under the loader's or another mod's name.
- While the options menu is open, mods' hotkeys stay quiet, so typing a search never fires one.
- Richer options for mods: buttons, colors (a palette with a swatch), headings, and a hint for the selected row. Key bindings take combos (Ctrl+Shift+F6) and controller buttons, and the menu captures both.
- The options menu, reworked: the arrow keys do everything (no Enter, which also opened the game's chat), long mods' options fold under their headings, the compact menu moves out of the performance monitor's way and its hint line follows keys, mouse or controller, and the menu's colors now look as designed in game. Its cursor hides while you use a controller.
- For mods: a shared mouse hold that always gives the camera back (when the last mod lets go, when a mod holding it stops, when the game closes), new menu, mod_stopped and players events, chef.ray_box, and chef.capture (a screenshot the loader saves itself, for trusted mods it's granted to).
- For mod authors: type stubs for editor autocomplete (docs/types/chef.lua), a simulator that runs a mod without the game (tools/modsim/), and docs/TESTING.md on both.
- Each mod's start is measured: its time and the Lua memory it added, in the log, chef_loader_health.txt (two new columns) and chef.mods().
- The "Game patch files" switch is gone: a trusted mod that builds game patch files can't work without them, so they're now part of its permission. Every file it writes is still checked.
- When a file-mod installer mod is still deployed while Medic File Mod Merger manages the game's settings files, the log and a notice say so.
- For mods: chef.save refuses opt. keys (the options menu's own), and chef.own_log takes 8 names and 4 MB a launch at most.
- Docs: how a mod gets on the trusted list (docs/MODDING.md), and a continuation clause in the LICENSE (what happens if the loader goes 3 months without a release).
- Fixed: chef.players() counted a peer list keyed by peer id as 1 player; a chef.bitmap could flicker into a white square after another mod drew a lot; world lines (chef.line) stayed on screen after a mod stopped drawing them.
- Fixed: a chef.notify with a bad color broke every notice for the session; a letter menu key closed the menu while you typed it in a search; sliders with a step of 1 or more showed rounded values; a saved choice a mod no longer has fell back to the first choice, not the default; chef.bind(nil) raised an error.
- Fixed: chef.wheel, chef.cursor and chef.mouse_down stayed dead for the session when asked in the first frames; the crash guard could blame the wrong job after a long session; after an update, the loader kept reading the old version from its state file, so a crash on one kind of unit was never refused for every mod.
- Mods are no longer cut off when the game runs below your monitor's resolution in Borderless (Resolution 1920x1080 on a 1440p monitor, say): the loader compares the game's render size with the window's and draws in the UI world, as it already did for a Render Scale below native.
- A mod updated after it crashed the game, but before the next launch, is no longer blamed for that crash: the crash counts against the file that was running, so the update is a change and its skipped calls are tried again.
- chef_loader.log names the options menu's key at every start, with how to change it without the menu, and the status lines repeat it until the menu has opened once that launch. If F9 does nothing (a laptop's F keys, or an app with an F9 hotkey), try Fn+F9 or pick another key.
- A mod that crashes the game stays on: the call that crashed is skipped, and the mod is turned off only when it ends 3 launches in a row. An update of the mod tries its skipped calls again. A mod that crashes the game while it starts still isn't started again until it's updated.
- A mod turned off after a crash comes back on when it's updated, and now the calls of its that crashed are tried again too.
- A call on one kind of unit, made with only the unit, that ended the game for one mod is now refused for every mod. An update of the loader or of the game tries it again.
- Trusted mods can build much bigger game patch files (up to 2,097,152 rows), and the log says why a patch file too big for mods isn't read.
- Mods made for the HD2 Lua Runtime can list what they need and ask for access before they use it; what the loader lacks is named in the log, a notice and chef_loader_health.txt.
- HD2 Lua Runtime mods get that runtime's live palette material calls: a mod can recolor its own copies, and the game's medium cape, during play.
- Inboxes: a trusted mod can take plain data from any mod. Calls made before it's ready are held for it (16 per mod and call) and made once it is.
- For language file makers: two new notices that start with a mod's name.
- New option Monitor opacity (%): make the performance monitor see-through, down to 10.
- Monitor on pause screen only is now Off, Missions or Always: Always keeps the monitor hidden on the ship too, until the pause screen is up.
- New option Menu opacity % (Compact look): make the compact F9 panel see-through, down to 30.
- The loader's own options are grouped under Menu (with Compact look and Controls) and Performance (with Monitor look).
- The Game font option is gone: the game's font is always used once it's loaded, with the pixel font as the fallback.
- Small missions count as missions: the loader tells a mission from the ship by the world's level count instead of its size, so mods that only run in missions start in every one (some missions, bots on Trivial for example, are smaller than a well-upgraded ship).
- The F9 menu tells the ship the same way, so a big ship no longer counts as a mission for its mouse and full-screen layout.
- The menu's hint line shows each key as a light chip with what it does, in white; when it's short of room, whole pairs drop, never a key without its word. Language files translate each key and word on its own.
- Mods' hotkeys don't fire while the menu is open: typing a search no longer switches a mod's light on and off.
- Chef Shared Loader's own entry is first in the list of mods; the mods follow in alphabetical order.
- In the compact panel, opening a mod or going back draws the new screen in the same frame: the hint line no longer jumps.
- On the pause screen, the menu's cursor sits on the game's own cursor.
- Search: Delete erases too, and / again leaves a search, like Escape.
- Performance monitor: two more positions, Adjustable (drag it by its title bar on the pause screen, or on the ship with the F9 menu's cursor) and Center, and a new row, Missions: monitor on pause screen only.
- More mods run: a mod may read every field of a game object at once (DRIVER HUD finds your vehicle), behind a crash guard that keeps a crash in it from repeating.
- On the ship, while the full screen menu has the mouse, the camera no longer turns with it: the mouse only moves the menu's cursor, and the camera gets it back the moment the menu closes.
- Going back a step in the menu (right click, Backspace, circle/B) no longer flashes the menu for a frame.
- Performance monitor: Budget (ms), 1 ms by default, marks the mods over it in orange; a new row, Hide mods under N ms (N follows the budget), puts the rest on one line so the heavy ones stand out.
- More mods made for Boot Mod Loader run: mods that look for Lua's own functions before they hook the game now start their update.
- Mods may read their teammates' objects and find a unit's game object (lasers on teammates' sentries, for example); nothing that changes what other players see.
- Mods may keep their own crash notes (.marker and .fatal files) in the loader's folder.
- Lockdown fixes: a mod that cleared one of its own names (io, os, require ...) found the game's own behind it, and the game's lower case globals were shared between mods; now each mod gets its own.
- Works beside other mod loaders: the loader's boot is now a small start-up stub that any mod may carry unchanged, so whichever copy the game runs, every loader mod keeps running.
- The options menu, the performance monitor and the loader's notices draw over the game's HUD, map, terminals and Esc menu.
- A full screen options menu on the ship (the compact panel stays in missions), with controller and mouse support.
- The loader's own options are grouped under Menu, Performance and Permissions; new rows for the menu's and the monitor's position.
- Boot Mod Loader's and Bingus Shared Loader v21's boot scripts are named in the log and on screen and not run; their mods run here, and a mod another loader already started isn't started twice.
- Mods made for those loaders get more of their calls (on_update, on_shutdown, modules, ModBindingsMenu, BingusRuntime, Mod Options Menu headings and saved values).
- A mod's log or settings kept straight in %LOCALAPPDATA% are kept in the loader's folder instead (settings saved there before are still read); .ini files are allowed.
- Language files: one file translates the loader's menu, monitor and notices and every mod's text; pick it in F9 > Chef Shared Loader > Language. Texts with no entry yet are listed for translators.
- UTF-8 (Chinese and other) text in the game's font is kept whole, measured whole and never cut in the middle.
- Fixes: the F9 key could stay dead for a session, the backup font could stay on after the HUD font loaded, and texts could stay on screen after the title screen restarted.
- Mods made for the HD2 Lua Runtime run on a built-in stand-in for it, crash-guarded and cleaned up like every other mod; the HD2 Lua Runtime itself isn't needed.
- Trusted mods: a short list in the loader gives a named mod a little more than the lockdown, only what it needs (its own Steam lobby key, its own save folder, or game patch files once you turn on its "Game patch files" row in F9).
- Every game patch file a mod places is checked first: it can't replace the game's boot script, and any Lua in it must be comments only.
- Tighter lockdown for every mod: no native code, network, lobbies or writes to what other players see, in stingray and the globals too.
- Boot scripts that wrap the game's update no longer stall the loader; chef.mods() and chef_loader_health.txt say why a mod isn't running; chef.index() tells which mod's copy of a resource the game loads (HD2-Exclusive / HD2-Fallback).
- Text in the game's own font: the F9 menu, the performance monitor, notices and mods' chef.text use FSSinclair Medium, the HUD's font. Kept between frames and only changed when it changes, so the monitor costs about a tenth of before. The pixel font stays as the fallback (F9: Game font).
- Mods written for Bingus Shared Loader that hook in the old way (replacing update) now run, and a mod that needs ffi gets a log line saying why it can't work since 7.2.0 (with any loader).
- For mod authors: a mod's own require serves its package.preload, a mod file may return true, and Lua resources in envelope 1 are read too.
- License: other mod authors may copy and adapt parts of the loader's code to call its functions or work with it, with a credit line (see LICENSE).