Repository navigation
Releases: Vergir/MelonLoader-HotReload
Releases · Vergir/MelonLoader-HotReload
Release list
HotReload 1.2.0
Fixes:
- Startup crash in IL2CPP games (
coreclr.dll, right afterLoading Mods, mostly on the first start of the day).
TheAssembly.Locationpatch was installed before MelonLoader loaded the mods, and .NET's tiered compiler crashed while
recompiling the many callers ofLocationduring loading. It is now installed once the mods are loaded. A mod that
reads its ownLocationinOnEarlyInitializeMelonsees the shadow copy's path. New settingPatchAssemblyLocation. - Several DLLs changing at once (a solution build, a tool switching mods) loaded in the same frame, freezing the game
for seconds, in no particular order. They now load in MelonLoader's startup order (dependencies,[MelonPriority],
name), one per frame, removed DLLs first. - The reload key did nothing while another mod blocked
UnityEngine.Input(for example while its window was open).
HotReload now reads the key around such patches. - A mod unloaded (DLL removed) and loaded again counted as a new mod and lost its handed-over state. It now counts as a
reload:LoadingLate = "reload", state handed over. - Unity error lines named only the latest reload; they now also name the other reloads and unloads of the last 30 s.
New:
- Textures, materials, meshes, sprites and ScriptableObjects the old build created are destroyed (
DestroyOldAssets),
and optionally its GameObjects (DestroyOldGameObjects, off by default). - MonoMod hooks (
Hook,Detour,ILHook) are disposed even when the mod did not keep them in a field. - A mod with
OnApplicationQuitbut noOnDeinitializeMelongets itsOnApplicationQuitcalled before a reload
(CallQuitOnUnload), so mods that save only on quit lose nothing. - Force-reload key (
ForceReloadKey,LeftShift+F8): reloads the mods of the last reload with the same bytes. - A DLL renamed into place loads after 100 ms instead of waiting for
DebounceMs. ReplayActiveSceneOnly: replay scene callbacks for the active scene only.HotReload.UnloadingAppDomain flag ("reload"/"unload", unset at game quit) forOnDeinitializeMelon.HotReload.Api: load, reload, unload and batch DLLs on demand, and events for reloads, unloads and finished batches.- HotReloadCheck: new findings for quit-only cleanup, patches on
UnityEngine.Input, created assets and GameObjects,
Assembly.Location, UI Toolkit and global Unity state; reworded timers finding.
Verifying this release
HotReload 1.2.0, commit 9d17ffa, .NET SDK 10.0.401. The DLLs are reproducible: a Release build of this tag with the same .NET SDK gives the same files (how). SHA256 of the files inside the zips:
227643f347c81af4c5c347b0f190d8f2f9cebfd53987b245e112f8b22fe5f456 MelonLoader-HotReload.zip/Plugins/HotReload.dll
931689d44c25371faf905f1f37a31268378b0eb008c682f760841465589e922f MelonLoader-HotReload.zip/Plugins/HotReload.pdb
b6bf7cfa7af009ce2c383f84750d7d22d7a0b201651d98ea72bd569473a7e09d MelonLoader-HotReload.zip/README.md
da46f5e6d9363c21c0bbb8ecb04c8122b92cebdf6c308f1913077402a00093e3 HotReloadCheck.zip/HotReloadCheck.deps.json
bfd143dbd47d4cee03b539ac3532c83cf31d0c7325fa1825e9319a597b082998 HotReloadCheck.zip/HotReloadCheck.dll
e102dd0ba51b114d88788e11aa1401bd02546d377f72e3f3146d19e9f6cc2198 HotReloadCheck.zip/HotReloadCheck.pdb
95505548c838f72a6a829fd5332dbc674c715ce26a216e9eb32bec8b5821eae2 HotReloadCheck.zip/HotReloadCheck.runtimeconfig.json
52ce968860c6d86a343e12b3fdf004820a423c3df89bba8ceb17bff27a4441d9 HotReloadCheck.zip/LICENSE
HotReload 1.1.1
- HotReloadCheck ships without the
HotReloadCheck.exelauncher; run it withdotnet HotReloadCheck.dll. The
unsigned launcher stub from the .NET SDK was flagged by antivirus scanners. - Reproducible builds: a Release build of a tag with the same .NET SDK gives byte-identical DLLs. The release notes list
the SDK, the commit and the SHA256 of every file in the zips (how to check). - HotReload itself is unchanged apart from the build settings.
Verifying this release
HotReload 1.1.1, commit 749e1c2, .NET SDK 10.0.401. The DLLs are reproducible: a Release build of this tag with the same .NET SDK gives the same files (how). SHA256 of the files inside the zips:
64b7721b0025e9d5bf7500319014ee55b662886db7774fbb9f563fc01059d244 MelonLoader-HotReload.zip/Plugins/HotReload.dll
f0ebb23dc76c5e4fd828cbcee3cf1abfb88ff7677c92eee85a7f2098a6923131 MelonLoader-HotReload.zip/Plugins/HotReload.pdb
f7bff11c81e352daef6d7860ef319cee09bd36da560bd5678bba7cabf9bd6469 MelonLoader-HotReload.zip/README.md
f3b66e0e7d9e2d91356acf9dec8f91d52c10b28cb6c53dcc08400e45775da7c5 HotReloadCheck.zip/HotReloadCheck.deps.json
4c1cdd25e56e05de9bf7ef2954946dcb695102991f3767954c8787101a23155f HotReloadCheck.zip/HotReloadCheck.dll
b500a38ebc4c95ef65182db1f62d676492fcf033a6e6453460795bc6170a81c2 HotReloadCheck.zip/HotReloadCheck.pdb
95505548c838f72a6a829fd5332dbc674c715ce26a216e9eb32bec8b5821eae2 HotReloadCheck.zip/HotReloadCheck.runtimeconfig.json
52ce968860c6d86a343e12b3fdf004820a423c3df89bba8ceb17bff27a4441d9 HotReloadCheck.zip/LICENSE
HotReload 1.1.0
- Unity errors and exceptions that appear after a reload are copied into the MelonLoader log, once per reload with a
repeat count and the reload they followed. Before, exceptions thrown inside game code reached onlyPlayer.log.
SettingEchoUnityErrors(AfterReload,Always,Off); left to MelonLoader when itscapture_player_logsis on. HotReload.LoadingLateAppDomain flag:"reload"or"new"while HotReload loads a melon into a running game, so a
mod can skip once-per-launch work without referencing HotReload.- Guide: a plain copy into
Mods/is enough; moving the old DLL aside is only needed for plugins and libraries.