fix(anilist): paginate large libraries to avoid CPU budget kills (#184)

* fix(anilist): paginate large libraries to avoid CPU budget kills

Chunk GraphQL fetches and defer merge, sort, and cover work to update()
ticks so 1000+ anime and manga entries load without blocking callbacks.

* fix(anilist): handle OAuth callback immediately and simplify service helpers

Process browser login tokens synchronously from runStream and file poll, keep a 500ms update interval during OAuth, and avoid duplicate OAuth result emissions from Python.
This commit is contained in:
Cleboost
2026-07-31 17:12:24 -04:00
committed by GitHub
parent dffd46ab4d
commit be208b42c5
7 changed files with 682 additions and 198 deletions
+4
View File
@@ -23,6 +23,7 @@
"increment": "Next episode/chapter",
"loading": "Loading your lists…",
"loading_more": "Loading more entries…",
"loading_progress": "Loading lists… {anime} anime, {manga} manga",
"logged_in_as": "Signed in as {name}",
"login_help": "Set your client ID and client secret in plugin settings, then click Connect. Your browser opens, you approve AniList, and the plugin finishes login automatically.",
"login_title": "Connect to AniList",
@@ -44,6 +45,8 @@
"updating": "Updating…"
},
"service": {
"empty_response": "AniList returned an empty response.",
"invalid_response": "AniList returned an unreadable response.",
"invalid_token": "Invalid or expired access token.",
"mutation_failed": "Update failed.",
"network_error": "Could not reach AniList.",
@@ -87,6 +90,7 @@
"tooltip_error": "AniList — {error}",
"tooltip_in_progress": "{count} in progress (anime + manga)",
"tooltip_loading": "AniList — loading…",
"tooltip_oauth": "AniList — waiting for browser login…",
"tooltip_planning": "{count} anime planned",
"tooltip_total": "{count} anime on your list"
}
+4
View File
@@ -23,6 +23,7 @@
"increment": "Épisode ou chapitre suivant",
"loading": "Chargement de vos listes…",
"loading_more": "Chargement de la liste…",
"loading_progress": "Chargement… {anime} anime, {manga} manga",
"logged_in_as": "Connecté en tant que {name}",
"login_help": "Renseignez votre ID client et votre secret client dans les paramètres du plugin, puis cliquez sur Se connecter. Votre navigateur s'ouvre, vous autorisez AniList, et le plugin termine la connexion automatiquement.",
"login_title": "Se connecter à AniList",
@@ -44,6 +45,8 @@
"updating": "Mise à jour…"
},
"service": {
"empty_response": "AniList a renvoyé une réponse vide.",
"invalid_response": "AniList a renvoyé une réponse illisible.",
"invalid_token": "Jeton d'accès invalide ou expiré.",
"mutation_failed": "La mise à jour a échoué.",
"network_error": "Impossible de joindre AniList.",
@@ -87,6 +90,7 @@
"tooltip_error": "AniList — {error}",
"tooltip_in_progress": "{count} en cours (anime + manga)",
"tooltip_loading": "AniList — chargement…",
"tooltip_oauth": "AniList — en attente de la connexion navigateur…",
"tooltip_planning": "{count} anime prévus",
"tooltip_total": "{count} anime sur votre liste"
}