diff --git a/Cargo.lock b/Cargo.lock index e13f68a3..f39cd08c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -593,7 +593,7 @@ dependencies = [ [[package]] name = "libloot" -version = "0.29.1" +version = "0.29.2" dependencies = [ "array-parameterized-test", "crc32fast", @@ -613,7 +613,7 @@ dependencies = [ [[package]] name = "libloot-cpp" -version = "0.29.1" +version = "0.29.2" dependencies = [ "cxx", "cxx-build", @@ -624,11 +624,11 @@ dependencies = [ [[package]] name = "libloot-ffi-errors" -version = "0.29.1" +version = "0.29.2" [[package]] name = "libloot-nodejs" -version = "0.29.1" +version = "0.29.2" dependencies = [ "libloot", "libloot-ffi-errors", @@ -639,7 +639,7 @@ dependencies = [ [[package]] name = "libloot-python" -version = "0.29.1" +version = "0.29.2" dependencies = [ "libloot", "libloot-ffi-errors", diff --git a/Cargo.toml b/Cargo.toml index 1ca44fdc..62408bb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ lto = "thin" members = ["cpp", "ffi-errors", "nodejs", "array-parameterized-test", "python"] [workspace.package] -version = "0.29.1" +version = "0.29.2" repository = "https://github.com/loot/libloot.git" edition = "2024" license = "GPL-3.0-or-later" diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 481466e6..aaf07cee 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -5,7 +5,7 @@ endif() if(POLICY CMP0167) cmake_policy(SET CMP0167 NEW) endif() -project(libloot VERSION "0.29.1") +project(libloot VERSION "0.29.2") include(CMakeDependentOption) include(CMakePackageConfigHelpers) include(GNUInstallDirs) diff --git a/cpp/include/loot/loot_version.h b/cpp/include/loot/loot_version.h index c5aa5a6f..e71844fe 100644 --- a/cpp/include/loot/loot_version.h +++ b/cpp/include/loot/loot_version.h @@ -37,7 +37,7 @@ inline constexpr unsigned int LIBLOOT_VERSION_MAJOR = 0; inline constexpr unsigned int LIBLOOT_VERSION_MINOR = 29; /** @brief libloot's patch version number. */ -inline constexpr unsigned int LIBLOOT_VERSION_PATCH = 1; +inline constexpr unsigned int LIBLOOT_VERSION_PATCH = 2; /** * @brief Get the library version. diff --git a/cpp/src/api/resource.rc b/cpp/src/api/resource.rc index 82e89cf7..9392d7ad 100644 --- a/cpp/src/api/resource.rc +++ b/cpp/src/api/resource.rc @@ -2,8 +2,8 @@ #include 1 VERSIONINFO -FILEVERSION 0, 29, 1, 0 -PRODUCTVERSION 0, 29, 1, 0 +FILEVERSION 0, 29, 2, 0 +PRODUCTVERSION 0, 29, 2, 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.29.1" +VALUE "FileVersion", "0.29.2" VALUE "InternalName", "loot" VALUE "LegalCopyright", "Copyright (C) 2013-2022 Oliver Hamlet" VALUE "OriginalFilename", "loot.dll" VALUE "ProductName", "LOOT" -VALUE "ProductVersion", "0.29.1" +VALUE "ProductVersion", "0.29.2" END END BLOCK "VarFileInfo" diff --git a/docs/api/changelog.rst b/docs/api/changelog.rst index 4b711f09..8295cb10 100644 --- a/docs/api/changelog.rst +++ b/docs/api/changelog.rst @@ -2,6 +2,44 @@ Version History *************** +0.29.2 - 2026-03-27 +=================== + +Added +----- + +- Support for recognising when Starfield BlueprintShips plugins are implicitly + active. + + Starfield treats a plugin named BlueprintShips-X.esm (where X can be anything) + as active even if it is not listed as active in plugins.txt (or not listed in + plugins.txt at all), so long as there is an active plugin named X.esm, X.esp + or X.esl. I.e. activating X.esm will also activate BlueprintShips-X.esm if it + exists. + + libloot will account for this behaviour when reading the load order. When it + sets the load order, it will include the implicitly-active BlueprintShips + plugins in ``plugins.txt``, making them explicitly active until after the next + time Starfield starts. Via libloadorder. +- Support for persisting blueprint master load order across Starfield starts. + + When libloot sets the load order, it will now set the modification timestamps + of blueprint masters to match the load order that it writes to + ``plugins.txt``. When Starfield next starts, it will use the order in + ``plugins.txt`` and then remove the blueprint masters from ``plugins.txt``. + Subsequent Starfield starts will then load any implicitly active blueprint + masters in order of their modification timestamps. Via libloadorder. + +Changed +------- + +- Updated libloadorder to v18.6.0. +- Updated the accepted regress version range to include v0.11.x. +- Updated dependency versions in Cargo.lock (which sets the versions used by the + C++ wrapper): + + - Updated regress to v0.11.0. + 0.29.1 - 2026-03-13 =================== diff --git a/docs/pyproject.toml b/docs/pyproject.toml index 87692d4d..38ed82aa 100644 --- a/docs/pyproject.toml +++ b/docs/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "libloot-docs" -version = "0.29.1" +version = "0.29.2" requires-python = ">=3.11" dependencies = [ "breathe==4.36.0", diff --git a/docs/uv.lock b/docs/uv.lock index e5a5ad45..c1a8c7dd 100644 --- a/docs/uv.lock +++ b/docs/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 2 requires-python = ">=3.11" [[package]] @@ -139,7 +139,7 @@ wheels = [ [[package]] name = "libloot-docs" -version = "0.29.1" +version = "0.29.2" source = { virtual = "." } dependencies = [ { name = "breathe" }, diff --git a/nodejs/npm/linux-x64-gnu/package.json b/nodejs/npm/linux-x64-gnu/package.json index 1280451c..4e235e20 100644 --- a/nodejs/npm/linux-x64-gnu/package.json +++ b/nodejs/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "libloot-nodejs-linux-x64-gnu", - "version": "0.29.1", + "version": "0.29.2", "os": [ "linux" ], diff --git a/nodejs/npm/win32-x64-msvc/package.json b/nodejs/npm/win32-x64-msvc/package.json index 8d98e8ae..8b7351f7 100644 --- a/nodejs/npm/win32-x64-msvc/package.json +++ b/nodejs/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "libloot-nodejs-win32-x64-msvc", - "version": "0.29.1", + "version": "0.29.2", "os": [ "win32" ], diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 6db88150..f84c35ec 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "libloot-nodejs", - "version": "0.29.1", + "version": "0.29.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "libloot-nodejs", - "version": "0.29.1", + "version": "0.29.2", "license": "MIT", "devDependencies": { "@napi-rs/cli": "^3.1.3", @@ -1617,6 +1617,7 @@ "integrity": "sha512-oNXsh2ywth5aowwIa7RKtawnkdH6LgU1ztfP9AIUCQCvzysB+WeU8o2kyyosDPwBZutPpjZDKPQGIzzrfTWweQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.1", @@ -1875,6 +1876,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, diff --git a/nodejs/package.json b/nodejs/package.json index a891f133..482b31b6 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "libloot-nodejs", - "version": "0.29.1", + "version": "0.29.2", "main": "index.js", "types": "index.d.ts", "napi": {