Compare commits

...

12 Commits

Author SHA1 Message Date
CodeDevMLH
fc9896048f Update manifest.json for release v1.6.5.0 [skip ci] 2026-02-03 19:37:37 +00:00
CodeDevMLH
572c4d9ace Bump version to 1.6.5.0 and update manifest; add new select options in settings popup
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 51s
2026-02-03 20:36:45 +01:00
CodeDevMLH
2572e085f6 Update manifest.json for release v1.6.4.0 [skip ci] 2026-02-03 18:46:36 +00:00
CodeDevMLH
8297f989fd Bump version to 1.6.4.0 and update changelog for new features; modify select classes in config page and settings popup
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 58s
2026-02-03 19:45:38 +01:00
CodeDevMLH
636aaa2a4a Update manifest.json for release v1.6.3.0 [skip ci] 2026-02-03 18:33:25 +00:00
CodeDevMLH
5e70621e93 Update version to 1.6.3.0, modify checkbox layout, and adjust popup styles
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 52s
2026-02-03 19:32:34 +01:00
CodeDevMLH
0b4434c51c Update manifest.json for release v1.6.2.0 [skip ci] 2026-02-03 18:18:35 +00:00
CodeDevMLH
dd6583c055 Bump version to 1.6.2.0 and update changelog for new features
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 52s
2026-02-03 19:17:44 +01:00
CodeDevMLH
a0b0514159 Update manifest.json for release v1.6.1.0 [skip ci] 2026-02-03 18:08:59 +00:00
CodeDevMLH
e977c83e8f Bump version to 1.6.1.0 in project file and manifest
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 53s
2026-02-03 19:08:07 +01:00
CodeDevMLH
e281f5c579 test other ui design 2026-02-03 19:08:02 +01:00
CodeDevMLH
e6b646e478 Update .gitignore to include test-site-new.html [skip CI] 2026-02-03 18:50:22 +01:00
5 changed files with 50 additions and 66 deletions

1
.gitignore vendored
View File

@@ -5,4 +5,5 @@ obj/
artifacts artifacts
test-site.html test-site.html
test-site-new.html
RELEASE_GUIDE.md RELEASE_GUIDE.md

View File

@@ -38,18 +38,9 @@
</label> </label>
<div class="fieldDescription">Automatically select the season based on the date.</div> <div class="fieldDescription">Automatically select the season based on the date.</div>
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label class="emby-checkbox-label">
<input id="EnableClientSideToggle" name="EnableClientSideToggle" type="checkbox"
is="emby-checkbox" />
<span>Allow Client-Side Toggle</span>
</label>
<div class="fieldDescription">If enabled, users will see a settings icon in the header to toggle
animations for their browser.</div>
</div>
<div class="selectContainer"> <div class="selectContainer">
<label class="selectLabel" for="SelectedSeason">Selected Season</label> <label class="selectLabel" for="SelectedSeason">Selected Season</label>
<select is="emby-select" id="SelectedSeason" name="SelectedSeason" class="emby-select-withcolor emby-select"> <select is="emby-select" id="SelectedSeason" name="SelectedSeason" class="emby-select">
<option value="none">None</option> <option value="none">None</option>
<option value="snowflakes">Snowflakes</option> <option value="snowflakes">Snowflakes</option>
<option value="snowfall">Snowfall</option> <option value="snowfall">Snowfall</option>
@@ -72,6 +63,15 @@
</select> </select>
<div class="fieldDescription">The season to display if automation is disabled.</div> <div class="fieldDescription">The season to display if automation is disabled.</div>
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label class="emby-checkbox-label">
<input id="EnableClientSideToggle" name="EnableClientSideToggle" type="checkbox"
is="emby-checkbox" />
<span>Allow Client-Side Toggle</span>
</label>
<div class="fieldDescription">If enabled, users will see a settings icon in the header to toggle
animations for their browser.</div>
</div>
<br> <br>
<details> <details>

View File

@@ -12,7 +12,7 @@
<!-- <TreatWarningsAsErrors>false</TreatWarningsAsErrors> --> <!-- <TreatWarningsAsErrors>false</TreatWarningsAsErrors> -->
<Title>Jellyfin Seasonals Plugin</Title> <Title>Jellyfin Seasonals Plugin</Title>
<Authors>CodeDevMLH</Authors> <Authors>CodeDevMLH</Authors>
<Version>1.6.0.0</Version> <Version>1.6.5.0</Version>
<RepositoryUrl>https://github.com/CodeDevMLH/Jellyfin-Seasonals</RepositoryUrl> <RepositoryUrl>https://github.com/CodeDevMLH/Jellyfin-Seasonals</RepositoryUrl>
</PropertyGroup> </PropertyGroup>

View File

