4279 Commits
Author SHA1 Message Date
Oliver Hamlet d929ab9dab Set version and changelog for 0.29.2 0.29.2 2026-03-27 13:56:04 +00:00
Oliver Hamlet 6dd58fe024 Fix v0.29 release date in metadata syntax changelog 2026-03-27 13:49:57 +00:00
Oliver Hamlet b6283fbd27 Update libloadorder from 18.5.1 to 18.6.0 2026-03-26 22:55:13 +00:00
Oliver Hamlet 41193a500f Update regress from 0.10.5 to 0.11.0 2026-03-16 18:04:25 +00:00
Oliver Hamlet d869833742 Set version to 0.29.1 0.29.1 2026-03-13 18:40:53 +00:00
Oliver Hamlet 8cb826bf65 Remove log warning on archive hash collision
TL;DR: The warning added a lot more noise than expected, doesn't really
add value, and improving it isn't worth the effort.

The warning was logged when the same pair of folder hash and file hash
appeared more than once within the set of archive files being loaded
(as the function was used, the set would be the archives loaded by a
single plugin).

Hashes are used directly instead of asset file paths because the paths
are not necessarily present in BSA files, and while they are present in
BA2 files (at least, I'm not aware of any option to omit them or any
files that do omit them), hashes are calculated from the file paths they
contain for consistency with the approach needed for BSA files.

Without the file paths it's not possible to determine if the repeated
hashes represent the same asset file (possibly containing different
data) or different files that have colliding hashes.

I had assumed that it would be unusual for a single plugin to load more
than one archive file containing the same asset file path, so any
repeated hash pairs would likely indicate hash collisions, but feedback
from Pickysaurus on behalf of Vortex users indicates that's not true,
and that logging all the warnings significantly slows down fully loading
plugins.

There are a few ways that the logged warning could be improved: tracking
which archive file existing hashes were inserted from would make it
easier to identify the pair of archive files that might need
investigating; reading BA2 files could defer transforming their asset file
paths into hashes until after all the files for a plugin have been read
(or even past that, to account for hash collisions between different
plugins' assets); and reading BSA files could opportunistically store the
asset file paths if they are present, and fall back to comparing using
hashes if not.

However, even if the warning was logged for only true positive hash
collisions, this is all in service of a sorting heuristic that is only
used when adding overlap edges and a pair of plugins do not have
overlapping records but do both load assets, and a collision would mean
that a plugin might seem to load fewer assets than it does, and could
also appear to overlap with a plugin that doesn't actually load assets
with the same file paths. That in turn might result in the two plugins
loading in one order instead of the other, causing one's assets to
override the other's. If that's a problem, then it can be fixed using
load after metadata, and you can only really tell if it's a problem by
spotting something wrong in game, so the warning doesn't really add much
value, and although it indicates that there might be a problem, there's
enough conditions between the warning and there actually being an issue
that logging it as a warning is excessive anyway.
2026-03-13 18:40:49 +00:00
Oliver HamletandGitHub 4fe4daad83 Merge pull request #229 from loot/dependabot/github_actions/astral-sh/setup-uv-7.3.1
Bump astral-sh/setup-uv from 7.3.0 to 7.3.1
2026-03-07 09:33:31 +00:00
Oliver HamletandGitHub 1dafefc2f5 Merge pull request #230 from loot/dependabot/github_actions/actions/upload-artifact-7
Bump actions/upload-artifact from 6 to 7
2026-03-03 10:46:38 +00:00
dependabot[bot]andGitHub 29fb8dca99 Bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 17:10:35 +00:00
dependabot[bot]andGitHub 17b8f0cb55 Bump astral-sh/setup-uv from 7.3.0 to 7.3.1
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/eac588ad8def6316056a12d4907a9d4d84ff7a3b...5a095e7a2014a4212f075830d4f7277575a9d098)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 17:10:29 +00:00
Oliver Hamlet 0498fc27f9 Update tempfile from 3.22.0 to 3.25.0 2026-02-23 18:07:04 +00:00
Oliver Hamlet 2a32eace55 Use my aggregated audits 2026-02-23 18:05:30 +00:00
Oliver HamletandGitHub 2bad3d02e1 Merge pull request #219 from loot/dependabot/github_actions/astral-sh/setup-uv-7.3.0
Bump astral-sh/setup-uv from 7.2.0 to 7.3.0
2026-02-15 13:15:13 +00:00
Oliver Hamlet d6f8dc31bf Base dev container on different image
That contains most of what is needed for libloot builds.
2026-02-13 21:06:10 +00:00
dependabot[bot]andGitHub b53cdb5a5b Bump astral-sh/setup-uv from 7.2.0 to 7.3.0
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/61cb8a9741eeb8a550a1b8544337180c0fc8476b...eac588ad8def6316056a12d4907a9d4d84ff7a3b)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 17:44:41 +00:00
Oliver Hamlet 7de8bdb3a8 Set version to v0.29.0 0.29.0 2026-02-04 21:18:04 +00:00
Oliver HamletandGitHub 503b8e74bb Merge pull request #217 from loot/dependabot/npm_and_yarn/nodejs/tar-7.5.7
Bump tar from 7.5.6 to 7.5.7 in /nodejs
2026-02-03 08:59:10 +00:00
Oliver Hamlet 05c1c03e88 Add more tools to the dev container Dockerfile
- cargo-llvm-cov
- cargo-vet
- doxygen
- nodejs
- npm
- uv

