From f3eabb639bbdfe266e51d00e578504a3ab49968c Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 28 Jun 2024 20:13:25 +0100 Subject: [PATCH] Update changelog and version for 0.23.0 release --- CMakeLists.txt | 2 +- docs/api/changelog.rst | 70 +++++++++++++++++++++++++++++++++++++ include/loot/loot_version.h | 4 +-- src/api/resource.rc | 8 ++--- 4 files changed, 77 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 542e6624..3698be1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -403,7 +403,7 @@ endif() # Install ######################################## -set(LIBLOOT_VERSION "0.22.4") +set(LIBLOOT_VERSION "0.23.0") set_property(TARGET loot PROPERTY VERSION ${LIBLOOT_VERSION}) set_property(TARGET loot PROPERTY SOVERSION 0) diff --git a/docs/api/changelog.rst b/docs/api/changelog.rst index a930eb1c..ac9cce4b 100644 --- a/docs/api/changelog.rst +++ b/docs/api/changelog.rst @@ -2,6 +2,76 @@ Version History *************** +0.23.0 - 2024-06-29 +=================== + +Added +----- + +- Support for Starfield's new medium plugin type (via esplugin and + libloadorder). +- :cpp:any:`PluginInterface::IsMediumPlugin()` +- :cpp:any:`PluginInterface::IsValidAsMediumPlugin()` + +Fixed +----- + +- A couple of use-after-free bugs that could happen when configuring additional + data paths (e.g. for Fallout 4 installs from the Microsoft Store). +- :cpp:any:`PluginInterface::IsMaster()` incorrectly checked the file extension + of Morrowind plugins instead of their header's master flag (via esplugin). +- :cpp:any:`PluginInterface::DoRecordsOverlap()` was not able to reliably check + if two Starfield plugins had overlapping records (via esplugin). +- The sorting process was unable to reliably count the number of records that a + Starfield plugin overrode, which could negatively impact the quality of the + sorted load order (via esplugin). +- If a non-master plugin was a master of two master plugins, it would be hoisted + to load before the master that loaded second instead of the master that loaded + first (via libloadorder). +- If more than one plugin needed to be hoisted while reading the load order, + some plugins could be moved too late in the load order (via libloadorder). +- When getting the load order, the result will now correctly reflect the + supported games' ability to hoist master files to load above other master + files that depend on them (via libloadorder). + + +Changed +------- + +- Support for getting and setting Starfield's load order has been updated to + reflect the changes in the game's behaviour between its initial release and + the arrival of the Creation Kit alongside Starfield v1.12.30.0 (via + libloadorder). + + - Starfield's ``Starfield.ccc`` file will now be read from the + ``My Games\Starfield`` directory as well as its install directory, with the + former taking precedence over the latter. + - Starfield plugins will now be loaded from the ``My Games\Starfield\Data`` + directory as well as the game install path's ``Data`` directory, but only + for plugins that are present in both directories. + - Starfield's ``Starfield.esm``, ``Constellation.esm`` and ``OldMars.esm`` are + no longer treated as hardcoded: instead, they are now treated as implicitly + active, along with ``BlueprintShips-Starfield.esm``, ``SFBGS003.esm``, + ``SFBGS006.esm``, ``SFBGS007.esm`` and ``SFBGS008.esm``. + - Plugins that have the update flag (introduced by Starfield) set are no + longer given special treatment when checking active plugin limits, to match + Starfield's current behaviour. Previously such plugins would not count + towards the maximum number of plugins you could have active at the same + time. + +- :cpp:any:`loot::GameInterface::LoadPlugins()` will now throw if attempting to + fully load Morrowind or Starfield plugins without also loading all their + masters. +- Renamed ``PluginInterface::IsOverridePlugin()`` to + :cpp:any:`PluginInterface::IsUpdatePlugin()` to reflect the terminology used + by Starfield's Creation Kit. +- Renamed ``PluginInterface::IsValidAsOverridePlugin()`` to + :cpp:any:`PluginInterface::IsValidAsUpdatePlugin()` to reflect the terminology + used by Starfield's Creation Kit. +- Updated esplugin to v6.0.0. +- Updated libloadorder to v17.0.1. +- Updated loot-condition-interpreter to v4.0.1. + 0.22.4 - 2024-05-03 =================== diff --git a/include/loot/loot_version.h b/include/loot/loot_version.h index c0634f66..3104952d 100644 --- a/include/loot/loot_version.h +++ b/include/loot/loot_version.h @@ -34,10 +34,10 @@ namespace loot { inline constexpr unsigned int LIBLOOT_VERSION_MAJOR = 0; /** @brief libloot's minor version number. */ -inline constexpr unsigned int LIBLOOT_VERSION_MINOR = 22; +inline constexpr unsigned int LIBLOOT_VERSION_MINOR = 23; /** @brief libloot's patch version number. */ -inline constexpr unsigned int LIBLOOT_VERSION_PATCH = 4; +inline constexpr unsigned int LIBLOOT_VERSION_PATCH = 0; /** * @brief Get the library version. diff --git a/src/api/resource.rc b/src/api/resource.rc index 3b83aade..95abbc12 100644 --- a/src/api/resource.rc +++ b/src/api/resource.rc @@ -2,8 +2,8 @@ #include 1 VERSIONINFO -FILEVERSION 0, 22, 4, 0 -PRODUCTVERSION 0, 22, 4, 0 +FILEVERSION 0, 23, 0, 0 +PRODUCTVERSION 0, 23, 0, 0 FILEOS VOS__WINDOWS32 FILETYPE VFT_DLL BEGIN @@ -13,12 +13,12 @@ BLOCK "040904b0" BEGIN VALUE "CompanyName", "LOOT" VALUE "FileDescription", "Library providing LOOT's core functionality" -VALUE "FileVersion", "0.22.4" +VALUE "FileVersion", "0.23.0" VALUE "InternalName", "loot" VALUE "LegalCopyright", "Copyright (C) 2013-2022 Oliver Hamlet" VALUE "OriginalFilename", "loot.dll" VALUE "ProductName", "LOOT" -VALUE "ProductVersion", "0.22.4" +VALUE "ProductVersion", "0.23.0" END END BLOCK "VarFileInfo"