Skip to content

Releases: ethangreen-dev/lovely-injector

v0.5.0-beta6

25 Jun 03:47
e54eb89
Compare
Choose a tag to compare

Install guide

OS Download
Windows lovely-x86_64-pc-windows-msvc.zip
Mac (Arm) lovely-aarch64-apple-darwin.tar.gz
Mac (x86) lovely-x86_64-apple-darwin.tar.gz

What's Changed

Full Changelog: v0.5.0-beta5...v0.5.0-beta6

v0.5.0-beta5

19 May 07:47
1c65e9c
Compare
Choose a tag to compare

Install guide

OS Download
Windows lovely-x86_64-pc-windows-msvc.zip
Mac (Arm) lovely-aarch64-apple-darwin.tar.gz
Mac (x86) lovely-x86_64-apple-darwin.tar.gz

What's Changed

  • Mac: use the name of the enclosing .app for the mod directory by @english5040 in #41

Full Changelog: v0.5.0-beta4...v0.5.0-beta5

v0.5.0-beta4

18 May 17:07
edd3b75
Compare
Choose a tag to compare

Install guide

OS Download
Windows lovely-x86_64-pc-windows-msvc.zip
Mac (Arm) lovely-aarch64-apple-darwin.tar.gz
Mac (x86) lovely-x86_64-apple-darwin.tar.gz

What's Changed

Full Changelog: v0.5.0-beta3...v0.5.0-beta4

v0.5.0-beta3

15 May 20:20
6d0ed95
Compare
Choose a tag to compare

Install guide

OS Download
Windows lovely-x86_64-pc-windows-msvc.zip
Mac (Arm) lovely-aarch64-apple-darwin.tar.gz
Mac (x86) lovely-x86_64-apple-darwin.tar.gz

What's Changed

New Contributors

Full Changelog: v0.5.0-beta2...v0.5.0-beta3

v0.5.0-beta2

24 Apr 14:13
0f97d12
Compare
Choose a tag to compare

What's Changed

  • Fix bad pattern text insert due to Rope byte API use mixup by @ethangreen-dev in #14
    This was causing patch payload insertion offsets to "drift" over time due to the dynamic size of unicode chars. Fixing this entailed replacing a line_to_byte call with line_to_char, which would then be valid for use in subsequent rope mutations.

Full Changelog: v0.5.0-beta1...v0.5.0-beta2

v0.5.0-beta1

22 Apr 04:45
a1ac407
Compare
Choose a tag to compare

Warning: This is a beta release

If you encounter issues with this build and are NOT a mod author then please install the latest stable release: https://github.com/ethangreen-dev/lovely-injector/releases/tag/v0.4.0

The biggest concern with this release (and the reason why it's a beta) is that I cannot yet be confident that the re-implemented pattern patch behaves 1:1 with stable.

What's Changed

  • Implement shared "Lovely runtime" to reduce code duplication across win and mac targets by @ethangreen-dev in #6
    This is a backend change which reduces the complexity required to support windows and mac targets.
  • Complex Regex patching and patch optimization via ropey by @ethangreen-dev in #7
    This makes it possible to write patches with Regex, enabling MUCH MORE complex patch behavior than before.
  • Cleanup previously dumped buffers at startup, remove @ prefix from file names by @ethangreen-dev in #11
    This will remove the dump directory (Balatro/Mods/lovely/dump) directory at startup to ensure old buffers aren't kept around. This also ensures that buffers dumped to this directory do not have the @ prefix.
  • Add check and panic message when old dwmapi.dll binary is found within the game directory by @ethangreen-dev in #12
    This change adds a panic when dwmapi.dll is found within the game directory, with instructions on how to fix it.
  • Add --disable-console argument by @ethangreen-dev in #13
    For people who find the console annoying. Add this to the Steam launch args: --disable-console.

Regex Patches

This beta release is primarily meant to test long-awaited Regex patch - a new format which enables infinitely more complex (and expressive) patch behavior. Be careful with this tool, though, as it's easy to seriously damage runtime patching performance, cause infinite loops, or even trigger memory overflows.

Full documentation is pending, so here's a quick and dirty example:

[[patches]]
[patches.regex]
target = "game.lua"
pattern = "(?<indent>[ \t]*)if love.filesystem.getInfo\\(v.file\\) then \n.*\n.*\n"
position = "after"
line_prepend = "$indent"
payload = "print('hello world!')\n"

A note about the position and root_capture: The former specifies where relative to the root capture (Regex capture group) the payload will be inserted. I accept before, after, and at. The latter is the only value that will directly replace the capture with the payload. Capture groups can be interpolated into the payload as well, so it's quite simple to parse values out of the codebase and interpolate them into your payload.

line_prepend will prepend each value containing (non newline or empty) line of the payload with the containing value. Capture groups are interpolated into this value, as show in the previous example.

Refer to the regex patch struct definition for more information: https://github.com/ethangreen-dev/lovely-injector/blob/a1ac407f3a5c80c9dee98a694afed872be812f4f/crates/lovely-core/src/patch/regex.rs#L11

(I will write documentation sometime)

Full Changelog: v0.4.0...v0.5.0-beta1

v0.4.0

08 Apr 18:30
3bcea8f
Compare
Choose a tag to compare

What's Changed

  • Add mac support by @tetraminus in #2
    Not yet released - requires more testing and implementation work. This is however an important first step.
  • Change DLL proxy to version.dll by @ethangreen-dev in #3
    This fix is required to ensure lovely is loaded by the upcoming Balatro release, which includes a newer build of Love2D.
  • Fix panic caused by invalid utf8 log msg in Lua print hook by @ethangreen-dev in #4
    Fixes an edge-case panic caused by lossless UTF-8 conversion of log messages across Lua FFI within sys::override_print.

New Contributors

Full Changelog: v0.3.1...v0.4.0

v0.3.1

25 Mar 14:05
Compare
Choose a tag to compare

Bumping this to 0.3.1 to bring it in-line with the version available on Thunderstore: https://thunderstore.io/c/balatro/p/Thunderstore/lovely/

  • [9f1c346] Implement native print override
    This fixes missed output from Lua print calls

  • [436fcc7] Implement lua module injection.
    This allows modules to be injected and require-ed. Initially implemented for nativefs.

  • [436fcc7] Add Lovely metadata injection.
    This makes it possible for a Lua caller to query information about the Lovely environment.

  • [7ceeace] Add LOVELY_INTEGRITY global const to patched source files.
    This has been implemented to enable runtime integrity checking for Ankh.

  • [ffeb76f] Fix missing target name check in PatternPatch.

v0.2.0

09 Mar 20:29
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

New

  • Post-patch variable interpolation
  • Module injection (patch.module)

v0.1.1

06 Mar 13:55
Compare
Choose a tag to compare
v0.1.1 Pre-release
Pre-release

Full Changelog: v0.1.0...v0.1.1