diff --git a/CHANGELOG.md b/CHANGELOG.md index 9143bfd..597a4c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ This file is the source of truth for release notes. The newest entry must match the version in `WandEnhancer/Properties/AssemblyInfo.cs`. +## [1.0.9.0] - 2026-06-15 + +### Features + +- The Remote Web Panel now shows mod names, descriptions, and instructions translated to your WeMod account language. #98 +- Added a language selector to the Remote Web Panel (English, Russian, German, French, Spanish, Simplified Chinese) with automatic detection from the browser language. + +### Improvements + +- Release builds are now code-signed, which reduces false-positive antivirus and VirusTotal detections. +- Reworked the Remote Web Panel internals around feature capabilities for easier maintenance, with no change to existing behavior. + ## [1.0.8.4] - 2026-06-10 ### Fixes diff --git a/WandEnhancer/Properties/AssemblyInfo.cs b/WandEnhancer/Properties/AssemblyInfo.cs index fcb2d6b..471e072 100644 --- a/WandEnhancer/Properties/AssemblyInfo.cs +++ b/WandEnhancer/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.8.4")] -[assembly: AssemblyFileVersion("1.0.8.4")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.9.0")] +[assembly: AssemblyFileVersion("1.0.9.0")] \ No newline at end of file diff --git a/build.ps1 b/build.ps1 index f4ee2b4..db2a5c1 100644 --- a/build.ps1 +++ b/build.ps1 @@ -105,5 +105,42 @@ Invoke-Step 'Build solution' { & $msbuild $solutionPath /m /p:Configuration=$Configuration '/p:Platform=Any CPU' /t:Build } +# Code-sign the release executable. A self-signed signature notably lowers +# false-positive AV/VirusTotal detections. The cert is reused across builds and +# generated on first use, so no secrets or env configuration are required. +if ($Configuration -eq 'Release') { + Write-Host '==> Sign WandEnhancer.exe' -ForegroundColor Cyan + + $exePath = Join-Path $repoRoot "WandEnhancer/bin/$Configuration/WandEnhancer.exe" + if (-not (Test-Path $exePath)) { + throw "Executable not found for signing: $exePath" + } + + $signingSubject = 'CN=Wand-Enhancer' + $cert = Get-ChildItem Cert:\CurrentUser\My | + Where-Object { $_.Subject -eq $signingSubject -and $_.HasPrivateKey } | + Select-Object -First 1 + if (-not $cert) { + $cert = New-SelfSignedCertificate ` + -Subject $signingSubject ` + -Type CodeSigningCert ` + -CertStoreLocation Cert:\CurrentUser\My ` + -KeyExportPolicy Exportable ` + -KeyUsage DigitalSignature ` + -KeyAlgorithm RSA ` + -KeyLength 2048 ` + -HashAlgorithm SHA256 ` + -NotAfter (Get-Date).AddYears(5) + Write-Host "Generated self-signed code-signing certificate: $($cert.Subject) [$($cert.Thumbprint)]" + } + + $signature = Set-AuthenticodeSignature -FilePath $exePath -Certificate $cert -HashAlgorithm SHA256 + if ($signature.Status -ne 'Valid') { + throw "Signing failed: $($signature.Status) - $($signature.StatusMessage)" + } + + Write-Host "Signed $exePath [$($cert.Thumbprint)]" +} + Write-Host '' Write-Host "Build completed successfully ($Configuration)." -ForegroundColor Green \ No newline at end of file