3.8 KiB
ThreadNet-Web: Fork-Anpassungen für axion1337.chat
Dieses Dokument beschreibt alles, was dieser Fork gegenüber Upstream Element Web ändert. Der
Rest der docs/-Ordner-Dateien und das Root-README.md sind unverändertes Upstream-Material
und beschreiben absichtlich nicht diese Anpassungen - diese Datei ist der zentrale
Anlaufpunkt dafür.
1. Discord-Style Room-List (Call-Teilnehmer in der Raumliste)
Zeigt aktive Call-Teilnehmer direkt in der Raumliste an (ähnlich Discords Voice-Channel-UI),
statt nur einen generischen "Call läuft"-Indikator. Betroffene Komponenten:
apps/web/src/room-list/RoomListItemView/RoomListItemView.tsx und
RoomListItemView.module.css (vertikale Ausrichtung der Teilnehmer-Avatare).
2. Client-seitiges ClamAV-Content-Scanning (Issue #19-Erweiterung)
Der Server-seitige Content-Scanner (Synapse-Modul, siehe gitops-Repo
docs/deployment-guides/06-moderation-content-scanning.md)
sieht bei Ende-zu-Ende-verschlüsselten Räumen nur Ciphertext - eine strukturelle Grenze, kein
Bug. Da dieser Client bereits geforkt wird, scannt er stattdessen selbst, auf beiden Seiten:
- Senden (
apps/web/src/ContentMessages.ts,uploadFile()): liest die Datei als ArrayBuffer, scannt sie überscanContent()bevor verschlüsselt/hochgeladen wird - der Upload wird bei Treffer gar nicht erst gestartet. - Empfangen (
apps/web/src/utils/DecryptFile.ts,decryptFile()): scannt die entschlüsselten Bytes direkt nach dem Entschlüsseln, bevor das Blob an die UI zurückgegeben wird - schützt auch vor Dateien von unveränderten/fremden Matrix-Clients, die diesen Patch nicht haben. - Gemeinsame Scan-Logik:
apps/web/src/utils/ContentScanner.ts- ruft den (im gitops-Repo deployten)clamav-http-scanner-Dienst perfetch("/_scan", ...)auf, mit dem eigenen Matrix-Access-Token als Bearer-Auth. Fail-open bei Netzwerk-/Scanner-Fehlern (blockiert Uploads/Downloads nicht bei einem Ausfall des Scanners). - Neuer Fehlertyp
ContentScanRejectedError, verdrahtet durch die bestehenden Fehler-Rendering-Pfade inMImageBody.tsx,MAudioBody.tsx,VideoBodyViewModel.ts,FileBodyViewModel.ts. - Live getestet inkl. Hostile-Sender-Simulation (Datei per rohem API-Call ohne diesen Patch gesendet, Empfangs-Hook hat trotzdem geblockt).
⚠️ Bekannte Lücke: Electron/Desktop (Issue #2)
Dieser Fix ist bestätigt nur für den Web-Client-Build wirksam. Der Electron-Desktop-Client
bekommt ihn aktuell nicht automatisch - die CI-Workflow-Kette (build_ew-Job) checkt
weiterhin element-hq/element-web (Upstream) statt diesen Fork aus, und es ist kein GitHub-
Actions-Runner für dieses Repo registriert. Der aktuell veröffentlichte Desktop-Build
(desktop-v1.12.17-clientscan Release) wurde manuell gebaut, nicht automatisiert. Details und
Fix-Plan: Issue #2.
3. Build-Fixes (historisch, Issue #12)
Zwei Bugs blockierten einen vollständigen docker build von Grund auf (mussten für den
Client-Scanning-Rebuild oben behoben werden): (1) mehrere Shell-Skripte waren mit Modus 644
statt 755 committet (nicht ausführbar); (2) der matrix-js-sdk#develop-Git-Ref-Pin in
pnpm-lock.yaml war veraltet (fehlte src/oidc/authorize.ts, das apps/web importiert).
Beide behoben.
Repo-Topologie (seit 2026-07-31)
Kanonisch ist git.lab/axion1337.chat/ThreadNet-Web (Homelab-GitLab, nur im Lab
auflösbar) — dort laufen Entwicklung und CI (.gitlab-ci.yml). Die Kopie auf
rohana.axion1337.de/sorb/ThreadNet-Web ist ein Push-Mirror (automatisch, GitLab →
Gitea) und dient als Lesekopie plus Standort für Issues, Container-Registry und Releases.
Niemals direkt nach rohana pushen — der Mirror überschreibt divergente Stände.