Skip to content

v4.0.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@craftablescience craftablescience released this 27 Jan 09:41
· 428 commits to main since this release

VPKEdit 4.0 is almost done! Assuming no bugs are found with this version, this will become the 4.0.0 full release. All known bugs will be fixed in the full release.

Warning

You may encounter bugs using this version that I haven't found yet. If you encounter any, please make an issue here so the fix will go in the full release!

Known bugs (fixed in the full release):

  • VPKEditCLI will append an extraneous ".vpk" to the filename printed in the console
  • VPKEdit will append the packfile extension to the name of the folder when using the "Extract All" function
  • VPKEdit will use the archive VPK filename instead of the directory VPK filename in the "Open Recent" menu when trying to open an archive VPK
  • The "New VPK Properties" dialog in VPKEdit mistakenly uses bytes for the user-facing input instead of megabytes
  • The "New VPK Properties" dialog in VPKEdit should not show "Save to single file" option when creating an empty VPK
  • Multichunk VPKs (VPKs with _XXX.vpk next to them) don't copy their chunk files when saved to a different folder
  • VPKEdit does not save ZIP files and BSP files to a different path when "Save As" is selected

4.0 Highlights

  • Added support for editing BSP paklumps
  • Added a command-line VPK packer
  • Tons of bug fixes and improvements to the UI

GUI Changes

  • Don't crash after viewing more than 512 items without closing the VPK
  • Center text in info previews
  • Use release name instead of release tag in the update dialog
  • Ignore prereleases in update checker
  • Bundle credits text into the application, so Help > About dialog still works if CREDITS.md isn't present
  • Add a progress bar when saving VPK
  • Add a progress bar when creating a VPK from a folder
  • Update the status text at the bottom of the window more consistently
  • Add an option to create a single-file VPK (the default is now a chunked VPK)
  • Fix crash when Steam is installed but no Source games are found
    • Also, don't show the "Open In" menu if no Source games are found
  • When creating a VPK from a folder, append "_dir" to the default name if it is a chunked VPK
  • Fix Source 2 games not appearing in "Open In" menu
  • Fix files not being easily overwritable
  • Fix entry options dialog not using the correct maximum preload bytes value
  • Fix entry options dialog using inverted wording interacting with files versus folders
  • Fix filenames not always being lowercased in the GUI compared to the VPK in memory

Changes since the last beta:

  • Fix entry options inverting saving to dir vs archive
  • Make Delete (and Shift+Delete) remove entries from entry tree or folder preview
  • Don't append _dir to a VPK filestem if the folder it is being created from ends in _dir
  • Always check the latest GitHub release in the update checker
  • Fix leaking memory when dialogs are closed successfully
  • Add a list of keyboard controls
  • Add icons to entries in the entry tree
    • Add option to disable icons in the entry tree
  • Fix some bugs when opening or closing a pack file and selecting "cancel" or "discard", where the internal state would no longer match the GUI
  • Add "File > Open Recent" menu to open recent files
  • Fix menu items staying disabled after failing to load a pack file
  • Add new entry properties to GUI
  • Add new VPK properties to GUI
  • BSP extension is now registered to VPKEdit using the installer

CLI Changes

  • Create CLI executable!
    • Add CLI executable to VPKEdit installer
    • -h. --help, or no arguments - print usage and program information
  • Convert directory to VPK (pack)
    • -v, --version - specify version
    • -c, --chunksize - specify chunk size
    • -p, --preload - accepts a list of file extensions and/or filenames to preload in the directory VPK
    • -s, --single-file - pack to single file
    • -o, --output - specify output VPK path
    • --gen-md5-entries - enables generating per-file MD5 hashes to store in the directory VPK
    • --allow-caps - stops automatically lowercasing filenames (filenames are now lowercased when packing by default)

General Changes

  • When creating a VPK from a directory, skip files with non-ASCII names (VPKs don't support those)
  • Don't keep the contents of unbaked entries in memory if added though a file path
    • If the file is moved/deleted before the VPK is baked, it will be empty in the VPK
    • This saves a massive amount of RAM when creating VPKs from folders
  • Fix trying to write to a wonky path when saving an archive to the same folder as the VPK
  • When using the Linux installer, symlinks for the GUI and CLI are now created in /usr/bin, which puts the programs on the PATH
    • This was documented in INSTALL.md by @Nbc66
  • Fix two bugs with using relative paths in different places
  • Fix the archive paths that will be copied when re-saving an existing VPK to a different folder
  • Added badges to README.md for license, build status, and associated Discord server
  • Automatically lowercase all filenames given to the library
  • Properly display beta versions (versions with a tweak number) as beta
  • Added a code of conduct and issue templates to the GitHub page

Changes since the last beta:

  • Added support for ZIP (uncompressed, LZMA) and BSP formats
  • Properly display RC versions (versions where the tweak number matches this regex: ^99+$)
  • When failing to load archive vpks, try to load the directory vpk instead
  • Added better screenshots to the readme, and added a custom social preview image

For Developers

Note

All changes to libvpkedit will be listed in the full release, since it is evolving quickly right now. In the meantime, here's an overview:

  • Add ability to control VPK chunk size
  • Remove VPKEntry::filenamePair member variable
  • Remove some redundant and not well documented VPK methods
  • Rename all usages of FileName to Filename
  • Move version header from GUI to libvpkedit
  • Split up project CMake for readability
  • Stop uploading artifacts produced by clang in GitHub Actions
  • Strip binaries of debug symbols in Linux installer creation process
  • Add a callback parameter to all functions that operate on all entries in a VPK (accepts the parent directory and a VPKEntry reference)
  • Add VPK::createFromDirectoryProcedural, which accepts a function that takes in the full entry path and returns if the entry should be saved in the directory VPK and the preload bytes amount
    • This function is then called for each file added to the VPK
  • Add VPK::getEntryCount to get the number of entries in the VPK
  • Add field VPKOptions::generateMD5Entries to control if per-file MD5 entries are generated
  • Fix edge case where it would write to an incorrect path if saving to the same place it was loaded from, when that path was manually specified in the VPK::bake parameters
  • Use a more reliable check for if a filesystem entry is a file or not
  • Added new boolean field, VPKOptions::allowUppercaseLettersInFilenames, which enables case sensitivity in all VPK operations (false by default)

Changes since the last beta:

  • Completely refactored the library to support multiple formats