Releases: Wolfyxon/lover
2.2.1
Changes
This is a bugfix release.
- Added
--no-primeflag forlover runto override config and not run the game with prime - Ignoring
*.tempwith Git in new projects - Built AppImage is automatically marked as executable on Linux
- Fixed commands not being found in the OS PATH on Windows (thanks to @VamatoHD pull #5)
Full Changelog: v2.2.0...v2.2.1
2.2.0
New features
copyright for [package]
The optional copyright value will appear in the EXE details.
[package]
name = "Copper"
copyright = "Copyright Ea-Nasir 1750 BCE - 2025Other
- Did you mean... for dependency queries
- Showing Git commit hash for debug binaries in
lover version
Changes and fixes
display_name instead of description for the program's display name on Windows
[package]
name = "coolGame"
display_name = "Cool Game"[package]
name = "coolGame"
version = "1.0"On Windows, file description in EXEs is the displayed program's title in the task manager. The description word is a bit problematic.
The description lover.toml [package] value has been changed to [display_name] to not confuse the users.
Also now the default value contains the name and version.
Getting in game:
os.getenv("LOVER_PKG_DISPLAY_NAME")Default value:
{package name} {package version}
description is still available to use in the config and accessible with os.getenv("LOVER_PKG_DESCRIPTION") but for now has no other use.
Other
rceditnow runs before embedding the game into the EXE to fix a bug where it wouldn't find the game's code[Y/N]confirmation now accepts bothyandY(#4 by @thefenriswolf)lover buildwithout any arguments and not configured defaults will now pick the target matching your platform- Minor performance improvements by using conditional compilation
- Progress bars now use units. Example
Downloading thing [===== ] 0.1/1.3 MB - Removed long description in
lover create - Some message changes
- Each target's build process is separated by an extra line for better readability
- Fixed some progress bar issues
- Fixed commands not being found on Windows
- Fixed
lover runshowing no output on windows, by usinglovecinstead ofloveby default - Fixed file version not changing in the EXE details
Full Changelog: v2.1.1...v2.2.0
2.1.1
Patched GHSA-4fcv-w3qc-ppgg
2.1.0
New features
Finding lover.toml in parent directories
You can now have your terminal open anywhere inside your project, and you'll still be able to use lover.
Detecting old consts
During parsing, you'll get a warning if an old const like LOVER_NAME instead of LOVER_PKG_NAME is used.
Changes
Better project template
An icon is now included in the project template.
main.lua
Old
local text = love.graphics.newText(love.graphics.getFont(), "Hello World!")
function love.draw()
love.graphics.draw(text)
endNew
local text = "Hello World!"
local textObj = love.graphics.newText(love.graphics.getFont(), text)
local version = os.getenv("LOVER_PKG_VERSION")
local gameName = os.getenv("LOVER_PKG_NAME")
print(gameName, "v.", version)
function love.draw()
love.graphics.draw(textObj)
endOther
- Better logs
- Some code optimizations
- Fixed color codes not working on Windows
- Better and unified project directory validation for
newandcreate
Full Changelog: v2.0...v2.1
2.0
Changes
Better env names
Important
Old names will NOT work. Make sure to update your os.getenv() calls.
If you're not currently able to adapt, please use the 1.3.1 version as it contains fixes for some security vulnerabilities in the Rust crates used by Lover.
Constants imported from the [package] section in lover.toml now have the PKG keyword:
LOVER_NAME->LOVER_PKG_NAMELOVER_VERSION->LOVER_PKG_VERSIONLOVER_AUTHOR->LOVER_PKG_AUTHORLOVER_DESCRIPTION->LOVER_PKG_DESCRIPTION
Why?
Not all constants represent package data. For example LOVER_TIMESTAMP and LOVER_CONTEXT.
This makes them more distinguishable.
Other
- Reduced binary size
- Beter module generation
- Better messages and logging
- Errors are now logged to stderr instead of stdout
New features
rcedit is now a dependency
You don't have to manually install rcedit anymore.
You can now just do
lover install rcedit
If you have rcedit set in your config, it will be prioritized over the dependency version.
create command
Runs an interactive setup for creating your project.
Example usage:
lover create
> Welcome to the Lover project creator:
You'll be asked a few questions for your project settings and then everything will be set up for you.
If a question has '(default: ...)' or '(optional)', just press enter enter if you don't want to change it.
Use ^C to abort (press Ctr+C in your terminal)
Note: All settings can be changed at any time you want in the lover.toml file.
Name of your project: CoolGame
Where should your project files be? (default: CoolGame):
OK: Project directory successfully created
Your name (optional): CoolPerson
Description (optional): My cool game
See https://github.com/wolfyxon/lover/wiki/project-configuration To see how you can configure your project
OK: Project successfully created
all build target
Running lover build all will build your game for every supported platform.
env command
You can now see a list of the available env variables added by Lover.
Example outputs:
lover env
LOVER_PKG_NAME: Test
LOVER_TIMESTAMP: 1742641595
LOVER_CONTEXT: run
hi: hello
LOVER_PKG_VERSION: 1.0.0
LOVER_PKG_AUTHOR: MEEEE
LOVER_PKG_DESCRIPTION: Test app
Note: Use `os.getenv("name")` in your game to access each value.
lover env --no-hint
LOVER_PKG_DESCRIPTION: Test app
LOVER_PKG_VERSION: 1.0.0
LOVER_CONTEXT: run
LOVER_PKG_AUTHOR: MEEEE
hi: hello
LOVER_TIMESTAMP: 1742641657
LOVER_PKG_NAME: Test
Ability to ignore LOVER_* consts in os.getenv()
New function definition: os.getenv(name, noLover)
Note
This feature only works properly in compiled games.
When using lover run, os.getenv() may always prioritize the Lover's consts even if you specify true in the function call.
If you need to use the normal Lua's os.getenv() without the extra LOVER_* consts, specify true as the 2nd argument
os.getenv("LOVER_TIMESTAMP", true)You can also use os._getenv(), but you'll need extra code to not make your game crash when using lover run as this function is only available in compiled games.
Full Changelog: v1.3...v2.0
Warning
This release has breaking changes. Make sure to update your os.getenv() statements to the new constant names!
1.3.1 - Security fix
This is a security patch to the previous 1.3 version.
Changes
-
Updated Cargo dependencies to fix the following vulnerabilities
-
Support for source code downloads
-
Added nest to the dependency index
-
Minor code cleanup and fixes
Full Changelog: v1.3...v1.3.1
1.3 - Windows AppImage fix
Full Changelog: v1.2...v1.3
New features
Native AppImage support
The linux target can finally be built natively on Windows.
appimagetool is no longer needed. AppImages are now handled entirely by Lover.
More const features
More constants
LOVER_CONTEXT: Equal to "run" if the game is ran withlover run, or "build" if the game is packaged.LOVER_TIMESTAMP: UNIX timestamp of the time when the game was built (or ran withlover run)
Custom
[env] field for lover.toml with:
global: Always appliedbuild: Applied when the game is builtrun: Applied when the game is ran withlover run
[env.global]
pants = "my pants"
[env.run]
i = "am about to poop"
[env.build]
i = "pooped"print("I", os.getenv("i"), os.getenv("pants"))(yes this is the best example I could think of)
Default run arguments
Added a new [run] field with default_args for lover.toml
[run]
default_args = ["hi", "hello"]Those arguments are applied if nothing is specified after lover run.
Otherwise, the arguments you specified in the command will be used.
Other
lover depnow shows the dependency directory.
Changes
Cleaner build directory
Temporary files and directories that are not needed by the user (but needed by Lover) such as conf.lua, squashfs-root in build/, have been moved to build/temp to be less confusing and messy.
1.2 - Constants
Changes and additions
Full Changelog: v1.1...v1.2
New features
Constants
Added env variable constants such as LOVER_VERSION that can be used in either testing or production.
print("Running on version:", os.getenv("LOVER_VERSION"))Initial LovePotion
LovePotion dependencies have been enabled, but they have no real use yet.
1.1 - EXE info
Full Changelog: https://github.com/Wolfyxon/lover/commits/v1.1
Changes and additions
New features
EXE info
Info from lover.toml is applied to the built EXE files for Windows, such as the icon, version and company name.
See RCEdit in the software wiki page to learn how to install it.
Default build targets
You can specify the default targets in lover.toml when lover build is used.
[build]
default = ["linux", "win64"]Zipping windows builds if enabled
win32 and win64 build directories can automatically be zipped if build.zip is enabled in config.toml
[build]
zip = trueChanges
Renamed dependencies
Added a love- prefix to dependencies so they're not confused with targets.
Old: lover install win64
New: lover install love-win64
1.0 - first stable release
First early release of Lover.
Please note that EXE info (such as the icon, version, author etc.) has not been implemented yet.
Full Changelog: https://github.com/Wolfyxon/lover/commits/v1.0