feat(authors): allow correcting metadata matches

Let users edit author facts, choose and pin a provider record, and keep later refreshes tied to that record. Preserve compatibility for older clients through additive API fields and a discoverable server feature.

Keep server typechecking deterministic by breaking circular Drizzle inference and correcting the nullability mismatches it previously hid.

Closes #1464
This commit is contained in:
neon
2026-10-20 18:47:16 +00:00
parent 0d695a7ea0
commit 2b8917afb6
44 changed files with 27075 additions and 60 deletions
@@ -1,10 +1,10 @@
{
"totalRoutes": 665,
"totalRoutes": 667,
"byPermission": {
"(none)": 287,
"Permission.ManageMetadataConfig": 41,
"Permission.EmailSend": 34,
"Permission.LibraryEditMetadata": 35,
"Permission.LibraryEditMetadata": 37,
"Permission.BookDockAccess": 17,
"Permission.ManageAppSettings": 62,
"Permission.ManageLibraries": 24,
@@ -47,6 +47,30 @@
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/authors/authors.controller.ts",
"className": "AuthorsController",
"methodName": "pinMetadataMatch",
"httpMethod": "PUT",
"path": "/authors/:id/metadata-match",
"permissions": ["Permission.LibraryEditMetadata"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/authors/authors.controller.ts",
"className": "AuthorsController",
"methodName": "unpinMetadataMatch",
"httpMethod": "DELETE",
"path": "/authors/:id/metadata-match",
"permissions": ["Permission.LibraryEditMetadata"],
"libraryAccess": [],
"isPublic": false,
"allowDefault": false,
"useGuards": []
},
{
"file": "server/src/modules/authors/authors.controller.ts",
"className": "AuthorsController",