diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs
index 90850a08b..e42bbe608 100644
--- a/Dalamud/Plugin/DalamudPluginInterface.cs
+++ b/Dalamud/Plugin/DalamudPluginInterface.cs
@@ -220,7 +220,7 @@ internal sealed class DalamudPluginInterface : IDalamudPluginInterface, IDisposa
///
public IDalamudVersionInfo GetDalamudVersion()
{
- return new DalamudVersionInfo(Versioning.GetAssemblyVersionParsed(), Versioning.GetActiveTrack());
+ return new DalamudVersionInfo(Versioning.GetAssemblyVersionParsed(), Versioning.GetActiveTrack(), Versioning.GetGitHash(), Versioning.GetGitHashClientStructs(), Versioning.GetScmVersion());
}
#region IPC
diff --git a/Dalamud/Plugin/VersionInfo/DalamudVersionInfo.cs b/Dalamud/Plugin/VersionInfo/DalamudVersionInfo.cs
index c87c012af..0a6fad9c2 100644
--- a/Dalamud/Plugin/VersionInfo/DalamudVersionInfo.cs
+++ b/Dalamud/Plugin/VersionInfo/DalamudVersionInfo.cs
@@ -1,11 +1,20 @@
namespace Dalamud.Plugin.VersionInfo;
///
-internal class DalamudVersionInfo(Version version, string? track) : IDalamudVersionInfo
+internal class DalamudVersionInfo(Version version, string? track, string? gitHash, string? gitHashClientStructs, string? scmVersion) : IDalamudVersionInfo
{
///
public Version Version { get; } = version;
///
public string? BetaTrack { get; } = track;
+
+ ///
+ public string? GitHash { get; } = gitHash;
+
+ ///
+ public string? GitHashClientStructs { get; } = gitHashClientStructs;
+
+ ///
+ public string? ScmVersion { get; } = scmVersion;
}
diff --git a/Dalamud/Plugin/VersionInfo/IDalamudVersionInfo.cs b/Dalamud/Plugin/VersionInfo/IDalamudVersionInfo.cs
index e6b6a9601..6297ce196 100644
--- a/Dalamud/Plugin/VersionInfo/IDalamudVersionInfo.cs
+++ b/Dalamud/Plugin/VersionInfo/IDalamudVersionInfo.cs
@@ -16,4 +16,22 @@ public interface IDalamudVersionInfo
/// Null if this build wasn't launched from XIVLauncher.
///
string? BetaTrack { get; }
+
+ ///
+ /// Gets the git commit hash value from the assembly or null if it cannot be found. Will be null for Debug builds,
+ /// and will be suffixed with `-dirty` if in release with pending changes.
+ ///
+ string? GitHash { get; }
+
+ ///
+ /// Gets the git hash value from the assembly or null if it cannot be found.
+ ///
+ string? GitHashClientStructs { get; }
+
+ ///
+ /// Gets the SCM Version from the assembly, or null if it cannot be found. The value returned will generally be
+ /// the git describe output for this build, which will be a raw version if this is a stable build or an
+ /// appropriately-annotated version if this is *not* stable. Local builds will return a `Local Build` text string.
+ ///
+ string? ScmVersion { get; }
}