From e3779c1d7e56791c08327f7e43da58b9441accf7 Mon Sep 17 00:00:00 2001 From: neon <18559658+neonsolstice@users.noreply.github.com> Date: Tue, 1 Sep 2026 20:55:36 +0000 Subject: [PATCH] feat(metadata): restrict autofill to stored provider ids Prevent automatic metadata refreshes from searching alternate identities when a book already has trusted provider IDs. Preserve discovery and manual search behavior, and avoid dirtying descriptions on empty refreshes. Closes #1222 --- .../components/detail/tabs/DetailsTab.vue | 24 ++-- .../detail/tabs/EditMetadataTab.vue | 6 +- .../detail/tabs/MetadataSourceCard.vue | 2 +- .../detail/tabs/RichDescriptionEditor.vue | 2 +- .../__tests__/RichDescriptionEditor.spec.ts | 26 +++++ .../MetadataGenreBlocklistSettings.vue | 1 + .../__tests__/AdvancedFetchOptions.spec.ts | 46 ++++++++ .../MetadataGenreBlocklistSettings.spec.ts | 14 ++- .../components/AdvancedFetchOptions.vue | 24 +++- .../__tests__/useFieldRuleScopes.spec.ts | 19 ++- .../composables/useFieldRuleScopes.ts | 1 + client/src/locales/en.json | 5 + packages/types/src/metadata-fetch.ts | 3 +- packages/types/src/metadata-preferences.ts | 3 + .../metadata-fetch-pipeline.test.ts | 109 +++++++++++++++++- .../metadata-fetch/metadata-fetch-pipeline.ts | 36 +++++- .../metadata-fetch.service.test.ts | 90 +++++++++++++++ .../metadata-fetch/metadata-fetch.service.ts | 6 + .../providers/metadata-search-params.ts | 5 + .../dto/update-global-preferences.dto.test.ts | 5 + .../dto/update-global-preferences.dto.ts | 14 ++- .../metadata-preference-resolver.test.ts | 31 ++++- .../metadata-preference-resolver.ts | 14 ++- 23 files changed, 450 insertions(+), 36 deletions(-) create mode 100644 client/src/features/book/components/detail/tabs/__tests__/RichDescriptionEditor.spec.ts create mode 100644 client/src/features/settings/metadata-preferences/__tests__/AdvancedFetchOptions.spec.ts diff --git a/client/src/features/book/components/detail/tabs/DetailsTab.vue b/client/src/features/book/components/detail/tabs/DetailsTab.vue index 88d90f59d..8381b8f63 100644 --- a/client/src/features/book/components/detail/tabs/DetailsTab.vue +++ b/client/src/features/book/components/detail/tabs/DetailsTab.vue @@ -1889,7 +1889,7 @@ watch(
-
+
{{ t('book.detail.details.publisher') }}
-
-
+
{{ t('book.detail.details.published') }}
{{ book.publishedDate ? formatDisplayDate(book.publishedDate) : book.publishedYear || '-' }}
-
+
{{ t('book.detail.details.language') }}
{{ book.language || '-' }}
-
+
{{ t('book.detail.details.pages') }}
{{ book.pageCount || '-' }}
{{ t('book.detail.details.duration') }}
{{ formatDuration(book.audioMetadata.durationSeconds) }}
{{ t('book.detail.details.edition') }}
{{ book.audioMetadata.abridged ? t('book.detail.details.abridged') : t('book.detail.details.unabridged') }}
-
+
{{ t('book.detail.details.isbn') }}
{{ book.isbn13 }}
@@ -1939,15 +1939,15 @@ watch(
-
-
+
{{ t('book.detail.details.fileSize') }}
{{ formatFileSize(primaryFile?.sizeBytes) }}
-
+
{{ t('book.detail.details.library') }}
{{ book.libraryName || '-' }}
-
+
{{ t('book.detail.details.added') }}