Skip to content

Releases: BepInEx/HarmonyX

Release v2.4.1

11 Apr 08:49
Compare
Choose a tag to compare

Changelog

  • Added logging to reverse patching
  • Fixed HarmonyDebug attribute to work properly
    • Allows you to automatically enable all debug logs for a particular patch without having to modify log levels

Release v2.4.0

10 Mar 18:39
Compare
Choose a tag to compare

Changelog

  • New patch type: ILManipulators (courtesy of @Windows10CE )
    • Allows to access to ILContext of the patch method to modify the underlying MethodDefinition directly
    • Runs after all other Harmony patches
    • Note: This is an advanced patch method. Refer to the wiki for caveats.

Release v2.3.2

22 Feb 20:35
Compare
Choose a tag to compare

Changelog

  • Updated MonoMod to 21.1.11.1
  • Merge upstream up to 6d51b3b
    • Fixed invalid hook invocation when boxing struct by reference
    • Added Harmony.GetOriginalMethod(MethodInfo) that allow to look up original MethodBase for the given patch method
  • Fixed __runOriginal being undefined in postfixes if no prefixes were called
  • Properly resolve nested functions in method descriptions
  • Improve pretty-printing of method and type description with TypeNameHelper

Release v2.3.1

23 Dec 19:56
Compare
Choose a tag to compare

Changelog

  • Merge latest changes from upstream up to 70d4652
    • Enhanced conversion between value types and reference types
  • Fix new HarmonyPatch(string, string) attribute not being usable in attributes

Release v2.3.0

19 Dec 10:58
Compare
Choose a tag to compare

Changelog

  • Added new HarmonyPatch overload: public HarmonyPatch(string assemblyQualifiedDeclaringType, string methodName, ...)
  • Updated MonoMod.RuntimeDetour to 20.11.26.2

Release v2.2.0

17 Nov 17:14
Compare
Choose a tag to compare

Changelog

  • Merged latest codebase from pardeike/Harmony#e79874b
    • Add AccessTools.CreateInstance<T>()
    • AccessTools.CreateInstance can now use non-public parameterless constructors
    • AccessTools.CreateInstance also now invokes the ConstructorInfo rather than using Activator.CreateInstance; the former should be faster
    • FieldRef now supports F = underlying integral type for enum field types
  • Added support for multitargeted patch methods
    • If you define multiple complete HarmonyPatch attributes on a method, they will be applied separately. This way you can specify multiple patch targets on the same method
    • HarmonyPatch attribute is considered complete when it defines both target type and target method.

Release v2.1.1

08 Nov 12:01
Compare
Choose a tag to compare

Changelog

  • Removed throwing an exception when trying to patch a method that's not directly declared on the type
    • Instead emit a warning message with a proper path

Release v2.1.0

07 Nov 16:24
Compare
Choose a tag to compare

Important

This is a major update to HarmonyX that bring feature parity to current Harmony 2 master (2a793bc).
In practice this means that your compiled binaries might not be compatible with this version. As such, it's recommended to recompile your code from scratch.

Changelog

  • Updated codebase to have feature parity with Harmony 2 master (fd2e702). This brings in the following changes:
    • Reverse patchers
    • HarmonyDelegate support which allows to inject delegates to private methods into patches
  • Added MethodPatcher abstract class to allow implementing custom patching backends
  • Exposed PatcherManager and HarmonyManipulator which allows access to global Harmony state and apply Harmony patches to arbitrary methods
  • Added HarmonyInstance.UnpatchSelf to unpatch all patches of the current instance
  • Removed ParameterByRefAttribute in favour of Harmony's own updated HarmonyPatch attribute
  • Updated MonoMod dependencies to v 20.11.05.01

Release v2.1.0-beta.8

19 Oct 09:33
Compare
Choose a tag to compare
Bump version

Release v2.1.0-beta.7

09 Oct 18:44
Compare
Choose a tag to compare
Bump version