With them, everything can now be built and run.
2026-02-03 08:53:42 +00:00
Oliver Hamlet 388b7fdf7d Add config to support building using dev containers
Tested with CLion and Podman on Fedora Kinoite 43.
2026-02-03 08:53:41 +00:00
Oliver Hamlet a5df347c16 Ignore CMake build directories used by CLion 2026-02-03 08:53:41 +00:00
Oliver Hamlet 81388873da Add bits for cross-compiling to Windows using MinGW
Some tests have been updated because UTF-8 is used as the native
path encoding with MinGW/Wine, unlike MSVC/Windows.

Some of the tests fail:

- 4 Rust tests fail because long paths are not enabled and so the
  paths used when creating symlinks and junction paths are too
  long. I've tested them with x86_64-pc-windows-gnu and
  x86_64-pc-windows-gnullvm, and both see the same behaviour. The
  tests pass when the MinGW-built executable is run on Windows, so
  this is a Wine limitation.
- 12 C++ tests fail because directory symlink creation is not
  implemented. They fail whether the MinGW-built executable is run
  in Wine or on Windows, so this is a MinGW limitation.
- 1 C++ filesystem test fails because long paths are not enabled.

The failing tests are skipped at runtime when built with MinGW,
aside from the one test for long paths being enabled, which expects
them to be disabled when built with MinGW.

If long paths are enabled, e.g. by running

wine reg add HKLM\\System\\CurrentControlSet\\Control\\Filesystem /v LongPathsEnabled /t REG_DWORD /d 1 /f

then many more tests fail because the C++ tests create long paths
when that Registry value is set, but it doesn't seem to actually
enable long path support in Wine, so various filesystem operations
fail.
2026-02-03 08:52:23 +00:00
Oliver Hamlet 6fb3c8fb6c Reformat table in cpp/README.md 2026-01-31 16:04:23 +00:00
Oliver Hamlet 45877669f1 Only create links in tests when necessary 2026-01-31 15:29:34 +00:00
Oliver Hamlet 10c6efca16 Use lowercase windows.h include
To fix a MinGW error.
2026-01-31 15:29:33 +00:00
Oliver Hamlet c6c3056d35 Move where Windows libraries are linked
To where they're actually used. The tests don't need them, and MinGW complains if they aren't linked to the first layer of the C++ wrapper.
2026-01-31 15:29:33 +00:00