feat(anime): add anime browser powered by Aniyomi extensions

- Add `subminer anime` / `--anime` and a tray entry to open a browser that searches installed Aniyomi extension sources, shows cover art and episodes, and plays into mpv with overlay/mining attached
- Add an Extensions tab to add repos and install/update/remove sources, and per-source settings for sources needing config
- Support searching all sources at once with streaming, per-source results and status
- Prefer Japanese audio/subtitle tracks from the source and keep the primary subtitle slot reserved for Japanese
- Fix window/tray/Dock handling so the browser and mpv can be switched between without quitting the app or losing the Dock icon
- Add anime.repos, anime.extensionsDir, anime.preferredQuality config keys (no bundled repos or discovery)
This commit is contained in:
sudacode committed 2026-08-14 22:38:31 -07:00
1 parent 7d729cb60c
commit 2512e0f3af
111 files changed
+7218 -182

No files matched your search

@@ -566,6 +566,27 @@ export function buildIntegrationConfigOptionRegistry(
defaultValue: defaultConfig.mpv.aniskipButtonKey,
description: 'mpv key used to skip the detected intro while the skip prompt is visible.',
},
{
path: 'anime.extensionsDir',
kind: 'string',
defaultValue: defaultConfig.anime.extensionsDir,
description:
'Directory holding Aniyomi extension .apk files. Empty uses <userData>/anime-extensions.',
},
{
path: 'anime.repos',
kind: 'array',
defaultValue: defaultConfig.anime.repos,
description:
'Extension repository index URLs (any https .json index, e.g. https://.../index.min.json). Empty by default; SubMiner ships no repositories.',
},
{
path: 'anime.preferredQuality',
kind: 'string',
defaultValue: defaultConfig.anime.preferredQuality,
description:
'Preferred stream quality label, matched as a substring (for example: 1080). Empty uses the source order.',
},
{
path: 'jellyfin.enabled',
kind: 'boolean',