--- title: Element Customization description: Themes, Desktop-Apps, Admin published: true date: 2026-08-13T22:14:00.272Z 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. ## Fork-Basis & Änderungen (ThreadNet Web) Der Client **ThreadNet Web** ist ein Fork von **Element Web / Desktop `1.12.17`** (`element-hq/element-web`, Monorepo). **Unsere Änderungen** — autoritativ gepflegt in `ThreadNet-Web:docs/axion1337-fork.md`: - **Discord-Style Room-List** — Call-Teilnehmer direkt in der Raumliste. - **Client-seitiges ClamAV-Scanning** — Virenscan beim Senden **und** Empfangen, auch in verschlüsselten Räumen (Issue #19-Erweiterung). ⚠️ Bekannte Lücke: Electron/Desktop (Issue #2). - **Build-Fixes** (historisch, Issue #12). Für Upgrades relevant: das Delta umfasst laut Fork-Doc ~102 Dateien (12 kritische) — die **Art** des Eingriffs treibt die Merge-Reibung, nicht der Umfang. Porting-Ablauf → [Upgrades](/betrieb/upgrades).