Skip to content

Releases: juraj-hrivnak/Pakku

v1.3.2

21 Oct 21:08

Choose a tag to compare

  • Fixed a bug in the improved recursive copy mechanism introduced in v1.3.0.
    • This is a hotfix for both v1.3.0 and v1.3.1.
    • Fixed #101.

v1.3.1

16 Oct 11:46

Choose a tag to compare

v1.3.0

14 Oct 12:28

Choose a tag to compare

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 the GITHUB_ACCESS_TOKEN environment variable.
  • Added the pakku insp command for inspecting projects in detail.
  • Added better error handling to the update and sync commands.
  • The status command will now display hyperlinks to project files.
  • Improved the ls command:
    • 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 sync command.
  • 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 --export option to the pakku cfg prj command.
  • 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 outputDir option for fetch API actions.
  • Added ExportSystemDsl annotations to Pakku's DSL functions.

v1.2.1

25 Apr 10:26

Choose a tag to compare

  • Improved performance of the pakku fetch command.
  • icon.png is now allowed to be present in the modpack directory when installing a remote modpack.

v1.2.0

21 Apr 20:06

Choose a tag to compare

  • Implemented working path search up. You can now run Pakku anywhere in your modpack's subdirectories.
  • Fixed pakku init command 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 prj command, pakku will now remove empty project entries.
    For example, if this command: pakku cfg prj -t mod example-mod results in this JSON: "example-mod": {}, "example-mod": {} will be removed from pakku.json.

v1.1.1

08 Apr 13:47

Choose a tag to compare

  • Fixed encoding of spaces in URLs in the modrinth.index.json file when exporting.
  • Fixed typo in Pattern Format section in docs.

v1.1.0

04 Apr 15:13

Choose a tag to compare

  • 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 --debug flag.

v1.0.0

25 Mar 21:30

Choose a tag to compare

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 remote command.
    • Example usage for "autoupdating" installation: pakku remote https://github.com/juraj-hrivnak/CaveGameUltimate.git update
    • More information can be found below.
  • Implemented more robust error handling for HTTP requests.
  • Pakku now requires users to provide a CurseForge API key when accessing CurseForge.
    • pakku credentials command 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 ASCII CLI 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-overrides or .pakku/client-overrides directories. 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 export property 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 😉
              }
          }
      }
  • Deprecated argument and options from the pakku set command (namely: [<projects>]..., -s, -u and -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 LockFile to use the kotlin-result monad.
  • Refactored action error messages to use the new message() function.
  • Modrinth MultipleProjectFiles requests 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 ProjectFile to CfModData on exporting.

v0.26.0

02 Feb 15:01

Choose a tag to compare

Highlights

  • Added mod loader and MC version changes to the diff, by @Wxrlds in #48.
    • Added sections # Minecraft and # Loaders to the diff output.
    • Added header-size option to specify the size of the headers in the markdown.
  • 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 PakkuApi entry point for initializing the Pakku API.
    • Example usage:
      pakku {
          curseForge(apiKey = "<your_custom_api_key>")
          withUserAgent("<your_custom_user_agent>")
      }
  • Renamed ExportingScope to ExportRuleScope for better clarity.
  • Implemented the getProjectConfig function. (Get "projects" configuration from the config file.)

Tests

  • Migrated to Strikt assertion library for more readable tests.

v0.25.0

04 Jan 13:27

Choose a tag to compare

Highlights

  • Implemented the pakku fetch --shelve flag.
  • Removed the pakku sync command'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 sync command to detect and add your local project files.
  • Run the pakku fetch --shelve command 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.)