Chef Shared Loader - Updates

  • Credit Cards Now Supported!

    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.


    Get Premium & Support Us

PC Chef Shared Loader 1.5.0

Updates for Helldivers 2
  • Switching a mod in F9 works in the same launch. A mod with no on_stop that you switch off is paused: what it changed or spawned stays, and switched back on, the same copy carries on when the menu closes. A mod with on_stop, or one that was off at launch, starts when the menu closes, when it can.
  • CRASH RECOVERY's Try again now restarts a mod in the same launch. A crash-guarded mod shows CRASH GUARD in the menu.
  • Works beside Rat's Shared Loader in either deploy order, and only the mods marked for it are left to it. They show a read-only row in F9, and mods from one patch file share a row.
  • With Rat's Shared Loader on top, a crash in a mod's start no longer gets this loader blocked by it.
  • Saved data survives more: unusual bytes in saved values and tables come back as they were, a table that saves always loads, a settings file that can't be read at launch isn't replaced, a switch-off survives a package gaining a mod or a crash in the mod's stop, and a log that can't open no longer moves a launch's files.
  • The crash guard learns from crashes in after_startup, event listeners, on_change, buttons, timers and spreads, each by where its code sits, and in the unit lookup, so a skip takes that place alone. A locked state or trace file no longer loses a crash or blames a working mod.
  • The hang watchdog catches loops it used to miss, such as a mod that keeps calling the loader's helpers or spends nearly all its time in a listener it fires, and an options file with an endless loop no longer freezes the launch.
  • A unit kept from an earlier world stays refused in every later world, even if nothing asked about it in between. (thanks sscoolqaz)
  • For mod authors: a chef helper handed a unit from a world that's gone now says so in the log, once per mod for each helper. chef.unit_alive stays quiet, so checking a unit first is still the clean way. (thanks sscoolqaz)
  • Fixes across the options menu, the performance monitor, language files, boot-style mods and the packing tools.
  • For mod authors: chef.watch hands back a small handle: items, generation, active (now documented), pause, resume, refresh and stop. w.a, w.next and w.kinds are gone from it; keep your own kinds table.
  • For mod authors: option specs are copied when you register a row, so editing a label or a list afterward doesn't change the row. A label or choice given as a function stays live.
  • Fixed: the HD2 Lua Runtime look-alike could end the game putting back a material a mod had replaced, using an id kept from earlier.
  • Like
Reactions: blapblap
  • 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.
  • Like
Reactions: blapblap
  • 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.
  • Like
Reactions: blapblap
  • 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.
  • Like
Reactions: Rojomojo
  • 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.
  • Like
Reactions: Vhuz and blapblap
  • 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.
  • Like
Reactions: blapblap
  • 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.
  • Like
Reactions: blapblap
  • 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.
  • Like
Reactions: Rojomojo and Flexer
  • 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.