Releases: juraj-hrivnak/Pakku
v1.3.2
v1.3.1
v1.3.0
Highlights
- New installation options have been added.
- You can now install Pakku using Nix, thanks to @Redlonghead!
- And Pakku is now also available from AUR, thanks to SelfRef!
- Improved support for multi-loader modpacks. Pakku now exports only the primary loader, making Pakku fully compatible with the Sinytra Connector!
- Pakku now allows configuring the GitHub access token. Doing so will extend your GitHub API rate limit from 60 to 5,000 requests per hour. Configure it easily with:
pakku credentials set --gh-access-token <token>, or set theGITHUB_ACCESS_TOKENenvironment variable.
- Added the
pakku inspcommand for inspecting projects in detail. - Added better error handling to the
updateandsynccommands. - The
statuscommand will now display hyperlinks to project files. - Improved the
lscommand:- Listing projects will now better adapt to your terminal size.
- Short warnings will appear below project names if there are version mismatches.
- Fixed project updates detection when running the
pakku synccommand. - Fixed project configuration in the config file (
pakku.json) affecting more projects than intended in some cases.
Other
- Resolving manual overrides is now faster.
- Added support for the new GitHub repository asset digests.
- Pakku now integrates with autopack-director, similarly to how it integrates with file-director.
- Added
--exportoption to thepakku cfg prjcommand. - Added proper checking when projects have no URL during download.
- Added IntelliJ project icon.
- Updated GitHub Actions workflows with proper permissions.
Docs
- Added better explanations of the export process.
- Added warnings about escaping CurseForge API key symbols in bash.
- Updated documentation with Nix installation instructions (thanks to @Redlonghead!)
- Improved formatting of installation instructions.
- Updated Writerside documentation tooling.
API
- Added
outputDiroption for fetch API actions. - Added
ExportSystemDslannotations to Pakku's DSL functions.
v1.2.1
- Improved performance of the
pakku fetchcommand. icon.pngis now allowed to be present in the modpack directory when installing a remote modpack.
v1.2.0
- Implemented working path search up. You can now run Pakku anywhere in your modpack's subdirectories.
- Fixed
pakku initcommand not asking for loaders. - When configuring the CurseForge API key, Pakku will now test it to see if it works and return an error if it is not valid.
- When using the
pakku cfg prjcommand, pakku will now remove empty project entries.
For example, if this command:pakku cfg prj -t mod example-modresults in this JSON:"example-mod": {},"example-mod": {}will be removed frompakku.json.
v1.1.1
- Fixed encoding of spaces in URLs in the
modrinth.index.jsonfile when exporting. - Fixed typo in Pattern Format section in docs.
v1.1.0
- Fixed excluding files from subdirectories matched with glob pattern not working.
- Added proper documentation for the glob pattern format.
- Fixed broken debug prints when exporting with the
--debugflag.
v1.0.0
Important
Pakku now requires users to provide their own CurseForge API key when accessing CurseForge.
The embedded API key used in older versions of Pakku will be revoked in a month.
The transition is simple and can be done in two minutes. Please, see the docs for more info.
Warning
Deprecated argument and options from the pakku set command (namely: [<projects>]..., -s, -u and -r) have been removed.
Please, use the pakku cfg prj command as the alternative.
Highlights
- Pakku now allows you to install Pakku modpacks from secure remote Git repositories using the
pakku remotecommand.- Example usage for "autoupdating" installation:
pakku remote https://github.com/juraj-hrivnak/CaveGameUltimate.git update - More information can be found below.
- Example usage for "autoupdating" installation:
- Implemented more robust error handling for HTTP requests.
- Pakku now requires users to provide a CurseForge API key when accessing CurseForge.
pakku credentialscommand has been added. Which can be used for your credentials' management.
- On Windows, Pakku now tries to configure your console output to use the UTF-8 encoding (code page 65001). If this fails, Pakku will use the
ASCIICLI theme. - Fixed Pakku incorrectly using backslash path separators in exported ZIP files when exporting on Windows.
- Pakku now allows adding files directly to the
.pakku/overrides,.pakku/server-overridesor.pakku/client-overridesdirectories. This can be used, for example, to bundle your server installer with the server pack.- Due to this change, "Project Overrides" have been renamed to "Manual Overrides".
- Added the
exportproperty for projects in the config file, which can be used to exclude projects from being exported.- Example usage:
{ "projects": { "spark": { "export": false // If you don't want Spark to be in the exported modpack 😉 } } }
- Example usage:
- Deprecated argument and options from the
pakku setcommand (namely:[<projects>]...,-s,-uand-r) have been removed. - Fixed errors with various representations of hash algorithm names. For example, "SHA_1", "SHA-1" and "SHA1" will all be recognised as "SHA-1".
- Improved docs and the readme. Mainly the "Configuring Pakku" chapter. Added a new "Server Management" chapter and a better explanation of types in the reference section.
pakku remote Explanation
The pakku remote command can be used to install Pakku modpacks from secure remote Git repositories.
It is based on Git, but using this command doesn't require Git to be installed on your computer. This is because Pakku uses the Java implementation of Git named JGit.
A remote modpack can only be installed in a directory with a non-initialized Pakku dev environment, meaning the directory must be empty or must contain empty directories only.
To install a remote modpack, use the pakku remote command with the <url> argument provided.
Example usage: pakku remote https://github.com/juraj-hrivnak/CaveGameUltimate.git
pakku remote without any arguments will show you the status of the remote or show the help message when no remote is installed.
To update your modpack from the remote modpack repository, run the pakku remote update subcommand.
pakku remote <url> and the update subcommand can be used together for an autoupdating modpack installation.
Example usage: pakku remote https://github.com/juraj-hrivnak/CaveGameUltimate.git update - This will install or update the modpack as needed.
Server installation can be achieved by using the -S or --server-pack flag when running the pakku remote command.
Other
- The prefix "
!" in glob pattern matching, which negates the pattern, will now exclude any matching file included by a previous pattern, and not a matching file included by any pattern, as it worked before. - Refactored the
LockFileto use thekotlin-resultmonad. - Refactored action error messages to use the new
message()function. - Modrinth
MultipleProjectFilesrequests are now chunked every 300 IDs instead of 1000. - Improved error handling for the export action.
- Improved and unified error handling when writing the lock file and the config file to disk.
- Implemented
OptionalExportRule. - Fixed a rare crash when converting
ProjectFiletoCfModDataon exporting.
v0.26.0
Highlights
- Added mod loader and MC version changes to the diff, by @Wxrlds in #48.
- Added sections
# Minecraftand# Loadersto the diff output. - Added
header-sizeoption to specify the size of the headers in the markdown.
- Added sections
- Improved already added & replacing project messages.
- Fixed support for CurseForge projects with 7-digit IDs; Fixes #75.
- Fixed the building of Export Profiles when exporting multiple times.
- Created the
CONTRIBUTING.md.
API
- Implemented
PakkuApientry point for initializing the Pakku API.- Example usage:
pakku { curseForge(apiKey = "<your_custom_api_key>") withUserAgent("<your_custom_user_agent>") }
- Example usage:
- Renamed
ExportingScopetoExportRuleScopefor better clarity. - Implemented the
getProjectConfigfunction. (Get "projects" configuration from the config file.)
Tests
- Migrated to Strikt assertion library for more readable tests.
v0.25.0
Highlights
- Implemented the
pakku fetch --shelveflag. - Removed the
pakku synccommand's subpath auto-detection. (It did not work properly, and it's not worth rewriting it.) - Fixed error when requesting GitHub projects generated from a template repository.
pakku fetch --shelve Explanation
This feature was implemented to help revive old modpacks that use mods outside any platform.
When pakku fetch --shelve is used, Pakku will move unknown project files to a shelf instead of deleting them.
The shelf directory is located at .pakku/shelf/.
This feature can be used together with the pakku sync command in the following way:
- Run the
pakku -y synccommand to detect and add your local project files. - Run the
pakku fetch --shelvecommand to move any other project files outside any platform to the shelf. - Decide what you want to do with each project file on the shelf.
- You can move the project to the project overrides directory
.pakku/overrides/mods/. - You can try to search for the project online. (For example, there is a chance that some of these files will be on GitHub.)
- You can move the project to the project overrides directory