Skip to content

Releases: Vergir/MelonLoader-HotReload

HotReload 1.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 18:51

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

HotReload 1.1.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:23
  • HotReloadCheck ships without the HotReloadCheck.exe launcher; run it with dotnet 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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:03
  • 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 only Player.log.
    Setting EchoUnityErrors (AfterReload, Always, Off); left to MelonLoader when its capture_player_logs is on.
  • HotReload.LoadingLate AppDomain 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.

HotReload 1.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 14:30

Initial release.