2.31.0 (2025-12-19)
Bug Fixes
- Add maybe unused to unused parameter in GetThemeFromGitPair (a9f85e0)
- beta fixes (30af27d)
- Compile Millennium as 64 bit instead of 32 bit to support the new (eeeb6e2)
- Fix "Browse local files" buttons not working on plugins page (06d8837)
- Fix ALT+M not opening Millennium dev tools (2108146)
- fix checksums having incorrect relative file paths (976be41)
- fix CI (1aa643d)
- Fix config migration importing core plugin when it doesn't exist anymore (eafcea0)
- Fix crash on 32bit Millennium when shutting down when plugins are loaded. (89566aa)
- Fix enabled plugin migration from older versions of Millennium (12ed24e)
- Fix hhx64 causing Steam to hang when a connection cannot be established to Millennium (29dc038)
- Fix Millennium 32bit hanging on Steam exit when plugins are loaded. (b57f5ae)
- Fix Millennium 32bit not working when not in developer mode. (62e1829)
- Fix Millennium library not properly showing empty state (fbfdbb1)
- Fix Millennium shutdown crash when user has only 1 running python plugin (807a3ee)
- Fix millennium updater (I forgot to remove development paths) (e3fb0ac)
- Fix Millennium updater crashing when user didn't have auto updates enabled (43241ff)
- Fix Millennium updater failing entirely if a file fails to extract. (610df40)
- Fix Python env paths on 64bit (bb30903)
- Fix Quick CSS not being added to browser views (217988c)
- Fix theme and plugin updater not removing items after they've been updated. (cc94354)
- Fix theme conditionals not properly being evaluated on browser views (a73daeb)
- Fix theme config not generating when a theme was just freshly (3e73210)
- Fix theme editor not prompting user to reload the UI, forcing them to fully restart Steam to see changes (3e33282)
- Fix theme editor react error 130 (8c5821a)
- Fix theme installer erroring when changing the selected theme (1910f47)
- Fix theme installer reporting installed failed even though it didn't (86a5cfd)
- Fix updates not showing when updates are available (f00e351)
- Fix usage of wrong Steam path when Steam is installed outside of the default directory. (f7a0be7)
- Fix YouTube Embed not working. closes #544 (fad63cc)
- Hopefully fix issues where theme installer gets stuck (2c3c841)
- Linux build fixes (7175a02)
- Lua & Python: Fix various shutdown crashes and issues when disabling some plugins (85f3574)
- Move Millennium filesystem around to work when updating from Millennium 2.30.0 (f2abe5a)
- nix: ensure git exists in the steam fhsenv (d86a58c)
- nix: fix assets.nix path and add auto-update workflow (d7d11e8)
- Only allow environment variable overwrites on Linux. This fixes Millennium not properly updating env vars if they are changed between updates. (4915025)
- Properly restore SharedJSContext when updating from Millennium 2.30.0 (e9ce764)
- Properly update user32.dll when updating from Millennium 2.30.0 (4877829)
- remove trailing comma on updates page (a5d2dc9)
- semantic-release: Use alpha channel on staging branch (d2fecf5)
- use sha256sum instead of openssl for easier verification from the (9918f34)
Features
- Add "Update Channel" Setting to Millennium Settings, allowing Millennium to auto update to latest beta releases (202ca5d)
- Add back plugin config pages, and move theme editor into sidebar. (9acc0d0)
- add global CSP and CORS bypass for frontend client and frontend (53631ed)
- Add Lua (Lua JIT) backend support. If all goes well python support will eventually be deprecated and dropped in favor of Lua. (ae3a753)
- Add more functions to the utils module, add filesystem module, and add regex module for Lua plugins (9383403)
- Add Quick CSS tab to Millennium Settings (e42273d)
- add release checksum and total install size (after extract) (f7ccaea)
- Allow users to overwrite Millennium env vars by starting Steam with them already set. (7b38d5e)
- Better hook method into Steam Client. Millennium now loads into process memory before Steam even starts. This allows a new change: IO blocking with Millennium, and
CreateSimpleProcesshooks that allow us to virtually enable and change the port of the CEF remote debugger without interfacing with Steam or writing.cef-enable-remote-debuggingto disk. Port selection remains as 8080 when-devis provided but is randomized when running normally for better security and compatibility with other software needing port 8080. (c5c0cf4) - Enable Ukrainian localization support (6beb664)
- Hook & no-op ReadDirectoryChangesW on 32 bit Millennium (d01047b)
- Let plugins hook and overwrite steams internal javascript it (c90a682)
- linux: Moved CEF remote debugger logic entirely to memory, the (dda79e5)
- Log config errors if Millennium fails to read or parse the config file (cc8e9df)
- lua: add cmp_version() to millennium api, allowing you to compare (3048f42)
- Lua: Add datetime module (78876d5)
- move sdk from submodule to direct source (3d8aa30)
- Run Millennium updater as early as possible to prevent potential startup bugs causing Millennium to crash, leaving it in a unrecoverable state (4b516ce)
- Slightly rework UI for better experience (4332e63)