Compare commits

...

6 Commits

Author SHA1 Message Date
CodeDevMLH
a67e3c5763 Add disabled options for St. Patrick's Day and Thanksgiving in seasonal selection [skip ci] 2026-02-28 16:40:11 +01:00
CodeDevMLH
b810c9cbaf Remove Olympia event from seasonal rules configuration [skip ci] 2026-02-28 16:39:17 +01:00
CodeDevMLH
d55d52c538 Update seasonal rules configuration with additional events and improved formatting [skip ci] 2026-02-28 16:38:03 +01:00
CodeDevMLH
faa867956a Update manifest.json for release v2.0.0.8 [skip ci] 2026-02-28 15:28:11 +00:00
CodeDevMLH
5b3e405b99 Bump version to 2.0.0.8s
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 53s
2026-02-28 16:27:19 +01:00
CodeDevMLH
30e624fa64 fix loading error 2026-02-28 16:26:59 +01:00
4 changed files with 68 additions and 48 deletions

View File

@@ -77,7 +77,32 @@ public class PluginConfiguration : BasePluginConfiguration
/// <summary>
/// Gets or sets the seasonal rules configuration as JSON.
/// </summary>
public string SeasonalRules { get; set; } = "[{\"Name\":\"New Year Fireworks\",\"StartDay\":28,\"StartMonth\":12,\"EndDay\":5,\"EndMonth\":1,\"Theme\":\"fireworks\"},{\"Name\":\"Carnival\",\"StartDay\":19,\"StartMonth\":2,\"EndDay\":28,\"EndMonth\":2,\"Theme\":\"carnival\"},{\"Name\":\"Valentine's Day\",\"StartDay\":10,\"StartMonth\":2,\"EndDay\":18,\"EndMonth\":2,\"Theme\":\"hearts\"},{\"Name\":\"Spring\",\"StartDay\":1,\"StartMonth\":3,\"EndDay\":31,\"EndMonth\":5,\"Theme\":\"spring\"},{\"Name\":\"Summer\",\"StartDay\":1,\"StartMonth\":6,\"EndDay\":31,\"EndMonth\":8,\"Theme\":\"summer\"},{\"Name\":\"Santa\",\"StartDay\":22,\"StartMonth\":12,\"EndDay\":27,\"EndMonth\":12,\"Theme\":\"santa\"},{\"Name\":\"Snowflakes (December)\",\"StartDay\":1,\"StartMonth\":12,\"EndDay\":31,\"EndMonth\":12,\"Theme\":\"snowflakes\"},{\"Name\":\"Snowfall (January)\",\"StartDay\":1,\"StartMonth\":1,\"EndDay\":31,\"EndMonth\":1,\"Theme\":\"snowfall\"},{\"Name\":\"Snowfall (February)\",\"StartDay\":1,\"StartMonth\":2,\"EndDay\":29,\"EndMonth\":2,\"Theme\":\"snowfall\"},{\"Name\":\"Easter\",\"StartDay\":25,\"StartMonth\":3,\"EndDay\":25,\"EndMonth\":4,\"Theme\":\"easter\"},{\"Name\":\"Halloween\",\"StartDay\":24,\"StartMonth\":10,\"EndDay\":5,\"EndMonth\":11,\"Theme\":\"halloween\"},{\"Name\":\"Autumn\",\"StartDay\":1,\"StartMonth\":9,\"EndDay\":30,\"EndMonth\":11,\"Theme\":\"autumn\"},{\"Name\":\"Cherry Blossom\",\"StartDay\":1,\"StartMonth\":4,\"EndDay\":30,\"EndMonth\":4,\"Theme\":\"cherryblossom\"}]";
public string SeasonalRules { get; set; } = "[" +
"{\"Name\":\"New Year Fireworks\",\"StartDay\":28,\"StartMonth\":12,\"EndDay\":5,\"EndMonth\":1,\"Theme\":\"fireworks\"}," +
"{\"Name\":\"Snowfall (January)\",\"StartDay\":1,\"StartMonth\":1,\"EndDay\":31,\"EndMonth\":1,\"Theme\":\"snowfall\"}," +
"{\"Name\":\"Snowfall (February)\",\"StartDay\":1,\"StartMonth\":2,\"EndDay\":29,\"EndMonth\":2,\"Theme\":\"snowfall\"}," +
"{\"Name\":\"Valentine's Day\",\"StartDay\":10,\"StartMonth\":2,\"EndDay\":18,\"EndMonth\":2,\"Theme\":\"hearts\"}," +
"{\"Name\":\"Carnival\",\"StartDay\":19,\"StartMonth\":2,\"EndDay\":28,\"EndMonth\":2,\"Theme\":\"carnival\"}," +
"{\"Name\":\"Oscar Awards\",\"StartDay\":23,\"StartMonth\":2,\"EndDay\":5,\"EndMonth\":3,\"Theme\":\"oscar\"}," +
"{\"Name\":\"Mario Day\",\"StartDay\":10,\"StartMonth\":3,\"EndDay\":10,\"EndMonth\":3,\"Theme\":\"marioday\"}," +
"{\"Name\":\"Film Noir Day\",\"StartDay\":17,\"StartMonth\":3,\"EndDay\":17,\"EndMonth\":3,\"Theme\":\"filmnoir\"}," +
"{\"Name\":\"Spring\",\"StartDay\":1,\"StartMonth\":3,\"EndDay\":31,\"EndMonth\":5,\"Theme\":\"spring\"}," +
"{\"Name\":\"Cherry Blossom\",\"StartDay\":1,\"StartMonth\":4,\"EndDay\":30,\"EndMonth\":4,\"Theme\":\"cherryblossom\"}," +
"{\"Name\":\"Easter\",\"StartDay\":25,\"StartMonth\":3,\"EndDay\":25,\"EndMonth\":4,\"Theme\":\"easter\"}," +
"{\"Name\":\"Earth Day\",\"StartDay\":22,\"StartMonth\":4,\"EndDay\":22,\"EndMonth\":4,\"Theme\":\"earthday\"}," +
"{\"Name\":\"Space Day\",\"StartDay\":12,\"StartMonth\":4,\"EndDay\":12,\"EndMonth\":4,\"Theme\":\"space\"}," +
"{\"Name\":\"Star Wars Day\",\"StartDay\":4,\"StartMonth\":5,\"EndDay\":5,\"EndMonth\":5,\"Theme\":\"starwars\"}," +
"{\"Name\":\"Eurovision\",\"StartDay\":6,\"StartMonth\":5,\"EndDay\":12,\"EndMonth\":5,\"Theme\":\"eurovision\"}," +
"{\"Name\":\"Pride Month\",\"StartDay\":1,\"StartMonth\":6,\"EndDay\":30,\"EndMonth\":6,\"Theme\":\"pride\"}," +
"{\"Name\":\"Summer\",\"StartDay\":1,\"StartMonth\":6,\"EndDay\":31,\"EndMonth\":8,\"Theme\":\"summer\"}," +
"{\"Name\":\"Underwater\",\"StartDay\":1,\"StartMonth\":7,\"EndDay\":31,\"EndMonth\":8,\"Theme\":\"underwater\"}," +
"{\"Name\":\"Autumn\",\"StartDay\":1,\"StartMonth\":9,\"EndDay\":30,\"EndMonth\":11,\"Theme\":\"autumn\"}," +
"{\"Name\":\"Oktoberfest\",\"StartDay\":20,\"StartMonth\":9,\"EndDay\":5,\"EndMonth\":10,\"Theme\":\"oktoberfest\"}," +
"{\"Name\":\"Halloween\",\"StartDay\":24,\"StartMonth\":10,\"EndDay\":5,\"EndMonth\":11,\"Theme\":\"halloween\"}," +
"{\"Name\":\"Spooky (Pre-Halloween)\",\"StartDay\":1,\"StartMonth\":10,\"EndDay\":23,\"EndMonth\":10,\"Theme\":\"spooky\"}," +
"{\"Name\":\"Snowflakes (December)\",\"StartDay\":1,\"StartMonth\":12,\"EndDay\":31,\"EndMonth\":12,\"Theme\":\"snowflakes\"}," +
"{\"Name\":\"Santa\",\"StartDay\":22,\"StartMonth\":12,\"EndDay\":27,\"EndMonth\":12,\"Theme\":\"santa\"}" +
"]";
/// <summary>
/// Gets or sets the Seasonals options.

