Releases: ethangreen-dev/lovely-injector
v0.7.1
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
- fix: sort patches initially by order, then by prio by @ethangreen-dev in #123
- fix: revert build toolchain to 1.77.2 by @ethangreen-dev in #124
Full Changelog: v0.7.0...v0.7.1
v0.7.0
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
- Include patch file origin paths in patch logging messages by @flakywanderer in #89
- feat: add {{lovely:mod_dir}} interpolation by @ethangreen-dev in #95
- fix: replace flawed tolstring impl with tostring lua call by @ethangreen-dev in #96
- updated version of #66 by @asquared31415 in #102
- Add extended patch target support by @ethangreen-dev in #103
- Add a proper window title, fix --disable-mods arg (Windows) by @ethangreen-dev in #104
- feat: log panics in unix by @WilsontheWolf in #112
- Add strict patch file ordering to fix edge-case panics on Unix platforms by @ethangreen-dev in #113
- Add strict patch application order to pattern and regex patches by @ethangreen-dev in #114
- Update README.md path for Steam Deck by @drgrib in #93
- Fix bad file ordering on Windows + Unix by @ethangreen-dev in #117
- chore: bump crate versions to 0.7.0 by @ethangreen-dev in #119
- fix: bad workflow caused by lovely-mac name change by @ethangreen-dev in #120
- fix: change patch dir interp to be backwards compat by @ethangreen-dev in #121
New Contributors
- @asquared31415 made their first contribution in #102
- @drgrib made their first contribution in #93
Full Changelog: v0.6.0...v0.7.0
v0.6.0
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
- Implement shared "Lovely runtime" to reduce code duplication across win and mac targets by @ethangreen-dev in #6
- Complex Regex patching and patch optimization via ropey by @ethangreen-dev in #7
- Cleanup previously dumped buffers at startup, remove @ prefix from file names by @ethangreen-dev in #11
- Add check and panic message when old
dwmapi.dll
binary is found within the game directory by @ethangreen-dev in #12 - Add
--disable-console
argument by @ethangreen-dev in #13 - Fix bad pattern text insert due to Rope byte API use mixup by @ethangreen-dev in #14
- Increment version to 0.5.0-beta2 by @ethangreen-dev in #15
- Fix build failure caused by libudis86-sys and retour on Linux native hosts by @ethangreen-dev in #16
- Fix hard crash when printing nil value, change mod path for mac systems by @tetraminus in #18
- Improved toml errors by @WilsontheWolf in #22
- Implement log file writing and apply general logging improvements by @ethangreen-dev in #25
- Fix #20 and #24 by @english5040 in #28
- Update README with Mac install guide, various other adjustments to content + formatting by @ethangreen-dev in #29
- Implement Github Action release workflow by @ethangreen-dev in #31
- Fix invalid archive file type in README install guide by @ethangreen-dev in #33
- make v0.5.0-beta3 release, ga fix for master branch trigger by @ethangreen-dev in #34
- fix ga workflow trigger by removing branch check by @ethangreen-dev in #35
- Clarify Steam Deck / Proton / Wine install instructions by @ethangreen-dev in #36
- feat: unhardcoded game directory by @WilsontheWolf in #27
- Implement mod disable / enable via .lovelyignore files by @ethangreen-dev in #37
- Remove erroneous dbg! statement sadge by @ethangreen-dev in #30
- Revert pattern patch
overwrite
deprecation warning by @ethangreen-dev in #39 - Update core version to v0.5.0-beta4 by @ethangreen-dev in #40
- Mac: use the name of the enclosing .app for the mod directory by @english5040 in #41
- update core version to v0.5.0-beta4 by @ethangreen-dev in #42
- Improve install instructions, again by @english5040 in #43
- Fix incorrect delta calculation by @english5040 in #45
- Pass through args to run_lovely.sh by @english5040 in #46
- Fix bad windows download link in release workflow by @ethangreen-dev in #49
- Update to v0.5.0-beta6 by @ethangreen-dev in #50
- Refactor, resolve some issues by @english5040 in #51
- Fix unconditional removal of last byte #53 by @dadahsueh in #54
- Update to v0.5.0-beta7 by @ethangreen-dev in #56
- fix: build failure caused by isize, itertools deps by @ethangreen-dev in #57
- Implement better patches by @flakywanderer in #68
- Allow patching games running on LOVE2D 12, or otherwise using luaL_loadbufferx by @tetraminus in #70
- Load modules lazily through package.preload by @flakywanderer in #74
- Add MIT license by @ethangreen-dev in #75
- fix: module source names by @WilsontheWolf in #76
- Fix edgecase panic caused by chunk names containing bad utf8 by @ethangreen-dev in #78
- Fix reverse output of Lua log messages by @ethangreen-dev in #80
- Update to v0.6.0 by @ethangreen-dev in #87
New Contributors
- @WilsontheWolf made their first contribution in #22
- @english5040 made their first contribution in #28
- @dadahsueh made their first contribution in #54
- @flakywanderer made their first contribution in #68
Full Changelog: v0.4.0...v0.6.0
v0.5.0-beta7
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
- Refactor, resolve some issues by @english5040 in #51
- Fix unconditional removal of last byte #53 by @dadahsueh in #54
- Update to v0.5.0-beta7 by @ethangreen-dev in #56
- fix: build failure caused by isize, itertools deps by @ethangreen-dev in #57
- Implement better patches by @flakywanderer in #68
- Allow patching games running on LOVE2D 12, or otherwise using luaL_loadbufferx by @tetraminus in #70
- Load modules lazily through package.preload by @flakywanderer in #74
- Add MIT license by @ethangreen-dev in #75
New Contributors
- @dadahsueh made their first contribution in #54
- @flakywanderer made their first contribution in #68
Full Changelog: v0.5.0-beta6...v0.5.0-beta7
v0.5.0-beta6
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
- Improve install instructions, again by @english5040 in #43
- Fix incorrect delta calculation by @english5040 in #45
- Pass through args to run_lovely.sh by @english5040 in #46
- Fix bad windows download link in release workflow by @ethangreen-dev in #49
Full Changelog: v0.5.0-beta5...v0.5.0-beta6
v0.5.0-beta5
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
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
- Clarify Steam Deck / Proton / Wine install instructions by @ethangreen-dev in #36
- feat: unhardcoded game directory by @WilsontheWolf in #27
- Implement mod disable / enable via .lovelyignore files by @ethangreen-dev in #37
- Remove erroneous dbg! statement sadge by @ethangreen-dev in #30
- Revert pattern patch
overwrite
deprecation warning by @ethangreen-dev in #39
Full Changelog: v0.5.0-beta3...v0.5.0-beta4
v0.5.0-beta3
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
- Fix build failure caused by libudis86-sys and retour on Linux native hosts by @ethangreen-dev in #16
- Fix hard crash when printing nil value, change mod path for mac systems by @tetraminus in #18
- Improved toml errors by @WilsontheWolf in #22
- Implement log file writing and apply general logging improvements by @ethangreen-dev in #25
- Fix #20 and #24 by @english5040 in #28
- Update README with Mac install guide, various other adjustments to content + formatting by @ethangreen-dev in #29
- Implement Github Action release workflow by @ethangreen-dev in #31
- Fix invalid archive file type in README install guide by @ethangreen-dev in #33
New Contributors
- @WilsontheWolf made their first contribution in #22
- @english5040 made their first contribution in #28
Full Changelog: v0.5.0-beta2...v0.5.0-beta3
v0.5.0-beta2
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 aline_to_byte
call withline_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
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 whendwmapi.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