Skip to content

Releases: ethangreen-dev/lovely-injector

v0.7.1

21 Jan 18:16
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.7.0...v0.7.1

v0.7.0

20 Jan 00:53
d08f644
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

Contributors

A huge thanks goes out to the following contributors:

  • @flakywanderer for improving log messages with patch metadata.
  • @WilsontheWolf for fixing the logging of panics on Unix targets.
  • @drgrib for improving the Steam Deck install guide.
  • @vgskye for completing much of the work on the Lovely Linux target.
  • @asquared31415 for updating the Linux PR.
  • @Rick1029 for writing a guide on running Lovely and Love2D games natively on Linux.

Notable Changes

#103 Expanded patch targets

TL;DR: You can specify more patch targets.

Patches can now target other mods and even love2d itself. Since non-Balatro buffer names can be complex you should use --dump-all and the corresponding .txt file in dump/ to determine the name of your target.

Important

Patching other mods can cause problems if done incorrectly - problems that can be impossible to debug even with a complete dump. Be careful with this tool, communicate your intent with other devs as needed, document what you've done, and remember to have fun!

#114 Strict patch application ordering

TL;DR: Pattern and regex order inconsistencies have been fixed.

Lovely patches have a strict order in which they are applied: module → copy → pattern → regex, however this was not the case in v0.6.0. This version (and all the ones preceding it) merged the pattern and regex patches together such that they were applied in the same step in the order that they were defined within the patch file. This has been resolved by separating and applying these patches sequentially.

#103 Improved debugging via --dump-all

TL;DR: Use --dump-all to dump everything.

Every encountered buffer can be dumped, not just the ones that have been patched. Alongside each is a text file which contains the internal name of the buffer - use this name in the target field of patches.

#121 Hacky patch directory interpolation

TL;DR: Use {{lovely_hack::patch_dir}} in your payloads to access the patch's mod directory.

This variable will be replaced with the parent directory of the patch (either ../lovely.toml or ../../lovely/patch.toml, for example. It's a hacky and temporary solution that WILL be replaced at some point in the future, but it'll work fine for now.

#66 + #102 Linux support

TL;DR: Native Linux support but you must build it yourself (for now).

Follow the guide written by @Rick1029: https://github.com/Rick1029/lovely-injector/

What's Changed

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

22 Oct 00:49
1653b40
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

Bye-bye, beta

What's Changed

New Contributors

Full Changelog: v0.4.0...v0.6.0

v0.5.0-beta7

16 Sep 03:27
ddceeb2
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-beta6...v0.5.0-beta7

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