From a926df3aaee4d7a8e572d9344c35437bdd6f4aad Mon Sep 17 00:00:00 2001 From: Kareem Ahmad Date: Wed, 18 Mar 2026 22:07:22 -0400 Subject: [PATCH 1/2] Fix bug in readers where web browser is unable to load the ebook when running behind a reverse proxy at /audiobookshelf --- client/components/readers/ComicReader.vue | 6 +++--- client/components/readers/EpubReader.vue | 6 +++--- client/components/readers/MobiReader.vue | 4 ++-- client/components/readers/PdfReader.vue | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/components/readers/ComicReader.vue b/client/components/readers/ComicReader.vue index fce269396..e30354a30 100644 --- a/client/components/readers/ComicReader.vue +++ b/client/components/readers/ComicReader.vue @@ -109,9 +109,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/api/items/${this.libraryItemId}/ebook` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` }, comicMetadataKeys() { return this.comicMetadata ? Object.keys(this.comicMetadata) : [] @@ -176,7 +176,7 @@ export default { ebookLocation: this.page, ebookProgress: Math.max(0, Math.min(1, (Number(this.page) - 1) / Number(this.numPages))) } - this.$axios.$patch(`/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { + this.$axios.$patch(`/audiobookshelf/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { console.error('ComicReader.updateProgress failed:', error) }) }, diff --git a/client/components/readers/EpubReader.vue b/client/components/readers/EpubReader.vue index a4c51539f..b309b8959 100644 --- a/client/components/readers/EpubReader.vue +++ b/client/components/readers/EpubReader.vue @@ -94,9 +94,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/api/items/${this.libraryItemId}/ebook` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` }, themeRules() { const theme = this.ereaderSettings.theme @@ -206,7 +206,7 @@ export default { */ updateProgress(payload) { if (!this.keepProgress) return - this.$axios.$patch(`/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { + this.$axios.$patch(`/audiobookshelf/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { console.error('EpubReader.updateProgress failed:', error) }) }, diff --git a/client/components/readers/MobiReader.vue b/client/components/readers/MobiReader.vue index 459ae55bf..62c9cda5d 100644 --- a/client/components/readers/MobiReader.vue +++ b/client/components/readers/MobiReader.vue @@ -31,9 +31,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/api/items/${this.libraryItemId}/ebook` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` } }, methods: { diff --git a/client/components/readers/PdfReader.vue b/client/components/readers/PdfReader.vue index d9459d768..4192878d6 100644 --- a/client/components/readers/PdfReader.vue +++ b/client/components/readers/PdfReader.vue @@ -104,9 +104,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/api/items/${this.libraryItemId}/ebook` + return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` } }, methods: { @@ -127,7 +127,7 @@ export default { ebookLocation: this.page, ebookProgress: Math.max(0, Math.min(1, (Number(this.page) - 1) / Number(this.numPages))) } - this.$axios.$patch(`/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { + this.$axios.$patch(`/audiobookshelf/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { console.error('EpubReader.updateProgress failed:', error) }) }, From d9fa4d709c119edeea6c80fb2e483047f3ac3af4 Mon Sep 17 00:00:00 2001 From: Kareem Ahmad Date: Wed, 3 Jun 2026 11:38:19 -0400 Subject: [PATCH 2/2] fix comic reader, undo epub 'fix' --- client/components/readers/ComicReader.vue | 8 ++++---- client/components/readers/EpubReader.vue | 6 +++--- client/components/readers/MobiReader.vue | 4 ++-- client/components/readers/PdfReader.vue | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/components/readers/ComicReader.vue b/client/components/readers/ComicReader.vue index e30354a30..aee8dc7a0 100644 --- a/client/components/readers/ComicReader.vue +++ b/client/components/readers/ComicReader.vue @@ -65,7 +65,7 @@ const MAX_SCALE = 400 const MIN_SCALE = 10 Archive.init({ - workerUrl: '/libarchive/worker-bundle.js' + workerUrl: '/audiobookshelf/libarchive/worker-bundle.js' }) export default { @@ -109,9 +109,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` + return `/api/items/${this.libraryItemId}/ebook` }, comicMetadataKeys() { return this.comicMetadata ? Object.keys(this.comicMetadata) : [] @@ -176,7 +176,7 @@ export default { ebookLocation: this.page, ebookProgress: Math.max(0, Math.min(1, (Number(this.page) - 1) / Number(this.numPages))) } - this.$axios.$patch(`/audiobookshelf/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { + this.$axios.$patch(`/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { console.error('ComicReader.updateProgress failed:', error) }) }, diff --git a/client/components/readers/EpubReader.vue b/client/components/readers/EpubReader.vue index b309b8959..a4c51539f 100644 --- a/client/components/readers/EpubReader.vue +++ b/client/components/readers/EpubReader.vue @@ -94,9 +94,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` + return `/api/items/${this.libraryItemId}/ebook` }, themeRules() { const theme = this.ereaderSettings.theme @@ -206,7 +206,7 @@ export default { */ updateProgress(payload) { if (!this.keepProgress) return - this.$axios.$patch(`/audiobookshelf/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { + this.$axios.$patch(`/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { console.error('EpubReader.updateProgress failed:', error) }) }, diff --git a/client/components/readers/MobiReader.vue b/client/components/readers/MobiReader.vue index 62c9cda5d..459ae55bf 100644 --- a/client/components/readers/MobiReader.vue +++ b/client/components/readers/MobiReader.vue @@ -31,9 +31,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/audiobookshelf/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/audiobookshelf/api/items/${this.libraryItemId}/ebook` + return `/api/items/${this.libraryItemId}/ebook` } }, methods: { diff --git a/client/components/readers/PdfReader.vue b/client/components/readers/PdfReader.vue index 4192878d6..52b7b3dec 100644 --- a/client/components/readers/PdfReader.vue +++ b/client/components/readers/PdfReader.vue @@ -127,7 +127,7 @@ export default { ebookLocation: this.page, ebookProgress: Math.max(0, Math.min(1, (Number(this.page) - 1) / Number(this.numPages))) } - this.$axios.$patch(`/audiobookshelf/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { + this.$axios.$patch(`/api/me/progress/${this.libraryItemId}`, payload, { progress: false }).catch((error) => { console.error('EpubReader.updateProgress failed:', error) }) },