new build system
Build Plugin / build (push) Successful in 49s
Release Plugin / build-and-release (push) Failing after 39s

inject controls in homepage
This commit is contained in:
2026-06-13 23:35:46 +02:00
parent df98b2c1f8
commit 4d2f7df217
11 changed files with 775 additions and 41 deletions
@@ -36,6 +36,7 @@ public class PluginConfiguration : BasePluginConfiguration
ConnectionTimeoutSeconds = 10;
EnableAutoSync = true;
DefaultPlayerMac = string.Empty;
EnableHomeScreenButton = true;
}
/// <summary>
@@ -75,6 +76,12 @@ public class PluginConfiguration : BasePluginConfiguration
/// </summary>
public string DefaultPlayerMac { get; set; }
/// <summary>
/// Gets or sets a value indicating whether a floating "Remote" button linking to the
/// multi-room remote control page should be injected into the Jellyfin web client.
/// </summary>
public bool EnableHomeScreenButton { get; set; }
/// <summary>
/// Gets or sets the Jellyfin API key for authenticating stream requests from LMS.
/// </summary>
@@ -182,6 +182,19 @@
</div>
</div>
<div class="verticalSection">
<h3>Multi-Room Remote</h3>
<p class="fieldDescription">A standalone remote control page is available at <code>/JellyLms/RemoteControl</code> for any user granted the "Allow remote control of other users" permission (Dashboard &gt; Users).</p>
<div class="checkboxContainer checkboxContainer-withDescription">
<label class="emby-checkbox-label">
<input id="EnableHomeScreenButton" name="EnableHomeScreenButton" type="checkbox" is="emby-checkbox" />
<span>Show floating Remote button in web client</span>
</label>
<div class="fieldDescription checkboxFieldDescription">Adds a floating button to the Jellyfin web client that links to the remote control page (for authorized users only). Requires write access to the Jellyfin web root and a page reload to take effect.</div>
</div>
</div>
<div class="verticalSection">
<h3>Player Sync</h3>
<p class="fieldDescription">Select players to sync together for multi-room audio. Synced players play in perfect sync.</p>
@@ -567,6 +580,7 @@
document.querySelector('#EnableAutoSync').checked = config.EnableAutoSync !== false;
document.querySelector('#DefaultPlayerMac').value = config.DefaultPlayerMac || '';
document.querySelector('#UseDirectFilePath').checked = config.UseDirectFilePath || false;
document.querySelector('#EnableHomeScreenButton').checked = config.EnableHomeScreenButton !== false;
// Load path mappings (new list format, with fallback to legacy single mapping)
JellyLmsConfig.pathMappings = config.PathMappings || [];
@@ -622,6 +636,7 @@
config.EnableAutoSync = document.querySelector('#EnableAutoSync').checked;
config.DefaultPlayerMac = document.querySelector('#DefaultPlayerMac').value;
config.UseDirectFilePath = document.querySelector('#UseDirectFilePath').checked;
config.EnableHomeScreenButton = document.querySelector('#EnableHomeScreenButton').checked;
// Save path mappings (clear legacy single mapping when using list)
config.PathMappings = getPathMappingsFromUI();
config.JellyfinMediaPath = '';