Doku: Merge-Reibung gemessen (Arbeitspaket 3 aus #7)
Der wichtigste Befund ist die Grundlage, nicht die Liste: das Repo enthaelt KEINE Upstream-Historie. Element Web 1.12.17 kam am 2026-05-10 als kompletter Baum herein, im selben Commit wie das erste eigene Feature. Es gibt also keinen gemeinsamen Vorfahren mit element-hq/element-web - ein git merge ist nicht moeglich, ein Update heisst neu auftragen. Gemessen statt geschaetzt: 102 geaenderte Dateien, davon nur 12 Upstream-Quellcode. Fuenf davon Branding (flach, isolierbar), sieben ClamAV in der Medien-Pipeline - und genau dort baut Upstream gerade auf MVVM um. Das Update wird an ClamAV mehr kosten als am gesamten Branding. Refs axion1337.chat/ThreadNet-Web#7
This commit is contained in:
@@ -53,6 +53,73 @@ statt 755 committet (nicht ausführbar); (2) der `matrix-js-sdk#develop`-Git-Ref
|
||||
`pnpm-lock.yaml` war veraltet (fehlte `src/oidc/authorize.ts`, das `apps/web` importiert).
|
||||
Beide behoben.
|
||||
|
||||
## 4. Merge-Reibung: was ein Upstream-Update wirklich kostet
|
||||
|
||||
*Arbeitspaket 3 aus ThreadNet-Web#7. Gemessen am 2026-08-06, nicht geschätzt.*
|
||||
|
||||
### Die unangenehme Grundlage zuerst
|
||||
|
||||
**Dieses Repo enthält keine Upstream-Historie.** Element Web 1.12.17 wurde am
|
||||
2026-05-10 als kompletter Baum importiert — und zwar in `3da3635`, zusammen mit dem
|
||||
ersten eigenen Feature im selben Commit. Davor liegt nur ein `Initial commit` mit
|
||||
zwei Dateien.
|
||||
|
||||
Daraus folgt das Wesentliche: **es gibt keinen gemeinsamen Vorfahren mit
|
||||
`element-hq/element-web`.** Ein `git merge upstream/develop` ist nicht möglich; mit
|
||||
`--allow-unrelated-histories` erzwungen, kollidiert praktisch jede Datei. Wer „mal
|
||||
eben Upstream nachziehen" sagt, meint in diesem Repo also: neuen Upstream-Stand
|
||||
beschaffen und unsere Änderungen darauf neu auftragen.
|
||||
|
||||
Das ist der Grund, warum die Zahl unten überhaupt zählt — sie ist der Aufwand jedes
|
||||
Updates.
|
||||
|
||||
### Unser Delta: 102 Dateien, davon 12 kritische
|
||||
|
||||
`git diff --name-only 3da3635..main`:
|
||||
|
||||
| Menge | Bereich | Konfliktrisiko |
|
||||
|---|---|---|
|
||||
| 46 | CI/Build (`.github/`, `.gitlab-ci.yml`, `dockerbuild/`) | gering — eigene Strecke, Upstreams Workflows brauchen wir nicht |
|
||||
| 22 | Config, Lockfiles, Upstream-Varianten | mittel — `pnpm-lock.yaml` konfliktet immer, wird aber regeneriert |
|
||||
| 13 | Web-Assets (`apps/web/res/`) | gering — meist eigene Dateien |
|
||||
| 4 + 3 | eigene Icons und `apps/desktop/axion1337/` | **keins** — kein Upstream-Pendant |
|
||||
| **12** | **Upstream-Quellcode** | **hier entsteht die Arbeit** |
|
||||
|
||||
### Die 12 Dateien, und warum sie angefasst wurden
|
||||
|
||||
**Branding (5)** — flach, gut isolierbar:
|
||||
|
||||
- `apps/web/src/SdkConfig.ts` — Defaults für `brand`, `welcome_background_url`, `desktopBuilds`
|
||||
- `apps/web/src/vector/index.html` — `<title>`, Favicon-Link, PWA-Namen
|
||||
- `apps/web/src/async-components/structures/ErrorView.tsx` — Logo der Fehlerseite
|
||||
- `apps/web/src/components/views/settings/tabs/user/HelpUserSettingsTab.tsx` — Attribution + Danksagung
|
||||
- `apps/web/src/i18n/strings/en_EN.json` — einzelne Strings
|
||||
|
||||
**ClamAV-Client-Scanning (7)** — tief in der Medien-Pipeline:
|
||||
|
||||
- `apps/web/src/ContentMessages.ts`, `utils/ContentScanner.ts`, `utils/DecryptFile.ts`
|
||||
- `apps/web/src/components/views/messages/MImageBody.tsx`, `MAudioBody.tsx`
|
||||
- `apps/web/src/viewmodels/message-body/FileBodyViewModel.ts`, `VideoBodyViewModel.ts`
|
||||
|
||||
⚠️ **Die zweite Gruppe ist die teure.** Element baut die Medien-Anzeige gerade auf
|
||||
MVVM um (`docs/MVVM.md`, `docs/MVVM-v1.md`) — die beiden `viewmodels/`-Dateien
|
||||
existierten in älteren Ständen gar nicht. Genau dort, wo wir eingegriffen haben,
|
||||
bewegt sich Upstream also aktiv. Ein Update wird an ClamAV mehr Arbeit machen als am
|
||||
gesamten Branding zusammen.
|
||||
|
||||
### Was daraus für künftige Änderungen folgt
|
||||
|
||||
1. **Erst prüfen, ob es die Konfiguration schon kann.** Auth-Logo, `logo_link_url`
|
||||
und `brand` liefen ohne Rebuild über die ConfigMap; das Call-Widget wurde
|
||||
vollständig über `VITE_PRODUCT_NAME` umbenannt, ohne eine einzige Quelldatei.
|
||||
Jede so vermiedene Datei ist eine, die beim Update nicht kollidiert.
|
||||
2. **Eigene Datei schlagen geänderte Datei.** `apps/desktop/axion1337/` und eigene
|
||||
Assets kosten beim Merge nichts.
|
||||
3. **Wenn Upstream-Code sein muss: einen Kommentar mit `ThreadNet-Fork:` und der
|
||||
Begründung dazu.** Beim Neuauftragen auf einen neuen Stand ist die Frage nie
|
||||
„was steht hier", sondern „warum stand das da" — und die beantwortet sonst
|
||||
niemand mehr.
|
||||
|
||||
## Repo-Topologie (seit 2026-07-31)
|
||||
|
||||
**Kanonisch ist `git.lab/axion1337.chat/ThreadNet-Web`** (Homelab-GitLab, nur im Lab
|
||||
|
||||
Reference in New Issue
Block a user