From e70e4b9d40a6251897e114c4154add8c05ad0944 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sat, 30 May 2026 15:43:50 -0500 Subject: [PATCH 1/4] Fix typo on onTest notification body --- server/utils/notifications.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/utils/notifications.js b/server/utils/notifications.js index 700d3c389..497d7a1a1 100644 --- a/server/utils/notifications.js +++ b/server/utils/notifications.js @@ -100,7 +100,7 @@ module.exports.notificationData = { variables: ['version'], defaults: { title: 'Test Notification on Abs {{version}}', - body: 'Test notificataion body for abs {{version}}.' + body: 'Test notification body for abs {{version}}.' }, testData: { version: 'v' + version From 036bc081f00a0b94d829e50715943143c2c185fa Mon Sep 17 00:00:00 2001 From: mikiher Date: Thu, 4 Jun 2026 14:03:59 +0300 Subject: [PATCH 2/4] index.js: Read AllowedDevOrigins from dev,js into ALLOWED_DEV_ORIGINS env var --- index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.js b/index.js index 7379322e8..ce0195e95 100644 --- a/index.js +++ b/index.js @@ -31,6 +31,11 @@ if (isDev || options['prod-with-dev-env']) { if (devEnv.AllowIframe) process.env.ALLOW_IFRAME = '1' if (devEnv.BackupPath) process.env.BACKUP_PATH = devEnv.BackupPath if (devEnv.ReactClientPath) process.env.REACT_CLIENT_PATH = devEnv.ReactClientPath + if (devEnv.AllowedDevOrigins) { + process.env.ALLOWED_DEV_ORIGINS = Array.isArray(devEnv.AllowedDevOrigins) + ? devEnv.AllowedDevOrigins.join(',') + : String(devEnv.AllowedDevOrigins) + } process.env.SOURCE = 'local' process.env.ROUTER_BASE_PATH = devEnv.RouterBasePath ?? '/audiobookshelf' } From 3417c0c721b1b8d280da2e8a5b15b26014377717 Mon Sep 17 00:00:00 2001 From: mikiher Date: Thu, 18 Jun 2026 12:39:50 +0300 Subject: [PATCH 3/4] Enhance PodcastController to handle enclosure updates, allowing for null values and object structure validation for enclosure properties. --- server/controllers/PodcastController.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/server/controllers/PodcastController.js b/server/controllers/PodcastController.js index 85173e622..5eaa2a64a 100644 --- a/server/controllers/PodcastController.js +++ b/server/controllers/PodcastController.js @@ -437,6 +437,17 @@ class PodcastController { } updatePayload[key] = req.body[key] + } else if (key === 'enclosure') { + const enclosure = req.body.enclosure + if (enclosure === null) { + updatePayload.enclosureURL = null + updatePayload.enclosureSize = null + updatePayload.enclosureType = null + } else if (typeof enclosure === 'object' && typeof enclosure.url === 'string') { + updatePayload.enclosureURL = enclosure.url + updatePayload.enclosureType = typeof enclosure.type === 'string' ? enclosure.type : null + updatePayload.enclosureSize = enclosure.length !== undefined && enclosure.length !== null ? enclosure.length : null + } } else if (key === 'chapters' && Array.isArray(req.body[key]) && req.body[key].every((ch) => typeof ch === 'object' && ch.title && ch.start)) { updatePayload[key] = req.body[key] } else if (key === 'publishedAt' && typeof req.body[key] === 'number') { From 56e60b842020956bb835043dd32ce2325295f6b9 Mon Sep 17 00:00:00 2001 From: mikiher Date: Tue, 23 Jun 2026 14:08:16 +0300 Subject: [PATCH 4/4] Server.js: Let next.js handle file uploads through internal-api routes --- server/Server.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/Server.js b/server/Server.js index d6f748a1e..ef0888927 100644 --- a/server/Server.js +++ b/server/Server.js @@ -302,7 +302,9 @@ class Server { this.server = http.createServer(app) + // Skip file upload parsing for internal-api routes (Next.js proxies read multipart bodies). router.use( + /^(?!\/internal-api).*/, fileUpload({ defCharset: 'utf8', defParamCharset: 'utf8',