diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs
index 2a1e3227d..4d32b62a8 100644
--- a/Dalamud/Plugin/DalamudPluginInterface.cs
+++ b/Dalamud/Plugin/DalamudPluginInterface.cs
@@ -18,6 +18,7 @@ using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Interface;
using Dalamud.Interface.Internal;
using Dalamud.Plugin.Internal;
+using Dalamud.Plugin.Internal.Types;
using Dalamud.Plugin.Ipc;
using Dalamud.Plugin.Ipc.Exceptions;
using Dalamud.Plugin.Ipc.Internal;
@@ -41,7 +42,8 @@ public sealed class DalamudPluginInterface : IDisposable
/// Location of the assembly.
/// The reason the plugin was loaded.
/// A value indicating whether this is a dev plugin.
- internal DalamudPluginInterface(string pluginName, FileInfo assemblyLocation, PluginLoadReason reason, bool isDev)
+ /// The repository from which the plugin is installed.
+ internal DalamudPluginInterface(string pluginName, FileInfo assemblyLocation, PluginLoadReason reason, bool isDev, string sourceRepository)
{
var configuration = Service.Get();
var dataManager = Service.Get();
@@ -54,6 +56,7 @@ public sealed class DalamudPluginInterface : IDisposable
this.configs = Service.Get().PluginConfigs;
this.Reason = reason;
this.IsDev = isDev;
+ this.SourceRepository = isDev ? LocalPluginManifest.FlagDevPlugin : sourceRepository;
this.LoadTime = DateTime.Now;
this.LoadTimeUTC = DateTime.UtcNow;
@@ -92,6 +95,11 @@ public sealed class DalamudPluginInterface : IDisposable
/// Gets the reason this plugin was loaded.
///
public PluginLoadReason Reason { get; }
+
+ ///
+ /// Gets the custom repository from which this plugin is installed, , or .
+ ///
+ public string SourceRepository { get; }
///
/// Gets a value indicating whether this is a dev plugin.
diff --git a/Dalamud/Plugin/Internal/Types/LocalPlugin.cs b/Dalamud/Plugin/Internal/Types/LocalPlugin.cs
index 4cfff9b9e..5292b2236 100644
--- a/Dalamud/Plugin/Internal/Types/LocalPlugin.cs
+++ b/Dalamud/Plugin/Internal/Types/LocalPlugin.cs
@@ -401,7 +401,7 @@ internal class LocalPlugin : IDisposable
new PluginPatchData(this.DllFile);
this.DalamudInterface =
- new DalamudPluginInterface(this.pluginAssembly.GetName().Name!, this.DllFile, reason, this.IsDev);
+ new DalamudPluginInterface(this.pluginAssembly.GetName().Name!, this.DllFile, reason, this.IsDev, this.Manifest.InstalledFromUrl );
if (this.Manifest.LoadSync && this.Manifest.LoadRequiredState is 0 or 1)
{
diff --git a/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs b/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs
index b4f8e3e91..3e164665f 100644
--- a/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs
+++ b/Dalamud/Plugin/Internal/Types/LocalPluginManifest.cs
@@ -17,6 +17,10 @@ internal record LocalPluginManifest : PluginManifest
///
[JsonIgnore]
public const string FlagMainRepo = "OFFICIAL";
+
+ /// "DEVPLUGIN"
+ [JsonIgnore]
+ public const string FlagDevPlugin = "DEVPLUGIN";
///
/// Gets or sets a value indicating whether the plugin is disabled and should not be loaded.