From 270f9cd031699a9ba4baf139c9f799051cac5652 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 13 Aug 2026 18:04:30 +0000 Subject: [PATCH] docs: create betrieb/element-customization --- betrieb/element-customization.md | 158 +++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 betrieb/element-customization.md diff --git a/betrieb/element-customization.md b/betrieb/element-customization.md new file mode 100644 index 0000000..c1183da --- /dev/null +++ b/betrieb/element-customization.md @@ -0,0 +1,158 @@ +--- +title: Element Customization +description: Themes, Desktop-Apps, Admin +published: true +date: 2026-08-13T18:04:24.484Z +tags: +editor: markdown +dateCreated: 2026-08-13T18:04:24.484Z +--- + +**Status**: ✅ Vollständig deployed +**Domains**: `axion1337.chat` (Web), `/docs/setup` (Scripts) + +## 1. Custom Themes (17 Stück) + +| Theme | Art | Akzent | Grundton | +|---|---|---|---| +| aXion1337 Dark true | dunkel | `#ffaf0f` | `—` | +| Deep Purple | dunkel | `#6503b3` | `#181b21` | +| Discord Dark | dunkel | `#747ff4` | `#36393f` | +| Electric Blue | **hell** | `#3596fc` | `#ffffff` | +| Everforest dark hard | dunkel | `#a7c080` | `#2b3339` | +| aXion1337 Dark | dunkel | `#bd93f9` | `#282828` | +| aXion1337 Light | **hell** | `#8f3f71` | `#fbf1c7` | +| Ocean Depths | dunkel | `#2ec4b6` | `#12303f` | +| Sunset Boulevard | dunkel | `#ff6b6b` | `#452133` | +| Forest Canopy | dunkel | `#7fb069` | `#22372b` | +| Modern Minimalist | **hell** | `#3d5a80` | `#ffffff` | +| Golden Hour | dunkel | `#d4a017` | `#3f2f1f` | +| Arctic Frost | **hell** | `#3b9ec7` | `#ffffff` | +| Desert Rose | **hell** | `#c08497` | `#fdfaf9` | +| Tech Innovation | dunkel | `#00e5ff` | `#161d29` | +| Botanical Garden | **hell** | `#4c9a5d` | `#ffffff` | +| Midnight Galaxy | dunkel | `#b388ff` | `#1c1440` | + +**Konfiguration**: `apps/production/custom-configs/element-values.yaml` +(Schlüssel `setting_defaults.custom_themes` — JSON innerhalb der ConfigMap). + +**Anwendung (User)**: Settings → Appearance → Colour theme + +### Hinweise zur Pflege + +- **`aXion1337 Dark` ist Gruvbox Dark** — Grundtöne, Textfarben und die acht + `username-colors` sind die Gruvbox-Palette. **`aXion1337 Light` ist das exakte + helle Gegenstück** (Gruvbox Light): gleiche Rollenverteilung, gleiche + Akzentfamilie, nur die Helligkeitsachse gespiegelt. Wer eins ändert, sollte das + andere mitziehen. +- Die zehn Paletten von *Ocean Depths* bis *Midnight Galaxy* nutzen einen + einheitlichen Schlüsselsatz (24 Farben inkl. `username-colors`) und sind dadurch + untereinander vergleichbar; ältere Themes haben teils nur 3–16 Schlüssel und + erben den Rest vom Element-Default. +- ⚠️ **Beim Bearbeiten der ConfigMap niemals die YAML neu serialisieren.** Der + Themes-Block ist JSON innerhalb von YAML; ein Re-Dump zerstört Formatierung und + Kommentare (real passiert am 2026-07-30). Nur textuell ergänzen und danach beides + prüfen — YAML parsen **und** den JSON-Block parsen. +- Nach jeder Änderung muss die **ConfigMap-Prüfsumme** mitgezogen werden, sonst + rotiert der Pod nicht sauber (Fallstrick vom 2026-08-01). + +## 2. Desktop-Setup-Scripts + +| System | Datei | +|--------|-------| +| Windows | `element-setup-windows.cmd` (Doppelklick) | +| macOS | `element-setup-macos.command` (Doppelklick) | +| Linux | `element-setup-linux.sh` (bash) | + +**Was die Scripts tun**: +1. config.json erstellen mit `configUrl: "https://axion1337.chat/config.json"` +2. Element installieren (WinGet / Homebrew / apt/dnf/pacman) +3. Element starten (auto-config laden) + +**Download**: `https://axion1337.chat/docs/setup/` + +## 3. Element Admin-Panel + +**URL**: `https://admin.axion1337.chat` + +- User verwalten +- Room durchsuchen +- Server-Statistiken + +**Konfiguration**: `apps/production/element-server-suite.yaml` (ESS Chart) + +## 4. Element Call Fork (Video/Audio-Qualität) + +**Status**: ✅ Deployed (2026-07-28, Closes Issue #8) + +- Fork: `rohana.axion1337.de/sorb/threadnet-call` (basiert auf `emmick4/element-call:livekit`, + enthält den noch nicht gemergten Upstream-PR element-hq/element-call#3736 mit + config-driven `media_quality` — kein Custom-Code nötig) +- Defaults angehoben: Kamera bis **1440p/60fps** (~8 Mbps), Screen-Share **1440p/30fps** + (~6 Mbps). Das sind Startwerte, keine harten Limits — Nutzer können in Settings weiter + hochdrehen. +- **Incident (2026-07-28)**: Erster Versuch mit erzwungenem `video_codec: vp9` hat Calls + komplett kaputt gemacht (kein Bild/Ton). Sofort zurückgerollt. Vermutete Ursache: LiveKit + nutzt für vp9/av1 SVC statt klassischem Simulcast, der Fork-Code setzt aber immer + Simulcast-Layer — Code-Fix nötig, bevor vp9 erneut versucht wird (Backlog). +- **720p-Zwischen-Layer ergänzt** — ohne eigene `simulcast_layers`-Definition fiel die + Übertragung bei kleinsten Netzwerkschwankungen direkt von 1440p auf blockiges 360p. +- **H.264 statt VP8** (2026-07-28) — nutzt wie VP8 klassisches Simulcast (kein SVC-Risiko), + zusätzlich auf vielen Geräten (v.a. iOS/Safari) hardwarebeschleunigt. Live verifiziert: + 7 von 8 Video-Tracks über H.264, 1 sauberer Fallback auf VP8. Deployed als + `v0.2.3-elementcall-h264`. +- Rauschunterdrückung: clientseitige WebRTC-Standardtoggles (Echo/Noise/Gain), passend zu + LiveKits eigener Empfehlung für Mensch-zu-Mensch-Calls. Bewusst **kein** server-seitiges + ML-Noise-Cancellation (siehe `docs/TASKS.md` Backlog). +- Deployt als `rohana.axion1337.de/sorb/threadnet-web:v0.2.0-elementcall-mediaquality` — nur + der `/app/widgets/element-call/`-Ordner im bestehenden `v0.1.0`-Image ausgetauscht, da + `ThreadNet-Web` einen vorbestehenden Build-Bug hat (siehe unten). +- Config live prüfbar: `https://axion1337.chat/widgets/element-call/config.json` + +**Update 2026-07-28 (Issue #12) — Full-Rebuild-Blocker behoben**: Der oben beschriebene +Workaround (nur den `widgets/element-call/`-Ordner patchen) war nötig, weil `ThreadNet-Web` +komplett neu gebaut nicht funktionierte. Drei Bugs gefunden und gefixt: + +1. 7 Skripte nicht ausführbar committet (644 statt 755) - `docker-link-repos.sh`, + `docker-package.sh` + 5 weitere, betraf auch die eigenen GitHub-Actions-Workflows des Forks. +2. `matrix-js-sdk#develop`-Pin war auf einen veralteten Commit resolved (fehlte + `src/oidc/authorize.ts`). Der aktuelle develop-HEAD wäre noch schlimmer gewesen - dort + wurde der komplette `src/oidc/`-Ordner zu `src/oauth/` umbenannt, mit geänderter API + (`generateOidcAuthorizationUrl`/`completeAuthorizationCodeGrant`/`OidcError` existieren + so nicht mehr). Stattdessen auf `d19cb751` gepinnt - den letzten Commit vor diesem + Rename, verifiziert dass Datei+API exakt passen. +3. **Gefunden**: `package.json`/`webpack.config.ts` referenzierten noch upstream + `@element-hq/element-call-embedded` statt unseres eigenen Forks - ein Full-Rebuild hätte + bisher alle Fork-Anpassungen stillschweigend verworfen. Umgestellt auf + `@sorb/threadnet-call-embedded@0.19.2-threadnet.5`. + +Verifiziert mit einem echten, vollständigen `docker build` aus frischem Klon (kein Cache) - +erst bei 3.8GB Docker-RAM an OOM gescheitert, nach Erhöhung auf 7.75GB sauber durchgelaufen. +Gebautes Image enthält nachweislich unseren Fork (deutsche Übersetzung `Kameraqualität` im +Bundle gefunden). Produktivumgebung bleibt vorerst beim bestehenden Patch-Image - der +Full-Rebuild-Prozess ist jetzt nur *möglich*, nicht automatisch scharf geschaltet. + +**Update 2026-07-28 (später) — Video-Tab statt Developer-Mode**: Kamera-/Screen-Share- +Qualitätseinstellungen waren im Upstream-PR #3736 hinter einem "Developer Mode"-Schalter +versteckt - in den regulären "Video"-Settings-Tab verschoben, für alle Nutzer sichtbar. +Deutsche Übersetzungen ergänzt. Codec-Dropdown auf die tatsächlich von der SFU akzeptierten +Codecs beschränkt (VP8/H.264/H.265). + +**Update 2026-07-29 — VP9/AV1 live getestet, zurückgerollt (Issue #11)**: SFU-Codec-Freigabe ++ Dropdown-Wiederfreischaltung getestet. Trotz echter Auswahl auf Safari und Desktop-Firefox +(frischer Rejoin) fiel VP9 immer automatisch auf VP8 zurück. SFU-Logs zeigten: die eigene +Codec-Freigabe kam serverseitig nie in der aktiven `enabledPublishCodecs`-Liste an - Ursache +nicht abschließend geklärt (möglicher Zusammenhang: `sfu.additional` ersetzt die Chart-eigene +`config-overrides.yaml` statt sie zu ergänzen). Komplett zurückgerollt. Details: Issue #11. + +## Dateien + +| Datei | Ort | +|-------|-----| +| Custom Themes | `element-values.yaml` ConfigMap | +| Setup-Scripts | `element-web-docs-configmap.yaml` | +| Docs Server | `element-web-docs-server.yaml` (nginx) | +| Ingress | `apex-ingress.yaml` (`/docs/setup/` route) | + +--- +**Weitere Details**: Siehe Kapitel 4.