Release Day 2022.7.28
today isRelease Day!
It’s Release Day again!
Two more weeks of work have been done and it’s time to celebrate another release day!
This release brings many new features, performance improvements and bug fixes.
Ok now let’s get to the point. What’s new in this version?
New Versioning System
The bottle versioning system is one of the unique features of Bottles. We have collected a lot of feedback since its introduction and have rewritten the system from scratch to improve its performance and efficiency, as well as to allow much more flexible control.
The new system is not limited to just the bottle’s files but also extends to its configuration, which means that restoring a previous state of the bottle will also roll back its configuration to that time.
As shown in the video above, by installing a dependency or enabling a component (e.g., VKD3D) and restoring a previous state, they will be removed from the bottle, removing all traces of it.
The new system arrives with several options, all configurable from the Bottles user interface. Now the versioning system is on by default for all bottles but will not act automatically, you will in fact need to enable the option from the preferences, from which you can disable it at any time to pause it.
We also implemented a path exclusion system based on user-configurable patterns.
In the example above, we created a new pattern to exclude all files with the
The dosdevices path is excluded by default, since this contains only symlinks that you may not want to track.
It is important to keep in mind that enabling or disabling compression will re-initialize the repository since the two storage types are not compatible with each other. This will not delete any files but will prevent it from reverting to a state prior to the change.
Although the old versioning system is still available in Bottles, this is deprecated and its functionality has been limited to only restoring states already created. Opening a bottle will propose migrating to the new system, this will not preserve states but will initialize a new repository based on the current state, so consider restoring a previous state if necessary before proceeding.
Technical Stuff (FVS)
We decided to rewrite this system externally to Bottles, so that we could more easily update it as well as allow third-party projects to use it for their own purposes.
The new versioning system is called FVS (File Versioning System) and does what the name promises. The system was written with an eye toward handling large numbers of files and consuming as little space as possible, thanks to deduplication, an organized catalog, hash comparison, and the ability to enable compression (which will decrease the space consumed at the cost of increased processing time).
With the following images, we can see the basic concept of FVS and how it works.
In the following examples we will investigate only the first file cell, the others follow the same concept.
As you can see, the first file was added, removed and re-added but FVS always kept only one copy of that file as it was always the same version.
The example above shows a different timeline. In State #4 a new file has been added in the same place as the one in State #1 but since it is a different file, FVS is keeping two files in its storage.
Since the second version of the file is used only by State #4, if we were to restore one of the previous States, FVS will permanently delete that file as it is not necessary for the other States, this is because FVS per concept does not allow travel to the future, so all the States after the restored one are deleted.
Covers in Library Mode
The UI for Library Mode is finally complete as are most of its features.
With this release we have implemented covers, these are taken from SteamGridDB based on the name of the program we are going to add.
We have already started work to allow the addition of custom covers and select one from those proposed by SteamGridDB in case the one selected by Bottles is not to your liking.
This feature is almost ready to leave the experimental phase, planned for the next release (2022.8.14).
Work also continues in improving the user interface of Bottles. In this release we have smoothed some corners but for sure the most noteworthy update is definitely the new About dialog, part of libadwaita.
The Health Check has been moved from the main menu to the Troubleshooting section of the About dialog to make it more intuitive to reach and consistent with the user experience designed by libadwaita.
All other changes
There are many other changes and improvements in this release. Below are some noteworthy ones, for all others, please refer to the GitHub organization.
- New versioning system which allow versioning the whole bottle (also configuration)
- Automatic versioning can now be toggled on and off
- Exclude paths from versioning using patterns
- Use compression for versioning states
- Improve Launch Options saving without update the UI multiple times
- Improved YAML performance using libyaml (the python-yaml package must provide support for it)
- New About dialog
- Covers support in Library mode (thanks to SteamGridDB)
- Removed DXVK HUD option, use the Environment Variables section instead
- bottles-cli shell option now provide command output
- The Health Check is now in the About´s Troubleshooting section
- Extended Core dependencies check, packagers are invited to double-check their packages
- New default permission for the Flatpak package: xdg-download
- Added credits for Third-Party Libraries in the Credits section
- Minor UI improvements
- Fix for skipable onboard dialog
- Fix for empty bottle name
- Fix gstreamer libs for win32 bottles
- Fix for RemoteDisconnected error causing a crash
- Fix wrong Vaniglia listing
- Fix templates being generated with symlinked paths causing loops
- Fix configuration migration causing a crash when the user altered the configuration
- Fix mscoree.dll not found
- Fix regression for the -b option of the legacy bottles cli
- Fix Steam Launch Options parser causing a crash
- Fix a regression in the Add to Steam button not adding the new entry in Steam
- Finnish translations thanks to Jiri Grönroos
- French translations thanks to @rjousse18, @julroy67
- Indonesian translations thanks to @liimee
- Russian translations thanks to @Knebergish, @lenemter, @Smoque
- Thai translations thanks to @SashaPGT
- Spanish translations thanks to Pablo Munoz Alabau, @oscfdezdz
- Italian translations thanks to @gdonisi
- Portuguese (Brazil) translations thanks to @geraldohomero
- German translations thanks to Patrick Ulbricht
- Croatian translations thanks to @milotype
Thanks to all users who contributed to this release!
~ Bottles’ developers