@@ -266,62 +266,42 @@ function createSettingsPopup(anchorElement) {
zIndex: '10000', zIndex: '10000',
backgroundColor: '#202020', backgroundColor: '#202020',
padding: '1em', padding: '1em',
borderRadius: '4px', borderRadius: '0.3em',
boxShadow: '0 0 20px rgba(0,0,0,0.5)', boxShadow: '0 0 20px rgba(0,0,0,0.5)',
minWidth: '200px', minWidth: '200px',
color: '#fff' color: '#fff',
maxWidth: '250px'
}); });
const rect = anchorElement.getBoundingClientRect(); const rect = anchorElement.getBoundingClientRect();
popup.style.top = `${rect.bottom + 10}px`; popup.style.top = `${rect.bottom + 10}px`;
popup.style.right = `${window.innerWidth - rect.right}px`; popup.style.right = `${window.innerWidth - rect.right}px`;
const enabledContainer = document.createElement('div'); popup.innerHTML = `
enabledContainer.style.marginBottom = '1em'; <div class="checkboxContainer checkboxContainer-withDescription" style="margin-bottom: 0.5em;">
enabledContainer.style.display = 'flex'; <label class="emby-checkbox-label">
enabledContainer.style.alignItems = 'center'; <input id="seasonal-enable-toggle" type="checkbox" is="emby-checkbox" class="emby-checkbox" />
enabledContainer.style.justifyContent = 'space-between'; <span class="checkboxLabel">Enable Seasonals</span>
</label>
</div>
const enabledLabel = document.createElement('label'); <div class="selectContainer">
enabledLabel.textContent = 'Enable Seasonals'; <label class="selectLabel" for="seasonal-theme-select" style="margin-bottom: 0.5em; display: block; color: inherit;">Force Theme</label>
enabledLabel.style.marginRight = '10px'; <select id="seasonal-theme-select" class="emby-select" style="width: 100%; padding: 0.5em; background-color: #333; border: 1px solid #444; color: #fff; border-radius: 4px;">
<option value="auto">Auto (Date Based)</option>
</select>
</div>
const enabledCheckbox = document.createElement('input'); <div class="selectContainer1">
enabledCheckbox.type = 'checkbox'; <label class="selectLabel" for="seasonal-theme-select1">Force Theme</label>
enabledCheckbox.checked = getSavedSetting('seasonals-enabled', 'true') === 'true'; <select is="emby-select" id="seasonal-theme-select1" class="emby-select">
enabledCheckbox.addEventListener('change', (e) => { <option value="auto">Auto (Date Based)</option>
setSavedSetting('seasonals-enabled', e.target.checked); </select>
location.reload(); </div>
}); `;
enabledContainer.appendChild(enabledLabel); // Populate Select Options
enabledContainer.appendChild(enabledCheckbox); const themeSelect = popup.querySelector('#seasonal-theme-select');
popup.appendChild(enabledContainer);
// Theme Selector
const themeContainer = document.createElement('div');
themeContainer.style.display = 'flex';
themeContainer.style.flexDirection = 'column';
const themeLabel = document.createElement('label');
themeLabel.textContent = 'Force Theme';
themeLabel.style.marginBottom = '0.5em';
const themeSelect = document.createElement('select');
themeSelect.style.width = '100%';
themeSelect.style.padding = '0.5em';
themeSelect.style.backgroundColor = '#333';
themeSelect.style.color = '#fff';
themeSelect.style.border = '1px solid #444';
themeSelect.style.borderRadius = '4px';
// Add Auto option
const autoOption = document.createElement('option');
autoOption.value = 'auto';
autoOption.textContent = 'Auto (Date Based)';
themeSelect.appendChild(autoOption);
// Add available themes
Object.keys(themeConfigs).forEach(key => { Object.keys(themeConfigs).forEach(key => {
if (key === 'none') return; if (key === 'none') return;
const option = document.createElement('option'); const option = document.createElement('option');
@@ -331,19 +311,22 @@ function createSettingsPopup(anchorElement) {
themeSelect.appendChild(option); themeSelect.appendChild(option);
}); });
// Set current value // Set Initial Values
const enabledCheckbox = popup.querySelector('#seasonal-enable-toggle');
enabledCheckbox.checked = getSavedSetting('seasonals-enabled', 'true') === 'true';
themeSelect.value = getSavedSetting('seasonals-theme', 'auto'); themeSelect.value = getSavedSetting('seasonals-theme', 'auto');
enabledCheckbox.addEventListener('change', (e) => {
setSavedSetting('seasonals-enabled', e.target.checked);
location.reload();
});
themeSelect.addEventListener('change', (e) => { themeSelect.addEventListener('change', (e) => {
setSavedSetting('seasonals-theme', e.target.value); setSavedSetting('seasonals-theme', e.target.value);
location.reload(); location.reload();
}); });
themeContainer.appendChild(themeLabel);
themeContainer.appendChild(themeSelect);
popup.appendChild(themeContainer);
// Close on click outside
const closeHandler = (e) => { const closeHandler = (e) => {
if (!popup.contains(e.target) && e.target !== anchorElement && !anchorElement.contains(e.target)) { if (!popup.contains(e.target) && e.target !== anchorElement && !anchorElement.contains(e.target)) {
popup.remove(); popup.remove();

View File

@@ -9,12 +9,12 @@
"imageUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/raw/branch/main/logo.png", "imageUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/raw/branch/main/logo.png",
"versions": [ "versions": [
{ {
"version": "1.6.0.0", "version": "1.6.5.0",
"changelog": "- feat: Add client-side toggle option for seasonal settings", "changelog": "- feat: Add client-side toggle option for seasonal settings",
"targetAbi": "10.11.0.0", "targetAbi": "10.11.0.0",
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/releases/download/v1.6.0.0/Jellyfin.Plugin.Seasonals.zip", "sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/releases/download/v1.6.5.0/Jellyfin.Plugin.Seasonals.zip",
"checksum": "9b66d6f1c03b284ac9fe7e87540f7759", "checksum": "4b91182f842076bb98538f6cd268f6e0",
"timestamp": "2026-02-03T17:49:05Z" "timestamp": "2026-02-03T19:37:36Z"
}, },
{ {
"version": "1.5.1.0", "version": "1.5.1.0",