UX-03: Anhang-Vorschau (Mail) #297

Closed
patrick wants to merge 0 commits from feature/ux-03-anhang-vorschau into main
pull from: feature/ux-03-anhang-vorschau
Owner

Anhang-Vorschau fuer PDF/Bilder im mail-search Frontend, ohne iframe-Rendering von Fremdinhalt. Neue Backend-Route GET /api/v1/mail/messages/{messageID}/attachments, Content-Type-Fix in handleGetAttachment (war hartkodiert octet-stream, jetzt net/http.DetectContentType). Frontend: PdfCanvasPreview (Canvas-Rendering via pdfjs-dist, nach Vorlage web/pdf-viewer), ImagePreview, attachmentKind-Entscheidung ausschliesslich ueber contentType.

AC1-3 real getestet (siehe Details im Pruefprotokoll): Magic-Bytes-Erkennung bei falscher Dateiendung bestaetigt, Quelltext-Scan bestaetigt keine iframe/dangerouslySetInnerHTML.

Bekannte Einschraenkung (nicht durch UX-03 verursacht): mailapi.RegisterRoutes (INT-01) ist noch nicht in einen laufenden Core-Router eingebunden - betrifft die ganze web/mail-search App.

Siehe mail/docs/UX-03-PRUEFPROTOKOLL.md.

🤖 Generated with Claude Code

Anhang-Vorschau fuer PDF/Bilder im mail-search Frontend, ohne iframe-Rendering von Fremdinhalt. Neue Backend-Route GET /api/v1/mail/messages/{messageID}/attachments, Content-Type-Fix in handleGetAttachment (war hartkodiert octet-stream, jetzt net/http.DetectContentType). Frontend: PdfCanvasPreview (Canvas-Rendering via pdfjs-dist, nach Vorlage web/pdf-viewer), ImagePreview, attachmentKind-Entscheidung ausschliesslich ueber contentType. AC1-3 real getestet (siehe Details im Pruefprotokoll): Magic-Bytes-Erkennung bei falscher Dateiendung bestaetigt, Quelltext-Scan bestaetigt keine iframe/dangerouslySetInnerHTML. Bekannte Einschraenkung (nicht durch UX-03 verursacht): mailapi.RegisterRoutes (INT-01) ist noch nicht in einen laufenden Core-Router eingebunden - betrifft die ganze web/mail-search App. Siehe mail/docs/UX-03-PRUEFPROTOKOLL.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
patrick added 2 commits 2026-10-16 08:52:24 +02:00
Backend (mail/internal/mailapi): Content-Type fuer Anhang-Download und
neue Anhangsliste (GET .../attachments) wird serverseitig per
Magic-Bytes (net/http.DetectContentType) bestimmt statt wie bisher
hartkodiert/ueber eine Dateiendung -- es gibt an dieser Schnittstelle
technisch gar keinen Dateinamen. Ergaenzt um Content-Disposition:
inline statt erzwungenem Download. mail/internal/attachments: Test
ergaenzt, der belegt, dass die bestehende IMP-02-Extraktion eine
falsche Dateiendung und einen falsch deklarierten MIME-Typ bereits
korrekt per Magic-Bytes ueberschreibt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
UX-03: anhang-vorschau
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Mail-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
f63fcb8a2d
Frontend (web/mail-search): Anhang-Vorschau fuer PDF (Canvas-Rendering
via pdfjs-dist, gleiches Muster wie DOC-05s web/pdf-viewer/PdfViewer.tsx
-- kein aequivalentes PdfCanvasPreview im Repo gefunden, daher PdfViewer
als Vorlage uebernommen statt neu erfunden) und Bilder (<img> auf einem
authentifiziert geladenen Blob). Die Vorschauart haengt ausschliesslich
vom serverseitig per Magic-Bytes bestimmten contentType ab, nie von
einem Dateinamen (den es an der Schnittstelle gar nicht gibt); nicht
unterstuetzte Typen werden nur als Hinweistext angezeigt, nie
eingebettet. Kein iframe/<object>/dangerouslySetInnerHTML -- durch
automatisierten Sicherheitsreview-Test abgesichert. Neue lib/http.ts
(authentifizierter Zugriff ueber @nexarch/shl, identisch zu
web/pdf-viewer/lib/http.ts) und lib/attachments.ts (Anhangsliste/
-inhalt der Mail-API). Pruefprotokoll in mail/docs/UX-03-PRUEFPROTOKOLL.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Author
Owner

Inhalt bereits in main enthalten (geprueft per merge_all_prs.sh: leerer Merge-Diff). Geschlossen ohne Merge.

Inhalt bereits in main enthalten (geprueft per merge_all_prs.sh: leerer Merge-Diff). Geschlossen ohne Merge.
patrick closed this pull request 2026-10-19 12:29:41 +02:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: scripte/nexarch#297