Repository navigation
Conversation
A description, genres, author or cover that a series lacks is taken from the sources it is attached to (its own source first, then its followers), by the nightly repair and in the background after a manual follow. Only empty fields are filled: nothing a scan, a source or a person set is replaced. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Squeaks72
force-pushed
the
pr/fill-missing-metadata
branch
from
October 15, 2026 18:06
89481a6 to
0154d1c
Compare
This was referenced Oct 16, 2026
Closed
Owner
|
Thank you, this is a good idea, and it's in v0.73.0 as
The tests are behaviour tests now: the series route, the 18+ filter, the cooldown and language rules, and the follow |
5 tasks done
Squeaks72
added a commit
to Squeaks72/uchiyomi
that referenced
this pull request
Oct 16, 2026
…ilds of AngeloSha#257 and AngeloSha#245) Admin → Settings → Library housekeeping → Fill in missing details, off by default: the nightly repair's ninth step (`details`) gives a series with no description, genres or author of its own the ones another place has, and a series with no chapters yet a cover. - Its own layer, series_auto_details, read only where the series' own value (lib_series, the scan) and the admin's edit (series_overrides) are both empty: lib/autoDetailsSql.ts is the one expression for the series source, OPDS, the Komga authors and the 18+ filter (which judges the genres a series shows), and the hero rule counts all three. AngeloSha#257 wrote into series_overrides: it shadowed better data a later scan brought, refilled genres cleared on purpose (`{}`), and could change what Show 18+ hides. - AniList first (AngeloSha#245, ported AniList-first): one batched Media(id_in:) request per fifty series linked there with a checked link, in libraries whose lookups are on, in English. No Kitsu or MangaUpdates call. mediaById reads through readCapped. - Then, as stepNames does: at most REPAIR_DETAILS_MAX (15) series that are kept updated, their own source and then the ones they follow in their language, only usable sources (standing, then blockedNow right before), each lookup bounded by the source's budget and the series by a minute; text through cleanDescription and cleanGenres. - A series asked waits 30 days (sources_at, anilist_at); a manual follow asks at once. Counters, a Tasks line, the limits and the estimate. Switching it off deletes the layer and puts back any cover it set. Forget purges it. - Behaviour tests (autoDetails.int): off by default, the order and the cleaning, below the scan, `{}` kept, the cooldown and language rules, monitored only, the 18+ filter, AniList's one batch, the month's wait, the manual follow over HTTP, the take-back. Three reintroduced. - 5 new strings, translated in all eight languages. Co-Authored-By: Squeaks72 <Squeaks72@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Squeaks72
pushed a commit
to Squeaks72/uchiyomi
that referenced
this pull request
Oct 16, 2026
…gine passwords @Squeaks72 is credited for AngeloSha#257, AngeloSha#245 and AngeloSha#256. The upgrade note says what changes for sources that were ticked as adult under the 18+ filter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
bff/src/lib/metaFill.ts(fillMissingMeta) now fills it from the sources the series is attached to: its own source first, then its followers in the order they were added, skipping switched-off or failing sources, until nothing is missing.series_overrides, the one place a scan does not overwrite, and only where the field is still empty at write time. A cover goes toseries_art.cover(the automatic cover, below any cover a person chose) and only for a series with no chapters yet, since otherwise the series already has its first page.stepMetaafter the reading-directions step: 15 series a night, picked byseriesMissingMeta, stopping between series for a Cancel or a shutdown), and the manual follow route (POST /api/admin/series/:id/sources), which fires it in the background after the follow is stored. It never throws and never delays the answer.Type
Testing
bffandwebtypecheck clean; webnpm testpasses in full. Newbff/test/metaFill.int.test.tsagainst a throwaway Postgres: a series missing everything is filled from its follower (trimmed, main source asked first), a second call asks nothing, a complete series gets no override row, a partly filled one gets only its empty fields (a person's genres and a scanned description are left alone), a failing source is skipped for the next, an unknown series is a no-op,seriesMissingMetapicks only series that still lack something, plus source checks that the repair step and the follow route call it.repair.int(53) andseriesSources.int(16) pass unchanged. Nothing was exercised against a real source or in a browser.Checklist
docs/USAGE.md)🤖 Generated with Claude Code