Releases: BepInEx/HarmonyX
Release v2.13.0
This release includes all changes made to upstream since Harmony v2.2.1. See Harmony changelog here for details on the merged changes.
What's Changed
- Merging upstream up to v2.3.1.1 by @kohanis in #97
- Merging upstream up to v2.3.3.0 by @kohanis in #114
- Add test build workflow for PRs by @ManlyMarco in #113
- Upgrade MonoMod.RuntimeDetour to 25.1.2 by @aldelaro5 in #115
New Contributors
- @aldelaro5 made their first contribution in #115
Full Changelog: v2.12.0...v2.13.0
Release v2.12.0
What's Changed
- Fix for unintentional removal of some
leave
instructions by @kohanis in #96 - Fix invalid file name when dumping compiler-generated methods by @Meivyn in #99
- CreateAndPatchAll - use a counter + target name as default ID instead of a GUID by @ManlyMarco in #103
- Add HarmonyOptional attribute by @ManlyMarco in #105
New Contributors
Full Changelog: v2.11.0...v2.12.0
Release v2.11.0
What's Changed
- For log file open with full share access, if user sets "HARMONY_LOG_FILE" append obsolete to old FileLog by @mitchcapper in #83
- Update MonoMod to 25.0.0, add Harmony 2.3 features by @Windows10CE in #79
- Fix AccessTools.GetTypesFromAssembly sometimes returning an array with a null in it by @ManlyMarco in #80
- Improve CodeMatcher exceptions on invalid positions by @ManlyMarco in #85
- Update MonoMod.RuntimeDetour to 25.1 by @ManlyMarco in #100
New Contributors
- @mitchcapper made their first contribution in #83
Full Changelog: v2.10.2...v2.11.0
Release v2.10.2
Changelog
Full Changelog: v2.10.1...v2.10.2
Release v2.10.1
Changelog
- Print out lastError in
ThrowIfInvalid
(#48)
Release v2.10.0
Changelog
-
Merged code from upstream up to 6006140 (see Harmony changelog)
-
Important: The merge brings binary incompatibilities to
CodeMatch
class. If you distribute HarmonyX in games or mod loaders, please test for any regressions and apply shims where appropriateStarting this version,
CodeMatch
now inheritsCodeInstruction
. Because of this, some fields (labels, blocks) have been removed fromCodeMatch
as they are now provided byCodeInstructon
. AnyCodeMatch
uses where fields are accessed directly will be binary-incompatible. However, this should generally be fairly rare: analysing a few dozenCodeMatch
class uses across different GitHub projects revealed that most developers only use thenew CodeMatch
constructor, which hasn't been altered. Most use cases ofCodeMatch
should still be binary-compatible with HarmonyX 2.10. -
All nested classes in the
Code
class have also been annotated with the[EditorBrowsable(EditorBrowsableState.Never)]
attribute to prevent custom classes from cluttering most IDEs' code completion.
-
-
Fix
HARMONY_NO_LOG
environment variable is not respected for file logger -
Fix
HarmonyEmitIL
attribute not working on methods with certain branches -
Fix handling methods that include
throws
OpCode on mono -
Fix net35 builds not working on CoreCLR because of
AccessTools.PrepForRemoting
fix -
Improve exception messages when applying patches (warn about missing target method or patch method not being static)
-
Bump MonoMod version to 22.3.23.4 (changelog)
Release v2.9.0
Changelog
CodeMatcher
: Update to partially match current upstream codebase- Adds some new overloads for matching
CodeMatcher
: Add implicit cast toCodeMatch
fromOpCode
to simplify simple matchesHarmony
: ImplementIDisposable
interface implicitly- Allows writing temporary patches with
using
syntax - Disposing of Harmony will call
UnpatchSelf()
- Allows writing temporary patches with
- Fix cases where
handler
block didn't have an explicit end (#46) - Add
HarmonyEmitIL
attribute to dump patches as DLL (Documentation) HarmonyManipulator
: Add new overload for simplified patching- Updated MonoMod.RuntimeDetour to 21.12.13.1 (changelog)
Release v2.8.0
Changelog
- Merged code from upstream up to 53d8c7b
- See Harmony 2.2 changelog for some new features
CodeInstructions.CallClosure
calls originalTranspilers.EmitDelegate
- Fix patching some methods in global type (e.g.
<Module>
- Updated MonoMod to 22.01.04.03 (changelog)
Release v2.7.0
Changelog
- @ErisApps: Add global flag to disallow global UnpatchAll behavior (#40)
- @ErisApps: Add static
UnpatchAll
andUnpatchID
(#41)- This marks old
harmony.UnpatchAll(string)
as obsolete. Any developers should migrate to usingharmony.UnpatchSelf()
or the new overloads. See wiki for more details.
- This marks old
- Merged upstream up to 5bd23f3
- Updated MonoMod.RuntimeDetour to 21.12.13.1 (changelog)
Release v2.6.1
Changelog
- @ManlyMarco: Improved documentation for various Harmony attributes
- Fixed
HarmonyWrapSafe
attribute when not using it as the last attribute