3.4.0 (2026-08-10)
Bug Fixes
- Disable JIT by default in all plugin backends. LuaJIT compilation hasn't fully matured. (63bd9f0)
- Fix button spacing in Millennium settings (b8a7f25)
- fix ephemeral MEP handler threads tying to the forked plugin thread, killing it (sig 15) before it could restart (1dac316)
- Fix patcher not applying to Steams small mode (74ae9d6)
- infinite loading after 2026-07-24 steam beta (e3c4462)
- logger: restore file write guard under !onlyBuffer for log, warn, and error (4feb38b)
- loopback: catch panics at the FFI boundary instead of aborting the process (ae8ca0b)
- loopback: escape literal $ and convert \0 backreference in regex rewrite conversion (3b6e2c2)
- loopback: restore macOS build guard, hook-null check, and deferred-open handling lost in CEF hook refactor (c47c1ba)
- loopback: rewrite classList.toggle/contains for reclassed multi-token values (ffd36dc)
- lua-host: avoid disarming PDEATHSIG globally on ephemeral fork threads (c188958)
- lua-host: cap shim_len allocation, use 1-result pcall, guard lua_name_from_path components (c85a68c)
- lua-host: consume nested out-of-order calls (42d2f42)
- lua-host: fix deadlock and CPU spin on IPC disconnect (729b9b4)
- parity: fix rolling hash that was content-independent due to algebraic cancellation (efe3a7f)
- PKGBUILD: add rust as a dependency (12101eb)
- plugins: recreate isolated CDP worlds after frontend reload completes (3b55364)
- plugins: unregister virtual resources for disabled plugins (f10c053)
- reclass: Add stricter class patching. Fixes BPM, and missing "Activity" button (3bc3d53)
- SDK: Fix API returning both obfuscated and internal class names when only obfuscated class names are expected. (6adc934)
- star_parser: compute Ed25519 boundary from section table, not buffer size (503e668)
- star_parser: guard metadata id/name type before getstd::string() (9018d01)
- star-parser: prevent 32-bit size_t overflow in section bounds checks and shim_len parsing (4866793)
- star: guard against integer overflow in decompression and sub-entry parsing (c7d4295)
- starlight: add starlight label to build_error output with correct padding (edba67d)
- starlight: allow // comments between /** @ffi */ and its declaration (6b6eb5b)
- starlight: cap frame body allocation before reading from socket (94b5e81)
- starlight: embed public key constant in get_verifying_key_bytes instead of deriving from private key (243b18d)
- starlight: fix rolling hash algebraic cancellation in parity verifier (2fa0dd8)
- starlight: preserve long-string whitespace and fix escaped-quote handling (f0e02fa)
- starlight: register variable binding names in FFI reachability check (8303f50)
- starlight: surface missing/invalid webkit-exports.json instead of silently skipping checks (9be133c)
- starlight: widen parity block_index from u16 to u32, update overhead to 12 bytes (b40ebd4)
- Steam crashing when updating Millennium on slower internet connections (1b59be3)
- Use data-condition attr instead of classes for theme conditions (cd9ace8)
- windows: Ensure all plugin backends die alongside Seam when shutting down. Closes #822 (b0e7844)
- windows: fix drain thread race and attr list teardown (f0ee4c3)
- windows: include loopback patcher IPC handles in PROC_THREAD_ATTRIBUTE_HANDLE_LIST (ceed479)
- windows: restrict steamwebhelper handle inheritance to CDP pipe ends only. Closes #807 (f1407b6)
- windows: use BCrypt for Ed25519 verification instead of OpenSSL (677cdc0)
Features
- add V2 plugin logging support in Millennium Settings -> Logs (caf527a)
- locales: translate network/proxy settings to Russian (7451a15)
- patcher: Syntax check patches dropping and blaming invalid plugin patches incrementally. (937d52b)
- reclass: Re-class tersed chunk classes, re-allowing themes to use stable, native selectors (dba5f9c)