From 43d5065a091b0ae663f6aa83175b9e633d292414 Mon Sep 17 00:00:00 2001 From: Ada Vale <104856138+AdaInTheLab@users.noreply.github.com> Date: Fri, 29 May 2026 14:36:07 -0400 Subject: [PATCH] fix(build): source Skia natives from committed x64/ + hard-fail; v2.8.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The v2.8.0 release zip shipped without libSkiaSharp.dll. build.ps1 sourced the Windows native only from version-pinned NuGet-cache paths (skiasharp.nativeassets.win32/3.116.1 | 2.80.4) and, when those weren't present on the CI runner, skipped it with a soft Write-Warning. Result: a published zip whose Windows map renderer throws "Unable to load library 'libSkiaSharp'" โ€” even though the .dll is committed in the repo. - build.ps1: source both Skia natives from the committed src//x64/ copies first (same as sqlite3.dll), NuGet cache as dev fallback, and throw (hard build failure) if a native is missing so this can't silently recur. - ModInfo.xml: 2.7.4 -> 2.8.1 (was stuck, so the mod self-reported the wrong version vs the release tag). - CHANGELOG: [2.8.1] section covering VIP tiers, join diagnostics, PackRelay Launcher v0.1, and this packaging fix. Supersedes v2.8.0. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ src/KitsuneCommand/ModInfo.xml | 2 +- tools/build.ps1 | 20 ++++++++++++++------ 3 files changed, 48 insertions(+), 7 deletions(-) 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!