View File

@@ -90,6 +90,8 @@
<option value="storm">Storm (⚠Epilepsy Warning⚠)</option>
<option value="summer">Summer (Bubbles)</option>
<option value="underwater">Underwater</option>
<option value="patrick" disabled>St. Patrick's Day (not implemented yet. Please commit ideas/implementation in a issue or PR)</option>
<option value="thanksgiving" disabled>Thanksgiving (not implemented yet. Please commit ideas/implementation in a issue or PR)</option>
</select>
<div class="fieldDescription">The season to display if automation is disabled or no "Auto Selection" rule matches the current date.</div>
</div>
@@ -975,11 +977,6 @@
<input is="emby-input" type="number" id="SpookyCount" name="SpookyCount" />
<div class="fieldDescription">Number of floating symbols.</div>
</div>
<div class="inputContainer">
<label class="inputLabel" for="SpookyCountMobile">Symbol Count (Mobile)</label>
<input is="emby-input" type="number" id="SpookyCountMobile" name="SpookyCountMobile" />
<div class="fieldDescription">Amount of symbols on mobile. Minimum 0. Warning: High values may affect performance.</div>
</div>
<div class="inputContainer">
<label class="inputLabel" for="SpookySize">Symbol Size</label>
<input is="emby-input" type="number" id="SpookySize" name="SpookySize" />
@@ -1581,41 +1578,41 @@
document.querySelector('#SeasonalsSelectedSeason').value = config.SelectedSeason;
document.querySelector('#SeasonalsAutomateSeasonSelection').checked = config.AutomateSeasonSelection;
document.querySelector('#SeasonalsEnableClientSideToggle').checked = config.EnableClientSideToggle !== undefined ? config.EnableClientSideToggle : true;
if (!config.Autumn) config.Autumn = {};
if (!config.Birthday) config.Birthday = {};
if (!config.Carnival) config.Carnival = {};
if (!config.CherryBlossom) config.CherryBlossom = {};
if (!config.Christmas) config.Christmas = {};
if (!config.EarthDay) config.EarthDay = {};
if (!config.Easter) config.Easter = {};
if (!config.Eid) config.Eid = {};
if (!config.Eurovision) config.Eurovision = {};
if (!config.FilmNoir) config.FilmNoir = {};
if (!config.Fireworks) config.Fireworks = {};
if (!config.Friday13) config.Friday13 = {};
if (!config.Frost) config.Frost = {};
if (!config.Halloween) config.Halloween = {};
if (!config.Hearts) config.Hearts = {};
if (!config.MarioDay) config.MarioDay = {};
if (!config.Matrix) config.Matrix = {};
if (!config.Oktoberfest) config.Oktoberfest = {};
if (!config.Olympia) config.Olympia = {};
if (!config.Oscar) config.Oscar = {};
if (!config.Pride) config.Pride = {};
if (!config.Rain) config.Rain = {};
if (!config.Resurrection) config.Resurrection = {};
if (!config.Santa) config.Santa = {};
if (!config.Snowfall) config.Snowfall = {};
if (!config.Snowflakes) config.Snowflakes = {};
if (!config.Snowstorm) config.Snowstorm = {};
if (!config.Space) config.Space = {};
if (!config.Spooky) config.Spooky = {};
if (!config.Sports) config.Sports = {};
if (!config.Spring) config.Spring = {};
if (!config.StarWars) config.StarWars = {};
if (!config.Storm) config.Storm = {};
if (!config.Summer) config.Summer = {};
if (!config.Underwater) config.Underwater = {};
if (!config.Autumn) config.Autumn = { EnableAutumn: true, LeafCount: 35, LeafCountMobile: 10, EnableDifferentDuration: true, EnableRotation: false };
if (!config.Birthday) config.Birthday = { EnableBirthday: true, SymbolCount: 12, SymbolCountMobile: 5, EnableDifferentDuration: true, ConfettiCount: 60 };
if (!config.Carnival) config.Carnival = { EnableCarnival: true, EnableDifferentDuration: true, EnableCarnivalSway: true, ObjectCount: 120, ObjectCountMobile: 60 };
if (!config.CherryBlossom) config.CherryBlossom = { EnableCherryBlossom: true, PetalCount: 25, PetalCountMobile: 15, EnableDifferentDuration: true };
if (!config.Christmas) config.Christmas = { EnableChristmas: true, SymbolCount: 25, SymbolCountMobile: 10, EnableDifferentDuration: true };
if (!config.EarthDay) config.EarthDay = { EnableEarthDay: true, FlowersCount: 60, FlowersCountMobile: 20 };
if (!config.Easter) config.Easter = { EnableEaster: true, EnableBunny: true, MinBunnyRestTime: 2000, MaxBunnyRestTime: 5000, EggCount: 15 };
if (!config.Eid) config.Eid = { EnableEid: true, LanternCount: 8, LanternCountMobile: 3 };
if (!config.Eurovision) config.Eurovision = { EnableEurovision: true, SymbolCount: 25, EnableDifferentDuration: true, EnableColorfulNotes: true, EurovisionColors: '#ff0026ff,#17a6ffff,#32d432ff,#FFD700,#f0821bff,#f826f8ff', EurovisionGlowSize: 2 };
if (!config.FilmNoir) config.FilmNoir = { EnableFilmNoir: true };
if (!config.Fireworks) config.Fireworks = { EnableFireworks: true, ScrollFireworks: true, ParticleCount: 50, MinFireworks: 3, MaxFireworks: 6, LaunchInterval: 3200 };
if (!config.Friday13) config.Friday13 = { EnableFriday13: true };
if (!config.Frost) config.Frost = { EnableFrost: true };
if (!config.Halloween) config.Halloween = { EnableHalloween: true, SymbolCount: 25, SymbolCountMobile: 10, EnableDifferentDuration: true, EnableSpiders: true, EnableMice: true };
if (!config.Hearts) config.Hearts = { EnableHearts: true, SymbolCount: 25, SymbolCountMobile: 10, EnableDifferentDuration: true };
if (!config.MarioDay) config.MarioDay = { EnableMarioDay: true, LetMarioJump: true };
if (!config.Matrix) config.Matrix = { EnableMatrix: true, SymbolCount: 25, EnableMatrixBackground: false, MatrixChars: '0123456789' };
if (!config.Oktoberfest) config.Oktoberfest = { EnableOktoberfest: true, SymbolCount: 25, SymbolCountMobile: 10, EnableDifferentDuration: true };
if (!config.Olympia) config.Olympia = { EnableOlympia: true, SymbolCount: 25, SymbolCountMobile: 10, EnableDifferentDuration: true };
if (!config.Oscar) config.Oscar = { EnableOscar: true };
if (!config.Pride) config.Pride = { EnablePride: true, HeartCount: 20, HeartSize: 1.5, ColorHeader: true };
if (!config.Rain) config.Rain = { EnableRain: true, RaindropCount: 300, RaindropCountMobile: 150, RainSpeed: 1.0 };
if (!config.Resurrection) config.Resurrection = { EnableResurrection: true, SymbolCount: 12, SymbolCountMobile: 5, EnableDifferentDuration: true };
if (!config.Santa) config.Santa = { EnableSanta: true, SnowflakesCount: 500, SnowflakesCountMobile: 250, SnowFallSpeed: 3, SantaSpeed: 10, SantaSpeedMobile: 8, MaxSantaRestTime: 8, MinSantaRestTime: 3, MaxPresentFallSpeed: 5, MinPresentFallSpeed: 2 };
if (!config.Snowfall) config.Snowfall = { EnableSnowfall: true, SnowflakesCount: 500, SnowflakesCountMobile: 250, Speed: 3 };
if (!config.Snowflakes) config.Snowflakes = { EnableSnowflakes: true, SnowflakeCount: 25, SnowflakeCountMobile: 10, EnableColoredSnowflakes: true, EnableDifferentDuration: true };
if (!config.Snowstorm) config.Snowstorm = { EnableSnowstorm: true, SnowflakesCount: 500, SnowflakesCountMobile: 250, Speed: 6, HorizontalWind: 4, VerticalVariation: 2 };
if (!config.Space) config.Space = { EnableSpace: true, PlanetCount: 6, AstronautCount: 1, SatelliteCount: 4, IssCount: 1, RocketCount: 1, EnableDifferentDuration: true, SymbolCountMobile: 2 };
if (!config.Spooky) config.Spooky = { EnableSpooky: true, SymbolCount: 25, EnableDifferentDuration: true, EnableSpookySway: true, SpookySize: 20, SpookyGlowSize: 2 };
if (!config.Sports) config.Sports = { EnableSports: true, SymbolCount: 5, EnableDifferentDuration: true, TurfColor: '#228b22', SportsBalls: 'football,basketball,tennis,volleyball', EnableTrophy: false, ConfettiColors: '#000000,#FF0000,#FFCC00' };
if (!config.Spring) config.Spring = { EnableSpring: true, PollenCount: 30, EnableSpringSunbeams: true, SunbeamCount: 5, BirdCount: 3, ButterflyCount: 4, BeeCount: 2, LadybugCount: 2, SymbolCountMobile: 2 };
if (!config.StarWars) config.StarWars = { EnableStarWars: true };
if (!config.Storm) config.Storm = { EnableStorm: true, RaindropCount: 300, RaindropCountMobile: 150, EnableLightning: true, RainSpeed: 1.0 };
if (!config.Summer) config.Summer = { EnableSummer: true, BubbleCount: 30, DustCount: 50, SymbolCountMobile: 2, EnableDifferentDuration: true };
if (!config.Underwater) config.Underwater = { EnableUnderwater: true, SymbolCountMobile: 2, EnableDifferentDuration: true, EnableLightRays: true, SeaweedCount: 50, CrabCount: 2, StarfishCount: 2, ShellCount: 2, FishCount: 15, SeahorseCount: 3, JellyfishCount: 3, TurtleCount: 1 };
// Load Rules
try {
@@ -1805,7 +1802,6 @@
// Spooky
document.querySelector('#SpookyCount').value = config.Spooky.SymbolCount;
document.querySelector('#SpookyCountMobile').value = config.Spooky.SymbolCountMobile;
document.querySelector('#EnableSpooky').checked = config.Spooky.EnableSpooky;
document.querySelector('#SpookySize').value = config.Spooky.SpookySize;
document.querySelector('#EnableSpookySway').checked = config.Spooky.EnableSpookySway;
@@ -2068,7 +2064,6 @@
// Spooky Theme
config.Spooky.EnableSpooky = document.querySelector('#EnableSpooky').checked;
config.Spooky.SymbolCount = parseInt(document.querySelector('#SpookyCount').value);
config.Spooky.SymbolCountMobile = parseInt(document.querySelector('#SpookyCountMobile').value);
config.Spooky.SpookySize = parseInt(document.querySelector('#SpookySize').value);
config.Spooky.EnableSpookySway = document.querySelector('#EnableSpookySway').checked;
config.Spooky.SpookyGlowSize = parseInt(document.querySelector('#SpookyGlowSize').value);

View File

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

View File

@@ -9,12 +9,12 @@
"imageUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/raw/branch/main/logo.png",
"versions": [
{
"version": "2.0.0.7",
"version": "2.0.0.8",
"changelog": "feat: add new themes:\n- birthday (ballons, computer mouse interactive)\n- earthday\n- Eid al-Fitr (sugar feast/ramadan)\n- eurovision\n- Film Noir filter\n- Friday the 13\n- frost\n- Mario Day\n- Matrix\n- Oktoberfest\n- Olympia\n- Oscar Awards\n- Pride\n- Rain\n- Spooky\n- Sports (many selectable balls of ball games like handball, football (soccer) or tennis)\n- StarWars Day\n- Storm (Epilepsy Warning!!!, Thunderstorm)\n\n- refactored spring (new lawn with flowers), easter (new easter bunny, new lawn with flowers and ester eggs), halloween (add spiders (computer mouse sensitive), add mice, add fog) \n- fix: many improvements and bug fixes e.g. changed top to translate/transform for performance reasons",
"targetAbi": "10.11.0.0",
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/releases/download/v2.0.0.7/Jellyfin.Plugin.Seasonals.zip",
"checksum": "69192bdb27bdd84e3a0180fe243c9396",
"timestamp": "2026-02-28T14:16:09Z"
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/Jellyfin-Seasonals-Plugin/releases/download/v2.0.0.8/Jellyfin.Plugin.Seasonals.zip",
"checksum": "da10c4e44858f796cae1b77d0b866480",
"timestamp": "2026-02-28T15:28:11Z"
},
{
"version": "1.7.2.0",