From 2a44bc33fe33fe94dfe79d6c629677e8642ac13a Mon Sep 17 00:00:00 2001 From: Marcel Date: Mon, 1 Jun 2026 20:42:30 +0200 Subject: [PATCH] =?UTF-8?q?fix(document):=20localize=20loadDocument=20erro?= =?UTF-8?q?r=20too=20=E2=80=94=20no=20raw=20pdf.js=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The render path was localized but loadDocument still stored the raw pdf.js message (and an untranslated English fallback), contradicting the "never leak raw error text" principle. Both load and render failures now set the localized doc_render_failed message. Addresses re-review: Felix, Nora (raw error leak on the load path). Refs #708 Co-Authored-By: Claude Opus 4.8 --- .../src/lib/document/viewer/usePdfRenderer.svelte.test.ts | 5 +++-- frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts index 94b2046d..5cbbed2a 100644 --- a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts +++ b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.test.ts @@ -277,7 +277,7 @@ describe('createPdfRenderer', () => { expect(r.error).toBeNull(); }); - it('loadDocument sets error and loading=false when getDocument().promise rejects', async () => { + it('loadDocument sets a localized error (not the raw pdf.js message) when getDocument rejects', async () => { const failingLib = { GlobalWorkerOptions: { workerSrc: '' }, getDocument: vi.fn().mockReturnValue({ @@ -294,6 +294,7 @@ describe('createPdfRenderer', () => { await r.init(); await r.loadDocument('/bad/path'); expect(r.loading).toBe(false); - expect(r.error).toBe('PDF not found'); + expect(r.error).toBe(m.doc_render_failed()); + expect(r.error).not.toContain('PDF not found'); }); }); diff --git a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts index 1e169969..99724cf1 100644 --- a/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts +++ b/frontend/src/lib/document/viewer/usePdfRenderer.svelte.ts @@ -55,8 +55,10 @@ export function createPdfRenderer(libLoader: LibLoader = defaultLibLoader) { const doc = await loadingTask.promise; pdfDoc = doc; totalPages = doc.numPages; - } catch (e) { - error = e instanceof Error ? e.message : 'Failed to load PDF'; + } catch { + // Never surface the raw pdf.js message — show a localized failure + // that routes into the viewer's error UI (message + download link). + error = m.doc_render_failed(); } finally { loading = false; }