4.0 Highlights
- Added support for editing BSP paklumps
- Added a command-line VPK packer
- Tons of bug fixes and improvements to the UI
General Changes
- Add support for editing BSP pakfiles and ZIP (uncompressed, LZMA) files
- When failing to load archive VPKs, try to load the directory vpk instead
- When creating a VPK from a directory, don't crash processing files with non-ASCII names
- 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
- 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
- Add a code of conduct and issue templates to the GitHub page
- Add badges to README.md for license, build status, and associated Discord server
- Add better screenshots to the readme, and added a custom social preview image
GUI Changes
- Add icons to entries in the entry tree
- Add option to disable icons in the entry tree
- Add "File > Open Recent" menu to open recent files
- Add a progress bar when saving VPK
- Add a progress bar when creating a VPK from a folder
- Add new VPK creation properties to VPK creation dialog
- Save to single file - when creating a VPK from a folder, save all the files to the directory VPK
- Preferred chunk size - size of archive VPKs created when adding files to the VPK
- Generate per-file MD5 entries - generate MD5 hash information for each file when saving VPKs
- Add new pack file properties under "Edit > Properties"
- Currently this is just the VPK version property, but it provides a framework for more properties in the future
- Add new entry properties to Entry Properties dialog
- Use Compression - In BSP/ZIP files, entries can optionally use LZMA compression
- Make
Delete
(andShift+Delete
) remove entries from entry tree or folder preview - Add a list of keyboard controls
- 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
- Fix menu items staying disabled after failing to load a pack file
- Fix crash after viewing more than 512 items without closing the 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
- Fix Source 2 games not appearing in "Open In" menu
- Center text in info previews
- Bundle credits text into the application, so
Help > About
dialog still works if CREDITS.md isn't present - Update the status text at the bottom of the window more consistently
- When creating a VPK from a folder, append "_dir" to the default name if it is a chunked VPK
- Don't append _dir to a VPK filestem if the folder it is being created from ends in _dir
- 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
- Fix entry options inverting saving to dir vs archive
- Fix leaking memory when dialogs are closed successfully
- Use release name instead of release tag in the update checker dialog
- Always check the latest GitHub release in the update checker dialog
- Properly display beta versions (versions with a tweak number) as beta
- Properly display RC versions (versions where the tweak number matches this regex:
^99+$
)
CLI Changes
- Create CLI executable!
-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)- Only pass this if you know what you're doing! Files with uppercase letters will not be loaded by Source
Installer Changes
- Add the CLI program to the installer
- BSP extension is now registered to VPKEdit using the installer
- 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
- Add VPKEdit to the WinGet package registry
- Create a PPA to serve VPKEdit packages over
apt
- Create binaries for bundling into Strata Source games (made for Portal 2: Community Edition)
For Developers
- Completely refactored the libvpkedit library. It would be faster to describe what hasn't changed, so rather than describe it here, I added a bunch of comments to the library. To use it now, call
PackFile::open
on the pack file, rather than the filetype-specificopen
method (unless you're using a nonstandard file extension) - 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
- 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
PackFile::bake
parameters - Use a more reliable check for if a filesystem entry is a file or not