feat(authors): add configurable monitor defaults#809
Merged
Conversation
2 tasks
2 tasks
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
1 task
vavallee
added a commit
that referenced
this pull request
May 26, 2026
…o 045) (#832) PR #809 (author monitor modes) and PR #700 (per-media-type download categories) both shipped a migration numbered 043, landing on main within the same release window. The migration runner keys on the numeric version: it iterates files in name order, computes version from filename, checks schema_migrations for that version, and SKIPS when already applied. With two files at version 043, the second one encountered alphabetically would be silently skipped on any DB that had already applied the first — losing the author_monitor_mode schema on every existing install during the next upgrade. This was caught before any tagged release shipped, so no production DB has been corrupted. Renaming 043_author_monitor_mode.sql to 045_author_monitor_mode.sql restores monotonic numbering. The newer migration (calibre_import_rollback) stays at 044. The author_monitor_mode.sql SQL itself is unchanged. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
6 tasks
vavallee
added a commit
that referenced
this pull request
May 26, 2026
* feat(authors): per-series monitor mode (#810) Extends #809 with a fifth author MonitorMode, "series", that pins monitoring to a user-selected subset of the author's series. Books linked to a pinned series are monitored; everything else is unmonitored and skipped by Wanted/auto-search. Excluded books still win over series membership. Schema: new 046 migration adds an author_monitored_series join with CASCADE on both sides. Per the issue's explicit guidance the pin set is NOT overloaded onto series.monitored, which is the global watchlist flag and would silently flip state for unrelated authors. API: - GET /author/{id} returns monitoredSeriesIds when mode == series - PUT /author/{id} accepts monitoredSeriesIds: number[] and rejects ids that don't belong to the author (a foreign series id would have silently pinned monitoring to an unrelated catalog row) - new GET /author/{id}/series backs the picker - global author.default_monitor_mode rejects "series" — per-author only Apply-mode pass loads the pinned set + bulk book->series map once (avoids N+1) and applies series membership to every existing book. Newly-discovered books in series mode default to unmonitored unless the provider's SeriesRefs already match a pinned series at ingestion time, so the user doesn't have to re-apply after every refresh. Frontend: EditAuthorModal lazy-loads the author's series only when series mode is picked, renders a checkbox list with a warning chip when a selected series has no Hardcover link. Strings via t() with en.json fallbacks. Hardcover series-fill auto-trigger from the apply path is deferred: the existing fill helpers are SeriesHandler methods and pulling them into AuthorHandler would require a service refactor beyond the scope of this PR. Users can still hit "Fill" on each series page. Closes #810 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(test): drop unknown createdAt on Series literals in EditAuthorModal test The Series interface in web/src/api/client.ts does not have a createdAt field — that lives only on SeriesHardcoverLink. Two test literals in the new series-picker smoke test set createdAt on the outer Series object, which compiled fine in the local IDE but tsc --noEmit caught the unknown property and CI's validate (frontend) + smoke jobs failed. Inner hardcoverLink.createdAt stays — that one is correctly typed. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
5 tasks
vavallee
added a commit
that referenced
this pull request
May 26, 2026
Feature release. Six feature drops plus a sweep of fixes for default-install breaks that v1.14.2 didn't catch. Features: - Editable Quality Profiles (#768) - Configurable author monitor modes incl. per-series (#792, #809, #810) - Bulk multi-select on Author detail (#791) - Per-media-type download client category (#700) - Calibre import/sync rollback (#643) - Edit existing Prowlarr connection with key propagation (#820) - Hardcover series refs in list sync (#805) Fixes: - OpenLibrary 403 due to missing UA contact (#834) - qBit Windows backslash path normalization (#800 follow-up) - qBit case-mismatch detection after PathRemap (#800 follow-up) - qBit import diagnostics + path-not-found detection (#824) - Docker-host firewall named in ECONNREFUSED hint - Grimmory configuration-only banner + key now optional (#818) - Migration 043 collision hotfix (#832) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
vavallee
added a commit
that referenced
this pull request
May 26, 2026
Feature release. Six feature drops plus a sweep of fixes for default-install breaks that v1.14.2 didn't catch. Features: - Editable Quality Profiles (#768) - Configurable author monitor modes incl. per-series (#792, #809, #810) - Bulk multi-select on Author detail (#791) - Per-media-type download client category (#700) - Calibre import/sync rollback (#643) - Edit existing Prowlarr connection with key propagation (#820) - Hardcover series refs in list sync (#805) Fixes: - OpenLibrary 403 due to missing UA contact (#834) - qBit Windows backslash path normalization (#800 follow-up) - qBit case-mismatch detection after PathRemap (#800 follow-up) - qBit import diagnostics + path-not-found detection (#824) - Docker-host firewall named in ECONNREFUSED hint - Grimmory configuration-only banner + key now optional (#818) - Migration 043 collision hotfix (#832) Co-authored-by: Claude Opus 4.7 <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
Adds configurable author monitor modes so users can add or edit authors without automatically monitoring every back-catalogue title. This closes the primary author-level workflow requested in #792 while leaving per-series monitoring as a separate follow-up request. Closes #792.
README.md.Follow-ups (not in this PR)
Per-series monitor selection is intentionally deferred and should be tracked in a separate feature request.
Checklist
docs/DEPLOYMENT.mdupdated if env vars, config, or upgrade path changed - N/A, no deployment/config/upgrade changeCHANGELOG.md[Unreleased]section updated - N/A, release-time only perAGENTS.mdTest plan
gofmt -l internal/api/authors.go internal/api/authors_test.go internal/api/settings_handler.go internal/api/settings_handler_test.go internal/db/authors.go internal/db/authors_test.go internal/models/author.gogo vet ./...golangci-lint run --timeout=5mwith repo-pinned v2.11.4govulncheck ./...go test ./cmd/... ./internal/...cd web && npm run lintcd web && npm run typecheckcd web && npm run buildcd web && npm test