From bf5be037799e4418b86676c1debe8f93fac39a95 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 23 Jan 2026 05:55:30 -0800 Subject: feat(List): Add media roulette --- src/lib/List/Anime/CleanAnimeList.svelte | 18 +- src/lib/List/Manga/CleanMangaList.svelte | 15 ++ src/lib/List/MediaRoulette.svelte | 294 +++++++++++++++++++++++++++++ src/lib/Settings/Categories/Display.svelte | 7 + src/stores/settings.ts | 2 + src/styles/normalise.css | 9 + 6 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 src/lib/List/MediaRoulette.svelte (limited to 'src') diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte index b7b7a6cb..fef76c03 100644 --- a/src/lib/List/Anime/CleanAnimeList.svelte +++ b/src/lib/List/Anime/CleanAnimeList.svelte @@ -18,6 +18,7 @@ import CleanList from '../CleanList.svelte'; import stateBin from '$stores/stateBin'; import localforage from 'localforage'; + import MediaRoulette from '../MediaRoulette.svelte'; export let media: Media[]; export let title: any; @@ -33,6 +34,7 @@ export let dummy = false; export let disableFilter = false; + let showRoulette = false; let keyCacher: NodeJS.Timeout; let totalEpisodeDueCount = media .map((anime) => { @@ -145,7 +147,17 @@ {title} hideTime={dummy} hideCount={dummy} -/> +> + {#if $settings.displayMediaRoulette && !upcoming && !notYetReleased && filteredMedia.length > 0} + + {/if} + {#if media.length === 0} No anime to display. + {#if $settings.displayMediaRoulette && filteredMedia.length > 0} + + {/if} {/if} {/if} @@ -209,3 +220,7 @@ {/if} + +{#if showRoulette} + (showRoulette = false)} /> +{/if} diff --git a/src/lib/List/MediaRoulette.svelte b/src/lib/List/MediaRoulette.svelte new file mode 100644 index 00000000..e5b7ccba --- /dev/null +++ b/src/lib/List/MediaRoulette.svelte @@ -0,0 +1,294 @@ + + + e.key === 'Escape' && handleClose()} /> + + + + diff --git a/src/lib/Settings/Categories/Display.svelte b/src/lib/Settings/Categories/Display.svelte index d60da05a..a5f16f97 100644 --- a/src/lib/Settings/Categories/Display.svelte +++ b/src/lib/Settings/Categories/Display.svelte @@ -313,6 +313,13 @@ Anime sort order
+ + + Adds a roulette button to due and completed media lists to randomly pick something to watch or + read + + +
{$locale().settings.display.categories.media.title}