From 133644a0ba9d0541cc61caff52a292b0cc8a0e7e Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Thu, 17 Sep 2026 19:39:44 -0400 Subject: [PATCH] fix(pdf): affichage des pages du viewer PDF via iframe (BUG-060) --- .gitea/workflows/ci.yml | 1 + CHANGELOG.md | 17 ++++- README.fr.md | 6 +- README.md | 6 +- VERSION | 2 +- desktop/Cargo.lock | 2 +- desktop/Cargo.toml | 2 +- desktop/tauri.conf.json | 2 +- docs/ISSUES_TODOLIST.md | 2 + docs/ROADMAP.md | 2 +- docs/features/pdf.md | 1 + frontend/js/viewer.js | 2 +- package.json | 2 +- test_vault/sample-pdf.pdf | 106 +++++++++++++++++++++++++++++ tests/e2e/pdf-viewer.spec.js | 94 +++++++++++++++++++++++++ tests/frontend/pdf-viewer.test.mjs | 95 ++++++++++++++++++++++++++ 16 files changed, 328 insertions(+), 14 deletions(-) create mode 100644 test_vault/sample-pdf.pdf create mode 100644 tests/e2e/pdf-viewer.spec.js create mode 100644 tests/frontend/pdf-viewer.test.mjs diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index b0186be..5c7cbad 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -38,6 +38,7 @@ jobs: - name: Frontend unit tests run: | node tests/frontend/unit.test.mjs + node tests/frontend/pdf-viewer.test.mjs node tests/frontend/forge-completion.test.mjs - name: Frontend JSDOM tests (PaneManager + Excalidraw + Plugins + AI + SW + Collab + Mobile + Semantic + Desktop + Inline edition) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d1c5de..34a113b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/), et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). > **En cours de développement** : les changements à venir sont listés dans la section -> [Unreleased](#unreleased). La dernière version livrée est **2.11.0**. +> [Unreleased](#unreleased). La dernière version livrée est **2.11.1**. --- @@ -14,6 +14,21 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). --- +## [2.11.1] — 2026-09-17 + +### Corrigé + +- **BUG-060 — Viewer PDF : l'affichage des pages ne fonctionnait pas** : au clic sur un fichier + `.pdf`, seule la barre d'outils « PDF — N pages » s'affichait, le corps restant vide. La CSP + durcie en BUG-034 pose `object-src 'none'`, directive qui gouverne ``/``, alors + que le viewer rendait le PDF via `` : le lecteur natif était + bloqué. Le rendu passe désormais par une ` `; lucide.createIcons(); diff --git a/package.json b/package.json index 6843c0c..28a8720 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsigate", - "version": "2.11.0", + "version": "2.11.1", "description": "**Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive.", "main": "patch.js", "directories": { diff --git a/test_vault/sample-pdf.pdf b/test_vault/sample-pdf.pdf new file mode 100644 index 0000000..8dad48d --- /dev/null +++ b/test_vault/sample-pdf.pdf @@ -0,0 +1,106 @@ +%PDF-1.3 +%“Œ‹ž ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +4 0 obj +<< +/Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +5 0 obj +<< +/Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/PageMode /UseNone /Pages 8 0 R /Type /Catalog +>> +endobj +7 0 obj +<< +/Author (anonymous) /CreationDate (D:20260917153218-04'00') /Creator (anonymous) /Keywords () /ModDate (D:20260917153218-04'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +8 0 obj +<< +/Count 3 /Kids [ 3 0 R 4 0 R 5 0 R ] /Type /Pages +>> +endobj +9 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 135 +>> +stream +GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_?CU^!/VX4lBrg6%A?7Y)Zc(P6:e82L4<*@VL)cDW^;5oRmL:j77h2jWe.B?6"5/?Jt]&.8endstream +endobj +10 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 135 +>> +stream +GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_?CU^!/VX4lBrg6%A?7Y)Zc(P6:e82L4<*@VL)cDW^;5oRmL:j77h2jWe.B?6"5/?Jruos8endstream +endobj +11 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 135 +>> +stream +GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_?CU^!/VX4lBrg6%A?7Y)Zc(P6:e82L4<*@VL)cDW^;5oRmL:j77h2jWe.B?6"5/?K!D1>8endstream +endobj +xref +0 12 +0000000000 65535 f +0000000061 00000 n +0000000092 00000 n +0000000199 00000 n +0000000392 00000 n +0000000586 00000 n +0000000780 00000 n +0000000848 00000 n +0000001109 00000 n +0000001180 00000 n +0000001405 00000 n +0000001631 00000 n +trailer +<< +/ID +[<464fc7cfdf793a5b6d29e3d0d043c5a7><464fc7cfdf793a5b6d29e3d0d043c5a7>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 7 0 R +/Root 6 0 R +/Size 12 +>> +startxref +1857 +%%EOF diff --git a/tests/e2e/pdf-viewer.spec.js b/tests/e2e/pdf-viewer.spec.js new file mode 100644 index 0000000..b7405fe --- /dev/null +++ b/tests/e2e/pdf-viewer.spec.js @@ -0,0 +1,94 @@ +/** + * E2E tests for ObsiGate PDF inline viewer (BUG-060). + * + * Regression : la CSP posée par BUG-034 (`object-src 'none'`) bloque l'élément + * `` qui servait le PDF. Le viewer doit rendre le stream dans une + * `