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.
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).
A mod whose own update, render or shutdown ends the game is now blamed and kept off at the next launch.
One mod's error can no longer stop the other mods; shutdown always saves settings and the clean marker.
A mod's bad number (NaN, infinity) or huge shape can no longer hide the loader's menu or freeze the game.
A same-size hotfix of a crashed mod now turns it back on, and what 1.0.0 learned about crashes carries over.
Each mod gets its own sealed Bingus and Mod Options Menu look-alikes, file handles and boot environments are locked, and saved tables have one file per mod and table (old files move over once).
Settings, the crash state and saved tables are written safely, so a full or locked disk no longer wipes them; saved strings with backslashes come back intact.
Fixes: HD2-Requires: lines without a version, a stray mission end mid-mission, slider snapping, a menu key that could be set to none, chef.title after chef.option, upper-case key names, and the performance monitor's per-mod counts.
Faster: the menu costs less than half as much, the performance monitor about a third, and drawing, unit scans and guarded calls are quicker.
The full list is in CHANGELOG.md on GitHub. Keep it at the highest priority in your mod manager.