diff --git a/CHANGELOG.md b/CHANGELOG.md index d029df0..dbbeb3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,39 @@ pulls notes from — it's the minimum, the GitHub release page is the maximum. ## [Unreleased] +## [2.8.1] - 2026-05-29 + +> [Full notes](https://github.com/Kitsune-Den/KitsuneCommand/releases/tag/v2.8.1) +> · VIP tiers, join diagnostics, and the PackRelay Launcher land here. +> Supersedes v2.8.0, which shipped without the Windows SkiaSharp native +> (broken map rendering) and self-reported the wrong version. + +### Added + +- **VIP tiers.** Per-player tiers with a first-login welcome pack and + recurring tier gifts. New `012_vip_tiers` migration; set a player's + tier straight from the Players panel. +- **Join diagnostics.** A companion `KitsuneJoinDiag` mod feeds a new + "Join Attempts" panel - see who tried to connect, when, and why a + join failed. +- **PackRelay Launcher v0.1.** Scaffold that hooks the main menu + (`XUiC_MainMenu.OnOpen`) - groundwork for launching straight into a + PackRelay-published modpack. + +### Fixed + +- **Windows map rendering no longer breaks on a clean install.** The + release build sourced `libSkiaSharp.dll` only from version-pinned + NuGet-cache paths and skipped it with a warning when they weren't + there, so the v2.8.0 zip shipped without the Windows SkiaSharp native + and `MapTileRenderer` threw "Unable to load library 'libSkiaSharp'". + Both Skia natives now come from the committed `src/.../x64/` copies + (same as `sqlite3.dll`), and a missing native is a hard build error + instead of a silent skip. +- **Mod version matches the release again.** `ModInfo.xml` was stuck at + 2.7.4, so the in-game mod list disagreed with the release tag. Bumped + to track the release. + ## [2.7.4] - 2026-05-27 > [Full notes](https://github.com/Kitsune-Den/KitsuneCommand/releases/tag/v2.7.4) diff --git a/src/KitsuneCommand/ModInfo.xml b/src/KitsuneCommand/ModInfo.xml index c910cf7..a05010f 100644 --- a/src/KitsuneCommand/ModInfo.xml +++ b/src/KitsuneCommand/ModInfo.xml @@ -2,7 +2,7 @@ - + diff --git a/tools/build.ps1 b/tools/build.ps1 index d44945d..7a54605 100644 --- a/tools/build.ps1 +++ b/tools/build.ps1 @@ -63,8 +63,14 @@ if ($Platform -eq "windows" -or $Platform -eq "both") { Write-Warning "sqlite3.dll not found at $sqliteSrc. Download from https://sqlite.org/download.html" } - # libSkiaSharp.dll (Windows) + # libSkiaSharp.dll (Windows). Sourced from the committed src//x64/ copy first + # (force-added to git, same as sqlite3.dll) so CI never depends on a NuGet-cache + # path that shifts with the SkiaSharp version. NuGet cache + bin kept as dev + # fallbacks. HARD FAIL if absent: shipping without it produces a Windows map + # renderer that throws "Unable to load library 'libSkiaSharp'" at runtime — a + # silent Write-Warning here let exactly that escape into the v2.8.0 release. $skiaWinPaths = @( + "src/$modName/x64/libSkiaSharp.dll", "$nugetCache/skiasharp.nativeassets.win32/3.116.1/runtimes/win-x64/native/libSkiaSharp.dll", "$nugetCache/skiasharp.nativeassets.win32/2.80.4/runtimes/win-x64/native/libSkiaSharp.dll", "$binDir/libSkiaSharp.dll" @@ -74,9 +80,9 @@ if ($Platform -eq "windows" -or $Platform -eq "both") { $nativeDir = "$modDir/x64" New-Item -ItemType Directory -Path $nativeDir -Force | Out-Null Copy-Item $skiaWin $nativeDir - Write-Host " Copied libSkiaSharp.dll to x64/" -ForegroundColor Gray + Write-Host " Copied libSkiaSharp.dll to x64/ (from $skiaWin)" -ForegroundColor Gray } else { - Write-Warning "libSkiaSharp.dll (Windows) not found" + throw "libSkiaSharp.dll (Windows native) not found. Expected the committed copy at src/$modName/x64/libSkiaSharp.dll. Without it the Windows map renderer will not load. Searched: $($skiaWinPaths -join '; ')" } # System.Runtime.InteropServices.RuntimeInformation is provided by RuntimeInfoShim.dll @@ -99,8 +105,10 @@ if (Test-Path $dataAnnotations) { if ($Platform -eq "linux" -or $Platform -eq "both") { Write-Host "`n [Linux native libraries]" -ForegroundColor Cyan - # libSkiaSharp.so (Linux, NoDependencies variant) + # libSkiaSharp.so (Linux, NoDependencies variant). Committed src//x64/ copy + # first (same rationale as the Windows native), NuGet cache as dev fallback. $skiaLinuxPaths = @( + "src/$modName/x64/libSkiaSharp.so", "$nugetCache/skiasharp.nativeassets.linux.nodependencies/2.80.4/runtimes/linux-x64/native/libSkiaSharp.so", "$nugetCache/skiasharp.nativeassets.linux.nodependencies/2.80.2/runtimes/linux-x64/native/libSkiaSharp.so" ) @@ -112,9 +120,9 @@ if ($Platform -eq "linux" -or $Platform -eq "both") { $nativeDir = "$modDir/x64" New-Item -ItemType Directory -Path $nativeDir -Force | Out-Null Copy-Item $skiaLinux $nativeDir - Write-Host " Copied libSkiaSharp.so to x64/" -ForegroundColor Gray + Write-Host " Copied libSkiaSharp.so to x64/ (from $skiaLinux)" -ForegroundColor Gray } else { - Write-Warning "libSkiaSharp.so (Linux) not found. Run 'dotnet restore' to download NuGet packages." + throw "libSkiaSharp.so (Linux native) not found. Expected the committed copy at src/$modName/x64/libSkiaSharp.so. Searched: $($skiaLinuxPaths -join '; ')" } # SQLite: no native library needed for Linux!