Skip to content

HotReload 1.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Oct 18:51
· 1 commit to main since this release

Fixes:

  • Startup crash in IL2CPP games (coreclr.dll, right after Loading Mods, mostly on the first start of the day).
    The Assembly.Location patch was installed before MelonLoader loaded the mods, and .NET's tiered compiler crashed while
    recompiling the many callers of Location during loading. It is now installed once the mods are loaded. A mod that
    reads its own Location in OnEarlyInitializeMelon sees the shadow copy's path. New setting PatchAssemblyLocation.
  • 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 OnApplicationQuit but no OnDeinitializeMelon gets its OnApplicationQuit called 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.Unloading AppDomain flag ("reload" / "unload", unset at game quit) for OnDeinitializeMelon.
  • 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