chore: bump version to 2.3.0
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 51s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 51s
This commit is contained in:
@@ -1066,6 +1066,42 @@ export async function startMetadataRefresh(libraryId: string) {
|
||||
});
|
||||
}
|
||||
|
||||
export async function startReadingStatusMatch(libraryId: string) {
|
||||
return apiFetch<{ id: string; status: string }>("/reading-status/match", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ library_id: libraryId }),
|
||||
});
|
||||
}
|
||||
|
||||
export type ReadingStatusMatchReportDto = {
|
||||
job_id: string;
|
||||
status: string;
|
||||
total_series: number;
|
||||
linked: number;
|
||||
already_linked: number;
|
||||
no_results: number;
|
||||
ambiguous: number;
|
||||
errors: number;
|
||||
};
|
||||
|
||||
export type ReadingStatusMatchResultDto = {
|
||||
id: string;
|
||||
series_name: string;
|
||||
status: "linked" | "already_linked" | "no_results" | "ambiguous" | "error";
|
||||
anilist_id: number | null;
|
||||
anilist_title: string | null;
|
||||
anilist_url: string | null;
|
||||
error_message: string | null;
|
||||
};
|
||||
|
||||
export async function getReadingStatusMatchReport(jobId: string) {
|
||||
return apiFetch<ReadingStatusMatchReportDto>(`/reading-status/match/${jobId}/report`);
|
||||
}
|
||||
|
||||
export async function getReadingStatusMatchResults(jobId: string) {
|
||||
return apiFetch<ReadingStatusMatchResultDto[]>(`/reading-status/match/${jobId}/results`);
|
||||
}
|
||||
|
||||
export type RefreshFieldDiff = {
|
||||
field: string;
|
||||
old?: unknown;
|
||||
|
||||
@@ -259,6 +259,9 @@ const en: Record<TranslationKey, string> = {
|
||||
"jobs.generateThumbnailsDescription": "Generates thumbnails only for books that don't have one yet. Existing thumbnails are not affected. Useful after an import or if some thumbnails are missing.",
|
||||
"jobs.regenerateThumbnailsDescription": "Regenerates all thumbnails from scratch, replacing existing ones. Useful if thumbnail quality or size has changed in the configuration, or if thumbnails are corrupted.",
|
||||
"jobs.batchMetadataDescription": "Automatically searches metadata for each series in the library from the configured provider (with fallback if configured). Only results with a unique 100% confidence match are applied automatically. Already linked series are skipped. A detailed per-series report is available at the end of the job. <strong>Requires a specific library</strong> (does not work on \"All libraries\").",
|
||||
"jobs.groupReadingStatus": "Reading status",
|
||||
"jobs.matchReadingStatus": "Match series",
|
||||
"jobs.matchReadingStatusShort": "Auto-link unmatched series to the reading status provider",
|
||||
|
||||
// Jobs list
|
||||
"jobsList.id": "ID",
|
||||
@@ -360,6 +363,11 @@ const en: Record<TranslationKey, string> = {
|
||||
"jobDetail.match": "Match: {{title}}",
|
||||
"jobDetail.fileErrors": "File errors ({{count}})",
|
||||
"jobDetail.fileErrorsDesc": "Errors encountered while processing files",
|
||||
"jobDetail.readingStatusMatch": "Series matching",
|
||||
"jobDetail.readingStatusMatchDesc": "Searching each series against the reading status provider",
|
||||
"jobDetail.readingStatusMatchReport": "Match report",
|
||||
"jobDetail.linked": "Linked",
|
||||
"jobDetail.ambiguous": "Ambiguous",
|
||||
|
||||
// Job types
|
||||
"jobType.rebuild": "Indexing",
|
||||
@@ -386,6 +394,9 @@ const en: Record<TranslationKey, string> = {
|
||||
"jobType.metadata_batchDesc": "Searches external metadata providers for all series in the library and automatically applies 100% confidence matches.",
|
||||
"jobType.metadata_refreshLabel": "Metadata refresh",
|
||||
"jobType.metadata_refreshDesc": "Re-downloads and updates metadata for all series already linked to an external provider.",
|
||||
"jobType.reading_status_match": "Reading status match",
|
||||
"jobType.reading_status_matchLabel": "Series matching (reading status)",
|
||||
"jobType.reading_status_matchDesc": "Automatically searches each series in the library against the configured reading status provider (e.g. AniList) and creates links for unambiguously identified series.",
|
||||
|
||||
// Status badges
|
||||
"statusBadge.extracting_pages": "Extracting pages",
|
||||
|
||||
@@ -257,6 +257,9 @@ const fr = {
|
||||
"jobs.generateThumbnailsDescription": "Génère les miniatures uniquement pour les livres qui n'en ont pas encore. Les miniatures existantes ne sont pas touchées. Utile après un import ou si certaines miniatures sont manquantes.",
|
||||
"jobs.regenerateThumbnailsDescription": "Regénère toutes les miniatures depuis zéro, en remplaçant les existantes. Utile si la qualité ou la taille des miniatures a changé dans la configuration, ou si des miniatures sont corrompues.",
|
||||
"jobs.batchMetadataDescription": "Recherche automatiquement les métadonnées de chaque série de la bibliothèque auprès du provider configuré (avec fallback si configuré). Seuls les résultats avec un match unique à 100% de confiance sont appliqués automatiquement. Les séries déjà liées sont ignorées. Un rapport détaillé par série est disponible à la fin du job. <strong>Requiert une bibliothèque spécifique</strong> (ne fonctionne pas sur \u00ab Toutes les bibliothèques \u00bb).",
|
||||
"jobs.groupReadingStatus": "Statut de lecture",
|
||||
"jobs.matchReadingStatus": "Correspondance des séries",
|
||||
"jobs.matchReadingStatusShort": "Lier automatiquement les séries non associées au provider",
|
||||
|
||||
// Jobs list
|
||||
"jobsList.id": "ID",
|
||||
@@ -358,6 +361,11 @@ const fr = {
|
||||
"jobDetail.match": "Correspondance : {{title}}",
|
||||
"jobDetail.fileErrors": "Erreurs de fichiers ({{count}})",
|
||||
"jobDetail.fileErrorsDesc": "Erreurs rencontrées lors du traitement des fichiers",
|
||||
"jobDetail.readingStatusMatch": "Correspondance des séries",
|
||||
"jobDetail.readingStatusMatchDesc": "Recherche de chaque série sur le provider de statut de lecture",
|
||||
"jobDetail.readingStatusMatchReport": "Rapport de correspondance",
|
||||
"jobDetail.linked": "Liées",
|
||||
"jobDetail.ambiguous": "Ambiguës",
|
||||
|
||||
// Job types
|
||||
"jobType.rebuild": "Indexation",
|
||||
@@ -384,6 +392,9 @@ const fr = {
|
||||
"jobType.metadata_batchDesc": "Recherche les métadonnées auprès des fournisseurs externes pour toutes les séries de la bibliothèque et applique automatiquement les correspondances à 100% de confiance.",
|
||||
"jobType.metadata_refreshLabel": "Rafraîchissement métadonnées",
|
||||
"jobType.metadata_refreshDesc": "Re-télécharge et met à jour les métadonnées pour toutes les séries déjà liées à un fournisseur externe.",
|
||||
"jobType.reading_status_match": "Correspondance statut lecture",
|
||||
"jobType.reading_status_matchLabel": "Correspondance des séries (statut lecture)",
|
||||
"jobType.reading_status_matchDesc": "Recherche automatiquement chaque série de la bibliothèque sur le provider de statut de lecture configuré (ex. AniList) et crée les liens pour les séries identifiées sans ambiguïté.",
|
||||
|
||||
// Status badges
|
||||
"statusBadge.extracting_pages": "Extraction des pages",
|
||||
|
||||
Reference in New Issue
Block a user