Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion src/KitsuneCommand/ModInfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<xml>
<Name value="KitsuneCommand" />
<DisplayName value="KitsuneCommand - Server Management" />
<Version value="2.7.4" />
<Version value="2.8.1" />
<Description value="Web-based server management panel and RESTful API for 7 Days to Die dedicated servers. Monitoring | Management | Map" />
<Author value="AdaInTheLab" />
<Website value="https://github.com/Kitsune-Den/KitsuneCommand" />
Expand Down
20 changes: 14 additions & 6 deletions tools/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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/<mod>/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"
Expand All @@ -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
Expand All @@ -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/<mod>/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"
)
Expand All @@ -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!
Expand Down
Loading