* Update bug-reports.yml
* Fix modifyChatMessage hook
* Add LuaCsSetup.Lua back for compatibility
* Fix Game.AssignOnExecute having command arguments be passed as varargs instead of a table
* Actually use the PackageId const everywhere we need to refer to our content package
* Load languages files even if the package is disabled
* Fix Hook.Remove not being implemented properly
* - Changed event aliases to be case insensitive.
* - Fixed assembly logging style.
- Fixed double logging during execution.
* Fix garbage network data being read by the game when reading LuaCs network messages
* PackageId -> PackageName
* Added caching toggle to PluginManagementService
* Fix LuaCs initializing too late for singleplayer campaigns and rework the C# prompt to only show when enabling mods/joining server
* Oops, fix NRE crash
* Fix hide username in logs config not doing anything
* Fix Cs prompt showing up more than one between rounds
* Fix server host being prompted twice with the C# popup
* Ignore our workshop packages from the game's dependency thing since it doesn't really make sense
* Load console commands after executing and possible fix for the not console command permitted
* Added fallback friendly name resolution for ModConfig assembly contents.
* Register Voronoi2 stuff
* Added configinfo null check to SettingBase.cs
* Add safety check so this stops crashing when we look at it the wrong way
* Fixed "Folder" attribute files not being found.
* Keep the LuaCsConfig class laying around for compatibility, not sure anywhere in our code base (and shouldn't be)
* Added fallback compilation for UseInternalsAwareAssembly if the publicized script compilation fails.
* Added legacy overload of AddCommand for mod compat.
* Added LoggerService to Lua env. Made ILoggerService compliant with LuaCsLogger API.
* Changed csharp script compilation algorithm to be best effort.
* Added "RunUnrestricted" mode for lua scripts that need to run outside of sandbox.
* - Fixed networking sync vars failing to sync initially.
- Fixed lua failing to differentiate overloads ISettingBase.
* Add alias for human.CPRSuccess and human.CPRFailed
* - Fixed up the settings menu.
- Made SettingEntry throw an error if "Value" attribute is not found in XML.
- Fixed saved values for settings sometimes not reloading after disabling and re-enabling a package.
* Fix LuaCs net messages received during connection initialization to be read incorrectly, happened because we would reset the BitPosition in our harmony patch which would cause the message to be read incorrectly later
* Allow reloadlua to force the state to running
* New icon for settings and make the top left text more user friendly
* Fix client.packages hook sending normal packages
* Fixed OnUpdate() not passing in deltaTime instead of totalTime.
* Missing diffs from bb21a09244
* Added networking tests for configs.
* Added missing diffs for f61f852a25.
* Some tweaks to the text
* Remove missing Value error, it should just use the default value if it's not specified
* Fix UseInternalAccessName
* Always purge cashes for plugin content on unloading.
* Fix texture not multiple of 4
* v1.12.7.0 (Spring Update 2026 Hotfix 1)
---------
Co-authored-by: Joonas Rikkonen <poe.regalis@gmail.com>
Co-authored-by: Evil Factory <36804725+evilfactory@users.noreply.github.com>
Co-authored-by: MapleWheels <njainanan@hotmail.com>
- New UI for the prompt
- Third time's the charm.
- Fixed TOCTOU for cs prompt on main menu. - Fixed SubEditor not running lua when don't run is selected for cs.
- LuaCs CSharp Enabled Rework
Removed Client Kick to see if this will fix some of "Received an update for an entity that doesn't exist"
Revert some change from pervious updates due to performance issue
Sync with upstream
- Added caching function to LuaScriptLoader.cs
- Added sample async code to LuaScriptManagementService.cs
- Removed most of the State functions in LuaCsSetup.cs (requires rewrite).
- Fixed CsEnabled check.
- Moved IsRunningWorkshop check to client-only project.
Details:
- Assembly Mgmt Service for loading now a separate interface, not intended for normal use.
- Assembly Loader work; implemented custom dictionary key and table.
- Assembly loading work.
- EventService completed.
- Moved assembly extensions to ModUtils.cs
- Work to event service.
NetworkService work
- Added ImpromptuInterfaces package.
- Networking Service work to support NetVars
- Event Service
- Added assemblies references package for script compilation. Updated Roslyn version for compatibility.
- Package Loading work.
Swap Harmony to HarmonyX
- More refactor conversion to FluentResults.
- Updated StylesService to return Results.
- Refactor of PackageService partially complete.
- Made IService.Reset() required to return a Result.
- Moved plugin/assembly related code to their own folder (same namespace).
- Updated interfaces to reflect the use of Result<T>.
- Partial refactor, incomplete.
- Added 'FluentResults' so we can stop using cursed Exception-based flow control in loading code.
- Added 'OneOf' nuget package: https://github.com/mcintyre321/OneOf
for the implementation of the Optional<T> pattern and complex discrete return types instead of cursed enums (see current AssemblyManager.cs).
- Reapplied old branch changes.
Replaced direct access to GameMain.Server.ConnectedClients with array snapshots in multiple server-side classes to prevent concurrent modification issues during parallel updates. Also updated PhysicsBody and LevelTrigger to avoid static/shared state in parallel contexts, improving thread safety and reliability.
Refactors event, entity, and physics management to use thread-safe and lock-free data structures (Immutable collections, ConcurrentQueue, ConcurrentDictionary, Channel) for improved concurrency and performance. Replaces O(n) queue lookups with O(1) set/dictionary checks, ensures atomic updates for shared state, and optimizes queue draining and deferred action processing. Updates related code to use new APIs and patterns, and adds documentation for thread safety and workflow.
Replaces direct increments of LastClientListUpdateID with a thread-safe IncrementLastClientListUpdateID method and uses Interlocked for atomic operations. Refactors EntitySpawner to lock access to the spawn/remove queue for thread safety. Updates INetSerializableStruct to use concurrent collections for cached variables and type behaviors, improving thread safety in networking code.