Releases: craftablescience/VPKEdit
v4.2.3
Tip
Read the install guide for assistance installing VPKEdit.
Warning
As of v4.2.2, VPKEdit relies on a more recent version of the Visual C++ Redistributables. If you experience a crash when VPKEdit worked before the update, the installer is located here: https://aka.ms/vs/17/release/vc_redist.x64.exe
General Changes
- Fix loading/saving Left 4 Dead 2, Contagion BSPs
- Use an actual keyvalues parser when signing VPKs to parse private key VDF files more reliably
- Fix multiple VPKEdit CLI/GUI instances saving a BMZ/BSP/ZIP at the same time (would previously create conflicts)
- Fix PAK writer appending
_test.pak
to the save filename (oops) - Fix PAK writer not writing directories of added files properly
GUI Changes
- Add option to disable creating
Open In...
menu at startup (prevents scanning user's Steam library) - Populate
Open In...
menu in a separate thread to improve startup performance - Fix regression from last release where compressed image formats would disable alpha checkbox in VTF preview despite having transparency
- Highlight KeyValues conditionals that start with a
!
in KeyValues preview - Show milliseconds in sound preview
- Fix Strata Source build crashes by removing all instances of
QString::toStdString
CLI Changes
- Allow any pack file format where appropriate, not just VPKs
- Add
-e
,--extract
parameter to extract files from pack file - Add
--add-file
parameter to add a file at the given path in the pack file - Add
--remove-file
parameter to remove a file at the given path in the pack file
For Developers
- The
libvpkedit
library has been migrated to the sourcepp repository, and it has been renamed tovpkpp
. This repository is now solely for the VPKEdit executables, and any submodules of it should be changed to point to thesourcepp
repository. - Remove
SAPP
,SpeedyKeyV
GUI dependencies in favor ofsourcepp
libraries
v4.2.2
Tip
Read the install guide for assistance installing VPKEdit.
GUI Changes
- Fix crashes when Steam installation is in a semi-invalid state
- Detect Steam installation when installed through the Snap Store
- Display CRC32 values in base-16 instead of base-10
- Add texture size indicator to VTF preview
- Switch to a different library for parsing VTFs with a more permissive license (no more vtflib!)
v4.2.1
Tip
Read the install guide for assistance installing VPKEdit.
GUI Changes
- Add mods in
sourcemods
folder to "Open In" menu - Games/mods with no icon will now have a placeholder icon in "Open In" menu
- Add "Lay Flat" checkbox in VTF preview to preview all faces and frames at once
- Split checksum verifier tool into checksum verifier and signature verifier tools
- Add Zombie Panic: Source text formats to KeyValues preview
- Stop referencing a VPK specifically in save failure dialog
- On Linux, each pack file format is now given its own MIME type (thanks @HurricanePootis!)
Add fun April Fools prank
CLI Changes
- Add Verify mode to verify integrity of a VPK
--verify-checksums
- Verifies VPK checksums. Takes one argument, eitherfiles
,vpk
, orall
--verify-signature
- Verifies the VPK signature if present
- Add Preview mode to print VPK file tree
--file-tree
- Prints the VPK file tree to console
Installer Changes
- Add missing file associations for
.grp
and.pak
on Windows - For Linux:
- List
libxcb-cursor0
as an explicit dependency - Use
zstd
compression overgzip
compression
- List
For Developers
PackFile::verifyEntryChecksums
andPackFile::verifyFileChecksum
have been joined by 4 other functions. One is for signatures, and the other 3 return whether the file has that type of checksum or a signature
v4.2.0
Tip
Read the install guide for assistance installing VPKEdit.
4.2 Highlights
- Drag and drop from inside application to filesystem
- Select multiple files and/or folders
- Model skin preview and material listing
- VPK signing
General Changes
- Add capability to sign VPK v2 files and verify their signature
- Fix incorrect calculation of VPK v2 "whole file checksum"
GUI Changes
- Add drag and drop from inside application to filesystem
- Allow selecting multiple files and/or folders to extract or delete them all at once
- Also works with drag and drop
- Add model skin preview (based on the work on sourcepp by @Trico-Everfire, thanks!)
- Add information panel to display materials used by a model
- If a material is found in the current pack file, it can be clicked to instantly preview it
- Add DMX binary file preview
- This primarily means being able to browse particle definitions (
.pcf
)
- This primarily means being able to browse particle definitions (
- Add context menu to image preview and VTF preview
- It has one action currently, "Copy Image", which copies the displayed image to the clipboard
- Some VTF preview options (alpha and tile checkboxes, zoom slider) will no longer reset switching to a different VTF
- Fix off-by-one error in VTF preview spinners
- Fix face spinner in VTF preview having no effect on the displayed face
- Fix potential memory leak in VTF decoder
- Add
.qci
,.qcx
to the text preview's supported formats - Add VPK tool category
- "Generate Public/Private Key Files...": Generates a public/private keypair which can be used for signing VPKs
- "Sign File...": Signs the VPK using the given
<name>.privatekey.vdf
KeyValues file
- VPK signature (if present) and file-wide MD5 checksums are now properly checked in the "Verify Checksums" tool
- Remember save directory between "Create VPK From Folder" prompts
- Add button to ignore updates for a given version
- Show application version in Discord rich presence on hover
- Update to Qt 6.6.3 from 6.6.2
CLI Changes
- Add
-k
/--sign
parameter which accepts a path to the private key KeyValues file. The keys held within will be used to sign the output VPK - Add two new "modes"
- Generate: exists for the
--gen-keypair
command.<path>
will be interpreted as the name of the files, prepended to.[public/private]key.vdf
- Sign: when
<path>
is an existing VPK and-k
/--sign
is present, the existing VPK will be signed using the keys in the private key file
- Generate: exists for the
- Add progress bar for packing files
- Can be disabled with the flag
--no-progress
- Can be disabled with the flag
Installer Changes
- Stop installing minizip headers
- Stop installing discord-rpc headers and static library
For Developers
- Replaced most of the existing cryptographic algorithm code with the CryptoPP library
v4.1.3
Tip
Read the install guide for assistance installing VPKEdit.
General Changes
- Add Adler32 implementation creators to credits
GUI Changes
- Add PAK write support (WON Half-Life, Quake, etc.)
- Add PCK write support (Godot)
- Add automatic update notification (thanks @Trico-Everfire!)
- This can be disabled in the options menu
- Add Discord rich presence support
- Does not say what file you have open
- This too can be disabled in the options menu
- Fix files failing to save on exit if the save operation took too long (race condition)
- Fix GUI elements not being disabled after a file fails to load
- Display "Embedded" in status bar if a Godot PCK is embedded in an executable
- Display "Encrypted" in status bar if a Godot PCK's directory is encrypted
- Display MD5 hashes as hex codes instead of binary in folder previews
- Stop translating language names in Language selector menu
- For example Japanese is now "日本語" for all languages
- This should make it easier to select the language the user knows
- Update translations
For Developers
- Create precompiled versions of the C wrapper library
- Create a C# wrapper library based on the C wrapper library
- Create virtual entry system, currently used to edit BSP lumps
- Strip the
Wrapper
prefix from files and types in the C wrapper library - Change behavior of entry attributes getter to return a buffer allocated in the library
- Don't prefix
libvpkedit
andlibvpkeditc
with an extralib
on Linux - Start applying proper compiler flags for debug/release on Linux
v4.1.2
Tip
Read the install guide for assistance installing VPKEdit.
General Changes
- Fix VPK archives not copying to specified save path on Linux
- Fix attempting to load FPX files with the VPK parser
GUI Changes
- Sort list of supported extensions in "Open Pack File" dialog alphabetically
For Developers
- Fix C wrapper library's PackFileTypeWrapper enum so it matches PackFileType
v4.1.1
Tip
Read the install guide for assistance installing VPKEdit.
General Changes
- Stop compiling with liblzma to avoid IFUNC error on startup on Linux
- Fix crash when saving a VPK with external archive files to the same folder
GUI Changes
- Update translations
- Complete languages: Bosnian, Chinese (Simplified), Dutch, Polish, Russian, Spanish
- Languages in progress: Italian, Japanese, Swedish
- Add empty English translation file to stop defaulting to alternate installed languages
- For example, if you have a Japanese language pack installed but its priority is lower than English, it will use English by default now
- Fix crash when navigating back or forward when a removed file is in the navigation history
- Add list of missing files to MDL error message when the MDL preview cannot find all the required model files
Installer Changes
- Properly deregister associated extensions on Windows during uninstall process
For Developers
- Compile with PIC and LTO/IPO enabled
- Fix C wrapper library compilation
- Stop prepending an extra "lib" to the library names on Linux
v4.1.0
Tip
Read the install guide for assistance installing VPKEdit.
4.1 Highlights
- Six more supported formats: BMZ, FPX, GCF, GRP, PAK, PCK
- Translated to seven languages (3 fully, 4 partially)
- Audio preview implemented
- Created C wrapper library
- Many bug fixes
General Changes
- Add BMZ read and write support
- Add GCF v6 read-only support
- Add Godot PCK read-only support
- Also works for PCKs embedded inside executables
- Add GRP (Build Engine) read and write support
- Add PAK (Quake, others) read-only support
- When adding a new file to a VPK, prioritize saving it to empty space in an existing archive
- Fix problems when loading files larger than 4gb
GUI Changes
- Add translation support
- Complete languages: Dutch, Russian, Spanish
- Languages in progress: Bosnian, Japanese, Italian, Polish
- Add language selector in options menu (uses system language by default)
- You can help translate VPKEdit into your language of choice here: https://poeditor.com/join/project/yxR9MLc9X2
All translators are added to the application credits.
- Add audio preview (
.wav
files only for now, was very buggy with.mp3
files) - Add checksum verifier tool
- Add "Copy Path" button to file and folder context menus
- Display more file metadata in the status bar
- Display more valid attributes for files in the folder preview, for every supported pack file format
- Display VTF metadata in the bottom right of the preview (thanks @Trico-Everfire!)
- Use proper icons for navigation bar buttons instead of Unicode characters
- Fix previews not being able to understand files with uppercase letters in their extensions
- Fix the text preview not displaying text in non-UTF8 or non-ASCII encodings
- Add
.bns
file type to KeyValues preview - Movement with the arrow keys in the entry tree works again
- Always use valid Windows paths and filenames when extracting files on Windows
- Update to Qt 6.6.2 from 6.6.1
CLI Changes
- Remove
--allow-caps
, as case sensitivity is now directly controlled by the pack file and is no longer configurable
For Developers
- Create C wrapper library,
libvpkeditc
- Add example
PackFile
subclass in theexample
folder - Build PDBs in release and upload them (in Debug and Release) as an artifact in CI
v4.0.1
Tip
Read the install guide for assistance installing VPKEdit.
General Changes
- Fix BSP files being corrupted after writing the paklump
- Add GMA (Garry's Mod Addon) parser
- Fix keeping file handles active after parsing BSP, VPK files
v4.0.0
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