diff --git a/.gitignore b/.gitignore
index c9eb026..26fb2a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,10 @@
.vscode/
scripts/
+# Local test project (stays out of the published plugin repo;
+# pure-function safety net for refactor cycles)
+HellionChat.Tests/
+
# Packaging
pack/
diff --git a/HellionChat.sln b/HellionChat.sln
index fa2740a..d0908f0 100755
--- a/HellionChat.sln
+++ b/HellionChat.sln
@@ -1,16 +1,31 @@
-
+
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HellionChat", "HellionChat\HellionChat.csproj", "{739F75E6-B65F-41EF-9D90-F7BC519E4875}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{739F75E6-B65F-41EF-9D90-F7BC519E4875}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{739F75E6-B65F-41EF-9D90-F7BC519E4875}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Debug|x64.Build.0 = Debug|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Debug|x86.Build.0 = Debug|Any CPU
{739F75E6-B65F-41EF-9D90-F7BC519E4875}.Release|Any CPU.ActiveCfg = Release|Any CPU
{739F75E6-B65F-41EF-9D90-F7BC519E4875}.Release|Any CPU.Build.0 = Release|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Release|x64.ActiveCfg = Release|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Release|x64.Build.0 = Release|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Release|x86.ActiveCfg = Release|Any CPU
+ {739F75E6-B65F-41EF-9D90-F7BC519E4875}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
diff --git a/HellionChat/HellionChat.csproj b/HellionChat/HellionChat.csproj
index 9ba2e94..9e045f3 100644
--- a/HellionChat/HellionChat.csproj
+++ b/HellionChat/HellionChat.csproj
@@ -36,6 +36,13 @@
+
+
+
+
+
True
diff --git a/HellionChat/Util/StringUtil.cs b/HellionChat/Util/StringUtil.cs
index e812e13..fdddc0a 100755
--- a/HellionChat/Util/StringUtil.cs
+++ b/HellionChat/Util/StringUtil.cs
@@ -1,3 +1,4 @@
+using System.Globalization;
using System.Text;
namespace HellionChat.Util;
@@ -24,7 +25,8 @@ internal static class StringUtil
var place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024)));
var num = Math.Round(bytes / Math.Pow(1024, place), 1);
// "0.#" keeps the rounded fractional digit (1.5 GB stays "1.5GB"); "N0"
- // would truncate it back to integer.
- return (Math.Sign(byteCount) * num).ToString("0.#") + suf[place];
+ // would truncate it back to integer. InvariantCulture pins the decimal
+ // separator to '.' so a German locale doesn't render "1,5GB".
+ return (Math.Sign(byteCount) * num).ToString("0.#", CultureInfo.InvariantCulture) + suf[place];
}
}