analysis: add deterministic inventory scripts and raw data

run_all.sh reproduces every file under analysis/data/ from zero: it
clones the in-scope components if missing, exports group issue metadata
from git.lab, and regenerates the inventories. Reruns are diff-clean --
no wall-clock time enters an output; 'days since' is measured against
the management repo's HEAD date.

The management repo is inventoried at main, not at the analysis branch,
so this analysis does not observe its own commits. inv_repo.py aborts
the run if anything outside analysis/ was modified.
This commit is contained in:
Thore Cimbal
2026-08-09 12:00:00 +00:00
parent f6a9b9f26b
commit b8b853163d
18 changed files with 21217 additions and 0 deletions
+814
View File
@@ -0,0 +1,814 @@
path line triggers in_code_block doc_last_commit_date doc_days_since_change claim_text
.gitlab/issue_templates/Deploy-Übergabe.md 14 component-ref no 2026-08-02 7 Beispiel: axion1337.chat/threadnet-operating @ main, b6007c5 -->
.gitlab/issue_templates/Deploy-Übergabe.md 67 status no 2026-08-02 7 Datensammlung und Zustellung getrennt scharf zu schalten ist fast immer
.gitlab/issue_templates/Deploy-Übergabe.md 75 status no 2026-08-02 7 ## Bewusst offen gelassen
CLAUDE.md 1 status;mirror-topology no 2026-08-09 0 # CLAUDE.md — übergreifende Arbeitskonventionen (kanonisch)
CLAUDE.md 4 component-ref no 2026-08-09 0 Gruppe (axion1337.chat-Stack, ThreadNet-Repos, CFGMON/threadnet-operating,
CLAUDE.md 6 component-ref no 2026-08-09 0 ESS-/Flux-Details in „ThreadNet Server Suite" = `axion1337.chat-gitops`) — bei
CLAUDE.md 10 component-ref;path-claim;mirror-topology no 2026-08-09 0 > Push-Mirror unter `https://rohana.axion1337.de/sorb/management` von überall
CLAUDE.md 11 status no 2026-08-09 0 > **lesbar** — dort diese Datei und die ADRs nachschlagen. Nur pushen ist tabu.
CLAUDE.md 18 date-claim no 2026-08-09 0 ## Projektrealitäten (Stand 2026-08-01)
CLAUDE.md 20 component-ref no 2026-08-09 0 **Das Lab ist die Quelle der Wahrheit** ([ADR-0002](decisions/0002-issues-und-management-ins-lab.md)):
CLAUDE.md 22 path-claim no 2026-08-09 0 - Kanonische Repos liegen auf `git.lab/axion1337.chat/*` (nur im Lab/VPN
CLAUDE.md 23 mirror-topology no 2026-08-09 0 auflösbar). Gitea/rohana wird per **Push-Mirror** beliefert und bleibt
CLAUDE.md 24 mirror-topology no 2026-08-09 0 Flux-Source, Container-/npm-Registry und Release-Download
CLAUDE.md 25 status;mirror-topology no 2026-08-09 0 ([ADR-0001](decisions/0001-gitlab-kanonisch-push-mirror.md)).
CLAUDE.md 27 mirror-topology no 2026-08-09 0 liegen die *Baupläne*, auf Gitea eine Kopie, die der Cluster **ohne verfügbares
CLAUDE.md 34 mirror-topology no 2026-08-09 0 - **Nie direkt zu Gitea pushen** (gespiegelte Repos) — der Mirror überschreibt
CLAUDE.md 36 count;mirror-topology no 2026-08-09 0 - **Gespiegelt wird nur die Gruppe `axion1337.chat`** (die fünf Produkt-Repos und
CLAUDE.md 37 component-ref no 2026-08-09 0 `management`). Die Gruppe **`homelab`** (`docs`, `wiki`, `wiki-bookstack`) hat
CLAUDE.md 43 path-claim;mirror-topology no 2026-08-09 0 `verfahren/aar/` (dieses Repo ist gespiegelt), nicht nur in die READMEs der
CLAUDE.md 45 count;mirror-topology no 2026-08-09 0 - Landet doch ein Commit auf Gitea (z. B. aus einer Host-Session ohne Lab-Route):
CLAUDE.md 48 mirror-topology no 2026-08-09 0 von Gitea ziehen, `git am` (erhält Autorschaft), Push über git.lab.
CLAUDE.md 49 status;mirror-topology no 2026-08-09 0 - **Issues leben auf git.lab.** Die alten Gitea-Issues sind geschlossen und
CLAUDE.md 51 mirror-topology;issue-ref no 2026-08-09 0 (Gitea zählte PRs mit; z. B. Gitea#48 → GitLab#46) — alte „gitops#N"-Verweise
CLAUDE.md 52 mirror-topology no 2026-08-09 0 meinen die Gitea-Nummer; verbindlich ist der Migrations-Fußtext im Issue.
CLAUDE.md 54 mirror-topology no 2026-08-09 0 TURN-Rotations-CronJob schreibt weiter nach Gitea, weil er im Cluster läuft und
CLAUDE.md 56 mirror-topology no 2026-08-09 0 **Die Rotation nicht von Hand nachziehen und den PR nie auf Gitea mergen** —
CLAUDE.md 57 status;date-claim no 2026-08-09 0 das erledigt seit 2026-08-02 der geplante CI-Job `canonize_rotation` im
CLAUDE.md 58 status no 2026-08-09 0 gitops-Repo täglich von git.lab aus. Scheitert er, bleibt die Pipeline rot;
CLAUDE.md 62 date-claim no 2026-08-09 0 Das gitops-Wiki liegt seit 2026-08-02 auf git.lab (*Wiki*-Reiter im Projekt);
CLAUDE.md 63 path-claim no 2026-08-09 0 ⚠️ der `wiki`-**Branch** im gitops-Repo ist ein überholter Mai-Abzug von `docs/`
CLAUDE.md 65 path-claim no 2026-08-09 0 **axionwiki.lab** ([`homelab/wiki`](https://git.lab/homelab/wiki), Docusaurus) —
CLAUDE.md 72 component-ref;count no 2026-08-09 0 - **Alles Offene ist ein Issue** — host-/infra-Scope hier im management-Projekt
CLAUDE.md 73 issue-ref no 2026-08-09 0 (`host:`-Labels, alte IDs wie `CFGMON-01` bleiben im Titel), Projekt-Scope im
CLAUDE.md 74 path-claim no 2026-08-09 0 jeweiligen Projekt. Kein neues Backlog-Markdown anlegen; `hosts/`/`shared/`
CLAUDE.md 90 path-claim no 2026-08-09 0 - **Der Titel trägt keine Priorität.** Präfixe wie `[HIGH]`/`[MEDIUM]`/`[LOW]`
CLAUDE.md 92 issue-ref no 2026-08-09 0 Alte Kennungen wie `CFGMON-01` bleiben, die benennen den Gegenstand, nicht die
CLAUDE.md 94 count;mirror-topology no 2026-08-09 0 ⚠️ Der Grund ist keine Ästhetik: Aus der Gitea-Migration trugen 34 Issues ein
CLAUDE.md 97 status no 2026-08-09 0 über dieselbe Sache sind schlimmer als eine unvollständige. Bereinigt 2026-08-06.
CLAUDE.md 101 count no 2026-08-09 0 einzahlt**. Ein Issue ohne Meilenstein taucht in keiner Roadmap-Ansicht auf und
CLAUDE.md 112 path-claim no 2026-08-09 0 `~/.config/gitlab-lab/token`) oder maskierte CI-Variablen.
CLAUDE.md 116 date-claim no 2026-08-09 0 ## Commit-Konventionen (seit 2026-08-07)
CLAUDE.md 136 count;date-claim no 2026-08-09 0 📎 Die Umstellung der Alt-Historie am 2026-08-07 hat 251 Commits neue SHAs
CLAUDE.md 138 path-claim no 2026-08-09 0 [`shared/commit-zuordnung-2026-08-07.md`](shared/commit-zuordnung-2026-08-07.md)
CLAUDE.md 146 mirror-topology no 2026-08-09 0 öffentlichen Gitea-Spiegel. Wer daraus wirklich keine Muster ableitbar haben
CLAUDE.md 151 status no 2026-08-09 0 - **Aussagen mit Quelle:** Verifiziert (Messung/Konsole) klar von Vermutung
CLAUDE.md 158 status no 2026-08-09 0 „fertig" heißt verifiziert.
README.md 1 component-ref no 2026-08-02 7 # management
README.md 8 date-claim no 2026-08-02 7 *(Bis 2026-08-01 hieß dieses Repo `Backlogs` und führte offene Punkte als
README.md 11 date-claim no 2026-08-02 7 ## Repo-Topologie (seit 2026-08-01)
README.md 13 component-ref;status;path-claim;mirror-topology no 2026-08-02 7 **Kanonisch lebt dieses Repo auf `git.lab`** (`axion1337.chat/management`, nur im
README.md 15 component-ref no 2026-08-02 7 [ADR-0002](decisions/0002-issues-und-management-ins-lab.md)).
README.md 16 component-ref;path-claim;mirror-topology no 2026-08-02 7 `rohana.axion1337.de/sorb/management` ist ein **Push-Mirror**: git.lab
README.md 17 mirror-topology no 2026-08-02 7 überschreibt ihn bei jedem Push per Force. Deshalb **nie direkt zu Gitea
README.md 18 mirror-topology no 2026-08-02 7 pushen** — solche Commits gehen beim nächsten Mirror-Lauf verloren (Rettung:
README.md 19 mirror-topology no 2026-08-02 7 `.patch` von Gitea ziehen + `git am`, siehe
README.md 22 date-claim no 2026-08-02 7 **Keine Ausnahmen mehr.** Die **Deploy-Übergabe-Issues** liefen bis 2026-08-02 auf
README.md 23 mirror-topology no 2026-08-02 7 dem Gitea-Tracker, weil Hosts außerhalb des Labs `git.lab` nicht erreichten. Mit dem
README.md 25 status no 2026-08-02 7 Grund entfallen — bei eingeschaltetem Tunnel erreicht CFGMON git.lab. Sie sind
README.md 26 status;mirror-topology;issue-ref no 2026-08-02 7 umgezogen (LABNET-03), der Gitea-Tracker ist leer, die Vorlage liegt als
README.md 33 path-claim no 2026-08-02 7 | [`CLAUDE.md`](CLAUDE.md) | **Kanonische Arbeitskonventionen für alle Agenten-Sessions** (Topologie, Framework, Secrets, Karpathy-Guidelines) |
README.md 34 path-claim no 2026-08-02 7 | `vision/` | Eine Vision je Linie: Community (axion1337.chat), Tool (ThreadNet), Plattform (Homelab) |
README.md 35 path-claim no 2026-08-02 7 | `roadmap.md` | Linien, Meilenstein-Kandidaten, Kadenz — GitLab-Milestones halten den Stand |
README.md 36 path-claim no 2026-08-02 7 | `decisions/` | ADRs — Pflicht bei Architekturentscheidungen **und dauerhaften Ausnahmen** |
README.md 37 path-claim no 2026-08-02 7 | `verfahren/` | Wie wir arbeiten: [Deploy-Übergabe/DoD](verfahren/deploy-uebergabe.md), [Refinement & Retro](verfahren/refinement.md), [AARs](verfahren/aar/), Werkzeuge |
README.md 38 path-claim no 2026-08-02 7 | `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — u. a. [Branding](shared/branding.md) (Marke, Paletten, wo welches Theme eingestellt ist); offene Punkte sind Issues |
README.md 43 path-claim no 2026-08-02 7 [`homelab/wiki`](https://git.lab/homelab/wiki)). **Geändert wird immer hier, nie dort.**
README.md 48 issue-ref no 2026-08-02 7 `host:`-Labels; die alten IDs wie `CFGMON-01` bleiben im Titel) bzw. in den
README.md 64 issue-ref no 2026-08-02 7 **IDs** (`CFGMON-01`, `ZONE-01`, …) werden **nie wiederverwendet**; sie leben in
README.md 72 status no 2026-08-02 7 **Erledigtes und Verworfenes** bleibt sichtbar: Issues werden geschlossen (nicht
README.md 78 component-ref no 2026-08-02 7 Konfiguration lebt in den Projekt-Repos (z. B. `threadnet-operating` für den
decisions/0001-gitlab-kanonisch-push-mirror.md 1 status;mirror-topology no 2026-08-01 8 # 0001 — git.lab ist kanonisch, Gitea wird per Push-Mirror beliefert
decisions/0001-gitlab-kanonisch-push-mirror.md 8 mirror-topology no 2026-08-01 8 3,7-GiB-Host) und Gitea Actions zeigte mehrere echte Bugs. Das Homelab-GitLab
decisions/0001-gitlab-kanonisch-push-mirror.md 14 path-claim;mirror-topology no 2026-08-01 8 `git.lab/axion1337.chat/*` ist die kanonische Heimat aller Repos; Gitea/rohana
decisions/0001-gitlab-kanonisch-push-mirror.md 15 mirror-topology no 2026-08-01 8 wird über Push-Mirrors beliefert und bleibt Flux-Source, Container-Registry,
decisions/0001-gitlab-kanonisch-push-mirror.md 16 mirror-topology no 2026-08-01 8 npm-Registry und Release-Download. **Direkte Pushes zu Gitea sind für gespiegelte
decisions/0001-gitlab-kanonisch-push-mirror.md 17 mirror-topology no 2026-08-01 8 Repos verboten** — der Mirror überschreibt divergenten Stand per Force.
decisions/0001-gitlab-kanonisch-push-mirror.md 22 mirror-topology no 2026-08-01 8 - Commits, die doch auf Gitea landen (z. B. Cluster-CronJobs ohne Lab-Route),
decisions/0001-gitlab-kanonisch-push-mirror.md 23 path-claim no 2026-08-01 8 brauchen das Kanonisierungs-Verfahren (`verfahren/deploy-uebergabe.md`):
decisions/0001-gitlab-kanonisch-push-mirror.md 24 status no 2026-08-01 8 `.patch` ziehen, `git am`, Push über git.lab. Zweimal live gebraucht.
decisions/0001-gitlab-kanonisch-push-mirror.md 29 issue-ref no 2026-08-01 8 - CFGMON-CI aufrüsten (Swap/Limits): strukturell zu klein, verworfen mit CFGMON-10.
decisions/0002-issues-und-management-ins-lab.md 1 component-ref no 2026-08-02 7 # 0002 — Issues und Management-Repo ziehen ins Lab („das Lab ist die Quelle der Wahrheit")
decisions/0002-issues-und-management-ins-lab.md 8 mirror-topology no 2026-08-02 7 weiter auf Gitea — zwei Wahrheiten, driftgefährdet. Erreichbarkeits-Blocker
decisions/0002-issues-und-management-ins-lab.md 9 date-claim;issue-ref no 2026-08-02 7 LABNET-01 (WireGuard-Roadwarrior) wurde am 2026-08-01 gelöst.
decisions/0002-issues-und-management-ins-lab.md 13 status;mirror-topology no 2026-08-02 7 Alle Projekt-Issues leben auf git.lab (62 migriert, Gitea-Issues geschlossen mit
decisions/0002-issues-und-management-ins-lab.md 14 component-ref;path-claim no 2026-08-02 7 Verweis); das Backlogs-Repo zieht als `axion1337.chat/management` ins Lab
decisions/0002-issues-und-management-ins-lab.md 15 component-ref;path-claim;mirror-topology no 2026-08-02 7 (Push-Mirror → `sorb/management` auf Gitea). Das Lab ist die Quelle der Wahrheit.
decisions/0002-issues-und-management-ins-lab.md 19 mirror-topology no 2026-08-02 7 - ⚠️ gitops-Issue-Nummern haben sich verschoben (Gitea zählte PRs mit); die
decisions/0002-issues-und-management-ins-lab.md 21 mirror-topology no 2026-08-02 7 - ~~**Befristete Ausnahme:** Deploy-Übergabe-Issues laufen auf dem Gitea-Tracker
decisions/0002-issues-und-management-ins-lab.md 22 component-ref;path-claim no 2026-08-02 7 von `sorb/management`, weil CFGMON git.lab (noch) nicht erreicht.~~
decisions/0002-issues-und-management-ins-lab.md 23 component-ref;date-claim;issue-ref no 2026-08-02 7 ✅ **Zurückgebaut am 2026-08-02** (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):
decisions/0002-issues-und-management-ins-lab.md 25 component-ref;issue-ref no 2026-08-02 7 sind nach git.lab gewandert ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
decisions/0002-issues-und-management-ins-lab.md 26 component-ref;mirror-topology;issue-ref no 2026-08-02 7 [#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
decisions/0002-issues-und-management-ins-lab.md 27 status;path-claim no 2026-08-02 7 leer, die Vorlage liegt als `.gitlab/issue_templates/`. **Damit gilt diese ADR
decisions/0002-issues-und-management-ins-lab.md 29 path-claim no 2026-08-02 7 Ausnahmen (siehe `README.md`) — dass sie befristet war und die Frist gehalten hat,
decisions/0002-issues-und-management-ins-lab.md 31 mirror-topology no 2026-08-02 7 - Releases bleiben auf Gitea (öffentlicher Download-Pfad), ebenso das gitops-Wiki.
decisions/0002-issues-und-management-ins-lab.md 35 mirror-topology no 2026-08-02 7 - Issues auf Gitea belassen: dauerhafte Doppelführung, Roadmap/Boards unmöglich.
decisions/0003-cve-meldeweg-aggregiert.md 8 path-claim;issue-ref no 2026-08-01 8 Nachrichten und musste stummgeschaltet werden (gitops#51, AAR in `verfahren/aar/`).
decisions/0003-cve-meldeweg-aggregiert.md 9 issue-ref no 2026-08-01 8 Gleichzeitig war entschieden (CFGMON-13), Release-/Security-Meldungen von
decisions/0004-site-to-site-vpn-hetzner-lab.md 3 component-ref;issue-ref no 2026-08-02 7 **Status:** akzeptiert (umgesetzt und abgenommen 2026-08-01, Testreihe 17 in [management#12](https://git.lab/axion1337.chat/management/-/issues/12)) · **Datum:** 2026-08-01 · **Entscheider:** sorb
decisions/0004-site-to-site-vpn-hetzner-lab.md 14 version;path-claim no 2026-08-02 7 Hetzner-Projektnetz `10.0.0.0/24` mit dem Lab-VLAN `10.58.73.0/24`. Der An/Aus-Schalter
decisions/0004-site-to-site-vpn-hetzner-lab.md 27 version no 2026-08-02 7 | **UDM** | zweiter WG-**Server** „Matrix", UDP **51841**, Tunnelnetz **10.58.75.0/24**, „Alternate Address for Clients" = `178.25.213.70` |
decisions/0004-site-to-site-vpn-hetzner-lab.md 28 version;path-claim no 2026-08-02 7 | **Client „Hetzner"** | `10.58.75.2`, **Networks Behind Client = `10.0.0.0/24`** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 29 status;version;path-claim no 2026-08-02 7 | **CFGMON** | WG-**Client/Initiator**, dauerhaft aktiv (`enable`) + `PersistentKeepalive 25`; AllowedIPs nur `10.58.73.0/24, 10.58.75.1/32`; Split-DNS nur `~lab` → `10.58.73.1`; `ip_forward` + iptables-ACCEPT in `DOCKER-USER` (ufw ist dort inaktiv), **kein NAT** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 30 version no 2026-08-02 7 | **Fritzbox** | Portfreigabe UDP **51841** → `192.168.178.20` |
decisions/0004-site-to-site-vpn-hetzner-lab.md 31 version;path-claim no 2026-08-02 7 | **Hetzner** | Netz-Range auf **`10.0.0.0/8`** erweitert, Route `10.58.73.0/24 → 10.0.0.3` — damit erreichen alle Server im Netz das Lab **ohne eigene Konfiguration** |
decisions/0004-site-to-site-vpn-hetzner-lab.md 32 version;path-claim no 2026-08-02 7 | **UniFi-Firewall** | Trennung vom Roadwarrior über **Quell-/Ziel-IP** (`10.58.75.0/24` + `10.0.0.0/24`), nicht über eine eigene Zone: erlaubt sind nur `10.58.73.17:443` (git.lab/Registry) und `10.58.73.1:53` (DNS); IoT und Arbeit sind für alle VPNs komplett gesperrt |
decisions/0004-site-to-site-vpn-hetzner-lab.md 36 component-ref;date-claim;issue-ref no 2026-08-02 7 - ✅ **Eingelöst am 2026-08-02 (LABNET-03, [#13](https://git.lab/axion1337.chat/management/-/issues/13)):**
decisions/0004-site-to-site-vpn-hetzner-lab.md 37 status no 2026-08-02 7 Übergabe-Issues können nicht nur umziehen — sie sind umgezogen
decisions/0004-site-to-site-vpn-hetzner-lab.md 38 component-ref;issue-ref no 2026-08-02 7 ([#25](https://git.lab/axion1337.chat/management/-/issues/25),
decisions/0004-site-to-site-vpn-hetzner-lab.md 39 component-ref;mirror-topology;issue-ref no 2026-08-02 7 [#26](https://git.lab/axion1337.chat/management/-/issues/26)), der Gitea-Tracker ist
decisions/0004-site-to-site-vpn-hetzner-lab.md 40 status no 2026-08-02 7 leer, die Vorlage liegt als GitLab-Issue-Template, und die Ausnahme aus ADR-0002 ist
decisions/0004-site-to-site-vpn-hetzner-lab.md 50 mirror-topology no 2026-08-02 7 Gitea-PR-Ausnahme bleibt bewusst bestehen.
decisions/0004-site-to-site-vpn-hetzner-lab.md 54 mirror-topology no 2026-08-02 7 Job läuft im Lab und erreicht Gitea öffentlich. Das war der eigentliche Grund für
decisions/0004-site-to-site-vpn-hetzner-lab.md 56 issue-ref no 2026-08-02 7 - game.axion1337.de profitiert erst nach Aufnahme in den vSwitch (GAME-01).
decisions/0005-pm-framework-kanban.md 1 component-ref no 2026-08-01 8 # 0005 — Projektmanagement: Kanban-Rückgrat mit leichten Scrum-Elementen
decisions/0005-pm-framework-kanban.md 22 path-claim no 2026-08-01 8 | Product Goal / Vision | `vision/` (eine Datei je Linie) |
decisions/0005-pm-framework-kanban.md 24 path-claim no 2026-08-01 8 | Review/Retro | AARs (`verfahren/aar/`) nach Deploys/Incidents |
decisions/0005-pm-framework-kanban.md 25 path-claim no 2026-08-01 8 | Definition of Done | Deploy-Übergabe-Verfahren (`verfahren/deploy-uebergabe.md`) |
decisions/0005-pm-framework-kanban.md 26 path-claim no 2026-08-01 8 | Roadmap/Meilensteine | Gruppen-Milestones + `roadmap.md` (CE: keine Epics/Roadmap-View) |
decisions/0005-pm-framework-kanban.md 27 path-claim no 2026-08-01 8 | Entscheidungen | ADRs in `decisions/` |
decisions/0005-pm-framework-kanban.md 32 component-ref;path-claim no 2026-08-01 8 - Das Backlogs-Repo wird zum Management-Repo `axion1337.chat/management`;
decisions/0005-pm-framework-kanban.md 33 path-claim no 2026-08-01 8 offene Punkte aus `hosts/`/`shared/` sind Issues mit `host:`-Labels,
decisions/0006-wikis-konsolidieren-docusaurus.md 9 date-claim;mirror-topology no 2026-08-02 7 1. **Gitea-Wiki-Repo** `…gitops.wiki.git` — 15 Seiten, gepflegt bis 2026-07-31.
decisions/0006-wikis-konsolidieren-docusaurus.md 10 mirror-topology no 2026-08-02 7 Vom Push-Mirror **nicht** erfasst: ein Wiki ist ein eigenes Repo, kein Branch.
decisions/0006-wikis-konsolidieren-docusaurus.md 11 date-claim;mirror-topology no 2026-08-02 7 2. **`wiki`-Branch im gitops-Repo** — Stand 2026-05-14, mitgezogen, weil der Mirror
decisions/0006-wikis-konsolidieren-docusaurus.md 12 path-claim no 2026-08-02 7 alle Branches trägt. Inhalt: ein damaliger Abzug von `docs/`, kein gepflegtes Wiki.
decisions/0006-wikis-konsolidieren-docusaurus.md 13 path-claim no 2026-08-02 7 3. **`docs/` im main-Branch** — die eigentliche, laufend gepflegte Repo-Doku.
decisions/0006-wikis-konsolidieren-docusaurus.md 15 status no 2026-08-02 7 Dazu waren die GitLab-Wikis aller Projekte **leer**, und die Wiki-Inhalte enthielten
decisions/0006-wikis-konsolidieren-docusaurus.md 17 mirror-topology no 2026-08-02 7 2026-08-01 entfernt; Issues „in Gitea", obwohl migriert).
decisions/0006-wikis-konsolidieren-docusaurus.md 23 status;mirror-topology no 2026-08-02 7 „direkt-zu-Gitea"-Ausnahme aus [ADR-0001](0001-gitlab-kanonisch-push-mirror.md).
decisions/0006-wikis-konsolidieren-docusaurus.md 26 path-claim no 2026-08-02 7 [`homelab/wiki`](https://git.lab/homelab/wiki) baut mit Docusaurus eine Seite unter
decisions/0006-wikis-konsolidieren-docusaurus.md 28 component-ref;path-claim no 2026-08-02 7 Homelab (`homelab/docs`), Arbeitsweise (`management`). Die Inhalte werden beim Bau
decisions/0006-wikis-konsolidieren-docusaurus.md 33 path-claim no 2026-08-02 7 - **Änderungen gehören ins Quell-Repo**, nie ins Wiki-Repo — was dort in `content/`
decisions/0006-wikis-konsolidieren-docusaurus.md 43 path-claim no 2026-08-02 7 `.md` wird als CommonMark statt MDX geparst.
decisions/0006-wikis-konsolidieren-docusaurus.md 44 status no 2026-08-02 7 - **Der `wiki`-Branch im gitops-Repo ist überholt.** Er bleibt vorerst als Historie
decisions/0006-wikis-konsolidieren-docusaurus.md 47 component-ref;issue-ref no 2026-08-02 7 ([Issue #19](https://git.lab/axion1337.chat/management/-/issues/19)).
decisions/0006-wikis-konsolidieren-docusaurus.md 51 count no 2026-08-02 7 - **Alles in ein Repo verschmelzen:** Die Quellen haben unterschiedliche Leser und
decisions/0006-wikis-konsolidieren-docusaurus.md 53 mirror-topology no 2026-08-02 7 - **Wiki auf Gitea belassen:** widerspricht ADR-0002 und hielt eine Ausnahme am
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3 component-ref;status;issue-ref no 2026-08-02 7 **Status:** vorgeschlagen (Entscheidung offen → [Issue #20](https://git.lab/axion1337.chat/management/-/issues/20)) · **Datum:** 2026-08-02 · **Entscheider:** sorb
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 8 date-claim no 2026-08-02 7 Docusaurus als Lesefläche gebaut — läuft seit 2026-08-02 unter `axionwiki.lab`.
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 42 component-ref no 2026-08-02 7 Wahrheit neben git.lab — genau das, was [ADR-0002](0002-issues-und-management-ins-lab.md)
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 52 issue-ref no 2026-08-02 7 Datenbank ohne Sicherung ist eine Zeitbombe (vgl. CFGMON-09, wo genau das seit
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 53 status no 2026-08-02 7 2026-07-30 offen ist).
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 54 path-claim no 2026-08-02 7 - **Ein Einweg-Import zum Befüllen, aber keine Synchronisation** (`import/` im
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 56 path-claim no 2026-08-02 7 vergleichen, deshalb legt `provision.py` dieselben drei Bereiche an wie das
decisions/0008-agenten-sessions-root-aequivalent.md 3 component-ref;issue-ref no 2026-08-06 3 **Status:** akzeptiert · **Datum:** 2026-08-06 (Struktur-Workshop [#17](https://git.lab/axion1337.chat/management/-/issues/17)) · **Entscheider:** sorb
decisions/0008-agenten-sessions-root-aequivalent.md 9 issue-ref no 2026-08-06 3 LABNET-02-Nacht lief deshalb über die **docker-Gruppenmitgliedschaft** des Kontos
decisions/0008-agenten-sessions-root-aequivalent.md 24 component-ref;issue-ref no 2026-08-06 3 [#14](https://git.lab/axion1337.chat/management/-/issues/14).
decisions/0008-agenten-sessions-root-aequivalent.md 46 issue-ref no 2026-08-06 3 ohne diese Entscheidung wäre LABNET-02 gar nicht durchführbar gewesen.
decisions/0008-agenten-sessions-root-aequivalent.md 50 count no 2026-08-06 3 AAR-Pflicht und „alles Offene wird ein Issue" auf diesem Host besonders zählen —
decisions/0008-agenten-sessions-root-aequivalent.md 55 status no 2026-08-06 3 Kommt einer dazu, wird diese ADR abgelöst.
decisions/0008-agenten-sessions-root-aequivalent.md 57 status no 2026-08-06 3 ## Offen, bewusst nicht vor der Entscheidung geklärt
decisions/0008-agenten-sessions-root-aequivalent.md 66 issue-ref no 2026-08-06 3 nächsten Host-Session, festgehalten in #14.
decisions/0008-agenten-sessions-root-aequivalent.md 80 path-claim no 2026-08-06 3 und nicht bloß ein Absatz in `hosts/cfgmon.md`.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 5 date-claim no 2026-08-09 0 > Nachgetragen am 2026-08-09 in der [Retro](../verfahren/retro/2026-08-09.md). Die
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 13 mirror-topology no 2026-08-09 0 öffentlichem Gitea-Spiegel heißt das: Jeder, der die Repos liest, kann ablesen, an
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 23 date-claim no 2026-08-09 0 **Regel ab 2026-08-07**, gültig für alle Repos der Gruppe `axion1337.chat` und die
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 29 count;date-claim no 2026-08-09 0 **Rückwirkend angewandt am 2026-08-09** auf **251 Commits** — alles aus dieser
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 34 date-claim no 2026-08-09 0 | gitops | 117 von 264 | ab 2026-07-27 |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 35 component-ref no 2026-08-09 0 | management | 78 von 78 | vollständig |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 36 component-ref;date-claim no 2026-08-09 0 | ThreadNet-Web | 47 von 50 | ab 2026-07-28 |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 37 component-ref no 2026-08-09 0 | threadnet-call | 9 von 9 | vollständig |
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 39 status no 2026-08-09 0 Dabei wurden 17 Tags mit umgezogen und die Autoren-Identitäten vereinheitlicht —
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 54 path-claim no 2026-08-09 0 [`shared/commit-zuordnung-2026-08-07.md`](../shared/commit-zuordnung-2026-08-07.md).
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 61 status no 2026-08-09 0 wieder aktiv.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 66 mirror-topology no 2026-08-09 0 liegen im selben GitLab und teilweise auf dem öffentlichen Spiegel — und sind
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 72 component-ref no 2026-08-09 0 Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 74 version no 2026-08-09 0 `v0.4.0` aus altem Quellcode gegen heutige Basis-Images neu gebaut und
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 77 component-ref;status;issue-ref no 2026-08-09 0 ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
decisions/0009-commit-konventionen-und-historien-anonymisierung.md 86 count no 2026-08-09 0 angefasst (`Scrublord@Mac.Bad`, 135 Commits aus der Zeit vor dieser
decisions/README.md 6 status no 2026-08-01 8 auf `abgelöst durch NNNN` gesetzt.
decisions/README.md 13 mirror-topology no 2026-08-01 8 git.lab-Cutover 2026-08-01: die „Übergabe-Issues bleiben auf Gitea"-Ausnahme
decisions/template.md 3 status no 2026-08-01 8 **Status:** vorgeschlagen | akzeptiert | abgelöst durch NNNN · **Datum:** JJJJ-MM-TT · **Entscheider:** sorb
hosts/cfgmon.md 3 mirror-topology no 2026-08-09 0 Monitoring-Stack, Gitea und der Reverse Proxy für alles Öffentliche.
hosts/cfgmon.md 8 version no 2026-08-09 0 | **OS** | Ubuntu 24.04.4 LTS |
hosts/cfgmon.md 9 version no 2026-08-09 0 | **IPv4** | `188.245.193.243` |
hosts/cfgmon.md 11 version no 2026-08-09 0 | **Privat** | `10.0.0.3` (`enp7s0`, Hetzner-Netz — dort liegt auch k3s auf `10.0.0.2`) |
hosts/cfgmon.md 12 mirror-topology no 2026-08-09 0 | **DNS** | `rohana.axion1337.de` → Gitea, `selendis.axion1337.de` → Grafana |
hosts/cfgmon.md 19 component-ref;version;path-claim no 2026-08-09 0 | prometheus | `prom/prometheus:v3.3.1` | `monitoring` | `sorb/threadnet-operating`, `monitoring/` |
hosts/cfgmon.md 20 version;path-claim no 2026-08-09 0 | loki | `grafana/loki:3.7.1` | `monitoring` | dito |
hosts/cfgmon.md 21 version;path-claim no 2026-08-09 0 | grafana | `grafana/grafana:12.0.0` | `monitoring` | dito |
hosts/cfgmon.md 22 version;path-claim no 2026-08-09 0 | alloy | `grafana/alloy:v1.16.0` | `monitoring` | dito |
hosts/cfgmon.md 23 version;path-claim no 2026-08-09 0 | node-exporter | `prom/node-exporter:v1.9.1` | `monitoring` | dito |
hosts/cfgmon.md 24 component-ref;status;version;path-claim;date-claim;mirror-topology;issue-ref no 2026-08-09 0 | traefik | `traefik:v3.7.9` | `thread-net-git` | `sorb/thread-net-git`, seit 2026-07-30 in `main` (siehe [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30)) |
hosts/cfgmon.md 25 component-ref;version;path-claim;mirror-topology no 2026-08-09 0 | gitea | `gitea/gitea:1.27.0` | `thread-net-git` | dito, gepinnt (war `:latest`) |
hosts/cfgmon.md 26 component-ref;version;path-claim no 2026-08-09 0 | cadvisor | `gcr.io/cadvisor/cadvisor:v0.49.1` | `thread-net-git` | dito, gepinnt (war `:latest`) |
hosts/cfgmon.md 27 component-ref;version;path-claim;mirror-topology;issue-ref no 2026-08-09 0 | runner | `gitea/act_runner:0.6.1` | `thread-net-git` | dito, Container `gitea-runner`, siehe CFGMON-02 |
hosts/cfgmon.md 28 version;path-claim no 2026-08-09 0 | portainer_agent | `portainer/agent:2.27.5` | — | standalone, kein Compose |
hosts/cfgmon.md 32 component-ref;version no 2026-08-09 0 (`10.0.0.2:9100`), `pterodactyl_host_node` und `gameserver_cadvisor`
hosts/cfgmon.md 33 version no 2026-08-09 0 (beide `157.90.155.206`, siehe [game](game.md)).
hosts/cfgmon.md 38 component-ref no 2026-08-09 0 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/cfgmon.md 41 component-ref;date-claim;issue-ref no 2026-08-09 0 - [CFGMON-01 — Zertifikatserneuerung braucht offene Ports (zeitkritisch ab 2026-09-28)](https://git.lab/axion1337.chat/management/-/issues/7)
hosts/cfgmon.md 42 component-ref;issue-ref no 2026-08-09 0 - [CFGMON-03 — Prometheus-Remote-Write/Loki öffentlich ohne Auth (Weg A, nachgelagerte Prüfung)](https://git.lab/axion1337.chat/management/-/issues/8)
hosts/cfgmon.md 43 component-ref;issue-ref no 2026-08-09 0 - [CFGMON-04 — Grafana-Admin-Credentials aus `.env` gelten nicht für die API](https://git.lab/axion1337.chat/management/-/issues/9)
hosts/cfgmon.md 44 component-ref;mirror-topology;issue-ref no 2026-08-09 0 - [CFGMON-09 — Gitea-Backups off-host (⚠️ Backup-Cron deaktiviert)](https://git.lab/axion1337.chat/management/-/issues/10)
hosts/cfgmon.md 46 mirror-topology;issue-ref no 2026-08-09 0 ## CFGMON-11 — Gitea-CI-Rückbau nach GitLab-Umzug
hosts/cfgmon.md 48 status no 2026-08-09 0 **Status:** erledigt (2026-07-31 spätabends) — bis auf einen kosmetischen Handgriff:
hosts/cfgmon.md 49 component-ref;path-claim no 2026-08-09 0 auf CFGMON `cd /opt/thread-net-git && git checkout main && git pull` (Checkout parkt
hosts/cfgmon.md 52 component-ref;path-claim no 2026-08-09 0 **Dazu neu (2026-08-01 ~05:00):** Auch `/opt/threadnet-operating` braucht einmal
hosts/cfgmon.md 53 path-claim no 2026-08-09 0 `git fetch && git reset --hard origin/main` — der State-Persistenz-Commit wurde
hosts/cfgmon.md 54 mirror-topology no 2026-08-09 0 dort direkt nach Gitea gepusht (dfe04c4a), vom Mirror überschrieben, vom Mac aus
hosts/cfgmon.md 55 status;mirror-topology no 2026-08-09 0 per Patch gerettet und kanonisch als `6ffab68` neu aufgelegt (inhaltsgleich,
hosts/cfgmon.md 58 status no 2026-08-09 0 **Erledigt (2026-08-01, autonom):**
hosts/cfgmon.md 59 component-ref no 2026-08-09 0 - Actions-Toggles deaktiviert: `ThreadNet-Web`, `threadnet-call`, `axion1337.chat-gitops`
hosts/cfgmon.md 60 component-ref;path-claim no 2026-08-09 0 - `ThreadNet-Web`: alle `.github/workflows/`-Dateien entfernt (Commit `a876758`)
hosts/cfgmon.md 61 path-claim;mirror-topology no 2026-08-09 0 - gitops: Verifikations-Job nach GitLab portiert + `.gitea/workflows/` entfernt
hosts/cfgmon.md 62 status;path-claim;mirror-topology no 2026-08-09 0 (Commit `5e46a24`, Pipeline grün, Mirror→Gitea verifiziert; `milestone-release.yml`
hosts/cfgmon.md 63 issue-ref no 2026-08-09 0 war toter Code, siehe #33). Flux unberührt.
hosts/cfgmon.md 64 component-ref;path-claim no 2026-08-09 0 - `thread-net-git`: Runner-Service/Config/`.env.example` per Commit `d904734` entfernt
hosts/cfgmon.md 65 mirror-topology no 2026-08-09 0 (auf git.lab; Mirror trägt nach Gitea) — **noch nicht deployt**, siehe unten.
hosts/cfgmon.md 66 component-ref;path-claim no 2026-08-09 0 - Registry-Entscheidung npm final (Evidenz: `@sorb/threadnet-call-embedded` ist
hosts/cfgmon.md 67 path-claim;mirror-topology no 2026-08-09 0 pnpm-Dependency von `apps/web`, Lockfile pinnt Tarball-URL auf rohana): **bleibt Gitea**.
hosts/cfgmon.md 70 component-ref;status no 2026-08-09 0 1. ~~`thread-net-git`-Stand deployen~~ **erledigt (2026-07-31 spätabends, via
hosts/cfgmon.md 71 path-claim no 2026-08-09 0 CFGMON-Session)**: Runner-Container/Netz/`runner-data/`/`.env`-Zeile entfernt,
hosts/cfgmon.md 72 mirror-topology no 2026-08-09 0 `builder-1` aus der Gitea-Admin-UI gelöscht, Actions-Registrierungstoken rotiert.
hosts/cfgmon.md 75 component-ref;status;mirror-topology;issue-ref no 2026-08-09 0 Mac→git.lab→Mirror (`15c8f2d`), Hergang in thread-net-git#1 (geschlossen).
hosts/cfgmon.md 77 mirror-topology no 2026-08-09 0 getippte Token (`a89bfb…`) war der Gitea-**Actions-Runner-Registrierungstoken**
hosts/cfgmon.md 82 status no 2026-08-09 0 3. ~~Token-Rotation b~~ **erledigt (2026-07-31 abends)**: Generalschlüssel
hosts/cfgmon.md 87 path-claim;mirror-topology no 2026-08-09 0 `~/.config/gitea-rohana/token` auf dem Mac), `claude-push` (write:repository,
hosts/cfgmon.md 88 version;path-claim;mirror-topology no 2026-08-09 0 `~/.config/gitea-rohana/push-token`). Erster CI-Publish `0.19.2-threadnet.6`
hosts/cfgmon.md 89 component-ref;status;issue-ref no 2026-08-09 0 verifiziert → threadnet-call#1 geschlossen. Alle Klartext-Reste entfernt
hosts/cfgmon.md 94 path-claim no 2026-08-09 0 (`git.lab/axion1337.chat`, Gruppe mit importierten Projekten angelegt; die Domain ist
hosts/cfgmon.md 97 date-claim;mirror-topology no 2026-08-09 0 pausieren). Der am 2026-07-30 auf Gitea-Seite aufgebaute CI-Unterbau wird damit teilweise
hosts/cfgmon.md 102 component-ref;date-claim no 2026-08-09 0 - **Actions-Toggle** `has_actions` bei `ThreadNet-Web` (am 2026-07-30 per API aktiviert)
hosts/cfgmon.md 103 component-ref no 2026-08-09 0 wieder deaktivieren, ebenso bei `threadnet-call` (stoppt die fehlschlagende
hosts/cfgmon.md 105 component-ref;path-claim no 2026-08-09 0 - **`.github/workflows/` in `ThreadNet-Web`** (der kuratierte 6-Dateien-Satz) — wird durch
hosts/cfgmon.md 106 path-claim no 2026-08-09 0 `.gitlab-ci.yml` ersetzt. Die Erkenntnisse aus den Läufen vom 2026-07-30 mitnehmen:
hosts/cfgmon.md 110 component-ref no 2026-08-09 0 - **Geerbte Upstream-Workflows in `threadnet-call`** (build/publish/test/translations/
hosts/cfgmon.md 113 path-claim;mirror-topology no 2026-08-09 0 der Gitea-Admin-UI deregistrieren und `runner-data/.runner` auf dem Host entfernen.
hosts/cfgmon.md 114 component-ref;path-claim no 2026-08-09 0 - **Token: npm-Token in `threadnet-call`s untracked `embedded/web/.npmrc`** (Klartext im
hosts/cfgmon.md 121 component-ref no 2026-08-09 0 - **Runner-Service in `thread-net-git` ganz entfernen?** Hängt daran, ob das gitops-Repo
hosts/cfgmon.md 122 path-claim no 2026-08-09 0 seinen leichten `deploy-on-push.yml` (YAML-Validierung/Notification, läuft sauber)
hosts/cfgmon.md 124 component-ref;path-claim no 2026-08-09 0 Revert-Commit in `thread-net-git`: Compose-Service `runner`, `runner/config.yaml`,
hosts/cfgmon.md 125 path-claim no 2026-08-09 0 `.env.example` (RUNNER_TOKEN), Cache-Port-Bindung 8088, `runner-data/`.
hosts/cfgmon.md 126 component-ref;path-claim;mirror-topology no 2026-08-09 0 - **Registry-Ziel für `@sorb/threadnet-call-embedded`**: bleibt die Gitea-npm-Registry
hosts/cfgmon.md 128 status;mirror-topology no 2026-08-09 0 GitLab-Package-Registry (dann läuft die Gitea-Package-Seite leer).
hosts/cfgmon.md 129 mirror-topology no 2026-08-09 0 - **Container-Images bleiben in der rohana-Registry** (Flux/k8s pullt von dort — spricht
hosts/cfgmon.md 131 mirror-topology no 2026-08-09 0 **neuen** Deploy-/Push-Token für die rohana-Registry (Neuanlage, kein Rückbau).
hosts/cfgmon.md 135 mirror-topology no 2026-08-09 0 Gitea selbst, gitops-Repo als Flux-Source, Issues/Wiki/dieses Repo, der
hosts/cfgmon.md 136 mirror-topology;issue-ref no 2026-08-09 0 API-Token für Issue-Verwaltung, das Gitea-Backup-Script (CFGMON-09).
hosts/cfgmon.md 139 component-ref;status no 2026-08-09 0 umgezogen — [ADR-0002](../decisions/0002-issues-und-management-ins-lab.md) —,
hosts/cfgmon.md 140 component-ref no 2026-08-09 0 das Repo dabei von `Backlogs` zu `management` umgewidmet
hosts/cfgmon.md 142 mirror-topology no 2026-08-09 0 den damaligen Rückbau der Gitea-CI, nicht auf Dauer.)*
hosts/cfgmon.md 145 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [ThreadNet-Web#2](https://rohana.axion1337.de/sorb/ThreadNet-Web/issues/2),
hosts/cfgmon.md 146 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
hosts/cfgmon.md 148 status no 2026-08-09 0 **Nächster Schritt:** die drei manuellen Schritte oben, dann → erledigt.
hosts/cfgmon.md 150 issue-ref no 2026-08-09 0 ## CFGMON-13 — Absender-Design für Release-/CVE-Meldungen: eigener Bot?
hosts/cfgmon.md 154 component-ref;mirror-topology;issue-ref no 2026-08-09 0 Alertmanager-Routing: [gitops#47](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/47).
hosts/cfgmon.md 160 issue-ref no 2026-08-09 0 1. **release-watch** (gitops#22, deploybereit): Upstream-Releases/Security-Releases
hosts/cfgmon.md 162 issue-ref no 2026-08-09 0 2. **Trivy-CVE-Scans** (gitops#31, läuft wöchentlich in der Lab-CI): Funde landen
hosts/cfgmon.md 168 status no 2026-08-09 0 scharf/stumm schaltbar bleibt? Oder bewusst alles über `@alerts` bündeln?
hosts/cfgmon.md 174 mirror-topology;issue-ref no 2026-08-09 0 ## CFGMON-12 — Gitea-Projektmetadaten nach GitLab umziehen/integrieren
hosts/cfgmon.md 176 component-ref;status;mirror-topology;issue-ref no 2026-08-09 0 **Status:** abgelöst durch [gitops#48](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/48) (2026-08-01, sorb: HOHE Priorität — vollständige Issue-Migration + zentrale Gruppen-Roadmap; Plan-Skizze und die offene Erreichbarkeits-Entscheidung git.lab-only vs. extern stehen dort)
hosts/cfgmon.md 178 count;date-claim no 2026-08-09 0 ✅ **Umgesetzt am 2026-08-01/02**: Die Migration ist durch — 62 Issues liegen auf
hosts/cfgmon.md 179 status;mirror-topology no 2026-08-09 0 git.lab, die Gitea-Issues sind geschlossen und tragen einen Migrations-Fußtext.
hosts/cfgmon.md 181 mirror-topology no 2026-08-09 0 die Aufzählung „Noch auf Gitea" gilt nicht mehr. Die zunächst verbliebene Ausnahme
hosts/cfgmon.md 182 date-claim;issue-ref no 2026-08-09 0 für Deploy-Übergabe-Issues ist am 2026-08-02 mit LABNET-03 ebenfalls zurückgebaut.
hosts/cfgmon.md 187 status;mirror-topology no 2026-08-09 0 Projektmetadaten liegen weiterhin auf Gitea/rohana. Verifiziert per API am
hosts/cfgmon.md 190 mirror-topology no 2026-08-09 0 Noch auf Gitea:
hosts/cfgmon.md 192 component-ref;issue-ref no 2026-08-09 0 - **Issues** inkl. Kommentare/Labels: ThreadNet-Web (#2, #5, …), threadnet-call (#1),
hosts/cfgmon.md 193 issue-ref no 2026-08-09 0 gitops (#24, #25, #32, …)
hosts/cfgmon.md 195 path-claim;mirror-topology no 2026-08-09 0 - **Wiki** (gitops-Wiki mit `00-TASKS.md`-Log — bisher bewusst direkt-Gitea)
hosts/cfgmon.md 197 mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug) auf rohana — bei
hosts/cfgmon.md 202 mirror-topology no 2026-08-09 0 1. **GitLab-Gitea-Importer vs. API-Skript** — der Importer verliert Autorenschaft
hosts/cfgmon.md 205 mirror-topology no 2026-08-09 0 2. **Erreichbarkeit**: rohana ist von überall erreichbar, git.lab nur im Homelab —
hosts/cfgmon.md 208 mirror-topology no 2026-08-09 0 direkt-Gitea).
hosts/cfgmon.md 213 mirror-topology no 2026-08-09 0 auf Gitea" als geltende Regel.
hosts/cfgmon.md 219 component-ref;issue-ref no 2026-08-09 0 ### CFGMON-10 — threadnet-call-CI schlägt am Artifact-Schritt fehl · verworfen 2026-07-30
hosts/cfgmon.md 221 component-ref;date-claim no 2026-08-09 0 Ausgelöst durch einen Push nach `threadnet-call` am 2026-07-30: der Runner (`builder-1`)
hosts/cfgmon.md 226 component-ref no 2026-08-09 0 **Hypothese inzwischen im Kern bestätigt** — beim parallelen ThreadNet-Web-CI-Versuch
hosts/cfgmon.md 229 mirror-topology no 2026-08-09 0 ohne Swap, trägt daneben Gitea/Traefik/Monitoring) kann das strukturell nicht liefern.
hosts/cfgmon.md 233 mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug)), CFGMON bleibt bei leichten
hosts/cfgmon.md 234 component-ref;mirror-topology;issue-ref no 2026-08-09 0 Jobs. Issue-Seite: [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1).
hosts/cfgmon.md 236 status;mirror-topology;issue-ref no 2026-08-09 0 ### CFGMON-02 — Traefik, Gitea, cAdvisor und Runner unter IaC gebracht · erledigt 2026-07-30
hosts/cfgmon.md 238 component-ref;path-claim no 2026-08-09 0 Liefen ursprünglich im Compose-Projekt `thread-net-git` aus `/data/compose/8`, einem von
hosts/cfgmon.md 239 component-ref;path-claim no 2026-08-09 0 Portainer verwalteten Stack ohne Repo dazu. Jetzt in `sorb/thread-net-git`: `:latest`-Tags
hosts/cfgmon.md 240 component-ref;version;mirror-topology no 2026-08-09 0 gepinnt (Gitea `1.27.0`, cAdvisor `v0.49.1`), Projektname `thread-net-git` beibehalten
hosts/cfgmon.md 242 mirror-topology no 2026-08-09 0 Volume-Namen, Downgrade-Verbot für Gitea), nächtliches Backup-Script. Zusätzlich neu: ein
hosts/cfgmon.md 243 version;path-claim;mirror-topology no 2026-08-09 0 `runner`-Service (`gitea/act_runner:0.6.1`, Container `gitea-runner`, Labels
hosts/cfgmon.md 244 path-claim no 2026-08-09 0 `ubuntu-latest`/`linux-build`/`win-wine` — die letzten beiden gezielt für Electron-Builds)
hosts/cfgmon.md 245 issue-ref no 2026-08-09 0 — ursprünglich unter [CFGMON-08](#cfgmon-08) als offene Frage gelistet, siehe dort.
hosts/cfgmon.md 247 status;path-claim no 2026-08-09 0 Entstanden auf Branch `rework/stack`, zunächst nicht gemergt (produktiv aber schon aktiv).
hosts/cfgmon.md 248 path-claim no 2026-08-09 0 **2026-07-30 nach `main` gemergt** (`origin/main` == `origin/rework/stack` auf `02b3224`,
hosts/cfgmon.md 249 status no 2026-08-09 0 verifiziert) — damit spiegelt die Standardansicht des Repos jetzt den Live-Stand.
hosts/cfgmon.md 250 status;date-claim no 2026-08-09 0 Verifiziert am 2026-07-30 über die Compose-Labels der laufenden Container
hosts/cfgmon.md 251 component-ref;path-claim;mirror-topology no 2026-08-09 0 (`working_dir: /opt/thread-net-git`) und `docker compose ls`. `gitea-data` ist als
hosts/cfgmon.md 255 mirror-topology no 2026-08-09 0 Zum Bootstrapping-Problem (Definition von Gitea liegt in Gitea): mitigiert,
hosts/cfgmon.md 256 mirror-topology no 2026-08-09 0 weil das Deploy-Verzeichnis selbst der Checkout ist — fällt Gitea aus, liegt
hosts/cfgmon.md 259 mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-09](#cfgmon-09--gitea-backups-off-host-in-die-storage-box-eigenes-borg-repo).
hosts/cfgmon.md 261 status;issue-ref no 2026-08-09 0 ### CFGMON-05 — Monitoring-Stack unter IaC bringen · erledigt 2026-07-30
hosts/cfgmon.md 263 path-claim no 2026-08-09 0 Der Stack lief aus `/opt/monitoring` ohne Versionierung und mit `:latest`-Tags. Jetzt
hosts/cfgmon.md 264 component-ref;path-claim no 2026-08-09 0 in `sorb/threadnet-operating` unter `monitoring/`, Images gepinnt,
hosts/cfgmon.md 268 status;issue-ref no 2026-08-09 0 ### CFGMON-06 — Grafana-Certresolver zeigte ins Leere · erledigt 2026-07-30
hosts/cfgmon.md 273 path-claim no 2026-08-09 0 aus. Aus dem Altbestand in `/opt/monitoring` unverändert übernommen und dort
hosts/cfgmon.md 276 component-ref no 2026-08-09 0 Behoben in `threadnet-operating`, Commit `a400f8a`. Cert von Let's Encrypt (YR2)
hosts/cfgmon.md 277 date-claim no 2026-08-09 0 ausgestellt, gültig bis 2026-10-28 — die Nachfolge davon ist
hosts/cfgmon.md 278 issue-ref no 2026-08-09 0 [CFGMON-01](#cfgmon-01--zertifikatserneuerung-braucht-offene-ports-ipv4-und-ipv6).
hosts/cfgmon.md 280 status;issue-ref no 2026-08-09 0 ### CFGMON-07 — Alloy verlor seine Positions-Datei bei jedem Deploy · erledigt 2026-07-30
hosts/cfgmon.md 282 path-claim no 2026-08-09 0 `--storage.path=/var/lib/alloy/data` war gesetzt, aber ohne Volume: die
hosts/cfgmon.md 288 status no 2026-08-09 0 Behoben durch ein `alloy_data`-Volume, Commit `edac97e`. Verifiziert: Positions
hosts/cfgmon.md 291 status;mirror-topology;issue-ref no 2026-08-09 0 ### CFGMON-08 — Kein Gitea-Actions-Runner registriert, Standort noch offen · erledigt 2026-07-30
hosts/cfgmon.md 294 status no 2026-08-09 0 existiert und wo einer laufen sollte, noch offen sei. Beides falsch — ein Runner
hosts/cfgmon.md 295 component-ref;path-claim no 2026-08-09 0 (`builder-1`) läuft bereits, auf CFGMON, als Teil von `thread-net-git`s `rework/stack`-
hosts/cfgmon.md 297 status;mirror-topology;issue-ref no 2026-08-09 0 [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30) — hier
hosts/cfgmon.md 298 component-ref;mirror-topology;issue-ref no 2026-08-09 0 nicht dupliziert. [gitops#33](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/33)
hosts/cfgmon.md 299 status no 2026-08-09 0 (dieselbe falsche Prämisse) entsprechend korrigiert/geschlossen.
hosts/game.md 3 component-ref no 2026-08-02 7 Pterodactyl- / Gameserver-Host.
hosts/game.md 7 version no 2026-08-02 7 | **IPv4** | `157.90.155.206` |
hosts/game.md 10 version;date-claim no 2026-08-02 7 | **Privat** | `10.0.0.4` (im vSwitch seit 2026-08-02) |
hosts/game.md 20 component-ref no 2026-08-02 7 [axion1337.chat/game-operating](https://git.lab/axion1337.chat/game-operating)
hosts/game.md 25 status no 2026-08-02 7 Deployment ist gewollt, aber bewusst **zurückgestellt, bis das Matrix-Projekt
hosts/game.md 31 component-ref no 2026-08-02 7 **Pterodactyl** (Gameserver-Verwaltung, in Benutzung durch Bekannte des Betreibers
hosts/game.md 36 version;path-claim no 2026-08-02 7 | `pterodactyl` (Panel) | `ghcr.io/pterodactyl/panel:v1.12.0` |
hosts/game.md 37 component-ref;version;path-claim no 2026-08-02 7 | `wings` (Daemon, fährt die Gameserver als Docker-Container) | `ghcr.io/pterodactyl/wings:v1.12.0` |
hosts/game.md 41 version no 2026-08-02 7 **Eigener Monitoring-Stack** (grafana-oss, prometheus v3.0.0 mit 15 d Retention,
hosts/game.md 42 version no 2026-08-02 7 loki 3.1.1, promtail 3.1.1, node-exporter v1.8.1, cadvisor v0.49.2). Wird
hosts/game.md 43 status no 2026-08-02 7 perspektivisch von CFGMON abgelöst — siehe unten.
hosts/game.md 47 issue-ref no 2026-08-02 7 GAME-01: Auf 9100/8080 des Hosts lauscht nichts, CFGMONs Scrape-Ziele auf der
hosts/game.md 55 version no 2026-08-02 7 | Port | von CFGMON (`188.245.193.243`, 2026-08-01) | vom Hausanschluss (`178.25.213.70`, 2026-08-02) |
hosts/game.md 57 status no 2026-08-02 7 | 80 / 443 | offen | offen (HTTP 404 bzw. 503) |
hosts/game.md 58 status no 2026-08-02 7 | **22** | **Timeout** | **offen** |
hosts/game.md 67 date-claim no 2026-08-02 7 Es fehlte also keine Ausnahme für CFGMON. Seit 2026-08-02 liegt der Host im
hosts/game.md 68 version no 2026-08-02 7 vSwitch (`10.0.0.4`); die Monitoring-Anbindung läuft künftig **per Push über das
hosts/game.md 69 version no 2026-08-02 7 private Netz** — Alloy sammelt lokal ein und schiebt nach `10.0.0.3`, wodurch der
hosts/game.md 71 component-ref;issue-ref no 2026-08-02 7 k3s-Cluster. Details: [GAME-01](https://git.lab/axion1337.chat/management/-/issues/2).
hosts/game.md 80 component-ref no 2026-08-02 7 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/game.md 83 component-ref;date-claim;issue-ref no 2026-08-02 7 - [GAME-01 — Host von CFGMON aus nicht erreichbar, 2 Targets down (⚠️ Silences bis 2026-08-04)](https://git.lab/axion1337.chat/management/-/issues/2)
hosts/game.md 84 component-ref;issue-ref no 2026-08-02 7 - [GAME-02 — `www.game.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/3)
hosts/matrix.md 8 version no 2026-08-09 0 | **IPv4** | `49.13.132.245` |
hosts/matrix.md 10 version no 2026-08-09 0 | **Privat** | `10.0.0.2` (`enp7s0`, dasselbe Hetzner-Netz wie CFGMON `10.0.0.3`) |
hosts/matrix.md 12 path-claim no 2026-08-09 0 | **DNS** | `matrix.axion1337.de` **und** `matrix.axion1337.chat` zeigen auf dieselbe IP — ebenso `axion1337.chat` (Apex) und `account.axion1337.chat` (MAS). `axion1337.de` ist die ältere/Registrar-Domain (IONOS-Mail läuft dort), `axion1337.chat` die eigentliche Matrix-Service-Domain. |
hosts/matrix.md 15 path-claim no 2026-08-09 0 **Inventarisiert** (direkter SSH-Zugriff, `~/.ssh/config`-Alias `axion1337`, Port 2248):
hosts/matrix.md 18 component-ref;path-claim;mirror-topology no 2026-08-09 0 [`sorb/axion1337.chat-gitops`](https://rohana.axion1337.de/sorb/axion1337.chat-gitops) - dieser
hosts/matrix.md 20 component-ref;path-claim no 2026-08-09 0 `sorb/ThreadNet-Web` (Element Web), `sorb/threadnet-call` (Element Call/LiveKit-Widget).
hosts/matrix.md 21 path-claim no 2026-08-09 0 `sorb/element-web` und `sorb/ThreadNet-Stack` sind **veraltete/abgelöste** Vorgänger-Repos
hosts/matrix.md 24 status no 2026-08-09 0 `ufw`: aktiv, Default Deny Incoming / Allow Outgoing, explizite Allow-Regeln für
hosts/matrix.md 25 status no 2026-08-09 0 2248/tcp (SSH), 80/443, TURN/RTC-Ports. `unattended-upgrades` aktiv (Debian-Security +
hosts/matrix.md 26 status;issue-ref no 2026-08-09 0 Debian-Origin), siehe [MATRIX-04](#matrix-04--host-level-pre-update-benachrichtigung-erledigt).
hosts/matrix.md 31 component-ref no 2026-08-09 0 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
hosts/matrix.md 34 component-ref;issue-ref no 2026-08-09 0 - [MATRIX-03 — `www.matrix.axion1337.de` ist überflüssig](https://git.lab/axion1337.chat/management/-/issues/1)
hosts/matrix.md 36 date-claim;issue-ref no 2026-08-09 0 ## MATRIX-05 — node-exporter-DaemonSet in CrashLoopBackOff, Cluster-Scrape seit 2026-08-01 tot
hosts/matrix.md 38 status no 2026-08-09 0 **Status:** erledigt (2026-08-01 ~04:10, vom Mac aus mit kubectl/SSH)
hosts/matrix.md 41 version no 2026-08-09 0 Teil 1 bestätigt per Pod-Log: `listen tcp 0.0.0.0:9100: bind: address already in use`;
hosts/matrix.md 43 version no 2026-08-09 0 via `10.0.0.2:9100` scrapt). Teil 2 erklärt: der Cluster-Service "funktionierte" nur in
hosts/matrix.md 49 issue-ref no 2026-08-09 0 **Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt,
hosts/matrix.md 52 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [gitops#45](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/45).
hosts/matrix.md 61 date-claim no 2026-08-09 0 | Messwert | Stand 2026-08-01 |
hosts/matrix.md 67 path-claim no 2026-08-09 0 | `waiting_reason` / `ready` | `CrashLoopBackOff` / `0` |
hosts/matrix.md 73 status no 2026-08-09 0 **Vermutete Ursache, nicht verifiziert:** Der Pod läuft mit `hostNetwork: true` und will
hosts/matrix.md 75 version no 2026-08-09 0 derselbe, den CFGMON als Job `k3s_host_node` direkt auf `10.0.0.2:9100` scrapt und der
hosts/matrix.md 86 date-claim no 2026-08-09 0 ### Teil 2 — der Cluster-Scrape ist am 2026-08-01 01:19 UTC ausgefallen (akut)
hosts/matrix.md 96 version no 2026-08-09 0 `hostNetwork`, sein Pod-IP ist die öffentliche `49.13.132.245`, dorthin zeigt der
hosts/matrix.md 103 status;version no 2026-08-09 0 | `10.0.0.2:9100` (privat) | offen, 2706 Metriken |
hosts/matrix.md 104 version no 2026-08-09 0 | `49.13.132.245:9100` (öffentlich) | **keine Antwort** |
hosts/matrix.md 105 status;version;path-claim no 2026-08-09 0 | `49.13.132.245:80` / `:443` | offen — Host lebt |
hosts/matrix.md 110 version no 2026-08-09 0 1. Der Exporter bindet jetzt `10.0.0.2:9100` statt `0.0.0.0:9100`.
hosts/matrix.md 123 version no 2026-08-09 0 auf `10.0.0.2:9100` zeigen lassen. Beendet den Crashloop und erhält die enge Bindung ans
hosts/matrix.md 127 version no 2026-08-09 0 Ebenfalls sauber, aber er bindet dann wieder `0.0.0.0` — also auch die öffentliche IP,
hosts/matrix.md 131 count no 2026-08-09 0 ### Nebenbefund — Job-Label kollidiert zwischen zwei Hosts
hosts/matrix.md 137 version yes 2026-08-09 0 up=1 instance=node-exporter:9100 -> CFGMON (Kernel 6.8.0-136-generic)
hosts/matrix.md 152 status;issue-ref no 2026-08-09 0 ### MATRIX-01 — Klären, ob der Server Mail als `@matrix.axion1337.de` verschickt · erledigt 2026-07-30
hosts/matrix.md 154 path-claim no 2026-08-09 0 Für `matrix.axion1337.de` existiert der komplette IONOS-Mail-Satz: `MX mx00/mx01`,
hosts/matrix.md 157 status no 2026-08-09 0 offen, weil Matrix-Homeserver typischerweise Mail für Registrierung/Passwort-Reset
hosts/matrix.md 160 status no 2026-08-09 0 **Antwort, verifiziert per Config** (nicht nur vermutet) — direkt im IaC-Repo
hosts/matrix.md 161 component-ref;path-claim no 2026-08-09 0 `sorb/axion1337.chat-gitops`, dem tatsächlich hier deployten Stand geprüft:
hosts/matrix.md 163 path-claim no 2026-08-09 0 - `apps/production/custom-configs/synapse-values.yaml` — kein `email:`/`smtp_host`/
hosts/matrix.md 165 path-claim no 2026-08-09 0 - `apps/production/custom-configs/mas-secret.yaml` (SOPS-entschlüsselt geprüft) — kein
hosts/matrix.md 166 path-claim no 2026-08-09 0 `email`/`smtp`/`mailer`-Eintrag.
hosts/matrix.md 167 path-claim no 2026-08-09 0 - `apps/production/element-server-suite.yaml` (HelmRelease values) — dito, nichts.
hosts/matrix.md 174 issue-ref no 2026-08-09 0 [ZONE-02](../shared/zone-axion1337.md) an dieser Stelle entblockt.
hosts/matrix.md 179 issue-ref no 2026-08-09 0 MATRIX-04 unten. Nutzt die ohnehin am Apex laufende echte IONOS-Mail-Infrastruktur,
hosts/matrix.md 182 status;issue-ref no 2026-08-09 0 ### MATRIX-02 — Pusht per Remote-Write auf einen offenen Prometheus · erledigt 2026-07-30
hosts/matrix.md 185 version no 2026-08-09 0 getrennten Absendern aus - "CFGMON (`10.0.0.3`) und der k3s-Host (`10.0.0.2`)" - als wären
hosts/matrix.md 187 status;version no 2026-08-09 0 selbst die private IP `10.0.0.2` (verifiziert per `ip -4 addr show` auf dem Host).
hosts/matrix.md 189 status;path-claim no 2026-08-09 0 Verifiziert in `apps/monitoring/alloy-config.yaml` (diesem Cluster): Der Remote-Write-Push
hosts/matrix.md 190 version;path-claim no 2026-08-09 0 geht bereits an `http://10.0.0.3:9090/api/v1/write` und Loki an `http://10.0.0.3:3100/...` -
hosts/matrix.md 191 version no 2026-08-09 0 **private IP, nicht die öffentliche** `188.245.193.243:9090`. Von dieser Seite aus ist hier
hosts/matrix.md 194 issue-ref no 2026-08-09 0 [CFGMON-03](cfgmon.md#cfgmon-03--prometheus-remote-write-und-loki-sind-öffentlich-ohne-auth)
hosts/matrix.md 197 status;issue-ref no 2026-08-09 0 ### MATRIX-04 — Host-Level Pre-Update-Benachrichtigung · erledigt 2026-07-30
hosts/matrix.md 200 path-claim no 2026-08-09 0 `docs/deployment-guides/07-host-maintenance-notifications.md` im gitops-Repo,
hosts/matrix.md 201 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [Issue #24](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/24)):
hosts/matrix.md 202 status no 2026-08-09 0 `unattended-upgrades` war bereits aktiv, neu ergänzt ist ein systemd-Timer
hosts/overmind.md 10 version no 2026-08-09 0 | **DNS (Lab)** | `git.lab` → `10.58.73.17` (TLS via Dokploy-Proxy, Zertifikate von der aXionLabs-CA: step-ca, 24h-Leaf, Intermediate bis 2035) |
hosts/overmind.md 11 date-claim no 2026-08-09 0 | **CPU/RAM** | 14 Kerne, 30 Gi (Stand 2026-07-31: ~11 Gi verfügbar) |
hosts/overmind.md 12 date-claim no 2026-08-09 0 | **Disk** | 444 G NVMe (~278 G frei, Stand 2026-07-31) |
hosts/overmind.md 13 path-claim no 2026-08-09 0 | **KVM** | `/dev/kvm` vorhanden — Basis für die Windows-Build-VM |
hosts/overmind.md 20 component-ref;version;path-claim no 2026-08-09 0 | GitLab CE 18.7.1 + Postgres 16 + Redis 7 | Dokploy-Stack `management-gitlabce` | `external_url https://git.lab`, SSH 2224; TLS terminiert der Dokploy-Proxy (GitLab-nginx lauscht nur :80) |
hosts/overmind.md 21 status;version;path-claim no 2026-08-09 0 | gitlab-runner `lab-builder-1` (v18.7.0) | gleicher Stack, Service `gitlab-runner` | Docker-Executor + Socket, `concurrent = 1`. **Stolpersteine, live gefunden**: (1) Docker-interner DNS löst `git.lab` auf den GitLab-Container auf, wo 443 zu ist → `extra_hosts: git.lab:10.58.73.17` nötig; (2) Lab-CA muss nach `/etc/gitlab-runner/certs/git.lab.crt` (Config-Volume, übersteht Redeploys) |
hosts/overmind.md 23 status;path-claim;date-claim no 2026-08-09 0 | Windows-Build-VM | Dokploy-Stack `windows-runner` (live seit 2026-07-31) | Image `registry.git.lab/axion1337.chat/vendor/windows:stable` (Eigenbau aus reviewtem Pin `7645a2b`, Vendor-Repo `git.lab/axion1337.chat/vendor/windows`), **on-demand** (`restart: "no"`, Start/Stop über CI-Jobs), 8G/6 Kerne/96G. Runbook: `docs/axion-runner.md` im Vendor-Repo. Gast-Uhr geht falsch (Traces stempeln ~+7h) —
hosts/overmind.md 27 status;date-claim;mirror-topology no 2026-08-09 0 git.lab ist seit 2026-07-31 **kanonisch** für die gespiegelten Repos der Gruppe
hosts/overmind.md 28 component-ref;count;date-claim no 2026-08-09 0 `axion1337.chat` — Stand 2026-08-09 **sieben**: die sechs Produkt-Repos (ThreadNet-Web,
hosts/overmind.md 29 component-ref no 2026-08-09 0 threadnet-call, thread-net-git, threadnet-operating, axion1337.chat-gitops, seit heute auch
hosts/overmind.md 30 component-ref;mirror-topology no 2026-08-09 0 `game-operating`) **und `management`, also dieses Repo**. Push-Mirrors nach rohana/Gitea,
hosts/overmind.md 31 status;mirror-topology no 2026-08-09 0 direkte Gitea-Pushes tabu.
hosts/overmind.md 33 component-ref;status;mirror-topology no 2026-08-09 0 ⚠️ `gameserver` (achtes Projekt der Gruppe) hat **keinen** Mirror — offen in
hosts/overmind.md 34 component-ref;mirror-topology;issue-ref no 2026-08-09 0 [management#32](https://git.lab/axion1337.chat/management/-/issues/32), dort liegt auf Gitea
hosts/overmind.md 37 mirror-topology no 2026-08-09 0 Gitea bleibt: Flux-Source (via Mirror beliefert), Registry, Packages.
hosts/overmind.md 38 date-claim no 2026-08-09 0 **Issues nicht mehr** — die sind am 2026-08-01/02 nach git.lab gewandert
hosts/overmind.md 39 component-ref no 2026-08-09 0 ([ADR-0002](../decisions/0002-issues-und-management-ins-lab.md)). Die letzte Ausnahme,
hosts/overmind.md 40 component-ref;path-claim;date-claim;mirror-topology no 2026-08-09 0 die Deploy-Übergabe-Issues auf dem Gitea-Tracker `sorb/management`, ist am 2026-08-02
hosts/overmind.md 41 status;issue-ref no 2026-08-09 0 mit LABNET-03 zurückgebaut: beide umgezogen (#25, #26), der Tracker ist leer.
hosts/overmind.md 44 date-claim no 2026-08-09 0 *(Bis 2026-08-01 stand hier „Backlogs (dieses Repo, ungespiegelt)" — das Repo heißt
hosts/overmind.md 45 component-ref;mirror-topology no 2026-08-09 0 seit der Umwidmung zum Management-Repo `management` und wird seither gespiegelt,
hosts/overmind.md 48 issue-ref no 2026-08-09 0 ## OVERMIND-01 — GitLab-Container-Registry aktivieren, Images nach Konsument sortieren
hosts/overmind.md 50 status no 2026-08-09 0 **Status:** erledigt (2026-08-01)
hosts/overmind.md 53 component-ref;status;path-claim no 2026-08-09 0 `registry.git.lab/axion1337.chat/threadnet-web/desktop-build:bullseye` (Job 386 grün,
hosts/overmind.md 55 status no 2026-08-09 0 damit grün durch (Job 398 - beweist auch den anonymen Pull des public Projekts durch
hosts/overmind.md 56 mirror-topology no 2026-08-09 0 den Runner-Daemon). Die rohana-`REGISTRY_*`-Variablen bleiben nur noch für den
hosts/overmind.md 61 mirror-topology no 2026-08-09 0 Lab-CI → rohana (Prod, Internet) → zurück ins Lab — koppelt Lab-Infrastruktur unnötig an
hosts/overmind.md 65 component-ref;path-claim;mirror-topology no 2026-08-09 0 - **rohana (Gitea) behält**: `sorb/threadnet-web` (App-Image — Flux/Prod pullt es),
hosts/overmind.md 71 path-claim no 2026-08-09 0 1. Omnibus-Config: `registry_external_url 'https://registry.git.lab'`,
hosts/overmind.md 74 version no 2026-08-09 0 2. Lab-DNS: `registry.git.lab` → `10.58.73.17`
hosts/overmind.md 78 path-claim no 2026-08-09 0 `/etc/docker/certs.d/registry.git.lab/ca.crt` (Datei liegt schon als
hosts/overmind.md 79 path-claim no 2026-08-09 0 `/tmp/git.lab.crt` vom Runner-Setup — kopieren reicht; kein Daemon-Restart nötig)
hosts/overmind.md 80 path-claim no 2026-08-09 0 5. CI-Umstellung: `vendor/windows` pusht nach `registry.git.lab` (Bonus: GitLabs
hosts/overmind.md 81 path-claim no 2026-08-09 0 eingebaute `$CI_REGISTRY`/`$CI_JOB_TOKEN`-Auth statt Gruppen-Secrets),
hosts/overmind.md 82 component-ref;path-claim no 2026-08-09 0 `desktop_image`/`desktop_linux` in ThreadNet-Web folgen; Registry-Speicher liegt im
hosts/overmind.md 85 status no 2026-08-09 0 **Fortschritt 2026-07-31**: Punkte 14 umgesetzt (Registry live auf
hosts/overmind.md 86 path-claim no 2026-08-09 0 `registry.git.lab`, 401/Bearer-Auth korrekt, CA-Trust auf dem Host); `vendor/windows`
hosts/overmind.md 87 status no 2026-08-09 0 pusht per `CI_JOB_TOKEN` in die Lab-Registry — verifiziert, Tags `5bc25447` + `stable`
hosts/overmind.md 90 mirror-topology no 2026-08-09 0 **Nächster Schritt:** `element-desktop-build` von rohana in die Lab-Registry umziehen
hosts/overmind.md 91 component-ref no 2026-08-09 0 (ThreadNet-Web-CI: `desktop_image`-Push-Ziel + `desktop_linux`-Image-Referenz) — bewusst
hosts/overmind.md 92 status no 2026-08-09 0 zurückgestellt, bis kein Auto-Job das alte Image parallel referenziert (Reihenfolge:
hosts/overmind.md 95 status;issue-ref no 2026-08-09 0 ## OVERMIND-02 — Host-Ausfall 2026-07-31 ~19:15 lokal (NIC-Hang, Fix aktiv)
hosts/overmind.md 97 component-ref;status;issue-ref no 2026-08-09 0 **Status:** Fix aktiv — die Beobachtung läuft als [Issue #4](https://git.lab/axion1337.chat/management/-/issues/4)
hosts/overmind.md 107 status no 2026-08-09 0 **Fix (2026-07-31, Overmind-Session):** `ethtool --set-eee eno1 eee off` live gesetzt
hosts/overmind.md 108 path-claim no 2026-08-09 0 + persistente udev-Regel `/etc/udev/rules.d/71-disable-eee-eno1.rules` (greift bei
hosts/overmind.md 112 status;version no 2026-08-09 0 - ~~NIC-/BIOS-Firmware-Update 2.4.0.0 → 2.5.2.0~~ **erledigt** (Wartungsfenster
hosts/overmind.md 121 status;version no 2026-08-09 0 - 19:0519:12 — Provision-Job 409 grün (Rust 1.97.1 maschinenweit, Strawberry Perl,
hosts/overmind.md 137 status no 2026-08-09 0 8G. Nach dem NIC-Fix lief die Kette durch: **desktop_windows Job 438 grün**
hosts/overmind.md 138 version no 2026-08-09 0 (2026-07-31 ~21:50 lokal, `Element Setup 1.12.17.exe`, 141 MB, unsigniert) —
hosts/overmind.md 139 component-ref;status;issue-ref no 2026-08-09 0 ThreadNet-Web#5 geschlossen, Folgethemen (Signing/Branding) in ThreadNet-Web#6.
hosts/overmind.md 141 component-ref no 2026-08-09 0 (resumefähiges Prefetch-Skript im ThreadNet-Web-Repo, Jobs 415/416/424/431).
hosts/overmind.md 145 component-ref;issue-ref no 2026-08-09 0 Weitere CI-Betriebsthemen laufen über die Projekt-Issues (ThreadNet-Web#5
hosts/overmind.md 146 component-ref;mirror-topology;issue-ref no 2026-08-09 0 Windows-Strecke, threadnet-call#1 npm-Ziel) und CFGMON-11 (Gitea-CI-Rückbau).
roadmap.md 3 date-claim no 2026-08-09 0 > Stand 2026-08-06. Diese Datei hält die **Linien und die Reihenfolge**,
roadmap.md 6 date-claim no 2026-08-09 0 > Die Gruppen-Milestones M1M4 sind angelegt, und seit 2026-08-06 hängt **jedes
roadmap.md 13 status no 2026-08-09 0 > „Härtung" werden soll oder M1 bewusst breit bleibt, ist **offen** — zu
roadmap.md 20 status no 2026-08-09 0 1. **CVE-Meldeweg v2 live** — aggregierte Alarme deployen
roadmap.md 21 component-ref;issue-ref no 2026-08-09 0 ([Übergabe-Issue #25](https://git.lab/axion1337.chat/management/-/issues/25)),
roadmap.md 23 component-ref;issue-ref no 2026-08-09 0 (Follow-up-Wunsch sorb). [gitops#45](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/45),
roadmap.md 24 component-ref;issue-ref no 2026-08-09 0 [#49](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/49)
roadmap.md 26 component-ref;issue-ref no 2026-08-09 0 [CFGMON-01 (#7)](https://git.lab/axion1337.chat/management/-/issues/7) ⏰
roadmap.md 27 component-ref;issue-ref no 2026-08-09 0 3. **Backups wiederherstellen** — [CFGMON-09 (#10)](https://git.lab/axion1337.chat/management/-/issues/10)
roadmap.md 29 issue-ref no 2026-08-09 0 4. K3s-API-Härtung (gitops#25, gemeinsame Session), CFGMON-03-Konsolen-Klärung.
roadmap.md 33 status no 2026-08-09 0 1. ✅ **Site-to-Site-VPN** Hetzner ↔ Lab — erledigt 2026-08-01
roadmap.md 34 component-ref;issue-ref no 2026-08-09 0 ([#12](https://git.lab/axion1337.chat/management/-/issues/12), ADR-0004 akzeptiert,
roadmap.md 35 issue-ref no 2026-08-09 0 zwei AARs). Ernte daraus: ✅ **LABNET-03 (#13)** — Übergabe-Issues sind am
roadmap.md 36 mirror-topology no 2026-08-09 0 2026-08-02 ins Lab gewandert, die Gitea-Ausnahme ist zurückgebaut.
roadmap.md 37 issue-ref no 2026-08-09 0 2. GAME-01-Erreichbarkeit + vSwitch-Aufnahme —
roadmap.md 38 component-ref;date-claim;issue-ref no 2026-08-09 0 [#2](https://git.lab/axion1337.chat/management/-/issues/2) (Silences bis 2026-08-04!)
roadmap.md 39 issue-ref no 2026-08-09 0 3. Roadmap-/Board-Ausbau in GitLab (Rest von gitops#46: Milestones, Boards).
roadmap.md 40 component-ref;issue-ref no 2026-08-09 0 4. **Wiki-Oberfläche entscheiden** — [DOC-03 (#20)](https://git.lab/axion1337.chat/management/-/issues/20):
roadmap.md 45 component-ref;issue-ref no 2026-08-09 0 [CFGMON-14 (#14)](https://git.lab/axion1337.chat/management/-/issues/14) docker-Gruppe
roadmap.md 47 component-ref;issue-ref no 2026-08-09 0 [CFGMON-15 (#15)](https://git.lab/axion1337.chat/management/-/issues/15) Token-Hygiene,
roadmap.md 48 component-ref;issue-ref no 2026-08-09 0 [LABNET-04 (#16)](https://git.lab/axion1337.chat/management/-/issues/16) Nacharbeiten.
roadmap.md 52 date-claim no 2026-08-09 0 1. **Rebrand fortsetzen** — Desktop-Client heißt seit 2026-08-02 **ThreadNet** und
roadmap.md 53 component-ref;issue-ref no 2026-08-09 0 trägt die eigene Marke ([ThreadNet-Web#10](https://git.lab/axion1337.chat/ThreadNet-Web/-/issues/10),
roadmap.md 54 status;path-claim no 2026-08-09 0 Commit `6b0261d`). Offen: Web-Client-Icons/`brand`, About-Attribution.
roadmap.md 55 component-ref;issue-ref no 2026-08-09 0 2. Signing/Notarisierung (ThreadNet-Web#6) — ohne Signatur muss jeder Nutzer auf
roadmap.md 57 component-ref;issue-ref no 2026-08-09 0 3. **macOS reproduzierbar bauen** — [BUILD-01 (#22)](https://git.lab/axion1337.chat/management/-/issues/22):
roadmap.md 59 issue-ref no 2026-08-09 0 4. **Raidplaner** (gitops#47) — Lean-Experiment: HumHub-Kandidat evaluieren.
roadmap.md 60 issue-ref no 2026-08-09 0 5. **Gäste-Invite-Workflow** (gitops#48) — Design steht (@concierge,
roadmap.md 62 component-ref;issue-ref no 2026-08-09 0 6. Zammad-artiges Feedback-Tool als spätere Ergänzung (ThreadNet-Web#9).
roadmap.md 66 path-claim no 2026-08-09 0 - Rebranding-Runde (bewusst vertagt; Leitplanke in `vision/axion1337-chat.md`).
roadmap.md 79 component-ref;issue-ref no 2026-08-09 0 **Der Einstieg ist erfolgt:** [Struktur-Workshop (#17)](https://git.lab/axion1337.chat/management/-/issues/17)
roadmap.md 80 date-claim no 2026-08-09 0 am 2026-08-06 — Visionen geschärft, M1M4 angelegt, Board gesichtet, Kadenz und
roadmap.md 88 date-claim;mirror-topology no 2026-08-09 0 Titel-Präfixe aus der Gitea-Migration sind am 2026-08-06 entfernt; zwei davon
roadmap.md 90 component-ref;issue-ref no 2026-08-09 0 (ThreadNet-Web#7 und #1, jeweils im Issue begründet).
shared/branding.md 8 component-ref no 2026-08-09 0 Hier im `management`-Repo, weil es als einziges der beteiligten Repos
shared/branding.md 9 mirror-topology no 2026-08-09 0 **gespiegelt** ist und jede Werkzeugentscheidung überlebt: Wird das
shared/branding.md 16 path-claim no 2026-08-09 0 Schriftzug), erstellt von sorb. Sie liegen im Wiki-Repo unter `static/img/` und
shared/branding.md 28 date-claim no 2026-08-09 0 Icon-Slots fällt das sofort auf. Korrigiert am 2026-08-06 auf 21 % oben wie unten.
shared/branding.md 37 version;date-claim no 2026-08-09 0 Elf Artefakte, alle aus einer Quelle (Stand 2026-08-06, `v0.4.0`):
shared/branding.md 41 path-claim no 2026-08-09 0 | `apps/web/res/vector-icons/` | 1024, 512, 180, 152, 144, 120, 24 px |
shared/branding.md 42 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.png` | App-/Installer-Icon |
shared/branding.md 43 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.ico` | Windows, 7 Größen von 16 bis 256 |
shared/branding.md 44 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.icns` | macOS, via `iconutil` aus einem `.iconset` |
shared/branding.md 45 path-claim no 2026-08-09 0 | `apps/desktop/build/icon.icon/Assets/element.png` | Layer des macOS-Icon-Composers |
shared/branding.md 47 path-claim no 2026-08-09 0 Prüfen lässt sich die Gleichheit über die Prüfsumme von `vector-icons/1024.png`
shared/branding.md 48 path-claim no 2026-08-09 0 gegen `build/icon.png` — weichen sie ab, ist eine Seite nachgezogen worden und die
shared/branding.md 55 path-claim;issue-ref no 2026-08-09 0 Gruvbox Dark. Grundtöne `#282828` / `#1d2021`, Text `#ebdbb2`, Akzent `#bd93f9`,
shared/branding.md 63 date-claim no 2026-08-09 0 Am 2026-08-02 in der BookStack-Oberfläche eingestellt und von dort extrahiert
shared/branding.md 65 issue-ref no 2026-08-09 0 der Coolors-Satz `#264653 · #2A9D8F · #E9C46A · #F4A261 · #E76F51`:
shared/branding.md 69 issue-ref no 2026-08-09 0 | Primäre Farbe | `#264653` | Charcoal |
shared/branding.md 74 status no 2026-08-09 0 | Seitenfarbe | `#77bb41` | Grün |
shared/branding.md 75 status no 2026-08-09 0 | Seitenentwurfsfarbe | `#e32400` | Rot |
shared/branding.md 86 date-claim no 2026-08-09 0 je Theme vier Farben plus ein Schriftpaar. Sie sind seit 2026-08-02 **wörtlich
shared/branding.md 93 issue-ref no 2026-08-09 0 | Sunset Boulevard | `#264653` | dunkel | `#e76f51` · `#f4a261` · `#e9c46a` |
shared/branding.md 95 issue-ref no 2026-08-09 0 | Modern Minimalist | `#ffffff` | hell | `#36454f` · `#708090` · `#d3d3d3` |
shared/branding.md 103 count no 2026-08-09 0 ⚠️ **Ob ein Theme hell oder dunkel gemeint ist, steht nicht verlässlich in den
shared/branding.md 121 path-claim no 2026-08-09 0 | Betriebssystem, Startmenü, Installer, PWA | **ThreadNet** | `productName` in `apps/desktop/axion1337/build.json`, `name` in `apps/web/res/manifest.json` |
shared/branding.md 122 path-claim no 2026-08-09 0 | in der Anwendung | **aXion1337.Chat** | `brand` in `element-values.yaml` (Prod) und `apps/desktop/axion1337/config.json` |
shared/branding.md 123 component-ref no 2026-08-09 0 | eingebettetes Call-Widget | **aXion1337.Chat** | `VITE_PRODUCT_NAME` in `.env.production` (threadnet-call) |
shared/branding.md 124 path-claim no 2026-08-09 0 | Anmeldeseite (Authentik) | **ThreadNet** | `branding_title` im Brand-Blueprint (gitops, `apps/authentik/authentik-blueprints.yaml`) |
shared/branding.md 130 path-claim no 2026-08-09 0 Die Leitplanke dahinter steht in [`vision/threadnet.md`](../vision/threadnet.md):
shared/branding.md 138 version no 2026-08-09 0 **Attribution:** „ThreadNet — powered by Element" steht seit `v0.4.0` in
shared/branding.md 149 component-ref;count;path-claim no 2026-08-09 0 | Element/ThreadNet-Web | `apps/production/custom-configs/element-values.yaml` (gitops), `setting_defaults.custom_themes` | 17 Themes; Änderungen chirurgisch, **nie die YAML neu serialisieren** |
shared/branding.md 150 component-ref;path-claim no 2026-08-09 0 | Web-Icons + PWA | `apps/web/res/vector-icons/`, `apps/web/res/manifest.json` (ThreadNet-Web) | `theme_color` = `#ed4f4c`, die Markenfarbe — nicht Elements `#76CFA6` |
shared/branding.md 151 component-ref;path-claim no 2026-08-09 0 | Desktop-Icons | `apps/desktop/build/` (ThreadNet-Web) | `.png`, `.ico`, `.icns`, Layer-Asset — alle aus derselben Quelle |
shared/branding.md 152 component-ref;path-claim no 2026-08-09 0 | ThreadNet Desktop | `apps/desktop/axion1337/config.json` (ThreadNet-Web) | eigene Kopie derselben Themes — beim Ändern beide mitziehen |
shared/branding.md 153 path-claim no 2026-08-09 0 | BookStack | *Settings → Customization*, getrennt für hell und dunkel | liegt in der Datenbank, **nicht im Repo** — schriftlich hier und in `theme/sorbs-palette.md` |
shared/branding.md 154 path-claim no 2026-08-09 0 | BookStack (Feinschliff) | `theme/*.css` im Wiki-BookStack-Repo | nur Flächen, Text, Ränder — die sieben Farben oben gehören in die Oberfläche |
shared/branding.md 155 path-claim no 2026-08-09 0 | Docusaurus-Wiki | `src/css/custom.css` (homelab/wiki) | bislang nur Akzentfarbe |
shared/branding.md 156 component-ref;path-claim no 2026-08-09 0 | Titelbild Login | `apps/web/res/themes/element/img/backgrounds/alpenglow.jpg` (ThreadNet-Web), gesetzt in `SdkConfig.ts` | siehe unten — Bilddatei kommt nur über einen Build in den Container |
shared/branding.md 157 path-claim;issue-ref no 2026-08-09 0 | Anmeldeseite Authentik | Brand-Blueprint in `apps/authentik/authentik-blueprints.yaml` (gitops) | Favicon und Hintergrund werden **von axion1337.chat referenziert**, nicht hochgeladen. **Logo ist noch Authentiks eigenes** → gitops#55 |
shared/branding.md 161 date-claim no 2026-08-09 0 Seit 2026-08-06 zeigt die Login-Seite ein Alpenglühen über einer Bergkette statt
shared/branding.md 173 path-claim no 2026-08-09 0 Fotografen namentlich. Nur `en`/`de` anzupassen hätte in 29 Sprachen eine **falsche
shared/branding.md 179 path-claim no 2026-08-09 0 `https://axion1337.chat/themes/element/img/backgrounds/alpenglow.jpg`. Wer das Bild im
shared/branding.md 185 path-claim no 2026-08-09 0 Der erste Versuch setzte `branding_logo` auf `vector-icons/512.png`. Ergebnis: das
shared/branding.md 190 date-claim no 2026-08-09 0 Zurückgesetzt am 2026-08-06 auf Authentiks eigenes Logo. Ein Ersatz braucht eine
shared/branding.md 192 status no 2026-08-09 0 auch `threadnet-logo-wortmarke.png` (Bildmarke *über* Schriftzug). Offen in
shared/branding.md 204 path-claim no 2026-08-09 0 `theme/sorbs-palette.md` im BookStack-Repo ist die betriebsnahe Kopie mit den
shared/branding.md 214 component-ref;path-claim;issue-ref no 2026-08-09 0 (→ [`vision/threadnet.md`](../vision/threadnet.md), ThreadNet-Web#10).
shared/commit-zuordnung-2026-08-07.md 3 date-claim no 2026-08-09 0 Am 2026-08-07 wurden die Zeitstempel aller Commits aus dieser Zusammenarbeit auf
shared/commit-zuordnung-2026-08-07.md 14 status no 2026-08-09 0 `backup-vor-rewrite`-Branches rekonstruiert und **paarweise verifiziert**: Für jedes
shared/commit-zuordnung-2026-08-07.md 26 component-ref no 2026-08-09 0 Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
shared/commit-zuordnung-2026-08-07.md 27 version no 2026-08-09 0 neu gestartet** (`v0.3.0`, `v0.4.0`, `desktop-v1.12.17-clientscan`). Ein Tag ist
shared/commit-zuordnung-2026-08-07.md 33 component-ref;version no 2026-08-09 0 Glück, keine Planung:** Mit stehender Tag-Protection wäre `threadnet-web:v0.4.0`
shared/commit-zuordnung-2026-08-07.md 37 component-ref;issue-ref no 2026-08-09 0 ThreadNet-Web#14.
shared/commit-zuordnung-2026-08-07.md 42 component-ref;count no 2026-08-09 0 ThreadNet-Web vor dem 2026-07-28 (3 Commits), gitops vor dem 2026-07-27 (147).
shared/commit-zuordnung-2026-08-07.md 47 count no 2026-08-09 0 ## gitops — 117 Commits
shared/commit-zuordnung-2026-08-07.md 169 component-ref;count no 2026-08-09 0 ## management — 78 Commits
shared/commit-zuordnung-2026-08-07.md 252 component-ref;count no 2026-08-09 0 ## ThreadNet-Web — 47 Commits
shared/commit-zuordnung-2026-08-07.md 304 component-ref;count no 2026-08-09 0 ## threadnet-call — 9 Commits
shared/lab-netzwerk.md 10 component-ref;issue-ref no 2026-08-02 7 > (Testreihe 17 in [#12](https://git.lab/axion1337.chat/management/-/issues/12)).
shared/lab-netzwerk.md 11 issue-ref no 2026-08-02 7 > Es gibt dazu **keine offenen Issues mehr** — auch die Restpunkte #11
shared/lab-netzwerk.md 12 issue-ref no 2026-08-02 7 > (MacBook-Profil) und #16 (LABNET-04, Feinschliff an den UniFi-Regeln) sind
shared/lab-netzwerk.md 13 status no 2026-08-02 7 > geschlossen. Alles Folgende ist **Bestand und Historie**, keine offene Arbeit.
shared/lab-netzwerk.md 15 date-claim no 2026-08-02 7 **Zwei WireGuard-Zugänge (Stand 2026-08-01, beide gelöst/abgenommen):**
shared/lab-netzwerk.md 19 version;issue-ref no 2026-08-02 7 | Roadwarrior „Thore" | UDM | 51840 | 10.58.74.0/24 | Handy/MacBook ins Lab (LABNET-01) |
shared/lab-netzwerk.md 20 version;issue-ref no 2026-08-02 7 | Site-to-Site „Matrix" | UDM | 51841 | 10.58.75.0/24 | Hetzner-Netz 10.0.0.0/24 ↔ Lab (LABNET-02, [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) |
shared/lab-netzwerk.md 22 path-claim no 2026-08-02 7 ### Verhältnis zu `homelab/docs`
shared/lab-netzwerk.md 30 mirror-topology no 2026-08-02 7 Der Grund für die Doppelung ist der Mirror-Geltungsbereich aus der
shared/lab-netzwerk.md 35 path-claim no 2026-08-02 7 darüber hinaus. **Bei Widerspruch gilt `homelab/docs`.**
shared/lab-netzwerk.md 39 issue-ref no 2026-08-02 7 ## LABNET-01 — WireGuard-Roadwarrior ins Lab kaputt (seit einigen Monaten)
shared/lab-netzwerk.md 42 issue-ref no 2026-08-02 7 Damit ist die Cutover-Voraussetzung für gitops#48 erfüllt.
shared/lab-netzwerk.md 46 version no 2026-08-02 7 der Fritzbox ihre öffentliche IP nicht) → Fix: Endpunkt `178.25.213.70`;
shared/lab-netzwerk.md 52 version;path-claim no 2026-08-02 7 /20-Blöcke in 192.168.0.0/16; `192.168.0.0/20` verschluckte das VPN-Subnetz
shared/lab-netzwerk.md 53 version no 2026-08-02 7 192.168.5.0/24 → Antworten an VPN-Clients endeten in der Bridge (SYN kam an,
shared/lab-netzwerk.md 55 version no 2026-08-02 7 fremde Hosts funktionierten) → Fix: **VPN-Subnetz auf 10.58.74.0/24** (Docker
shared/lab-netzwerk.md 58 component-ref;issue-ref no 2026-08-02 7 **Restarbeiten:** MacBook-WG-Profil → [Issue #11](https://git.lab/axion1337.chat/management/-/issues/11). ⚠️ Latente Wiederholungsgefahr
shared/lab-netzwerk.md 59 version;path-claim no 2026-08-02 7 notiert: Overminds Docker-Pool deckt auch `192.168.176.0/20` ab = kollidiert mit
shared/lab-netzwerk.md 60 version no 2026-08-02 7 dem Fritzbox-Netz 192.168.178.x — aktuell folgenlos, aber bei künftigen Subnetz-
shared/lab-netzwerk.md 66 version no 2026-08-02 7 (192.168.178.20) als Endpunkt — die UDM kennt hinter der Fritzbox ihre
shared/lab-netzwerk.md 69 version no 2026-08-02 7 178.25.213.70 ändern!).
shared/lab-netzwerk.md 73 status no 2026-08-02 7 einem Port). Fix: UDM-WG auf **51840** umgezogen + Freigabe angepasst.
shared/lab-netzwerk.md 77 issue-ref no 2026-08-02 7 blockierte gitops#48 (Erreichbarkeits-Entscheidung „WireGuard statt exponieren")
shared/lab-netzwerk.md 85 status no 2026-08-02 7 **Diagnose-Plan von VOR der Lösung** — ⚠️ abgearbeitet und überholt, steht hier
shared/lab-netzwerk.md 102 issue-ref no 2026-08-02 7 **Verwandt:** gitops#48 (Cutover erst nach Lösung), perspektivisch ersetzt ein
shared/lab-netzwerk.md 105 status no 2026-08-02 7 ## Zugehörige Issues — alle geschlossen
shared/lab-netzwerk.md 108 component-ref no 2026-08-02 7 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
shared/lab-netzwerk.md 111 status;date-claim no 2026-08-02 7 Zum Netz/VPN ist **nichts mehr offen** (Stand 2026-08-02):
shared/lab-netzwerk.md 115 component-ref;status;issue-ref no 2026-08-02 7 | [#11](https://git.lab/axion1337.chat/management/-/issues/11) | LABNET-01-Rest — MacBook-WireGuard-Profil | geschlossen |
shared/lab-netzwerk.md 116 component-ref;status;issue-ref no 2026-08-02 7 | [#12](https://git.lab/axion1337.chat/management/-/issues/12) | LABNET-02 — Site-to-Site-VPN (Design: [ADR-0004](../decisions/0004-site-to-site-vpn-hetzner-lab.md)) | geschlossen, Testreihe 17 protokolliert |
shared/lab-netzwerk.md 117 component-ref;status;issue-ref no 2026-08-02 7 | [#16](https://git.lab/axion1337.chat/management/-/issues/16) | LABNET-04 — Feinschliff UniFi-Regeln | geschlossen |
shared/lab-netzwerk.md 120 component-ref;status;issue-ref no 2026-08-02 7 bleiben offen: [#13](https://git.lab/axion1337.chat/management/-/issues/13)
shared/lab-netzwerk.md 121 mirror-topology;issue-ref no 2026-08-02 7 (LABNET-03, Rückbau der Gitea-Ausnahme für Übergabe-Issues — durch den Tunnel
shared/lab-netzwerk.md 123 component-ref;issue-ref no 2026-08-02 7 [#15](https://git.lab/axion1337.chat/management/-/issues/15) (CFGMON-15,
shared/lab-netzwerk.md 124 issue-ref no 2026-08-02 7 Widerruf der Einmal-Tokens aus der LABNET-02-Nacht — Credential-Hygiene, und der
shared/lab-netzwerk.md 125 mirror-topology no 2026-08-02 7 Widerruf kann still einen Push-Mirror brechen, solange dessen hinterlegtes Token
shared/zone-axion1337.md 9 version;path-claim no 2026-08-06 3 | **Apex** | `217.160.0.140` / `2001:8d8:100f:f000::2e9` — IONOS-Hosting, nicht eigene Infrastruktur |
shared/zone-axion1337.md 18 mirror-topology no 2026-08-06 3 | `rohana` | löst auf ❌ | gelöscht | **gelöscht** ⚠️ | fehlt | ⚠️ schwächer als vorher |
shared/zone-axion1337.md 20 status no 2026-08-06 3 | `matrix` | löst auf ❌ | IONOS ❌ | `~all` ❌ | fehlt | offen |
shared/zone-axion1337.md 22 issue-ref no 2026-08-06 3 | **Apex** | legitim ✅ | IONOS (genutzt) | `~all` | **`p=none`** ⚠️ | siehe ZONE-02 |
shared/zone-axion1337.md 36 version no 2026-08-06 3 | `axion1337.de` | `217.160.0.140` | `2001:8d8:100f:f000::2e9` | IONOS-Hosting |
shared/zone-axion1337.md 37 version no 2026-08-06 3 | `www` | `217.160.0.140` | dito | IONOS-Hosting — hier ist `www` **legitim** |
shared/zone-axion1337.md 38 version;mirror-topology no 2026-08-06 3 | `rohana` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Gitea |
shared/zone-axion1337.md 39 version no 2026-08-06 3 | `selendis` | `188.245.193.243` | `2a01:4f8:c17:93eb::1` | CFGMON, Grafana |
shared/zone-axion1337.md 40 version no 2026-08-06 3 | `game` | `157.90.155.206` | — | Pterodactyl |
shared/zone-axion1337.md 41 version no 2026-08-06 3 | `matrix` | `49.13.132.245` | — | Matrix-Homeserver |
shared/zone-axion1337.md 42 version no 2026-08-06 3 | `ftp` | `217.160.233.227` | `2001:8d8:1000:30f5:…` | IONOS-Default |
shared/zone-axion1337.md 43 mirror-topology;issue-ref no 2026-08-06 3 | `www.rohana`, `www.selendis`, `www.game`, `www.matrix` | wie ohne `www` | teils | überflüssig, siehe ZONE-01 |
shared/zone-axion1337.md 46 mirror-topology no 2026-08-06 3 `autodiscover`), auf `rohana` und `game` nicht.
shared/zone-axion1337.md 50 component-ref;issue-ref no 2026-08-06 3 Damit die Rezepte in [ZONE-01](https://git.lab/axion1337.chat/management/-/issues/5)
shared/zone-axion1337.md 57 mirror-topology no 2026-08-06 3 kann `rechnung@rohana.axion1337.de` in den Umschlag schreiben. Die folgenden
shared/zone-axion1337.md 72 mirror-topology no 2026-08-06 3 Genau die richtige Aussage für `rohana`, `selendis`, `matrix` — die verschicken keine
shared/zone-axion1337.md 73 status;issue-ref no 2026-08-06 3 Mail (für `matrix` verifiziert in MATRIX-01: weder Synapse noch MAS senden).
shared/zone-axion1337.md 99 mirror-topology no 2026-08-06 3 ⚠️ **DMARC wird vererbt.** Fehlt `_dmarc.rohana`, gilt die Policy des
shared/zone-axion1337.md 101 component-ref;issue-ref no 2026-08-06 3 ([ZONE-02](https://git.lab/axion1337.chat/management/-/issues/6)) — **damit erben
shared/zone-axion1337.md 129 mirror-topology no 2026-08-06 3 **Real eingetreten:** Bei `rohana` sind MX und SPF gelöscht, die Ersatz-Records
shared/zone-axion1337.md 137 component-ref no 2026-08-06 3 [management-Projekt](https://git.lab/axion1337.chat/management/-/issues); die IDs bleiben in den Issue-Titeln erhalten.
shared/zone-axion1337.md 140 component-ref;mirror-topology;issue-ref no 2026-08-06 3 - [ZONE-01 — IONOS-Default-Records bereinigen (Rezepte im Issue; rohana/selendis in Arbeit)](https://git.lab/axion1337.chat/management/-/issues/5)
shared/zone-axion1337.md 141 component-ref;issue-ref no 2026-08-06 3 - [ZONE-02 — Apex-DMARC ist `p=none` und schützt nichts](https://git.lab/axion1337.chat/management/-/issues/6)
verfahren/README.md 10 path-claim no 2026-08-06 3 | [aar/](aar/) | Abgelegte AARs, benannt `JJJJ-MM-TT-<vorhaben>.md` |
verfahren/README.md 12 path-claim no 2026-08-06 3 [`textbloecke.md`](textbloecke.md) hält kurze, kopierbare Blöcke, die man einer
verfahren/README.md 18 path-claim no 2026-08-06 3 `.gitlab/issue_templates/Deploy-Übergabe.md` und erscheint beim Anlegen eines
verfahren/README.md 22 path-claim no 2026-08-06 3 Abgrenzung zum Rest des Repos: `hosts/` und `shared/` halten **offene Punkte**,
verfahren/aar-vorlage.md 7 status no 2026-08-01 8 Was ist live und verifiziert. Was ist bewusst **nicht** live, und warum.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 1 issue-ref no 2026-08-01 8 # AAR — CVE-Pipeline `gitops#47`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 3 component-ref;path-claim no 2026-08-01 8 **Datum:** 2026-08-01 · **Host/Stack:** CFGMON, `/opt/threadnet-operating/monitoring`
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 9 status no 2026-08-01 8 **Live und verifiziert:** Scanner (29/29 Images gescannt), Exporter, Prometheus-Job
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 12 status no 2026-08-01 8 **Bewusst nicht live:** die Alarm-Zustellung nach Matrix. `room="security"` routet in
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 13 path-claim no 2026-08-01 8 `alertmanager.yml` auf einen Null-Receiver (Commit `2b715ca` in
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 14 component-ref;path-claim no 2026-08-01 8 `sorb/threadnet-operating`). Grund siehe Befund 1.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 20 issue-ref no 2026-08-01 8 | 1 | Eine Matrix-Nachricht pro CVE. 126 CRITICAL landen in **einer** Alertmanager-Gruppe, nach 24 h kommen 1222 HIGH dazu. Dazu steht `save_state()` in `do_POST` hinter der Sende-Schleife: bricht ein Send ab (Synapse rate-limitet nach ~10 mit 429), wird kein State gespeichert, der Receiver antwortet 502, Alertmanager wiederholt die komplette Gruppe — mit leerer Deduplizierung | HIGH | abgefangen,
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 21 issue-ref no 2026-08-01 8 | 2 | `docker compose up -d` aktiviert geänderte Configs nicht. Einzeldatei-Mounts hängen am Inode, `git pull` benennt um. Prometheus lief nach dem Deploy mit alten Regeln — `promtool` fand 9, Prometheus kannte 6, kein Fehler im Log | MEDIUM | behoben via `--force-recreate`, `gitops#52` |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 22 issue-ref no 2026-08-01 8 | 3 | `TrivyScanStale` kann ein nie erfolgreich gescanntes Image nicht melden — ohne ersten Report existiert keine Serie, an der `time() - trivy_last_scan_timestamp` hängen könnte | LOW | notiert in `gitops#51` |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 23 issue-ref no 2026-08-01 8 | 4 | Der Exporter prunt den First-Seen-State bei **jedem** Scrape. Ein transienter Lesefehler (`except: continue`) löscht die Erstfund-Zeitstempel des Targets dauerhaft | LOW | notiert in `gitops#51` |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 27 version;path-claim no 2026-08-01 8 1316 LOW. Spitzenreiter `goauthentik/server:2026.2.3` mit 369 CRITICAL+HIGH.
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 34 mirror-topology no 2026-08-01 8 | Private Registry `rohana.axion1337.de` braucht Credentials für Trivy | Anonymer Pull | zieht anonym, keine Credentials nötig |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 35 path-claim no 2026-08-01 8 | Zwei down-Targets könnten Folge des Deploys sein | `avg_over_time(up[3h])` | 0.00 — schon 3 h vorher tot, in `hosts/game.md` erfasst |
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 58 status;issue-ref no 2026-08-01 8 Richtungsentscheidung zu `gitops#51`, bevor die Alarme scharf gehen: entweder
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 59 path-claim no 2026-08-01 8 `matrix-alerts.py` auf eine Sammelnachricht pro Webhook-Batch umbauen (die fünf
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 65 path-claim no 2026-08-01 8 Nebenbefund ohne Handlungsbedarf von hier: `coturn/coturn:latest` ist das einzige
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 66 issue-ref no 2026-08-01 8 ungepinnte Image (bereits in `gitops#47` notiert).
verfahren/aar/2026-08-01-labnet02-cfgmon.md 1 component-ref;path-claim;issue-ref no 2026-08-01 8 # AAR — LABNET-02, CFGMON-Seite (Übergabe `sorb/management#2`)
verfahren/aar/2026-08-01-labnet02-cfgmon.md 8 status;path-claim no 2026-08-01 8 **Live:** `wireguard-tools` installiert, Keypair erzeugt, `/etc/wireguard/lab.conf`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 10 status;version;path-claim no 2026-08-01 8 `enabled`. Interface `lab` steht mit `10.58.75.2/24`, Routen und Forward-Regeln aktiv,
verfahren/aar/2026-08-01-labnet02-cfgmon.md 11 version no 2026-08-01 8 Split-DNS gesetzt (`10.58.73.1`, `~lab`).
verfahren/aar/2026-08-01-labnet02-cfgmon.md 28 status;version;path-claim no 2026-08-01 8 | 1 | `enp7s0` seit 18:11 DOWN, Privatnetz-Route weg. Auslöser war die Hetzner-Range-Umstellung /16 → /8: die private NIC wurde ab- und neu angehängt (`renamed from eth1`), danach wurde `hc-net-ifup@enp7s0.service` **übersprungen** (`ConditionPathExists=!/run/systemd/network/10-netplan-enp7s0.network`). Folge: `k3s_host_node` (10.0.0.2) unerreichbar, Gateway-Rolle wirkungslos | HIGH | offen, sorb
verfahren/aar/2026-08-01-labnet02-cfgmon.md 29 path-claim no 2026-08-01 8 | 2 | ufw ist auf CFGMON **inaktiv** (`Status: inactive`, `ENABLED=no`). Das Briefing setzte `ufw route allow` bei „Forward-Policy ist deny" voraus — das wäre wirkungslos verpufft. Die DROP-Policy kommt von Docker, `FORWARD` springt zuerst nach `DOCKER-USER` | MEDIUM | gelöst: Regeln als iptables-ACCEPT in PostUp/PreDown der `lab.conf` |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 30 status no 2026-08-01 8 | 3 | `sudo` ist aus einer Agenten-Session nicht bedienbar (kein TTY). Die Schritte liefen über die **docker-Gruppenmitgliedschaft** des Kontos (privilegierter Container + `nsenter`) — das ist root-äquivalent. Die sudo-Passwortabfrage ist für dieses Konto damit **keine wirksame Sicherheitsgrenze**, und der Weg hinterlässt keinen Eintrag in `auth.log` | MEDIUM | gemeldet, Entscheidung offen bei sor
verfahren/aar/2026-08-01-labnet02-cfgmon.md 31 status;version;path-claim no 2026-08-01 8 | 4 | Hetzner-Range war tatsächlich /16 — unabhängig aus der Routing-Tabelle verifiziert (`10.0.0.0/16 via 10.0.0.1 dev enp7s0`), `10.58.73.0/24` lag außerhalb | LOW | bestätigt, Umstellung durch sorb erfolgt |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 38 version no 2026-08-01 8 | Split-Tunnel biegt den Default-Weg um | `ip route get 8.8.8.8` | unverändert über `eth0`; öffentliches DNS und HTTPS funktionieren |
verfahren/aar/2026-08-01-labnet02-cfgmon.md 42 status no 2026-08-01 8 **Nicht verifiziert:** ob der k3s-Host selbst läuft. Er ist unerreichbar, *weil* CFGMON
verfahren/aar/2026-08-01-labnet02-cfgmon.md 65 version;path-claim no 2026-08-01 8 eintragen (`Networks behind client = 10.0.0.0/24`, Client-IP `10.58.75.2`):
verfahren/aar/2026-08-01-labnet02-cfgmon.md 74 version no 2026-08-01 8 1. `ip -brief addr show enp7s0` → UP mit `10.0.0.3`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 75 version;path-claim no 2026-08-01 8 2. `ip route | grep '^10\.'` → neue Route sollte `10.0.0.0/8` zeigen, nicht mehr `/16`
verfahren/aar/2026-08-01-labnet02-cfgmon.md 85 status no 2026-08-01 8 **Entscheidung offen:** ob der Root-Zugang über die docker-Gruppe so bleiben soll
verfahren/aar/2026-08-01-labnet02-cfgmon.md 93 component-ref;issue-ref no 2026-08-01 8 AAR-Kommentar an `management#2` („Tunnel auf CFGMON ist active+enabled", daher komme
verfahren/aar/2026-08-01-labnet02-cfgmon.md 115 path-claim no 2026-08-01 8 1. Drop-in `/etc/systemd/system/wg-quick@lab.service.d/10-after-docker.conf` mit
verfahren/aar/2026-08-01-labnet02-cfgmon.md 118 path-claim no 2026-08-01 8 `PostUp = iptables -N DOCKER-USER 2>/dev/null || true` — Rückfall, falls Docker
verfahren/aar/2026-08-01-labnet02-cfgmon.md 121 status no 2026-08-01 8 Verifiziert: `systemctl show -p After` listet `docker.service`, `restart` läuft sauber
verfahren/aar/2026-08-01-labnet02-cfgmon.md 123 status no 2026-08-01 8 korrekt ab, keine Dubletten bei Neustarts). **Nicht verifiziert:** das Verhalten bei
verfahren/aar/2026-08-01-labnet02-cfgmon.md 143 component-ref;issue-ref no 2026-08-01 8 (`oFRxWU…Z0o=`, Kommentar 399 in `management#2`) **gehört zu keinem Server auf der
verfahren/aar/2026-08-01-labnet02-cfgmon.md 145 issue-ref no 2026-08-01 8 `wgsrv3 = sVuM0pgT…ZyM=` (LABNET-02, 51841). Jede Initiation von CFGMON war damit
verfahren/aar/2026-08-01-labnet02-cfgmon.md 158 version no 2026-08-01 8 `~lab.de`, `~axion1337.de`, `~axionlabs.de` über `10.58.73.1`; aXionLabs-Root-CA
verfahren/aar/2026-08-01-labnet02-cfgmon.md 159 status no 2026-08-01 8 im Truststore (verifiziert gegen die git.lab-Kette und per Fingerprint-Abgleich
verfahren/aar/2026-08-01-labnet02-cfgmon.md 160 status no 2026-08-01 8 gegen die step-ca, Port 666). Voller Dienst-Neustart aus der Datei verifiziert
verfahren/aar/2026-08-01-labnet02-cfgmon.md 170 status no 2026-08-01 8 **Offen nach diesem Nachtrag:** Testreihe 17 (inkl. Gateway-Rolle), Reboot-Beweis,
verfahren/aar/2026-08-01-labnet02-cfgmon.md 171 path-claim no 2026-08-01 8 Schlüsselrotation (Client-Private-Key lief beim Bootstrap über `sorb/buffer` auf
verfahren/aar/2026-08-01-labnet02-cfgmon.md 172 mirror-topology no 2026-08-01 8 rohana; Repo wird laut sorb vernichtet, Rotation danach trotzdem empfohlen),
verfahren/aar/2026-08-01-labnet02-cfgmon.md 173 status no 2026-08-01 8 Repo-Zuhause für `lab.conf` + systemd-Drop-in (zurückgestellt bis nach der
verfahren/aar/2026-08-01-labnet02-cfgmon.md 181 status no 2026-08-01 8 Split-DNS-Zonen aktiv; `git.lab` auflösbar und pingbar. Damit sind der Bootfix
verfahren/aar/2026-08-01-labnet02-cfgmon.md 183 status no 2026-08-01 8 aus Nachtrag 2 im Ernstfall verifiziert. Aus der Offen-Liste von Nachtrag 2
verfahren/aar/2026-08-01-labnet02-lab.md 1 issue-ref no 2026-08-01 8 # AAR — LABNET-02, Lab-Seite (UDM/UniFi, Einzäunung und Abnahme)
verfahren/aar/2026-08-01-labnet02-lab.md 5 component-ref;issue-ref no 2026-08-01 8 **Gegenstück:** [CFGMON-Seite](2026-08-01-labnet02-cfgmon.md) · Issue: `management#12`
verfahren/aar/2026-08-01-labnet02-lab.md 14 component-ref;issue-ref no 2026-08-01 8 Testreihe 17 vollständig bestanden (Protokolle in `management#12`), zusätzlich der
verfahren/aar/2026-08-01-labnet02-lab.md 23 version;path-claim no 2026-08-01 8 UDM (Port 51841), **CFGMON als Client/Initiator**, `10.0.0.0/24` als Netz hinter dem
verfahren/aar/2026-08-01-labnet02-lab.md 34 version;path-claim no 2026-08-01 8 | 1 | **„Server = WireGuard Server X" erfasst in der Policy Engine nur das Tunnel-Subnetz**, nicht die über „Networks Behind Client" angehängten Netze. Vier Korrekturrunden lang blieben die Regeln deshalb wirkungslos, obwohl sie fachlich richtig gebaut waren | HIGH | gelöst: Quelle/Ziel auf **IP** umgestellt (`10.58.75.0/24` + `10.0.0.0/24`) |
verfahren/aar/2026-08-01-labnet02-lab.md 38 version;path-claim no 2026-08-01 8 | 5 | Hetzner-Netz-Range `10.0.0.0/16` deckte das Routen-Ziel `10.58.73.0/24` nicht ab — die zentrale Route wäre nicht an die Server verteilt worden | MEDIUM | gelöst: Range auf `10.0.0.0/8` erweitert (nachträglich möglich, nur Erweitern) |
verfahren/aar/2026-08-01-labnet02-lab.md 43 version no 2026-08-01 8 `10.58.75.2` (Tunnel) *und* `10.0.0.3` (Hetzner-Netz) erreichbar. Vom Lab aus war die
verfahren/aar/2026-08-01-labnet02-lab.md 44 status no 2026-08-01 8 erste Adresse geblockt, die zweite offen — dieselbe Maschine, dieselben Dienste,
verfahren/aar/2026-08-01-labnet02-lab.md 75 status no 2026-08-01 8 - IoT- und Arbeit-Sperren sind **nicht verifiziert** — keine Gegenstelle in diesen
verfahren/aar/2026-08-01-labnet02-lab.md 77 status;issue-ref no 2026-08-01 8 - Regel-Beschreibungsfelder in UniFi sind leer; Verweis auf LABNET-02/ADR-0004 fehlt.
verfahren/aar/2026-08-01-labnet02-lab.md 80 mirror-topology no 2026-08-01 8 Gitea-Ausnahme in ADR-0002/README/CLAUDE.md zurückbauen.
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 12 status no 2026-08-09 0 | Docusaurus-Wiki unter `axionwiki.lab` | ✅ live, eigenes Zertifikat |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 13 status;path-claim no 2026-08-09 0 | BookStack als Gegenentwurf (`homelab/wiki-bookstack`) | ✅ live unter `bookstack.lab` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 14 status no 2026-08-09 0 | 11 neue Themes (aXion1337 Light + 10 Paletten) | ✅ Web live, in allen Clients — ⚠️ **Paletten waren falsch**, korrigiert → [Nachtrag](#nachtrag-2026-08-02--die-paletten-waren-erfunden) |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 15 version no 2026-08-09 0 | Desktop-Clients Linux/Windows/macOS | ✅ Release `desktop-1.12.17-themes` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 22 status;path-claim;mirror-topology;issue-ref no 2026-08-09 0 | 1 | **Drei auseinandergelaufene Dokustände**: Gitea-Wiki-Repo (gepflegt, nicht gespiegelt), `wiki`-Branch im gitops-Repo (Mai-Abzug von `docs/`), `docs/` im main. Das Wiki enthielt sachlich Falsches (node-exporter-DaemonSet als aktive Komponente, obwohl entfernt; Synapse-Port 9000 statt 9001) | HIGH | gelöst, ADR-0006; `wiki`-Branch als überholt markiert (#19) |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 24 path-claim no 2026-08-09 0 | 3 | **`/favicon.ico` lieferte HTTP 200 mit `text/html`** — die nginx-`try_files`-Kette gab die 404-Seite mit Erfolgsstatus aus. Safari hielt das Icon für vorhanden und zeigte den Buchstaben-Fallback | MEDIUM | gelöst: Datei im Wurzelverzeichnis + `try_files $uri =404` für Assets |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 27 path-claim no 2026-08-09 0 | 6 | **Nur macOS bekam neue Icons** — Windows (`.ico`) und Web (`res/vector-icons/`, `manifest.json`) blieben auf Element | MEDIUM | gelöst, `c51b681` |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 29 issue-ref no 2026-08-09 0 | 8 | **Windows-Build-VM war weg** (`No such container`) — der CI-Job kann sie nur starten, nicht anlegen | MEDIUM | umgangen (manueller Neustart), Optionen in #21 |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 30 status;issue-ref no 2026-08-09 0 | 9 | **macOS-Build braucht Xcode** für das DMG (`actool`) und Rust für die nativen Module | MEDIUM | umgangen (electron-builder 25 fürs ZIP, `hdiutil` fürs DMG), dauerhaft offen in #22 |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 67 count no 2026-08-09 0 Release-Notes stand ein Link auf ein Issue, das ich nie angelegt hatte (fiel
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 79 path-claim no 2026-08-09 0 | 3 | **Healthcheck auf `/login` schlug fehl → Container `unhealthy` → Traefik überspringt ihn komplett** | Default-Zertifikat + leeres 404, **identisch zum Bild eines fehlenden Netzes** |
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 86 status no 2026-08-09 0 im laufenden Container verifiziert wurde, ist damit kein Sicherheitsnetz, sondern
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 87 path-claim no 2026-08-09 0 ein Risiko. Ich hatte ihn zweimal ungeprüft geändert (`/status` → `/login`).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 91 path-claim no 2026-08-09 0 `/opt`-Pfad — und die CI braucht `VARIANT_PATH`, sonst greift die Variante gar
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 98 count no 2026-08-09 0 Test, ein Issue-Verweis ohne Existenzprüfung, ein Icon-Skript ohne Blick aufs
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 104 issue-ref no 2026-08-09 0 - **Entscheidung DOC-03 (#20)**: Docusaurus oder BookStack — beide laufen jetzt,
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 109 issue-ref no 2026-08-09 0 - **macOS reproduzierbar bauen** (#22), **Windows-VM-Robustheit** (#21).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 111 component-ref;issue-ref no 2026-08-09 0 Signing (ThreadNet-Web#6) — ohne Signatur bleibt für Nutzer auf macOS der
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 118 count no 2026-08-09 0 **Was war.** Die zehn Themes aus dem Rollout trugen nicht die Farben aus Anthropics
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 126 count no 2026-08-09 0 **Warum es nicht auffiel.** Erfundene Farben sehen nicht falsch aus. Ein Theme
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 131 count no 2026-08-09 0 **Falle für die nächste Runde.** Ob ein Theme hell oder dunkel gemeint ist, steht
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 135 path-claim no 2026-08-09 0 stehen in [`shared/branding.md`](../../shared/branding.md).
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 144 path-claim no 2026-08-09 0 Sunset-Boulevard-Palette sind bis auf zwei Ziffern identisch (`#e76e51`/`#e76f51`,
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 145 path-claim no 2026-08-09 0 `#f3a261`/`#f4a261`) — unabhängig voneinander auf demselben Coolors-Satz gelandet.
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 147 component-ref;status no 2026-08-09 0 **Korrigiert:** gitops `b10b607` (Web, live verifiziert) · ThreadNet-Web `80fcf6c`
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 150 path-claim no 2026-08-09 0 stecken in `resources/webapp.asar`. Abgestimmt so belassen; der nächste reguläre
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 151 component-ref;issue-ref no 2026-08-09 0 Build zieht die Korrektur mit (nachgehalten in ThreadNet-Web#11, `status:wartet`).
verfahren/aar/2026-08-09-refinement-und-betrieb.md 3 mirror-topology no 2026-08-09 0 **Datum:** 2026-08-09 · **Host/Stack:** git.lab, Gitea, K3s-Cluster (Authentik,
verfahren/aar/2026-08-09-refinement-und-betrieb.md 9 status no 2026-08-09 0 **Live und verifiziert:**
verfahren/aar/2026-08-09-refinement-und-betrieb.md 17 count no 2026-08-09 0 - 251 Commits über vier Repos auf 12:00-UTC-Zeitstempel umgeschrieben, Force-
verfahren/aar/2026-08-09-refinement-und-betrieb.md 18 status no 2026-08-09 0 gepusht, Mirrors und Flux verifiziert synchron
verfahren/aar/2026-08-09-refinement-und-betrieb.md 20 mirror-topology no 2026-08-09 0 vorher unbekannte Repos ohne Push-Mirror
verfahren/aar/2026-08-09-refinement-und-betrieb.md 21 component-ref;status;mirror-topology no 2026-08-09 0 - `game-operating` gespiegelt und secret-frei verifiziert (Coolify-
verfahren/aar/2026-08-09-refinement-und-betrieb.md 26 status no 2026-08-09 0 **Bewusst nicht live:**
verfahren/aar/2026-08-09-refinement-und-betrieb.md 33 component-ref;count;mirror-topology no 2026-08-09 0 - `gameserver` weiterhin ohne Mirror — zwei Repos gleichen Namens mit
verfahren/aar/2026-08-09-refinement-und-betrieb.md 40 status no 2026-08-09 0 | 1 | `matrix-recovery-flow`-Blueprint scheiterte seit Tagen bei jedem Lauf, während Flux grün meldete | HIGH | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 42 path-claim no 2026-08-09 0 | 3 | Web-Client sendete Fehlerberichte an `rageshakes.element.io` — die Desktop-Bereinigung vom 2026-08-01 hatte den Web-Build nie erreicht, weil der beim Bauen Elements eigene `develop/config.json` kopiert | HIGH | behoben, `"local"` gesetzt |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 43 component-ref;status;mirror-topology;issue-ref no 2026-08-09 0 | 4 | `game-operating` und `gameserver` ohne Push-Mirror; bei `gameserver` liegt auf Gitea ein anderer Stand als auf git.lab | MEDIUM | `game-operating` behoben, `gameserver` offen (management#32) |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 44 component-ref;mirror-topology no 2026-08-09 0 | 5 | Nach dem Privat-Stellen von `game-operating` auf Gitea übersprang die Stillstandsprüfung den Mirror-Abgleich klaglos, statt es als Befund zu werten | MEDIUM | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 46 count no 2026-08-09 0 | 7 | Gitops-Leitfaden 04 nannte 7 Themes mit teils erfundenen Namen (`Gruvbox Dark`, `Wal`); tatsächlich 17 | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 47 component-ref;date-claim no 2026-08-09 0 | 8 | threadnet-call-Doku beschrieb einen manuellen npm-Publish, der seit 2026-08-06 automatisiert läuft | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 48 component-ref;path-claim;mirror-topology no 2026-08-09 0 | 9 | `overmind.md` nannte „sechs gespiegelte Repos" — nach dem Mirror für `game-operating` sind es sieben | LOW | behoben |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 50 component-ref;version;issue-ref no 2026-08-09 0 | 11 | Tag-Push (Force, für die Historien-Anonymisierung) löste in ThreadNet-Web drei Release-Pipelines neu aus; nur weil die geschützten Registry-Variablen im Zeitfenster fehlten, wurde `v0.4.0` nicht mit heutigem Code überschrieben | HIGH | Sperre nachgezogen (ThreadNet-Web#14), Ursache war Zufall, nicht Schutz |
verfahren/aar/2026-08-09-refinement-und-betrieb.md 54 component-ref;mirror-topology no 2026-08-09 0 - **`game-operating` öffentlich auf Gitea** — Secret-Scan über alle fünf
verfahren/aar/2026-08-09-refinement-und-betrieb.md 60 issue-ref no 2026-08-09 0 - **Meine erste Diagnose zu #60** („Passwort-Wiederherstellung vermutlich tot")
verfahren/aar/2026-08-09-refinement-und-betrieb.md 68 issue-ref no 2026-08-09 0 Flux-Status.** Blueprint-Fehler #1/#2 waren nur so sichtbar — Flux, die
verfahren/aar/2026-08-09-refinement-und-betrieb.md 69 status no 2026-08-09 0 ConfigMap und der Cluster-Zustand insgesamt meldeten durchgehend grün.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 71 issue-ref no 2026-08-09 0 verdeckten Fehler #2 erst zugänglich gemacht — der reguläre Weg (Worker-Log)
verfahren/aar/2026-08-09-refinement-und-betrieb.md 74 issue-ref no 2026-08-09 0 zu glauben** hat Befund #3 aufgedeckt — die Annahme im Issue betraf nur den
verfahren/aar/2026-08-09-refinement-und-betrieb.md 75 path-claim no 2026-08-09 0 Desktop-Client, `config.json` auf dem Web-Server sagte etwas anderes.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 77 issue-ref no 2026-08-09 0 Befund #4 im ersten Lauf gefunden — eine dynamische Projektliste statt einer
verfahren/aar/2026-08-09-refinement-und-betrieb.md 78 count no 2026-08-09 0 im Code gepflegten hat zwei Repos zutage gebracht, die niemand auf dem
verfahren/aar/2026-08-09-refinement-und-betrieb.md 81 component-ref no 2026-08-09 0 Fehlmessung beim `game-operating`-Check aufgedeckt, bevor sie als „sauber"
verfahren/aar/2026-08-09-refinement-und-betrieb.md 84 status no 2026-08-09 0 251 Paaren über Tree *und* Commit-Nachricht verifiziert, keine Annahme.
verfahren/aar/2026-08-09-refinement-und-betrieb.md 90 component-ref;mirror-topology;issue-ref no 2026-08-09 0 - **`gameserver`-Mirror** — Standklärung nötig, management#32
verfahren/aar/2026-08-09-refinement-und-betrieb.md 91 path-claim no 2026-08-09 0 - **Stillstandsprüfung Authentik-Teil** — `AUTHENTIK_URL`/`AUTHENTIK_TOKEN`,
verfahren/aar/2026-08-09-refinement-und-betrieb.md 92 component-ref;issue-ref no 2026-08-09 0 management#31, bewusst aufgeschoben (sorb, 2026-08-09)
verfahren/aar/2026-08-09-refinement-und-betrieb.md 94 component-ref;issue-ref no 2026-08-09 0 entschieden, ThreadNet-Web#9
verfahren/aar/2026-08-09-refinement-und-betrieb.md 100 path-claim no 2026-08-09 0 Lehre aus der Retro, in `decisions/` dokumentiert
verfahren/deploy-uebergabe.md 6 date-claim;issue-ref no 2026-08-02 7 Eingeführt am 2026-08-01 nach dem Deploy der CVE-Pipeline (`gitops#47`), siehe
verfahren/deploy-uebergabe.md 11 count no 2026-08-02 7 1. Wer baut, öffnet **auf git.lab** ein Issue aus der Vorlage **Deploy-Übergabe**
verfahren/deploy-uebergabe.md 12 path-claim no 2026-08-02 7 (`.gitlab/issue_templates/Deploy-Übergabe.md`, im Feld *Description template*).
verfahren/deploy-uebergabe.md 51 issue-ref no 2026-08-02 7 `--force-recreate`. Details: `gitops#52`.
verfahren/deploy-uebergabe.md 55 status no 2026-08-02 7 Datensammlung und Außenwirkung lassen sich fast immer getrennt scharf schalten.
verfahren/deploy-uebergabe.md 71 status no 2026-08-02 7 - [ ] Nach dem Deploy **im Container** verifiziert, dass die neue Config aktiv ist
verfahren/deploy-uebergabe.md 83 mirror-topology no 2026-08-02 7 direkt auf dem Gitea-Mirror und werden vom nächsten Mirror-Lauf **kommentarlos
verfahren/deploy-uebergabe.md 89 path-claim;mirror-topology no 2026-08-02 7 `https://rohana.axion1337.de/sorb/<repo>/commit/<sha>.patch` ziehen
verfahren/deploy-uebergabe.md 92 path-claim no 2026-08-02 7 3. **CFGMON** vor dem nächsten Pull: `git fetch && git reset --hard origin/main`
verfahren/issue-migration/README.md 1 mirror-topology;issue-ref no 2026-08-01 8 # Issue-Migration Gitea → GitLab (gitops#48)
verfahren/issue-migration/README.md 3 status;path-claim no 2026-08-01 8 `migrate.py` überführt Issues (offen **und** geschlossen, inkl. Kommentare)
verfahren/issue-migration/README.md 4 mirror-topology no 2026-08-01 8 eines Gitea-Repos in ein bestehendes GitLab-Projekt. Einmal-Werkzeug für den
verfahren/issue-migration/README.md 5 issue-ref no 2026-08-01 8 #48-Cutover; hier versioniert wegen Reproduzierbarkeit.
verfahren/issue-migration/README.md 10 path-claim;mirror-topology no 2026-08-01 8 - **Idempotent** über Marker `<!-- gitea-migration: OWNER/REPO#N -->` in der
verfahren/issue-migration/README.md 16 mirror-topology no 2026-08-01 8 2026-08-01 sind die 9 Gitea-Labels + 5 `host:*` als Gruppe-13-Labels angelegt)
verfahren/issue-migration/README.md 17 status no 2026-08-01 8 - PRs werden ausgefiltert, geschlossene Issues nach Anlage geschlossen
verfahren/issue-migration/README.md 26 path-claim;mirror-topology no 2026-08-01 8 Tokens: `~/.config/gitea-rohana/token` (read:issue) und
verfahren/issue-migration/README.md 27 path-claim no 2026-08-01 8 `~/.config/gitlab-lab/token` (Admin) auf dem Mac.
verfahren/issue-migration/README.md 33 component-ref;count no 2026-08-01 8 | sorb/thread-net-git | Projekt 18 | ✅ 2026-08-01 (1 Issue, nummerngleich) |
verfahren/issue-migration/README.md 34 component-ref;count no 2026-08-01 8 | sorb/threadnet-call | Projekt 19 | ✅ 2026-08-01 (2 Issues, nummerngleich) |
verfahren/issue-migration/README.md 35 component-ref;count no 2026-08-01 8 | sorb/ThreadNet-Web | Projekt 16 | ✅ 2026-08-01 (9 Issues, nummerngleich) |
verfahren/issue-migration/README.md 36 component-ref;count no 2026-08-01 8 | sorb/axion1337.chat-gitops | Projekt 17 | ✅ 2026-08-01 (50 Issues, **Nummern verschoben**) |
verfahren/issue-migration/README.md 38 mirror-topology no 2026-08-01 8 ⚠️ **gitops-Nummern sind NICHT deckungsgleich**: Gitea hatte Lücken (PRs zählen
verfahren/issue-migration/README.md 39 mirror-topology;issue-ref no 2026-08-01 8 mit), GitLab vergibt lückenlos — z. B. Gitea#48 → GitLab#46, Gitea#51 → GitLab#49,
verfahren/issue-migration/README.md 40 mirror-topology;issue-ref no 2026-08-01 8 Gitea#52 → GitLab#50. Die verbindliche Zuordnung steht im Migrations-Fußtext
verfahren/issue-migration/README.md 41 mirror-topology no 2026-08-01 8 jedes GitLab-Issues (`Migriert aus Gitea …#N`); alte Commit-/Doku-Verweise auf
verfahren/issue-migration/README.md 42 mirror-topology no 2026-08-01 8 „gitops#N" meinen die **Gitea**-Nummer.
verfahren/issue-migration/README.md 44 mirror-topology;issue-ref no 2026-08-01 8 **Cutover-Nachschritte** (siehe gitops#48): Gitea-Issues schließen/als migriert
verfahren/issue-migration/README.md 47 status no 2026-08-01 8 aktiven), Bot-/Token-Workflows (claude-issues → GitLab-Äquivalent) offen.
verfahren/refinement.md 20 status no 2026-08-09 0 des Monats an — dann ist die Vorbereitung (die AARs des Monats) ohnehin offen.
verfahren/refinement.md 29 count no 2026-08-09 0 2. **WIP-Limit prüfen** — höchstens zwei Issues in `doing`. Ist es voll, wird nichts
verfahren/refinement.md 44 status no 2026-08-09 0 - Welche **ADRs** sind durch die Realität überholt (→ neues ADR, altes auf
verfahren/refinement.md 45 status no 2026-08-09 0 „abgelöst durch")?
verfahren/refinement.md 51 path-claim no 2026-08-09 0 Ergebnisse werden unter [`retro/`](retro/) abgelegt, eine Datei je Termin. Die
verfahren/refinement.md 59 status no 2026-08-09 0 ermöglicht, welche Lehren, was bleibt offen. **Offene Punkte aus einem AAR werden
verfahren/refinement.md 61 issue-ref no 2026-08-09 0 2026-08-01, nachgezogen als #14#16).
verfahren/refinement.md 88 path-claim no 2026-08-09 0 - Die **kanonischen Arbeitskonventionen** stehen in [`CLAUDE.md`](../CLAUDE.md) und
verfahren/refinement.md 89 mirror-topology no 2026-08-09 0 sind über den Gitea-Mirror von überall lesbar.
verfahren/retro/2026-08-09.md 13 count no 2026-08-09 0 **„Alles Offene wird ein Issue."** Das ist das Verfahren, das diesen Monat am
verfahren/retro/2026-08-09.md 15 count no 2026-08-09 0 vergessen, weil sie im Moment des Findens ein Issue bekamen — auch die, für die
verfahren/retro/2026-08-09.md 23 component-ref;issue-ref no 2026-08-09 0 management#15 und #20 lagen drei Tage ohne Spalte — das ist der beabsichtigte
verfahren/retro/2026-08-09.md 31 status;date-claim no 2026-08-09 0 muss. Genau deshalb hat eine Session am 2026-08-06 ein `status:offen` erfunden und
verfahren/retro/2026-08-09.md 40 status no 2026-08-09 0 ## 2. Welche ADRs sind durch die Realität überholt?
verfahren/retro/2026-08-09.md 42 status no 2026-08-09 0 **Keine überholt — aber eine Lücke.**
verfahren/retro/2026-08-09.md 45 date-claim no 2026-08-09 0 gebraucht.** Am 2026-08-07 wurde eine dauerhafte Prozessregel eingeführt (englische
verfahren/retro/2026-08-09.md 46 date-claim no 2026-08-09 0 Conventional Commits, Zeitstempel auf 12:00 UTC) und am 2026-08-09 rückwirkend auf
verfahren/retro/2026-08-09.md 47 count no 2026-08-09 0 251 Commits angewandt — eine **irreversible** Änderung an vier Repos, mit
verfahren/retro/2026-08-09.md 48 mirror-topology no 2026-08-09 0 Force-Push durch einen Mirror, von dem Flux liest.
verfahren/retro/2026-08-09.md 51 path-claim no 2026-08-09 0 ist das ein Lehrbuchfall. Stattdessen steht die Regel nur in der `CLAUDE.md` und
verfahren/retro/2026-08-09.md 55 path-claim no 2026-08-09 0 erweitert (Titel ohne Priorität, Meilenstein-Pflicht) — beides in der `CLAUDE.md`,
verfahren/retro/2026-08-09.md 57 path-claim no 2026-08-09 0 die `CLAUDE.md` die *Regel*. Es ist aber genau die Zwei-Orte-Konstruktion, die wir
verfahren/retro/2026-08-09.md 70 component-ref;status no 2026-08-09 0 | `build_embedded` (threadnet-call) | grün, seit jeher | lud **nie** ein Artefakt hoch, falscher Pfad |
verfahren/retro/2026-08-09.md 71 version;path-claim no 2026-08-09 0 | npm-Paket `0.19.2-threadnet.6` | veröffentlicht | 12,5 KB statt 12,8 MB, **ohne `dist/`** |
verfahren/retro/2026-08-09.md 72 status no 2026-08-09 0 | Blueprint `matrix-recovery-flow` | Flux grün, ConfigMap aktuell | seit Tagen bei **jedem** Lauf verworfen |
verfahren/retro/2026-08-09.md 73 mirror-topology no 2026-08-09 0 | gitops-Arbeitskopie | „normal" | `main` trackte **Gitea** — ein `git push` wäre in die verbotene Richtung gegangen |
verfahren/retro/2026-08-09.md 74 status no 2026-08-09 0 | Leere Pipelines | rot | **nichts kaputt** — der umgekehrte Fall, Rauschen, das rot abtrainiert |
verfahren/retro/2026-08-09.md 75 version no 2026-08-09 0 | Release-Pipeline auf `v0.4.0` | lief nach Tag-Push an | hätte ein veröffentlichtes Image überschrieben |
verfahren/retro/2026-08-09.md 87 issue-ref no 2026-08-09 0 Es gibt Issues für Einzelfälle — gitops#50 (Configs greifen nicht ohne Neustart),
verfahren/retro/2026-08-09.md 88 component-ref;mirror-topology;issue-ref no 2026-08-09 0 management#28 (Mirror-Ausfall unbemerkt), ThreadNet-Web#14 (Release überschreibbar,
verfahren/retro/2026-08-09.md 91 version no 2026-08-09 0 ⚠️ **Der letzte Fall ist der unangenehmste.** Dass `v0.4.0` nicht überschrieben
verfahren/retro/2026-08-09.md 99 mirror-topology no 2026-08-09 0 diesen Monat einzeln und mühsam gelernt haben — Blueprint-Status ≠ error, Mirror
verfahren/retro/2026-08-09.md 103 component-ref;date-claim;issue-ref no 2026-08-09 0 Das ist die Verallgemeinerung von management#28, das am 2026-08-06 bewusst nach
verfahren/retro/2026-08-09.md 112 component-ref;issue-ref no 2026-08-09 0 - `status:next`: management#15 und #20 (fällig 31.08.) — Zusage von sorb
verfahren/retro/2026-08-09.md 113 component-ref;issue-ref no 2026-08-09 0 - `status:wartet` entfernt bei threadnet-call#4 und ThreadNet-Web#11: der im Issue
verfahren/retro/2026-08-09.md 115 count no 2026-08-09 0 - **M5 — Härtung** angelegt, 14 Issues aus M1 verschoben. Trennlinie: *Ist etwas
verfahren/retro/2026-08-09.md 123 status no 2026-08-09 0 ## Offen aus dieser Retro
verfahren/stillstandspruefung.md 11 status no 2026-08-09 0 der bei jedem Lauf verworfen wurde, während Flux grün meldete.
verfahren/stillstandspruefung.md 23 component-ref;mirror-topology no 2026-08-09 0 | Repo ohne aktiven Push-Mirror | `game-operating` wurde angelegt und nie gespiegelt — auf Gitea existierte es nicht |
verfahren/stillstandspruefung.md 24 component-ref;mirror-topology;issue-ref no 2026-08-09 0 | Mirror-Drift | MIRROR-01 (management#28): fällt der Mirror aus, liefert Flux still den letzten Stand weiter |
verfahren/stillstandspruefung.md 25 component-ref;status no 2026-08-09 0 | Pipeline mit null Jobs | ThreadNet-Web 203/204, threadnet-call 187 — rot, ohne dass etwas kaputt war |
verfahren/stillstandspruefung.md 26 status no 2026-08-09 0 | Erfolgreicher Job ohne Artefakt | `build_embedded` lief seit jeher grün und lud **nichts** hoch |
verfahren/stillstandspruefung.md 27 version;path-claim no 2026-08-09 0 | npm-Paket zu klein | `0.19.2-threadnet.6`: 12,5 KB statt 12,8 MB, ohne `dist/` |
verfahren/stillstandspruefung.md 32 count no 2026-08-09 0 jahrelang durchrutscht. (Beim ersten Lauf kamen so zwei Projekte zum Vorschein,
verfahren/stillstandspruefung.md 37 component-ref no 2026-08-09 0 Geplanter CI-Job im management-Repo, zusätzlich von Hand über *Run pipeline*
verfahren/stillstandspruefung.md 38 status no 2026-08-09 0 auslösbar. Befunde färben die Pipeline **rot** — das ist bei uns die Alarmanlage,
verfahren/stillstandspruefung.md 39 path-claim no 2026-08-09 0 nicht ein zusätzlicher Meldeweg (siehe `gitops/CLAUDE.md` zur TURN-Rotation).
verfahren/stillstandspruefung.md 45 mirror-topology yes 2026-08-09 0 export GITEA_TOKEN=$(cat ~/.config/gitea-rohana/push-token) # fuer private Spiegel
verfahren/stillstandspruefung.md 53 component-ref;date-claim;mirror-topology no 2026-08-09 0 aufgefallen am 2026-08-09: `game-operating` wurde auf Gitea privat gestellt, und
verfahren/stillstandspruefung.md 54 count;mirror-topology no 2026-08-09 0 die Prüfung übersprang den Mirror-Abgleich klaglos. Ein Repo, das gespiegelt wird,
verfahren/textbloecke.md 5 status;path-claim;mirror-topology no 2026-08-06 3 Die Konventionen stehen kanonisch in [`CLAUDE.md`](../CLAUDE.md) — aber eine
verfahren/textbloecke.md 13 path-claim;date-claim;mirror-topology no 2026-08-06 3 passiert am 2026-08-02, als `gitops/CLAUDE.md` „keine Gitea-Ausnahme mehr" behauptete,
verfahren/textbloecke.md 14 component-ref;path-claim no 2026-08-06 3 während die `management/CLAUDE.md` zwei nannte.
verfahren/textbloecke.md 24 component-ref yes 2026-08-06 3 Lies zuerst CLAUDE.md im management-Repo auf git.lab und halte dich daran.
verfahren/textbloecke.md 25 status;mirror-topology yes 2026-08-06 3 Kanonisch ist git.lab; nie direkt nach Gitea pushen.
verfahren/textbloecke.md 27 count yes 2026-08-06 3 Bevor du ein Issue schließt oder darüber urteilst: vollständig lesen, inklusive
verfahren/textbloecke.md 30 status yes 2026-08-06 3 Verifiziert und vermutet klar trennen; fremde Messungen als fremde kennzeichnen.
verfahren/textbloecke.md 35 count;path-claim no 2026-08-06 3 > dem Pfad `sorb/Backlogs` statt nach dem Namen `Backlogs`; und ein Issue, von dem
verfahren/textbloecke.md 43 component-ref;mirror-topology yes 2026-08-06 3 Konventionen: CLAUDE.md im management-Repo — von hier lesbar über den Gitea-Mirror
verfahren/textbloecke.md 44 component-ref;mirror-topology yes 2026-08-06 3 rohana.axion1337.de/sorb/management. Dort NUR lesen, niemals hinpushen.
verfahren/textbloecke.md 48 status;version yes 2026-08-06 3 Ping auf 10.58.73.17 schlägt IMMER fehl (nur 443 + DNS offen), das ist kein
verfahren/textbloecke.md 58 count yes 2026-08-06 3 Öffne auf git.lab ein Issue aus der Vorlage "Deploy-Übergabe"
verfahren/textbloecke.md 64 status yes 2026-08-06 3 · Außenwirkung und Not-Aus · Rollback · bewusst offen Gelassenes.
verfahren/textbloecke.md 79 status;mirror-topology yes 2026-08-06 3 - Alle Commits über git.lab gepusht, kein Rest im Arbeitsverzeichnis, Mirror grün.
verfahren/textbloecke.md 80 count yes 2026-08-06 3 - Jeder offene Punkt und Nebenbefund ist ein Issue — nichts bleibt nur im Chat.
vision/axion1337-chat.md 3 date-claim;issue-ref no 2026-08-05 4 > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/axion1337-chat.md 23 status no 2026-08-05 4 **Kontrolliert wachsend** (entschieden 2026-08-06). Offen für Neue, aber **jeder
vision/axion1337-chat.md 37 status no 2026-08-05 4 Nicht mehr offen: Das Rebranding wird in **M4 zu Ende gebracht**, nicht separat
vision/axion1337-chat.md 38 path-claim no 2026-08-05 4 terminiert — siehe [`threadnet.md`](threadnet.md).
vision/homelab.md 3 date-claim;issue-ref no 2026-08-05 4 > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/homelab.md 33 component-ref;status;issue-ref no 2026-08-05 4 [#10](https://git.lab/axion1337.chat/management/-/issues/10) — offen bleibt
vision/homelab.md 35 mirror-topology no 2026-08-05 4 Gitea-Datenbank). Siehe dort.
vision/threadnet.md 3 date-claim;issue-ref no 2026-08-09 0 > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17).
vision/threadnet.md 9 component-ref no 2026-08-09 0 wiederverwendbare Produkte gedacht: ThreadNet-Web (Element-Web-Fork mit
vision/threadnet.md 10 component-ref no 2026-08-09 0 Discord-artiger Raumliste), threadnet-call (Call-Fork), thread-net-git,
vision/threadnet.md 11 component-ref no 2026-08-09 0 threadnet-operating.
vision/threadnet.md 37 status no 2026-08-09 0 und entscheiden, ob bereinigt (History-Rewrite) oder bewusst akzeptiert wird.
vision/threadnet.md 46 component-ref;issue-ref no 2026-08-09 0 „Produktreife ThreadNet" (ThreadNet-Web#6, #7, #10).
Can't render this file because it contains an unexpected character in line 7 and column 89.
+162
View File
@@ -0,0 +1,162 @@
repo path bytes last_commit_date last_author days_since_change last_commit
ThreadNet-Web .github/PULL_REQUEST_TEMPLATE.md 703 2026-05-10 sorB 91 3da3635
ThreadNet-Web AUTHORS.rst 851 2026-05-10 sorB 91 3da3635
ThreadNet-Web CHANGELOG.md 182546 2026-05-10 sorB 91 3da3635
ThreadNet-Web CONTRIBUTING.md 13373 2026-05-10 sorB 91 3da3635
ThreadNet-Web README.md 6711 2026-07-29 Thore Cimbal 11 45fb329
ThreadNet-Web apps/desktop/CHANGELOG.md 644932 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/desktop/README.md 7216 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/desktop/scripts/hak/README.md 3662 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/README.md 5820 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/playwright/e2e/crypto/test_indexeddb_cryptostore_dump/README.md 2202 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/playwright/e2e/read-receipts/readme.md 815 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/playwright/plugins/oauth_server/README.md 1046 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/src/customisations/README.md 28 2026-05-10 sorB 91 3da3635
ThreadNet-Web apps/web/test/unit-tests/README.md 156 2026-05-10 sorB 91 3da3635
ThreadNet-Web code_style.md 21876 2026-05-10 sorB 91 3da3635
ThreadNet-Web developer_guide.md 4827 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/MVVM-v1.md 2827 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/MVVM.md 12199 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/app-load.md 2415 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/axion1337-fork.md 8709 2026-08-06 Thore Cimbal 3 965c456
ThreadNet-Web docs/betas.md 1600 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/changelogs/CHANGELOG-2022.md 235803 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/changelogs/CHANGELOG-2023.md 121310 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/changelogs/CHANGELOG-pre-2022.md 391016 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/choosing-an-issue.md 3431 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/ciderEditor.md 4201 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/config.md 32308 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/custom-home.md 1602 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/customisations.md 3519 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/debugging.md 1210 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/deprecated-modules.md 3341 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/e2ee.md 1963 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/feature-flags.md 4719 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/features/README.md 335 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/features/composer.md 2166 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/features/keyboardShortcuts.md 2113 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/gdb.md 2053 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/generated/[id].md 18 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/icons.md 1531 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/index.md 30 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/install.md 4864 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/jitsi-dev.md 5546 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/jitsi.md 5028 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/kubernetes.md 5307 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/labs.md 7029 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/local-echo-dev.md 2182 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/media-handling.md 1246 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/memory-profiles-and-leaks.md 2463 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/monorepo.md 3036 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/native-node-modules.md 6055 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/oidc.md 1018 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/packaging.md 2402 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/playwright.md 12304 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/pr-previews.md 1376 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/readme-element-desktop.md 43 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/readme-element-web.md 39 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/readme-shared-components.md 57 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/release.md 12112 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/review.md 5674 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/room-list-store.md 10033 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/scrolling.md 4499 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/settings.md 12478 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/skinning.md 1329 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/theming.md 4287 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/translating-dev.md 7460 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/translating.md 1895 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/updates.md 821 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/usercontent.md 1585 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/widget-layouts.md 2911 2026-05-10 sorB 91 3da3635
ThreadNet-Web docs/windows-requirements.md 1870 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/module-api/README.md 2710 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/module-api/element-web-module-api.api.md 16996 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/playwright-common/README.md 1591 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/shared-components/README.md 10820 2026-05-10 sorB 91 3da3635
ThreadNet-Web packages/shared-components/static/README.md 143 2026-05-10 sorB 91 3da3635
axion1337.chat-gitops .devcontainer/README.md 9057 2026-07-28 Thore Cimbal 12 4a3d7c7
axion1337.chat-gitops CLAUDE.md 24219 2026-08-09 Thore Cimbal 0 c341faf
axion1337.chat-gitops README.md 15564 2026-08-01 Thore Cimbal 8 cdecb00
axion1337.chat-gitops docs/TASKS.md 27770 2026-07-31 Thore Cimbal 9 8ad9215
axion1337.chat-gitops docs/deployment-guides/01-turn-server-setup.md 1412 2026-05-14 Scrublord MacBad 87 aee9a34
axion1337.chat-gitops docs/deployment-guides/02-authentik-identity-provider.md 5116 2026-08-06 Thore Cimbal 3 a81ea0d
axion1337.chat-gitops docs/deployment-guides/03-monitoring-integration.md 1466 2026-05-14 Scrublord MacBad 87 aee9a34
axion1337.chat-gitops docs/deployment-guides/04-element-customization.md 6138 2026-08-09 Thore Cimbal 0 9d9a87b
axion1337.chat-gitops docs/deployment-guides/05-room-policies.md 1956 2026-05-14 Scrublord MacBad 87 aee9a34
axion1337.chat-gitops docs/deployment-guides/06-moderation-content-scanning.md 12934 2026-07-29 Thore Cimbal 11 11a079d
axion1337.chat-gitops docs/deployment-guides/07-host-maintenance-notifications.md 8516 2026-07-29 Thore Cimbal 11 3767720
axion1337.chat-gitops docs/deployment-guides/08-concierge-gaeste-einladungen.md 4629 2026-08-09 Thore Cimbal 0 f6d2761
axion1337.chat-gitops docs/deployment-guides/README.md 5330 2026-08-09 Thore Cimbal 0 151ef3c
axion1337.chat-gitops docs/install.md 5531 2026-07-28 Thore Cimbal 12 9607687
axion1337.chat-gitops docs/oldwiki/authentik.md 13683 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/oldwiki/fix report mrtc.md 17869 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/oldwiki/home.md 428825 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/oldwiki/invitereg.md 32278 2026-05-14 Scrublord MacBad 87 b1247b4
axion1337.chat-gitops docs/ops-configmap-sync.md 10560 2026-05-14 Scrublord MacBad 87 5f50a60
axion1337.chat-gitops docs/setup/README-Element-Setup.md 4391 2026-04-23 Scrublord MacBad 108 659acdf
axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-CREATE-INVITATION-FLOW.md 5769 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-FIX-TEMPLATE.md 8163 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-INVITATION-FLOW-FIX.md 6492 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/DIAGNOSTIK-AUTHENTIK-FLOW.md 7598 2026-05-18 Scrublord MacBad 83 5bbb03b
axion1337.chat-gitops docs/troubleshooting/README.md 4634 2026-07-29 Thore Cimbal 11 932443d
management .gitlab/issue_templates/Deploy-Übergabe.md 2623 2026-08-02 Thore Cimbal 7 3fe05e7
management CLAUDE.md 12223 2026-08-09 Thore Cimbal 0 2b20f65
management README.md 4516 2026-08-02 Thore Cimbal 7 3fe05e7
management decisions/0001-gitlab-kanonisch-push-mirror.md 1398 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/0002-issues-und-management-ins-lab.md 1903 2026-08-02 Thore Cimbal 7 3fe05e7
management decisions/0003-cve-meldeweg-aggregiert.md 1303 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/0004-site-to-site-vpn-hetzner-lab.md 4421 2026-08-02 Thore Cimbal 7 3fe05e7
management decisions/0005-pm-framework-kanban.md 2255 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/0006-wikis-konsolidieren-docusaurus.md 3340 2026-08-02 Thore Cimbal 7 9c3d252
management decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3990 2026-08-02 Thore Cimbal 7 b6aaad7
management decisions/0008-agenten-sessions-root-aequivalent.md 4397 2026-08-06 Thore Cimbal 3 ae62727
management decisions/0009-commit-konventionen-und-historien-anonymisierung.md 4759 2026-08-09 Thore Cimbal 0 0fde69a
management decisions/README.md 965 2026-08-01 Thore Cimbal 8 fdf30d4
management decisions/template.md 504 2026-08-01 Thore Cimbal 8 fdf30d4
management hosts/cfgmon.md 18064 2026-08-09 Thore Cimbal 0 d7db111
management hosts/game.md 4019 2026-08-02 Thore Cimbal 7 9e0af13
management hosts/matrix.md 11581 2026-08-09 Thore Cimbal 0 d7db111
management hosts/overmind.md 9039 2026-08-09 Thore Cimbal 0 87f8ba3
management roadmap.md 5161 2026-08-09 Thore Cimbal 0 d7db111
management shared/branding.md 12156 2026-08-09 Thore Cimbal 0 d7db111
management shared/commit-zuordnung-2026-08-07.md 13852 2026-08-09 Thore Cimbal 0 46c61e1
management shared/lab-netzwerk.md 7592 2026-08-02 Thore Cimbal 7 164d96d
management shared/zone-axion1337.md 6720 2026-08-06 Thore Cimbal 3 d019bfe
management verfahren/README.md 1282 2026-08-06 Thore Cimbal 3 ae62727
management verfahren/aar-vorlage.md 1507 2026-08-01 Thore Cimbal 8 3e81f40
management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 4354 2026-08-01 Thore Cimbal 8 3e81f40
management verfahren/aar/2026-08-01-labnet02-cfgmon.md 11181 2026-08-01 Thore Cimbal 8 97fe9e0
management verfahren/aar/2026-08-01-labnet02-lab.md 5519 2026-08-01 Thore Cimbal 8 830c740
management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 10569 2026-08-09 Thore Cimbal 0 d7db111
management verfahren/aar/2026-08-09-refinement-und-betrieb.md 6674 2026-08-09 Thore Cimbal 0 2f012a6
management verfahren/deploy-uebergabe.md 4557 2026-08-02 Thore Cimbal 7 3fe05e7
management verfahren/issue-migration/README.md 2276 2026-08-01 Thore Cimbal 8 0f3f155
management verfahren/refinement.md 4432 2026-08-09 Thore Cimbal 0 0fde69a
management verfahren/retro/2026-08-09.md 5944 2026-08-09 Thore Cimbal 0 0fde69a
management verfahren/stillstandspruefung.md 3316 2026-08-09 Thore Cimbal 0 d4004ee
management verfahren/textbloecke.md 5035 2026-08-06 Thore Cimbal 3 ae62727
management vision/axion1337-chat.md 1701 2026-08-05 Thore Cimbal 4 d31fef4
management vision/homelab.md 1538 2026-08-05 Thore Cimbal 4 d31fef4
management vision/threadnet.md 2180 2026-08-09 Thore Cimbal 0 d7db111
thread-net-git README.md 4336 2026-08-02 Thore Cimbal 7 2f4a15c
threadnet-call .github/PULL_REQUEST_TEMPLATE.md 1473 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call CONTRIBUTING.md 4110 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call README.md 14981 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call WIDGET_TEST.md 972 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call config/otel_dev/README.md 1265 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/README.md 338 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/_developer.md 4082 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/axion1337-fork.md 7851 2026-08-09 Thore Cimbal 0 d13cce73
threadnet-call docs/controls.md 2646 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/embedded_standalone.md 6544 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/linking.md 2484 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/linking_concept_reasoning.md 2027 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/self_hosting.md 12374 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call docs/url_params.md 27605 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call embedded/ios/README.md 931 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call embedded/web/README.md 925 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call sdk/README.md 2371 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call src/mediapipe/imageSegmenter/README.md 385 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-call src/sound/LICENCE.md 536 2026-07-31 Thore Cimbal 9 8fb630cf
threadnet-operating README.md 2026 2026-08-02 Thore Cimbal 7 32f89af
threadnet-operating monitoring/README.md 6555 2026-08-01 sorb 8 0bd77e2
1 repo path bytes last_commit_date last_author days_since_change last_commit
2 ThreadNet-Web .github/PULL_REQUEST_TEMPLATE.md 703 2026-05-10 sorB 91 3da3635
3 ThreadNet-Web AUTHORS.rst 851 2026-05-10 sorB 91 3da3635
4 ThreadNet-Web CHANGELOG.md 182546 2026-05-10 sorB 91 3da3635
5 ThreadNet-Web CONTRIBUTING.md 13373 2026-05-10 sorB 91 3da3635
6 ThreadNet-Web README.md 6711 2026-07-29 Thore Cimbal 11 45fb329
7 ThreadNet-Web apps/desktop/CHANGELOG.md 644932 2026-05-10 sorB 91 3da3635
8 ThreadNet-Web apps/desktop/README.md 7216 2026-05-10 sorB 91 3da3635
9 ThreadNet-Web apps/desktop/scripts/hak/README.md 3662 2026-05-10 sorB 91 3da3635
10 ThreadNet-Web apps/web/README.md 5820 2026-05-10 sorB 91 3da3635
11 ThreadNet-Web apps/web/playwright/e2e/crypto/test_indexeddb_cryptostore_dump/README.md 2202 2026-05-10 sorB 91 3da3635
12 ThreadNet-Web apps/web/playwright/e2e/read-receipts/readme.md 815 2026-05-10 sorB 91 3da3635
13 ThreadNet-Web apps/web/playwright/plugins/oauth_server/README.md 1046 2026-05-10 sorB 91 3da3635
14 ThreadNet-Web apps/web/src/customisations/README.md 28 2026-05-10 sorB 91 3da3635
15 ThreadNet-Web apps/web/test/unit-tests/README.md 156 2026-05-10 sorB 91 3da3635
16 ThreadNet-Web code_style.md 21876 2026-05-10 sorB 91 3da3635
17 ThreadNet-Web developer_guide.md 4827 2026-05-10 sorB 91 3da3635
18 ThreadNet-Web docs/MVVM-v1.md 2827 2026-05-10 sorB 91 3da3635
19 ThreadNet-Web docs/MVVM.md 12199 2026-05-10 sorB 91 3da3635
20 ThreadNet-Web docs/app-load.md 2415 2026-05-10 sorB 91 3da3635
21 ThreadNet-Web docs/axion1337-fork.md 8709 2026-08-06 Thore Cimbal 3 965c456
22 ThreadNet-Web docs/betas.md 1600 2026-05-10 sorB 91 3da3635
23 ThreadNet-Web docs/changelogs/CHANGELOG-2022.md 235803 2026-05-10 sorB 91 3da3635
24 ThreadNet-Web docs/changelogs/CHANGELOG-2023.md 121310 2026-05-10 sorB 91 3da3635
25 ThreadNet-Web docs/changelogs/CHANGELOG-pre-2022.md 391016 2026-05-10 sorB 91 3da3635
26 ThreadNet-Web docs/choosing-an-issue.md 3431 2026-05-10 sorB 91 3da3635
27 ThreadNet-Web docs/ciderEditor.md 4201 2026-05-10 sorB 91 3da3635
28 ThreadNet-Web docs/config.md 32308 2026-05-10 sorB 91 3da3635
29 ThreadNet-Web docs/custom-home.md 1602 2026-05-10 sorB 91 3da3635
30 ThreadNet-Web docs/customisations.md 3519 2026-05-10 sorB 91 3da3635
31 ThreadNet-Web docs/debugging.md 1210 2026-05-10 sorB 91 3da3635
32 ThreadNet-Web docs/deprecated-modules.md 3341 2026-05-10 sorB 91 3da3635
33 ThreadNet-Web docs/e2ee.md 1963 2026-05-10 sorB 91 3da3635
34 ThreadNet-Web docs/feature-flags.md 4719 2026-05-10 sorB 91 3da3635
35 ThreadNet-Web docs/features/README.md 335 2026-05-10 sorB 91 3da3635
36 ThreadNet-Web docs/features/composer.md 2166 2026-05-10 sorB 91 3da3635
37 ThreadNet-Web docs/features/keyboardShortcuts.md 2113 2026-05-10 sorB 91 3da3635
38 ThreadNet-Web docs/gdb.md 2053 2026-05-10 sorB 91 3da3635
39 ThreadNet-Web docs/generated/[id].md 18 2026-05-10 sorB 91 3da3635
40 ThreadNet-Web docs/icons.md 1531 2026-05-10 sorB 91 3da3635
41 ThreadNet-Web docs/index.md 30 2026-05-10 sorB 91 3da3635
42 ThreadNet-Web docs/install.md 4864 2026-05-10 sorB 91 3da3635
43 ThreadNet-Web docs/jitsi-dev.md 5546 2026-05-10 sorB 91 3da3635
44 ThreadNet-Web docs/jitsi.md 5028 2026-05-10 sorB 91 3da3635
45 ThreadNet-Web docs/kubernetes.md 5307 2026-05-10 sorB 91 3da3635
46 ThreadNet-Web docs/labs.md 7029 2026-05-10 sorB 91 3da3635
47 ThreadNet-Web docs/local-echo-dev.md 2182 2026-05-10 sorB 91 3da3635
48 ThreadNet-Web docs/media-handling.md 1246 2026-05-10 sorB 91 3da3635
49 ThreadNet-Web docs/memory-profiles-and-leaks.md 2463 2026-05-10 sorB 91 3da3635
50 ThreadNet-Web docs/monorepo.md 3036 2026-05-10 sorB 91 3da3635
51 ThreadNet-Web docs/native-node-modules.md 6055 2026-05-10 sorB 91 3da3635
52 ThreadNet-Web docs/oidc.md 1018 2026-05-10 sorB 91 3da3635
53 ThreadNet-Web docs/packaging.md 2402 2026-05-10 sorB 91 3da3635
54 ThreadNet-Web docs/playwright.md 12304 2026-05-10 sorB 91 3da3635
55 ThreadNet-Web docs/pr-previews.md 1376 2026-05-10 sorB 91 3da3635
56 ThreadNet-Web docs/readme-element-desktop.md 43 2026-05-10 sorB 91 3da3635
57 ThreadNet-Web docs/readme-element-web.md 39 2026-05-10 sorB 91 3da3635
58 ThreadNet-Web docs/readme-shared-components.md 57 2026-05-10 sorB 91 3da3635
59 ThreadNet-Web docs/release.md 12112 2026-05-10 sorB 91 3da3635
60 ThreadNet-Web docs/review.md 5674 2026-05-10 sorB 91 3da3635
61 ThreadNet-Web docs/room-list-store.md 10033 2026-05-10 sorB 91 3da3635
62 ThreadNet-Web docs/scrolling.md 4499 2026-05-10 sorB 91 3da3635
63 ThreadNet-Web docs/settings.md 12478 2026-05-10 sorB 91 3da3635
64 ThreadNet-Web docs/skinning.md 1329 2026-05-10 sorB 91 3da3635
65 ThreadNet-Web docs/theming.md 4287 2026-05-10 sorB 91 3da3635
66 ThreadNet-Web docs/translating-dev.md 7460 2026-05-10 sorB 91 3da3635
67 ThreadNet-Web docs/translating.md 1895 2026-05-10 sorB 91 3da3635
68 ThreadNet-Web docs/updates.md 821 2026-05-10 sorB 91 3da3635
69 ThreadNet-Web docs/usercontent.md 1585 2026-05-10 sorB 91 3da3635
70 ThreadNet-Web docs/widget-layouts.md 2911 2026-05-10 sorB 91 3da3635
71 ThreadNet-Web docs/windows-requirements.md 1870 2026-05-10 sorB 91 3da3635
72 ThreadNet-Web packages/module-api/README.md 2710 2026-05-10 sorB 91 3da3635
73 ThreadNet-Web packages/module-api/element-web-module-api.api.md 16996 2026-05-10 sorB 91 3da3635
74 ThreadNet-Web packages/playwright-common/README.md 1591 2026-05-10 sorB 91 3da3635
75 ThreadNet-Web packages/shared-components/README.md 10820 2026-05-10 sorB 91 3da3635
76 ThreadNet-Web packages/shared-components/static/README.md 143 2026-05-10 sorB 91 3da3635
77 axion1337.chat-gitops .devcontainer/README.md 9057 2026-07-28 Thore Cimbal 12 4a3d7c7
78 axion1337.chat-gitops CLAUDE.md 24219 2026-08-09 Thore Cimbal 0 c341faf
79 axion1337.chat-gitops README.md 15564 2026-08-01 Thore Cimbal 8 cdecb00
80 axion1337.chat-gitops docs/TASKS.md 27770 2026-07-31 Thore Cimbal 9 8ad9215
81 axion1337.chat-gitops docs/deployment-guides/01-turn-server-setup.md 1412 2026-05-14 Scrublord MacBad 87 aee9a34
82 axion1337.chat-gitops docs/deployment-guides/02-authentik-identity-provider.md 5116 2026-08-06 Thore Cimbal 3 a81ea0d
83 axion1337.chat-gitops docs/deployment-guides/03-monitoring-integration.md 1466 2026-05-14 Scrublord MacBad 87 aee9a34
84 axion1337.chat-gitops docs/deployment-guides/04-element-customization.md 6138 2026-08-09 Thore Cimbal 0 9d9a87b
85 axion1337.chat-gitops docs/deployment-guides/05-room-policies.md 1956 2026-05-14 Scrublord MacBad 87 aee9a34
86 axion1337.chat-gitops docs/deployment-guides/06-moderation-content-scanning.md 12934 2026-07-29 Thore Cimbal 11 11a079d
87 axion1337.chat-gitops docs/deployment-guides/07-host-maintenance-notifications.md 8516 2026-07-29 Thore Cimbal 11 3767720
88 axion1337.chat-gitops docs/deployment-guides/08-concierge-gaeste-einladungen.md 4629 2026-08-09 Thore Cimbal 0 f6d2761
89 axion1337.chat-gitops docs/deployment-guides/README.md 5330 2026-08-09 Thore Cimbal 0 151ef3c
90 axion1337.chat-gitops docs/install.md 5531 2026-07-28 Thore Cimbal 12 9607687
91 axion1337.chat-gitops docs/oldwiki/authentik.md 13683 2026-05-14 Scrublord MacBad 87 b1247b4
92 axion1337.chat-gitops docs/oldwiki/fix report mrtc.md 17869 2026-05-14 Scrublord MacBad 87 b1247b4
93 axion1337.chat-gitops docs/oldwiki/home.md 428825 2026-05-14 Scrublord MacBad 87 b1247b4
94 axion1337.chat-gitops docs/oldwiki/invitereg.md 32278 2026-05-14 Scrublord MacBad 87 b1247b4
95 axion1337.chat-gitops docs/ops-configmap-sync.md 10560 2026-05-14 Scrublord MacBad 87 5f50a60
96 axion1337.chat-gitops docs/setup/README-Element-Setup.md 4391 2026-04-23 Scrublord MacBad 108 659acdf
97 axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-CREATE-INVITATION-FLOW.md 5769 2026-05-18 Scrublord MacBad 83 5bbb03b
98 axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-FIX-TEMPLATE.md 8163 2026-05-18 Scrublord MacBad 83 5bbb03b
99 axion1337.chat-gitops docs/troubleshooting/AUTHENTIK-INVITATION-FLOW-FIX.md 6492 2026-05-18 Scrublord MacBad 83 5bbb03b
100 axion1337.chat-gitops docs/troubleshooting/DIAGNOSTIK-AUTHENTIK-FLOW.md 7598 2026-05-18 Scrublord MacBad 83 5bbb03b
101 axion1337.chat-gitops docs/troubleshooting/README.md 4634 2026-07-29 Thore Cimbal 11 932443d
102 management .gitlab/issue_templates/Deploy-Übergabe.md 2623 2026-08-02 Thore Cimbal 7 3fe05e7
103 management CLAUDE.md 12223 2026-08-09 Thore Cimbal 0 2b20f65
104 management README.md 4516 2026-08-02 Thore Cimbal 7 3fe05e7
105 management decisions/0001-gitlab-kanonisch-push-mirror.md 1398 2026-08-01 Thore Cimbal 8 fdf30d4
106 management decisions/0002-issues-und-management-ins-lab.md 1903 2026-08-02 Thore Cimbal 7 3fe05e7
107 management decisions/0003-cve-meldeweg-aggregiert.md 1303 2026-08-01 Thore Cimbal 8 fdf30d4
108 management decisions/0004-site-to-site-vpn-hetzner-lab.md 4421 2026-08-02 Thore Cimbal 7 3fe05e7
109 management decisions/0005-pm-framework-kanban.md 2255 2026-08-01 Thore Cimbal 8 fdf30d4
110 management decisions/0006-wikis-konsolidieren-docusaurus.md 3340 2026-08-02 Thore Cimbal 7 9c3d252
111 management decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md 3990 2026-08-02 Thore Cimbal 7 b6aaad7
112 management decisions/0008-agenten-sessions-root-aequivalent.md 4397 2026-08-06 Thore Cimbal 3 ae62727
113 management decisions/0009-commit-konventionen-und-historien-anonymisierung.md 4759 2026-08-09 Thore Cimbal 0 0fde69a
114 management decisions/README.md 965 2026-08-01 Thore Cimbal 8 fdf30d4
115 management decisions/template.md 504 2026-08-01 Thore Cimbal 8 fdf30d4
116 management hosts/cfgmon.md 18064 2026-08-09 Thore Cimbal 0 d7db111
117 management hosts/game.md 4019 2026-08-02 Thore Cimbal 7 9e0af13
118 management hosts/matrix.md 11581 2026-08-09 Thore Cimbal 0 d7db111
119 management hosts/overmind.md 9039 2026-08-09 Thore Cimbal 0 87f8ba3
120 management roadmap.md 5161 2026-08-09 Thore Cimbal 0 d7db111
121 management shared/branding.md 12156 2026-08-09 Thore Cimbal 0 d7db111
122 management shared/commit-zuordnung-2026-08-07.md 13852 2026-08-09 Thore Cimbal 0 46c61e1
123 management shared/lab-netzwerk.md 7592 2026-08-02 Thore Cimbal 7 164d96d
124 management shared/zone-axion1337.md 6720 2026-08-06 Thore Cimbal 3 d019bfe
125 management verfahren/README.md 1282 2026-08-06 Thore Cimbal 3 ae62727
126 management verfahren/aar-vorlage.md 1507 2026-08-01 Thore Cimbal 8 3e81f40
127 management verfahren/aar/2026-08-01-cve-pipeline-gitops47.md 4354 2026-08-01 Thore Cimbal 8 3e81f40
128 management verfahren/aar/2026-08-01-labnet02-cfgmon.md 11181 2026-08-01 Thore Cimbal 8 97fe9e0
129 management verfahren/aar/2026-08-01-labnet02-lab.md 5519 2026-08-01 Thore Cimbal 8 830c740
130 management verfahren/aar/2026-08-02-wiki-und-desktop-clients.md 10569 2026-08-09 Thore Cimbal 0 d7db111
131 management verfahren/aar/2026-08-09-refinement-und-betrieb.md 6674 2026-08-09 Thore Cimbal 0 2f012a6
132 management verfahren/deploy-uebergabe.md 4557 2026-08-02 Thore Cimbal 7 3fe05e7
133 management verfahren/issue-migration/README.md 2276 2026-08-01 Thore Cimbal 8 0f3f155
134 management verfahren/refinement.md 4432 2026-08-09 Thore Cimbal 0 0fde69a
135 management verfahren/retro/2026-08-09.md 5944 2026-08-09 Thore Cimbal 0 0fde69a
136 management verfahren/stillstandspruefung.md 3316 2026-08-09 Thore Cimbal 0 d4004ee
137 management verfahren/textbloecke.md 5035 2026-08-06 Thore Cimbal 3 ae62727
138 management vision/axion1337-chat.md 1701 2026-08-05 Thore Cimbal 4 d31fef4
139 management vision/homelab.md 1538 2026-08-05 Thore Cimbal 4 d31fef4
140 management vision/threadnet.md 2180 2026-08-09 Thore Cimbal 0 d7db111
141 thread-net-git README.md 4336 2026-08-02 Thore Cimbal 7 2f4a15c
142 threadnet-call .github/PULL_REQUEST_TEMPLATE.md 1473 2026-07-31 Thore Cimbal 9 8fb630cf
143 threadnet-call CONTRIBUTING.md 4110 2026-07-31 Thore Cimbal 9 8fb630cf
144 threadnet-call README.md 14981 2026-07-31 Thore Cimbal 9 8fb630cf
145 threadnet-call WIDGET_TEST.md 972 2026-07-31 Thore Cimbal 9 8fb630cf
146 threadnet-call config/otel_dev/README.md 1265 2026-07-31 Thore Cimbal 9 8fb630cf
147 threadnet-call docs/README.md 338 2026-07-31 Thore Cimbal 9 8fb630cf
148 threadnet-call docs/_developer.md 4082 2026-07-31 Thore Cimbal 9 8fb630cf
149 threadnet-call docs/axion1337-fork.md 7851 2026-08-09 Thore Cimbal 0 d13cce73
150 threadnet-call docs/controls.md 2646 2026-07-31 Thore Cimbal 9 8fb630cf
151 threadnet-call docs/embedded_standalone.md 6544 2026-07-31 Thore Cimbal 9 8fb630cf
152 threadnet-call docs/linking.md 2484 2026-07-31 Thore Cimbal 9 8fb630cf
153 threadnet-call docs/linking_concept_reasoning.md 2027 2026-07-31 Thore Cimbal 9 8fb630cf
154 threadnet-call docs/self_hosting.md 12374 2026-07-31 Thore Cimbal 9 8fb630cf
155 threadnet-call docs/url_params.md 27605 2026-07-31 Thore Cimbal 9 8fb630cf
156 threadnet-call embedded/ios/README.md 931 2026-07-31 Thore Cimbal 9 8fb630cf
157 threadnet-call embedded/web/README.md 925 2026-07-31 Thore Cimbal 9 8fb630cf
158 threadnet-call sdk/README.md 2371 2026-07-31 Thore Cimbal 9 8fb630cf
159 threadnet-call src/mediapipe/imageSegmenter/README.md 385 2026-07-31 Thore Cimbal 9 8fb630cf
160 threadnet-call src/sound/LICENCE.md 536 2026-07-31 Thore Cimbal 9 8fb630cf
161 threadnet-operating README.md 2026 2026-08-02 Thore Cimbal 7 32f89af
162 threadnet-operating monitoring/README.md 6555 2026-08-01 sorb 8 0bd77e2
+127
View File
@@ -0,0 +1,127 @@
repo scope metric value
ThreadNet-Web 2026-05 commits 3
ThreadNet-Web 2026-05 commits_docs_only 0
ThreadNet-Web 2026-05 commits_touching_code 3
ThreadNet-Web 2026-05 commits_touching_docs 2
ThreadNet-Web 2026-07 commits 28
ThreadNet-Web 2026-07 commits_docs_only 3
ThreadNet-Web 2026-07 commits_touching_code 23
ThreadNet-Web 2026-07 commits_touching_docs 4
ThreadNet-Web 2026-08 commits 21
ThreadNet-Web 2026-08 commits_docs_only 2
ThreadNet-Web 2026-08 commits_touching_code 19
ThreadNet-Web 2026-08 commits_touching_docs 2
ThreadNet-Web ALL active_days 10
ThreadNet-Web ALL commits 52
ThreadNet-Web ALL commits_docs_only 5
ThreadNet-Web ALL commits_touching_code 45
ThreadNet-Web ALL commits_touching_docs 8
ThreadNet-Web ALL days_since_last_commit 0
ThreadNet-Web ALL first_commit 2026-05-10
ThreadNet-Web ALL last_commit 2026-08-09
ThreadNet-Web ALL max_gap_days 79
ThreadNet-Web ALL max_gap_from 2026-05-10
ThreadNet-Web ALL max_gap_to 2026-07-28
axion1337.chat-gitops 2026-04 commits 107
axion1337.chat-gitops 2026-04 commits_docs_only 4
axion1337.chat-gitops 2026-04 commits_touching_code 103
axion1337.chat-gitops 2026-04 commits_touching_docs 5
axion1337.chat-gitops 2026-05 commits 40
axion1337.chat-gitops 2026-05 commits_docs_only 9
axion1337.chat-gitops 2026-05 commits_touching_code 31
axion1337.chat-gitops 2026-05 commits_touching_docs 12
axion1337.chat-gitops 2026-07 commits 74
axion1337.chat-gitops 2026-07 commits_docs_only 21
axion1337.chat-gitops 2026-07 commits_touching_code 51
axion1337.chat-gitops 2026-07 commits_touching_docs 27
axion1337.chat-gitops 2026-08 commits 48
axion1337.chat-gitops 2026-08 commits_docs_only 11
axion1337.chat-gitops 2026-08 commits_touching_code 32
axion1337.chat-gitops 2026-08 commits_touching_docs 13
axion1337.chat-gitops ALL active_days 23
axion1337.chat-gitops ALL commits 269
axion1337.chat-gitops ALL commits_docs_only 45
axion1337.chat-gitops ALL commits_touching_code 217
axion1337.chat-gitops ALL commits_touching_docs 57
axion1337.chat-gitops ALL days_since_last_commit 0
axion1337.chat-gitops ALL first_commit 2026-04-21
axion1337.chat-gitops ALL last_commit 2026-08-09
axion1337.chat-gitops ALL max_gap_days 70
axion1337.chat-gitops ALL max_gap_from 2026-05-18
axion1337.chat-gitops ALL max_gap_to 2026-07-27
management 2026-07 commits 23
management 2026-07 commits_docs_only 22
management 2026-07 commits_touching_code 1
management 2026-07 commits_touching_docs 23
management 2026-08 commits 63
management 2026-08 commits_docs_only 58
management 2026-08 commits_touching_code 5
management 2026-08 commits_touching_docs 63
management ALL active_days 8
management ALL commits 86
management ALL commits_docs_only 80
management ALL commits_touching_code 6
management ALL commits_touching_docs 86
management ALL days_since_last_commit 0
management ALL first_commit 2026-07-30
management ALL last_commit 2026-08-09
management ALL max_gap_days 3
management ALL max_gap_from 2026-08-02
management ALL max_gap_to 2026-08-05
thread-net-git 2026-07 commits 10
thread-net-git 2026-07 commits_docs_only 1
thread-net-git 2026-07 commits_touching_code 9
thread-net-git 2026-07 commits_touching_docs 3
thread-net-git 2026-08 commits 1
thread-net-git 2026-08 commits_docs_only 1
thread-net-git 2026-08 commits_touching_code 0
thread-net-git 2026-08 commits_touching_docs 1
thread-net-git ALL active_days 3
thread-net-git ALL commits 11
thread-net-git ALL commits_docs_only 2
thread-net-git ALL commits_touching_code 9
thread-net-git ALL commits_touching_docs 4
thread-net-git ALL days_since_last_commit 7
thread-net-git ALL first_commit 2026-07-30
thread-net-git ALL last_commit 2026-08-02
thread-net-git ALL max_gap_days 2
thread-net-git ALL max_gap_from 2026-07-31
thread-net-git ALL max_gap_to 2026-08-02
threadnet-call 2026-07 commits 1
threadnet-call 2026-07 commits_docs_only 0
threadnet-call 2026-07 commits_touching_code 1
threadnet-call 2026-07 commits_touching_docs 1
threadnet-call 2026-08 commits 11
threadnet-call 2026-08 commits_docs_only 3
threadnet-call 2026-08 commits_touching_code 8
threadnet-call 2026-08 commits_touching_docs 4
threadnet-call ALL active_days 4
threadnet-call ALL commits 12
threadnet-call ALL commits_docs_only 3
threadnet-call ALL commits_touching_code 9
threadnet-call ALL commits_touching_docs 5
threadnet-call ALL days_since_last_commit 0
threadnet-call ALL first_commit 2026-07-31
threadnet-call ALL last_commit 2026-08-09
threadnet-call ALL max_gap_days 6
threadnet-call ALL max_gap_from 2026-07-31
threadnet-call ALL max_gap_to 2026-08-06
threadnet-operating 2026-07 commits 12
threadnet-operating 2026-07 commits_docs_only 4
threadnet-operating 2026-07 commits_touching_code 7
threadnet-operating 2026-07 commits_touching_docs 5
threadnet-operating 2026-08 commits 9
threadnet-operating 2026-08 commits_docs_only 1
threadnet-operating 2026-08 commits_touching_code 8
threadnet-operating 2026-08 commits_touching_docs 2
threadnet-operating ALL active_days 4
threadnet-operating ALL commits 21
threadnet-operating ALL commits_docs_only 5
threadnet-operating ALL commits_touching_code 15
threadnet-operating ALL commits_touching_docs 7
threadnet-operating ALL days_since_last_commit 7
threadnet-operating ALL first_commit 2026-07-30
threadnet-operating ALL last_commit 2026-08-02
threadnet-operating ALL max_gap_days 1
threadnet-operating ALL max_gap_from 2026-07-30
threadnet-operating ALL max_gap_to 2026-07-31
1 repo scope metric value
2 ThreadNet-Web 2026-05 commits 3
3 ThreadNet-Web 2026-05 commits_docs_only 0
4 ThreadNet-Web 2026-05 commits_touching_code 3
5 ThreadNet-Web 2026-05 commits_touching_docs 2
6 ThreadNet-Web 2026-07 commits 28
7 ThreadNet-Web 2026-07 commits_docs_only 3
8 ThreadNet-Web 2026-07 commits_touching_code 23
9 ThreadNet-Web 2026-07 commits_touching_docs 4
10 ThreadNet-Web 2026-08 commits 21
11 ThreadNet-Web 2026-08 commits_docs_only 2
12 ThreadNet-Web 2026-08 commits_touching_code 19
13 ThreadNet-Web 2026-08 commits_touching_docs 2
14 ThreadNet-Web ALL active_days 10
15 ThreadNet-Web ALL commits 52
16 ThreadNet-Web ALL commits_docs_only 5
17 ThreadNet-Web ALL commits_touching_code 45
18 ThreadNet-Web ALL commits_touching_docs 8
19 ThreadNet-Web ALL days_since_last_commit 0
20 ThreadNet-Web ALL first_commit 2026-05-10
21 ThreadNet-Web ALL last_commit 2026-08-09
22 ThreadNet-Web ALL max_gap_days 79
23 ThreadNet-Web ALL max_gap_from 2026-05-10
24 ThreadNet-Web ALL max_gap_to 2026-07-28
25 axion1337.chat-gitops 2026-04 commits 107
26 axion1337.chat-gitops 2026-04 commits_docs_only 4
27 axion1337.chat-gitops 2026-04 commits_touching_code 103
28 axion1337.chat-gitops 2026-04 commits_touching_docs 5
29 axion1337.chat-gitops 2026-05 commits 40
30 axion1337.chat-gitops 2026-05 commits_docs_only 9
31 axion1337.chat-gitops 2026-05 commits_touching_code 31
32 axion1337.chat-gitops 2026-05 commits_touching_docs 12
33 axion1337.chat-gitops 2026-07 commits 74
34 axion1337.chat-gitops 2026-07 commits_docs_only 21
35 axion1337.chat-gitops 2026-07 commits_touching_code 51
36 axion1337.chat-gitops 2026-07 commits_touching_docs 27
37 axion1337.chat-gitops 2026-08 commits 48
38 axion1337.chat-gitops 2026-08 commits_docs_only 11
39 axion1337.chat-gitops 2026-08 commits_touching_code 32
40 axion1337.chat-gitops 2026-08 commits_touching_docs 13
41 axion1337.chat-gitops ALL active_days 23
42 axion1337.chat-gitops ALL commits 269
43 axion1337.chat-gitops ALL commits_docs_only 45
44 axion1337.chat-gitops ALL commits_touching_code 217
45 axion1337.chat-gitops ALL commits_touching_docs 57
46 axion1337.chat-gitops ALL days_since_last_commit 0
47 axion1337.chat-gitops ALL first_commit 2026-04-21
48 axion1337.chat-gitops ALL last_commit 2026-08-09
49 axion1337.chat-gitops ALL max_gap_days 70
50 axion1337.chat-gitops ALL max_gap_from 2026-05-18
51 axion1337.chat-gitops ALL max_gap_to 2026-07-27
52 management 2026-07 commits 23
53 management 2026-07 commits_docs_only 22
54 management 2026-07 commits_touching_code 1
55 management 2026-07 commits_touching_docs 23
56 management 2026-08 commits 63
57 management 2026-08 commits_docs_only 58
58 management 2026-08 commits_touching_code 5
59 management 2026-08 commits_touching_docs 63
60 management ALL active_days 8
61 management ALL commits 86
62 management ALL commits_docs_only 80
63 management ALL commits_touching_code 6
64 management ALL commits_touching_docs 86
65 management ALL days_since_last_commit 0
66 management ALL first_commit 2026-07-30
67 management ALL last_commit 2026-08-09
68 management ALL max_gap_days 3
69 management ALL max_gap_from 2026-08-02
70 management ALL max_gap_to 2026-08-05
71 thread-net-git 2026-07 commits 10
72 thread-net-git 2026-07 commits_docs_only 1
73 thread-net-git 2026-07 commits_touching_code 9
74 thread-net-git 2026-07 commits_touching_docs 3
75 thread-net-git 2026-08 commits 1
76 thread-net-git 2026-08 commits_docs_only 1
77 thread-net-git 2026-08 commits_touching_code 0
78 thread-net-git 2026-08 commits_touching_docs 1
79 thread-net-git ALL active_days 3
80 thread-net-git ALL commits 11
81 thread-net-git ALL commits_docs_only 2
82 thread-net-git ALL commits_touching_code 9
83 thread-net-git ALL commits_touching_docs 4
84 thread-net-git ALL days_since_last_commit 7
85 thread-net-git ALL first_commit 2026-07-30
86 thread-net-git ALL last_commit 2026-08-02
87 thread-net-git ALL max_gap_days 2
88 thread-net-git ALL max_gap_from 2026-07-31
89 thread-net-git ALL max_gap_to 2026-08-02
90 threadnet-call 2026-07 commits 1
91 threadnet-call 2026-07 commits_docs_only 0
92 threadnet-call 2026-07 commits_touching_code 1
93 threadnet-call 2026-07 commits_touching_docs 1
94 threadnet-call 2026-08 commits 11
95 threadnet-call 2026-08 commits_docs_only 3
96 threadnet-call 2026-08 commits_touching_code 8
97 threadnet-call 2026-08 commits_touching_docs 4
98 threadnet-call ALL active_days 4
99 threadnet-call ALL commits 12
100 threadnet-call ALL commits_docs_only 3
101 threadnet-call ALL commits_touching_code 9
102 threadnet-call ALL commits_touching_docs 5
103 threadnet-call ALL days_since_last_commit 0
104 threadnet-call ALL first_commit 2026-07-31
105 threadnet-call ALL last_commit 2026-08-09
106 threadnet-call ALL max_gap_days 6
107 threadnet-call ALL max_gap_from 2026-07-31
108 threadnet-call ALL max_gap_to 2026-08-06
109 threadnet-operating 2026-07 commits 12
110 threadnet-operating 2026-07 commits_docs_only 4
111 threadnet-operating 2026-07 commits_touching_code 7
112 threadnet-operating 2026-07 commits_touching_docs 5
113 threadnet-operating 2026-08 commits 9
114 threadnet-operating 2026-08 commits_docs_only 1
115 threadnet-operating 2026-08 commits_touching_code 8
116 threadnet-operating 2026-08 commits_touching_docs 2
117 threadnet-operating ALL active_days 4
118 threadnet-operating ALL commits 21
119 threadnet-operating ALL commits_docs_only 5
120 threadnet-operating ALL commits_touching_code 15
121 threadnet-operating ALL commits_touching_docs 7
122 threadnet-operating ALL days_since_last_commit 7
123 threadnet-operating ALL first_commit 2026-07-30
124 threadnet-operating ALL last_commit 2026-08-02
125 threadnet-operating ALL max_gap_days 1
126 threadnet-operating ALL max_gap_from 2026-07-30
127 threadnet-operating ALL max_gap_to 2026-07-31
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+544
View File
@@ -0,0 +1,544 @@
repo path line marker text blame_date days_since_blame blame_commit blame_author
ThreadNet-Web apps/desktop/README.md 58 TODO [TODO: add support for fetching develop builds, arbitrary URLs and arbitrary paths] 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/README.md 64 TODO TODO: List native pre-requisites 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/playwright/e2e/launch/launch.spec.ts 69 XXX // XXX: this test works fine locally but in CI the app start races with the test plumbing up the stdout/stderr pipes 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/scripts/copy-res.ts 57 XXX // XXX: Use a debounce because for some reason if we read the language 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/src/protocol.ts 28 XXX // XXX: passing args to protocol handlers only works on Windows, so unpackaged deep-linking 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/src/vectormenu.ts 132 XXX // XXX: vectorConfig won't have defaults applied to it so we need to duplicate them here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/desktop/src/webcontents-handler.ts 136 XXX // XXX: We cannot easily save a blob from the main process as 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/.eslintrc.cjs 118 XXX // XXX: Temporarily allow these as they are not available via the main export 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/composer/RTE.spec.ts 36 TODO // TODO add tests for rich text mode 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/composer/RTE.spec.ts 90 TODO // TODO add tests for rich text mode 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/devtools/devtools.spec.ts 25 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/devtools/upgraderoom.spec.ts 33 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/editing/editing.spec.ts 275 XXX axe.disableRules("color-contrast"); // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/editing/editing.spec.ts 295 XXX await app.getComposerField().hover(); // XXX: move the hover to get rid of the "Edit" tooltip 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/invite/decline-and-block-invite-dialog.spec.ts 23 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/invite/invite-dialog.spec.ts 139 TODO // TODO: implement the test on room-header.spec.ts 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/location/location.spec.ts 81 XXX "color-contrast", // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/location/location.spec.ts 82 XXX "region", // XXX: ContextMenu managed=false does not provide a role. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/pinned-messages/index.ts 67 TODO // TODO: without this wait, some tests that send lots of messages flake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/read-receipts/high-level.spec.ts 207 TODO // TODO: I (andyb) think this will fall in an encrypted room 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/read-receipts/high-level.spec.ts 250 TODO // TODO: I (andyb) think this will fall in an encrypted room 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/read-receipts/index.ts 354 TODO // TODO: without this wait, some tests that send lots of messages flake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/room/create-room.spec.ts 36 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/room/create-room.spec.ts 116 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/general-room-settings-tab.spec.ts 38 XXX axe.disableRules("color-contrast"); // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/notifications/notifications-settings-2-tab.spec.ts 21 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/notifications/notifications-settings-tab.spec.ts 21 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts 52 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts 71 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/settings/room-settings/room-video-tab.spec.ts 37 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 295 XXX // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 319 TODO await expect(page.locator(".mx_SpacePanel:not(.collapsed)")).toBeVisible(); // TODO: replace :not() selector 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 363 XXX // XXX: We have some known contrast issues here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/spaces.spec.ts 399 XXX axe.disableRules("color-contrast"); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spaces/threads-activity-centre/index.ts 204 TODO // TODO: without this wait, some tests that send lots of messages flake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/spotlight/spotlight.spec.ts 191 TODO // TODO: We currently cant test finding rooms on other homeservers/other protocols 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/threads/threads.spec.ts 107 TODO // TODO: remove this after fixing the issue of ReadReceiptGroup being hidden on the bubble layout 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/threads/threads.spec.ts 111 TODO // TODO: enable this after fixing the issue of ReadReceiptGroup being hidden on the bubble layout 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/threads/threads.spec.ts 216 XXX // XXX: one would expect this redaction to be shown in the thread the message was in, but due to redactions 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/timeline/timeline.spec.ts 104 XXX // XXX: If we send the second event too quickly, there won't be 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/timeline/timeline.spec.ts 123 XXX // XXX: If we send the second event too quickly, there won't be 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/timeline/timeline.spec.ts 1346 XXX // XXX: This test doesn't actually work because the service worker relies on IndexedDB, which Playwright forces 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/utils.ts 24 FIXME * FIXME this does not do what it is supposed to do, and I think it is unfixable. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/e2e/widgets/permissions-dialog.spec.ts 91 XXX axe.disableRules(["color-contrast", "nested-interactive"]); // XXX: Inheriting colour contrast issues from room view. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/pages/ElementAppPage.ts 304 TODO * TODO: fix this so that it works correctly if, say, the member list was open instead of the room info panel. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/pages/bot.ts 243 XXX // XXX: workaround https://github.com/element-hq/element-web/issues/26755 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/playwright/plugins/oauth_server/index.ts 54 TODO // TODO: validate that the request carries an auth header which matches the access token we issued above 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 189 FIXME /* FIXME THEME - Tint by CSS rather than referencing a duplicate asset */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 582 XXX /* XXX: Our button style are a mess: buttons that happen to appear in dialogs get special styles applied 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 741 TODO /* TODO: Review mx_GeneralButton usage to see if it can use a different class */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/_common.pcss 911 TODO /* TODO: Review mx_MessageTimestamp usage after finishing migration of timeline tiles to shared components. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/structures/_FilePanel.pcss 26 FIXME /* FIXME: rather than having EventTile's default CSS be for MessagePanel, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/structures/_SpacePanel.pcss 206 TODO transition: all 0.2s ease-in-out; /* TODO transition */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/auth/_InteractiveAuthEntryComponents.pcss 40 XXX /* XXX: This should be a common button class */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_CreateCrossSigningDialog.pcss 23 TODO /* TODO: Consider setting this for all dialog titles. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_CreateSecretStorageDialog.pcss 47 TODO /* TODO: Consider setting this for all dialog titles. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_CreateSecretStorageDialog.pcss 57 FIXME /* FIXME: plinth colour in new theme(s). background-color: $accent; */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/dialogs/security/_RestoreKeyBackupDialog.pcss 15 FIXME /* FIXME: plinth colour in new theme(s). background-color: $accent; */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_Dropdown.pcss 88 XXX /* XXX: hack to prevent text box being too big and pushing */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_Field.pcss 8 TODO /* TODO: Consider unifying with general input styles in _light.pcss */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_GenericEventListSummary.pcss 19 TODO line-height: $font-30px; /* TODO: Use a variable */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_GenericEventListSummary.pcss 52 TODO order: 9; /* TODO: Remove */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/elements/_RichText.pcss 1 XXX /* XXX: bleurgh, what is this? These classes totally break the component */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/messages/_MJitsiWidgetEvent.pcss 11 XXX color: $header-panel-text-primary-color; /* XXX: Variable abuse */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/messages/_MessageActionBar.pcss 52 TODO /* TODO: use a new class name instead */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/messages/_ThreadActionBar.pcss 43 TODO /* TODO: use a new class name instead */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_AppsDrawer.pcss 11 TODO --minWidth: 240px; /* TODO this should be 300px but that's too large */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventBubbleTile.pcss 301 TODO /* TODO: Use a common class name instead */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 22 TODO clear: both; /* TODO: check if this is necessary */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 152 TODO /* TODO: adjust the values for IRC layout */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 209 TODO /* TODO: ultimately we probably want some transition on here. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 551 TODO /* TODO: check if this would be necessary; */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_EventTile.pcss 563 TODO /* Reset default values. TODO: remove */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_RoomPreviewCard.pcss 75 XXX /* XXX Remove this when video rooms leave beta */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/rooms/_ThreadSummary.pcss 45 XXX /* XXX: We use an HEXA `transparent` to work around a Safari <15.4 bug */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/css/views/voip/_LegacyCallView.pcss 16 XXX /* XXX: PiPContainer sets pointer-events: none - should probably be set back in a better place */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/decoder-ring/decoder.js 90 TODO // TODO: expiry/retry logic here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-dark/css/_legacy-dark.pcss 180 TODO $button-danger-disabled-bg-color: #f5b6bb; /* TODO: Verify color */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-light/css/_legacy-light.pcss 12 TODO TODO: Consider putting all emoji fonts to the end rather than the front. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-light/css/_legacy-light.pcss 185 XXX $video-feed-secondary-background: #394049; /* XXX: Color from dark theme */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/legacy-light/css/_legacy-light.pcss 262 TODO $button-danger-disabled-bg-color: #f5b6bb; /* TODO: Verify color */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light-custom/css/_custom.pcss 130 TODO * TODO: Add link 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light/css/_light.pcss 12 TODO TODO: Consider putting all emoji fonts to the end rather than the front. */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light/css/_light.pcss 234 TODO $button-danger-disabled-bg-color: #f5b6bb; /* TODO: Verify color */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/res/themes/light/css/_light.pcss 305 XXX $video-feed-secondary-background: #394049; /* XXX: Color from dark theme */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/@types/matrix-js-sdk.d.ts 48 XXX // XXX unspecced usages of `m.room.*` events 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Avatar.ts 106 XXX // XXX: Ideally we'd clear this cache when the theme changes 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Avatar.ts 112 XXX if (!s) return ""; // XXX: should never happen but empirically does by evidence of a rageshake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Avatar.ts 144 XXX // XXX: We should find out what causes the name to sometimes be falsy. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/DateUtils.ts 39 XXX // XXX: Ideally we could just specify `hour12: boolean` but it has issues on Chrome in the `en` locale 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/HtmlUtils.tsx 361 XXX // XXX: We sanitize the HTML whilst also highlighting its text nodes, to avoid accidentally trying 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/HtmlUtils.tsx 365 XXX // XXX: hacky bodge to temporarily apply a textFilter to the sanitizeParams structure. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/IdentityAuthClient.tsx 40 XXX // XXX: We shouldn't have to create a whole new MatrixClient just to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/IdentityAuthClient.tsx 170 XXX // XXX: The spec is `token`, but we used `access_token` for a Sydent release. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/LegacyCallHandler.tsx 528 XXX // XXX: this is used by the IPC into Electron to keep device awake 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/LegacyCallHandler.tsx 586 TODO // TODO: We should either do away with these or figure out a copy for each code (expect user_hangup...) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Lifecycle.ts 104 XXX // XXX we might want to fire a new event here to let the app know that the login failed ? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Lifecycle.ts 1136 XXX // XXX: Defer this so that it doesn't race with MatrixChat unmounting the world by going to /#/welcome 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Login.ts 151 XXX // XXX: Synapse historically wanted `number` and not `phone` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Login.ts 273 TODO // TODO: should we prompt here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/MatrixClientPeg.ts 474 XXX // XXX: what is our initial pagination token?! it somehow needs to be synchronised with /sync. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/MediaDeviceHandler.ts 18 XXX // XXX: MediaDeviceKind is a union type, so we make our own enum 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 183 DEPRECATED * DEPRECATED. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 279 XXX // XXX: This is destructive 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 286 XXX // XXX: This is destructive 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Modal.tsx 347 XXX // XXX: This is destructive 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 176 XXX // XXX: exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 270 XXX // XXX: Exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 331 TODO // TODO: Support alternative branding in messaging 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 431 XXX // XXX: Exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 502 XXX // XXX: exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 547 TODO // TODO: Use the call_id to get the *correct* call. We assume there is only one call per room here. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Notifier.ts 557 XXX // XXX: Should use parseCallNotificationContent once the types are exported. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Registration.tsx 25 TODO // TODO: Update as needed for https://github.com/matrix-org/matrix-doc/issues/1514 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/Resend.ts 48 XXX // XXX: temporary logging to try to diagnose 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/RoomNotifs.ts 75 XXX // XXX: We have to assume the default is to notify for all messages 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarAuthClient.ts 22 TODO // TODO: Generify the name of this class and all components within - it's not just for Scalar. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarAuthClient.ts 239 XXX method: "GET", // XXX: Actions shouldn't be GET requests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 10 TODO // TODO: Generify the name of this and all components within - it's not just for scalar. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 192 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 211 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 505 XXX // XXX: This gets the raw event object (I think because we can't 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/ScalarMessaging.ts 868 TODO // TODO -- Scalar postMessage API should be namespaced with event.data.api field 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/SendHistoryManager.ts 30 TODO // TODO: Performance issues? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/SlidingSyncManager.ts 336 TODO // the request change we have sent out. TODO: this may not be true if you concurrently subscribe to a room :/ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 65 FIXME // FIXME: Find a better way to determine this from the event? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 112 XXX // XXX: SYJS-16 "sender is sometimes null for join messages" 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 538 XXX // XXX: This is also surely broken for i18n 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/TextForEvent.tsx 904 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/UserActivity.ts 180 XXX // XXX: exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcutUtils.ts 69 XXX // XXX: This keyboard shortcut isn't manually added to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 160 TODO // TODO: We should figure out what to do with the keyboard shortcuts that are not handled by KeybindingManager 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 165 TODO // TODO: We should figure out what to do with the keyboard shortcuts that are not handled by KeybindingManager 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 325 TODO // TODO: TravisR will fix this nightmare when the new version of the SettingsStore becomes a thing 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/accessibility/KeyboardShortcuts.ts 326 XXX // XXX: Exported for tests 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/async-components/views/dialogs/security/ImportE2eKeysDialog.tsx 110 TODO // TODO: it would probably be nice to give some feedback about what we've imported here. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/autocomplete/UserProvider.tsx 87 TODO // TODO: lazyload if we have no ev.sender room member? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ContextMenu.tsx 176 XXX // XXX: This isn't pretty but the only way to allow opening a different context menu on right click whilst 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/EmbeddedPage.tsx 112 HACK // HACK: Workaround for the context's MatrixClient not being set up at render time. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/EmbeddedPage.tsx 119 HACK // HACK: Workaround for the context's MatrixClient not updating. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/IndicatorScrollbar.tsx 155 HACK // HACK: We increase the amount of scroll to counteract smooth scrolling browsers. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LegacyCallEventGrouper.ts 95 FIXME // FIXME: Find a better way to determine this from the event? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LoggedInView.tsx 228 TODO // TODO: In a future app release, remove support for legacy key. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LoggedInView.tsx 298 TODO // TODO decrease this once Spaces launches as it'll no longer need to include the 56px Community Panel 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/LoggedInView.tsx 677 XXX // XXX: Forwarding Dead keys in this way does not work as intended but better to at least 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 176 TODO * TODO: this doesn't work well, because updates to React state are not instantaneous, meaning that if several 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 235 XXX * XXX it's unclear if this is ever cleared, so what happens if the user logs out and then logs back in? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 308 TODO // TODO: show an error screen, rather than a spinner of doom 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 548 XXX // XXX: This is a very unreliable way to detect whether or not the the devtools are open 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 684 XXX // XXX: This is a collection of several hacks to solve a minor problem. We want to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 699 XXX localStorage.setItem("mx_is_url", fullUrl); // XXX: Do we still need this? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1226 TODO // TODO: Immutable DMs replaces this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1423 HACK // HACK: This is a pretty brutal way of threading the invite back through 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1542 XXX // XXX: fix this properly by having Lifecycle not emit OnLoggedIn when it knows it is about to emit a 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1943 TODO // TODO: Handle encoded room/event IDs: https://github.com/vector-im/element-web/issues/9149 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 1979 TODO // TODO: Replace oob_data with the threepidInvite (which has the same info). 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MatrixChat.tsx 2153 XXX // XXX: workaround for https://github.com/vector-im/element-web/issues/11643 causing a login-loop 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/MessagePanel.tsx 481 TODO // TODO: Implement granular (per-room) hide options 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RightPanel.tsx 126 XXX // XXX: There are three different ways of 'closing' this panel depending on what state 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomSearchView.tsx 48 XXX // XXX: todo: merge overlapping results somehow? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomSearchView.tsx 49 XXX // XXX: why doesn't searching on name work? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomSearchView.tsx 222 XXX // XXX: can this ever happen? It will make the result count 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/RoomView.tsx 2356 XXX // XXX: in future we could give the option of a 'Preview' button which lets them view anyway. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 46 XXX * XXX: It's likely this is unnecessary and can be derived from 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 573 TODO // TODO: Document what magic number 0.9 is doing 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 648 TODO // TODO: do a binary search here, as items are sorted by offsetTop 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ScrollPanel.tsx 933 TODO // TODO: the classnames on the div and ol could do with being updated to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/SpaceHierarchy.tsx 405 XXX // XXX: This logic is duplicated from the JS SDK which would normally decide what the name is. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/SpaceHierarchy.tsx 619 TODO setRooms([]); // TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/TimelinePanel.tsx 262 XXX // XXX: we could track RM per TimelineSet rather than per Room. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/TimelinePanel.tsx 872 XXX // XXX: roomReadMarkerTsMap not updated here so it is now inconsistent. Replace 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/TimelinePanel.tsx 894 TODO // TODO: We should restrict this to only events in our timeline, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/UserView.tsx 51 XXX // XXX: We shouldn't need to null check the userId here, but we declare 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ViewSource.tsx 44 TODO // TODO: refresh the "Event ID:" modal header 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/ViewSource.tsx 61 FIXME const decryptedEventSource = mxEvent.clearEvent; // FIXME: clearEvent is private 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/structures/auth/Login.tsx 290 TODO // TODO: instead hide the Register button if registration is disabled by checking with the server, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/viewmodels/right_panel/user_info/admin/UserInfoMuteButtonViewModel.tsx 56 FIXME // FIXME: per the spec, if `events_default` is unset, it defaults to zero. If 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/auth/CaptchaForm.tsx 68 TODO // TODO: Remove this when the "mobile_register" page is retired. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/auth/InteractiveAuthEntryComponents.tsx 346 XXX // XXX: replace with StyledCheckbox 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/auth/InteractiveAuthEntryComponents.tsx 567 TODO 1, // TODO: Multiple send attempts? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/beacon/RoomCallBanner.tsx 46 TODO // TODO matrix rtc 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/beta/BetaCard.tsx 25 XXX // XXX: Keep this around for re-use in future Betas 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 147 XXX private reactButtonRef = createRef<any>(); // XXX Ref to a functional component 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 510 XXX // XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 545 XXX // XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/MessageContextMenu.tsx 599 XXX // XXX: Typescript signature for AccessibleButton doesn't work properly for non-inputs like `a` 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/context_menus/WidgetContextMenu.tsx 109 XXX // XXX: won't i18n well, but looks like widget api only support 'message'? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/BaseDialog.tsx 106 XXX // XXX: The contract on MatrixClientContext says it is only available within a LoggedInView subtree, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/BaseDialog.tsx 175 XXX // XXX: We can't import ModuleAPI here because it causes a dependency cycle - hack and 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/BetaFeedbackDialog.tsx 20 XXX // XXX: Keep this around for re-use in future Betas 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/DeactivateAccountDialog.tsx 118 XXX // XXX: this should be returning a promise to maintain the state inside the state machine correct 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/DeactivateAccountDialog.tsx 188 XXX // XXX: onUIAuthComplete breaches the expected method contract, it gets away with it because it 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/FeedbackDialog.tsx 48 TODO // TODO: Handle rejection. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/GenericFeatureFeedbackDialog.tsx 41 TODO // TODO: Handle rejection. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/ModalWidgetDialog.tsx 149 TODO // TODO: Replace these with proper widget params 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/ModuleUiDialog.tsx 77 XXX // XXX: we have to fudge the types here a little as the react-sdk-module-api lacks React 19 support 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/PollHistoryDialog.tsx 29 TODO // @TODO hide dialog title somehow 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/ScrollableBaseModal.tsx 40 XXX // XXX: The contract on MatrixClientContext says it is only available within a LoggedInView subtree, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/UserSettingsDialog.tsx 265 XXX // XXX: SDKContext is provided within the LoggedInView subtree. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/WidgetCapabilitiesPromptDialog.tsx 30 TODO widgetKind: WidgetKind; // TODO: Refactor into the Widget class 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/dialogs/spotlight/SpotlightDialog.tsx 282 TODO // TODO we may want to put invites in their own list 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/directory/NetworkDropdown.tsx 91 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/directory/NetworkDropdown.tsx 107 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/AppPermission.tsx 66 HACK // HACK: We're relying on the query params when we should be relying on the widget's `data`. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/AppTile.tsx 552 XXX // XXX: This removes persistent elements from the DOM entirely, which feels like 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/AppTile.tsx 667 TODO // TODO replace with full screen interactions 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/ImageView.tsx 127 XXX // XXX: Refs to functional components 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/RoomAliasField.tsx 152 XXX // XXX: FIXME https://github.com/matrix-org/matrix-doc/issues/668 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/SSOButtons.tsx 126 TODO // TODO fallback icon 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/Spinner.tsx 17 XXX onFinished: any; // XXX: Spinner pretends to be a dialog so it must accept an onFinished, but it never calls it 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/elements/TruncatedList.tsx 45 XXX // XXX: I'm not sure why anything would pass null into this, it seems 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/IBodyProps.ts 33 TODO onMessageAllowed?: () => void; // TODO: Docs 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MImageBody.tsx 216 FIXME // FIXME: we let images grow as wide as you like, rather than capped to 800x600. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MImageBody.tsx 534 XXX // XXX: Arguably we may want a different label when the animated image is WEBP and not GIF 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MImageBody.tsx 584 HACK {/* HACK: This div fills out space while the image loads, to prevent scroll jumps */} 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/messages/MessageEvent.tsx 293 TODO // TODO: move to eventTypes when location sharing spec stabilises 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/polls/pollHistory/PollHistory.tsx 62 TODO {/* @TODO this probably needs some style */} 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/RoomSummaryCardView.tsx 134 XXX // XXX: this name should be part of the view model 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/UserInfo.tsx 100 FIXME // FIXME: per the spec, if `events_default` is unset, it defaults to zero. If 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/VerificationPanel.tsx 90 HACK // HACK: This is a terrible idea. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/right_panel/VerificationPanel.tsx 186 TODO // TODO: add way to open camera to scan a QR code 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/AliasSettings.tsx 217 TODO // TODO: Add error handling based upon server validation 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/AliasSettings.tsx 261 TODO // TODO: In future, we should probably be making sure that the alias actually belongs 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/RoomProfileSettings.tsx 53 TODO // TODO: Merge with ProfileSettings? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/RoomProfileSettings.tsx 141 TODO // TODO: What do we do about errors? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/room_settings/RoomProfileSettings.tsx 162 XXX // XXX: Note that we deliberately send an empty string on an empty topic rather 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/BasicMessageComposer.tsx 417 XXX // XXX: needed when going up and down in editing messages ... not sure why yet 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/BasicMessageComposer.tsx 751 TODO // TODO: does this allow us to get rid of EditorStateTransfer? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/EmojiButton.tsx 48 TODO // TODO: replace ContextMenuTooltipButton with a unified representation of 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/ExtraTile.tsx 37 XXX // XXX: We copy classes because it's easier 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/LegacyRoomList.tsx 433 TODO // TODO: Replace with archived view: https://github.com/vector-im/element-web/issues/14038 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/MessageComposerButtons.tsx 269 XXX // XXX: recording UI does not work well in narrow mode, so hide for now 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/NewRoomIntro.tsx 100 XXX // XXX: We should be using a real member object and not assuming what the receiver wants. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/PresenceLabel.tsx 48 XXX if (presence === "unavailable") return _t("presence|idle_for", { duration: duration }); // XXX: is this actually right? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/PresenceLabel.tsx 53 XXX if (presence === "unavailable") return _t("presence|idle"); // XXX: is this actually right? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/ReadReceiptGroup.tsx 226 XXX // XXX: We should be using a real member object and not assuming what the receiver wants. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomHeader/RoomHeader.tsx 441 DEPRECATED // DEPRECATED: Buttons added by a legacy react-sdk module API module. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomPreviewCard.tsx 40 XXX // XXX This component is currently only used for spaces and video rooms, though 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 59 HACK // HACK: We really shouldn't have to do this. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 86 TODO // TODO: Use re-resizer's NumberSize when it is exposed as the type 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 278 XXX // XXX: we have to do this a tick later because we have incorrect intermediate props during a room change 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomSublist.tsx 527 HACK // HACK: We break typing here, but this 'extra tiles' property shouldn't exist. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/RoomTile.tsx 298 TODO // TODO: [FTUE Notifications] Probably need to detect global mute state 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/Stickerpicker.tsx 78 TODO // TODO: Pick the right manager for the widget 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/Stickerpicker.tsx 242 TODO // TODO - Add support for Stickerpickers from multiple app stores. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/Stickerpicker.tsx 257 FIXME // FIXME: could this use the same code as other apps? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygAutocomplete.tsx 77 TODO // TODO determine if utils in SlashCommands.tsx are required. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygAutocomplete.tsx 98 TODO // TODO - handle "community" type 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygAutocomplete.tsx 117 TODO // TODO - determine if we show all of the /command suggestions, there are some options in the 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useInitialContent.ts 45 TODO // TODO local storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners.ts 154 TODO // TODO use getKeyBindingsManager().getMessageComposerAction(event) like in useInputEventProcessor 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts 58 TODO // TODO insert mention - see SendMessageComposer 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useWysiwygSendActionHandler.ts 60 TODO // TODO insert quote message - see SendMessageComposer 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/createMessageContent.ts 71 TODO // TODO markdown support 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/createMessageContent.ts 95 TODO // TODO Do we need to attach mentions here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/createMessageContent.ts 96 TODO // TODO Handle editing? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 63 TODO // TODO thread 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 67 TODO // TODO thread 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 116 TODO // TODO replace emotion end of message ? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 118 TODO // TODO quick reaction 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 164 TODO // TODO save history 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 165 TODO // TODO save local state 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 198 TODO // TODO emoji 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/rooms/wysiwyg_composer/utils/message.ts 227 TODO // TODO Slash Commands 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/AddRemoveThreepids.tsx 93 XXX // XXX: Sydent will accept a number without country code if you add 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/AddRemoveThreepids.tsx 375 TODO // TODO: Inline field validation 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/ChangePassword.tsx 241 TODO // TODO: We can remove this check (but should add some Playwright tests to 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 57 TODO // TODO: this "view" component still has far too much application logic in it, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 341 XXX // XXX: Can this even happen? How do we safely recover? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 481 XXX // XXX: Magic number 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 489 XXX // XXX: Magic number 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/Notifications.tsx 602 XXX // XXX: Horrible assumption that we don't need the remaining fields 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/SetIdServer.tsx 44 XXX // XXX: duplicated logic from js-sdk but it's quite tied up in the validation logic in the 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/ThemeChoicePanel.tsx 125 XXX // XXX: The local echoed value appears to be unreliable, in particular 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/ThemeChoicePanel.tsx 251 XXX // XXX: need some schema for this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx 61 TODO // TODO: We don't have this link yet: this will prevent the translators 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/BridgeSettingsTab.tsx 83 TODO // TODO: We don't have this link yet: this will prevent the translators 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/NotificationSettingsTab.tsx 104 XXX // XXX: I've observed browsers allowing users to pick a audio/ogg files, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx 63 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx 274 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/user/AccountUserSettingsTab.tsx 151 TODO // TODO: Figure out a design that doesn't involve replacing the current dialog 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/settings/tabs/user/AccountUserSettingsTab.tsx 160 TODO // TODO: Figure out a design that doesn't involve replacing the current dialog 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/spaces/QuickThemeSwitcher.tsx 57 XXX // XXX: The local echoed value appears to be unreliable, in particular 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/components/views/spaces/SpacePanel.tsx 369 TODO aria-selected={false} // TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/device-listener/DeviceListenerOtherDevices.ts 86 TODO // TODO: maybe we don't need a full DeviceListener check? (Maybe we only 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/device-listener/DeviceListenerOtherDevices.ts 121 TODO // TODO: maybe we don't need a full DeviceListener check? (Maybe we only 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/dispatcher/actions.ts 13 TODO // TODO: Populate with actual actions 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/dispatcher/payloads/OpenToTabPayload.ts 13 TODO action: Action.ViewUserSettings | string; // TODO: Add room settings action 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/effects/effect.ts 34 TODO * animation options TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/emojipicker/recent.ts 28 TODO // TODO remove this after some time 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/events/EventTileFactory.tsx 138 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/events/EventTileFactory.tsx 227 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/events/EventTileFactory.tsx 427 XXX // XXX: this'll eventually be dynamic based on the fields once we have extensible event types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/hooks/useSettings.ts 32 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/hooks/useSettings.ts 41 XXX // XXX: This seems naff but is needed to convince TypeScript that the overload is fine 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/indexing/EventIndex.ts 500 TODO // TODO we need to ensure to use member lazy loading with this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/indexing/EventIndex.ts 580 TODO // TODO if there are no events at this point we're missing a lot 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/integrations/IntegrationManagers.ts 84 TODO // TODO: Log out of the scalar clients 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/mjolnir/Mjolnir.ts 22 TODO // TODO: Move this and related files to the js-sdk or something once finalized. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/rageshake/submit-rageshake.ts 155 XXX // XXX: This is synapse-specific but better than nothing until MSC support for a server version endpoint 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/rageshake/submit-rageshake.ts 170 XXX // XXX: This relies on the federation listener being delegated via well-known 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/resizer/resizer.ts 36 TODO // TODO move vertical/horizontal to config option/container class 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/SettingLevel.ts 13 TODO // TODO: [TS] Follow naming convention 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/Settings.tsx 165 XXX // XXX: Keep this around for re-use in future Betas 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/Settings.tsx 736 TODO // TODO: Wire up appropriately to UI (FTUE notifications) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/Settings.tsx 1274 TODO // TODO: Rename with settings v3 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/controllers/DeviceIsolationModeController.ts 36 TODO : // TODO: As part of https://github.com/element-hq/element-meta/issues/2492, we will change 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/controllers/NotificationControllers.ts 33 TODO // TODO: [TS] Formal type that doesn't cause a cyclical reference. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/enums/Layout.ts 10 TODO /* TODO: This should be later reworked into something more generic */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/AccountSettingsHandler.ts 224 TODO // TODO: [TS] Types on return 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/DeviceSettingsHandler.ts 105 TODO // TODO: [TS] Type return 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/DeviceSettingsHandler.ts 121 XXX // XXX: This turns they key names into `mx_labs_feature_feature_x` (double feature). 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/handlers/RoomAccountSettingsHandler.ts 148 TODO // TODO: [TS] Type return 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/watchers/ThemeWatcher.ts 74 XXX // XXX forceTheme 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/settings/watchers/ThemeWatcher.ts 79 XXX // XXX: forceTheme param added here as local echo appears to be unreliable 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/slash-commands/SlashCommands.tsx 678 XXX // XXX: We should be using a real member object and not assuming what the receiver wants. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/slash-commands/utils.ts 44 XXX // XXX: workaround for https://github.com/microsoft/TypeScript/issues/31816 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/ActiveWidgetStore.ts 52 XXX // XXX: This listens for state events in order to remove the active widget. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/ActiveWidgetStore.ts 56 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/CallStore.ts 149 XXX // XXX: This method is guarded with the flag this.inUpdateRoom because 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/MemberListStore.ts 112 XXX // XXX: this user may have no lastPresenceTs value! 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/OwnBeaconStore.ts 305 TODO // TODO check powerlevels here 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/ThreepidInviteStore.ts 22 TODO // TODO: Figure out if these are ever populated 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/WidgetStore.ts 35 TODO // TODO consolidate WidgetEchoStore into this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/WidgetStore.ts 36 TODO // TODO consolidate ActiveWidgetStore into this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/WidgetStore.ts 166 TODO if (ev.getType() !== "im.vector.modular.widgets") return; // TODO: Support m.widget too 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/message-preview/MessagePreviewStore.ts 263 TODO const event = payload.event; // TODO: Type out the dispatcher 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/message-preview/previews/MessageEventPreview.ts 39 XXX // XXX: Newer relations have a getRelation() function which is not compatible with replies. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/notifications/NotificationLevel.ts 15 TODO // TODO: Remove bold with notifications: https://github.com/vector-im/element-web/issues/14227 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/notifications/RoomNotificationStateStore.ts 71 TODO // TODO: Update if/when invites move out of the room list. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 83 TODO // TODO: Maybe destroy this if this class supports destruction 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 205 TODO const roomPayload = <any>payload; // TODO: Type out the dispatcher types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 253 TODO const eventPayload = <any>payload; // TODO: Type out the dispatcher types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 266 TODO const eventPayload = <any>payload; // TODO: Type out the dispatcher types 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 308 TODO // TODO: Type out the dispatcher types so membershipPayload is not any 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 405 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 415 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 444 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/RoomListStore.ts 454 TODO // TODO: Per-account? https://github.com/vector-im/element-web/issues/14114 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts 253 XXX // XXX: If this ever actually gets more than one room passed to it, it'll need more index 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts 295 TODO // TODO: Regenerate index when this happens: https://github.com/vector-im/element-web/issues/14234 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts 85 TODO // TODO: Optimize this to avoid useless operations: https://github.com/vector-im/element-web/issues/14457 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts 39 TODO // TODO: We could probably improve the sorting algorithm here by finding changes. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts 45 TODO // TODO: Don't assume we're using the same client as the peg 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/room-list/filters/SpaceFilterCondition.ts 55 XXX // XXX: Room List Store has a bug where updates to the pre-filter during a local echo of a 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceStore.ts 582 TODO // TODO consider sorting by number of in-refs to favour nodes with fewer parents. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceStore.ts 1054 TODO // TODO rebuild the space parent and not the room - check permissions? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceStore.ts 1055 TODO // TODO confirm this after implementing parenting behaviour 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceTreeLevelLayoutStore.ts 31 XXX // XXX: localStorage doesn't allow booleans 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/spaces/SpaceTreeLevelLayoutStore.ts 37 XXX // XXX: localStorage doesn't allow booleans 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 92 TODO // TODO: Consider alternative designs for matrix-widget-api? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 97 TODO // TODO: Refactor widgetKind into the Widget class 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 278 TODO // TODO: Do something when the widget requests new capabilities not yet asked for 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/ElementWidgetDriver.ts 295 TODO // TODO: this results in an unexpected behavior when this function is called during the capabilities renegotiation of MSC2974 that will be resolved later. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 66 TODO // TODO: Purge this code of its overgrown hacks and compatibility shims. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 68 TODO // TODO: Don't use this. We should avoid overriding/mocking matrix-widget-api 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 256 TODO // TODO: Replace these with proper widget params 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 263 TODO // TODO: Stop doing this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 400 TODO // TODO: Replace this event listener with appropriate driver functionality once the API 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 432 TODO // TODO: Spec this interaction. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 474 TODO // TODO: Pick the right manager for the widget 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 496 HACK // HACK: This is a really dirty way to ensure that Jitsi cleans up 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetMessaging.ts 512 XXX // XXX is the removeAllListeners necessary here? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/WidgetPermissionStore.ts 24 TODO // TODO (all functions here): Merge widgetKind with the widget definition 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/types.ts 32 TODO // TODO: [Deferred] Maximizing (fullscreen) widgets by default. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/stores/widgets/types.ts 40 TODO // TODO: [Deferred] Forced layout (fixed with no changes) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/DMRoomMap.ts 26 TODO // TODO: convert these to maps 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/DMRoomMap.ts 156 TODO // TODO: [Canonical DMs] Handle lookups for email addresses. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/FileDownloader.ts 48 XXX managedIframe.src = "usercontent/"; // XXX: Should come from the skin 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/FileDownloader.ts 54 TODO // TODO: If we decide to keep the download link behaviour, we should bring the style management into here. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/MediaEventHelper.ts 19 TODO // TODO: We should consider caching the blobs. https://github.com/vector-im/element-web/issues/17192 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/MessageDiffUtils.tsx 209 XXX // XXX: sometimes diffDOM says insert a newline when there shouldn't be one 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 78 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 82 TODO // TODO: Generify the name of this function. It's not just scalar. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 203 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 213 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 303 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 328 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 345 TODO // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 448 TODO // TODO: Remove URL hacks when the mobile clients eventually support v2 widgets 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/WidgetUtils.ts 546 TODO // TODO: Pick the right manager for the widget 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/beacon/useBeacon.ts 26 TODO // TODO could this be less stupid? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/dm/startDm.ts 54 TODO // TODO: [Canonical DMs] Remove this check and instead just create the multi-person DM 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/exportUtils/HtmlExport.tsx 418 TODO // TODO: Handle callEvent errors 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/permalinks/MatrixSchemePermalinkConstructor.ts 53 TODO // TODO: Change API signature to accept the URL for checking 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/utils/permalinks/PermalinkConstructor.ts 11 TODO * TODO: Convert this to a real TypeScript interface 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 92 XXX // XXX: This lives here because certain components import so many things that importing it in a sensible place (eg. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 118 XXX // XXX: This path matching is a bit brittle, but better to do it early instead of in the app code. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 201 DEPRECATED "DEPRECATED CONFIG OPTION: In the future, default_hs_url will not be accepted. Please use " + 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/app.tsx 226 DEPRECATED "DEPRECATED CONFIG OPTION: In the future, default_server_name will not be accepted. Please " + 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/index.html 56 TODO <noscript>Sorry, Element requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? --> 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/init.tsx 54 XXX // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/jitsi/index.html 13 TODO <!-- TODO: i18n --> 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/jitsi/index.pcss 8 TODO /* TODO: Match the user's theme: https://github.com/element-hq/element-web/issues/12794 */ 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/jitsi/index.ts 55 XXX // XXX: It is unclear whether this is a typo of TOOLBAR_BUTTONS or if its just really undocumented, 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/platform/IPCManager.ts 33 TODO // TODO this should be moved into the preload.js file. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/url_utils.ts 72 XXX // XXX: unclear where, if anywhere, this is set 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/vector/url_utils.ts 77 XXX // XXX: Fragment params seemingly relating to 3pid invites, though the code in the area doubts they are ever specified 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/viewmodels/message-body/UrlPreviewGroupViewModel.ts 443 FIXME // FIXME: persist this somewhere smarter than local storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/viewmodels/message-body/UrlPreviewGroupViewModel.ts 456 FIXME // FIXME: persist this somewhere smarter than local storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/viewmodels/room/right-panel/WidgetContextMenuViewModel.tsx 201 XXX // XXX: won't i18n well, but looks like widget api only support 'message'? 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/widgets/CapabilityText.tsx 131 TODO // TODO: Support MSC3819 (to-device capabilities) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/src/widgets/WidgetType.ts 9 TODO // TODO: Move to matrix-widget-api 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/setup/setupManualMocks.ts 47 TODO // TODO: Extract this to a function and have tests that need it opt into it. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/test-utils/test-utils.ts 56 TODO * TODO: once the components are updated to get their MatrixClients from 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/test-utils/utilities.ts 182 XXX // XXX: Maybe in the future with Jest 29.5.0+, we could use `runAllTimersAsync` instead. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/Lifecycle-test.ts 784 XXX // XXX: these tests are broken, Lifecycle.setLoggedIn does not work with OIDC and its token refreshers due to clearing storage 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/Notifier-test.ts 583 TODO // TODO: Once https://github.com/matrix-org/matrix-js-sdk/pull/5134 is merged this can be MembershipKind.Session 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx 199 TODO // TODO: nowadays the access token lives (encrypted) in indexedDB, and localstorage is only used as a fallback. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx 1250 XXX // XXX This test is strange, it was working with legacy crypto 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MatrixChat-test.tsx 1301 FIXME // FIXME: except it is *also* used as the permanent client for the rest of the test. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/structures/MessagePanel-test.tsx 104 HACK // HACK: We assume all settings want to be disabled 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/beacon/RoomCallBanner-test.tsx 152 TODO // TODO: test clicking buttons 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/beacon/RoomCallBanner-test.tsx 153 TODO // TODO: add live location share warning test (should not render if there is an active live location share) 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/context_menus/MessageContextMenu-test.tsx 729 XXX // XXX: We probably shouldn't be assuming all events are going to be message events, but considering this 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/dialogs/security/CreateSecretStorageDialog-test.tsx 90 XXX // XXX the error message is... misleading. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/rooms/EditMessageComposer-test.tsx 264 TODO // TODO Edits do not properly strip the double slash used to skip 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/hooks/useSuggestion-test.tsx 107 TODO // TODO refactor and expand tests when mentions become <a> tags 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/components/views/spaces/SpaceSettingsVisibilityTab-test.tsx 68 TODO // TODO case for canonical 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/models/Call-test.ts 844 TODO // TODO refactor initial device configuration to use the EW settings. 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/slash-commands/utils.ts 29 TODO // TODO: if getCommand took a MatrixClient argument, we could use 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/stores/SpaceStore-test.ts 268 TODO // TODO this test should be failing right now 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/stores/SpaceStore-test.ts 620 XXX // XXX: All rooms space is forcibly enabled, as part of a future PR test Home space better 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/stores/SpaceStore-test.ts 681 XXX // XXX: All rooms space is forcibly enabled, as part of a future PR test Home space better 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/utils/MegolmExportEncryption-test.ts 123 TODO // TODO find a subtlecrypto shim which doesn't break this test 2026-05-10 91 3da363517 sorB
ThreadNet-Web apps/web/test/unit-tests/utils/objects-test.ts 63 XXX // XXX: inverted expectation for ease of assertion 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/config.md 145 DEPRECATED 11. `welcome_user_id`: **DEPRECATED** An optional user ID to start a DM with after creating an account. Defaults to nothing (no DM created). 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/customisations.md 3 DEPRECATED ### 🦖 DEPRECATED 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/deprecated-modules.md 4 DEPRECATED > DEPRECATED. Use [Element web module api](https://github.com/element-hq/element-modules/tree/main/packages/element-web-module-api) instead. 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/monorepo.md 30 TODO - #TODO should we just use short-lived release branches? We'd need to effectively interlace them for the various packages which feels messy 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/native-node-modules.md 43 TODO - Linux: TODO. Using the docker environment as above is recommended. 2026-05-10 91 3da363517 sorB
ThreadNet-Web docs/native-node-modules.md 44 TODO - OS X: TODO 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/core/i18n/i18n.tsx 293 TODO // TODO: Cache regexps 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/room/timeline/event-tile/body/DecryptionFailureBodyView/DecryptionFailureBodyView.tsx 125 TODO // TODO: event should be hidden instead of showing this error. 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/room/timeline/event-tile/body/DecryptionFailureBodyView/DecryptionFailureBodyView.tsx 138 TODO // TODO: event should be hidden instead of showing this error. 2026-05-10 91 3da363517 sorB
ThreadNet-Web packages/shared-components/src/room/timeline/event-tile/body/MFileBodyView/FileBodyView.tsx 263 TODO TODO: Move iframe (and dummy link) into FileDownloader. 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/analyse_unused_exports.ts 49 TODO // TODO: This might break on Windows 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 223 TODO // TODO workflow_call reusables 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 266 TODO // TODO should we be just dropping these? 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 514 TODO // TODO separate disconnected nodes into their own graph 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 551 TODO // TODO unsure about this edge 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 557 TODO // TODO handle job.if on github.event_name 2026-05-10 91 3da363517 sorB
ThreadNet-Web scripts/gen-workflow-mermaid.ts 604 TODO // TODO validate edge case 2026-05-10 91 3da363517 sorB
axion1337.chat-gitops .devcontainer/devcontainer.json 47 TODO "TODO", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops .devcontainer/devcontainer.json 48 FIXME "FIXME", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops .devcontainer/devcontainer.json 50 HACK "HACK", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops .devcontainer/devcontainer.json 52 XXX "XXX", 2026-05-14 87 4cf6702f8 Scrublord MacBad
axion1337.chat-gitops docs/oldwiki/home.md 2335 XXX age: "XXX" 2026-05-14 87 b1247b472 Scrublord MacBad
threadnet-call .eslintrc.cjs 69 XXX // XXX: We use /lib in lots of places, so allow for now. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call knip.ts 17 TODO // installed binary. TODO We should switch to Compose v2: 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call playwright/access.spec.ts 109 XXX // XXX check the display names on the video tiles 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call playwright/widget/test-helpers.ts 76 XXX // XXX This using the notification toast to join the room. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call playwright/widget/test-helpers.ts 371 XXX // XXX we need to be better at our HTML markup and accessibility, it would make 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call sdk/index.html 7 TODO // TODO use the url where the matrixrtc-sdk.js file from dist is hosted 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call sdk/main.ts 45 TODO // TODO how can this get fixed? to just be part of `livekit-client` 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/Modal.module.css 95 TODO /* TODO: Support tabs */ 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/Modal.tsx 60 TODO // TODO: Better tabs support 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/LoginPage.tsx 29 TODO const homeserver = Config.defaultHomeserverUrl(); // TODO: Make this configurable 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/LoginPage.tsx 37 TODO // TODO: Handle hitting login page with authenticated client 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/useInteractiveLogin.ts 56 XXX // XXX: This claims to return an IAuthData which contains none of these 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/auth/useInteractiveRegistration.ts 104 XXX // XXX: This claims to return an IAuthData which contains none of these 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/components/MediaMuteAndSwitchButton.stories.tsx 65 TODO // (both are TODO placeholders in the component). The mute button is first in the DOM. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/grid/SpotlightPortraitLayout.tsx 64 TODO // TODO: We pretend that the minimum height is the width, because the 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/home/useGroupCallRooms.ts 110 TODO // TODO: check JoinRule.Restricted and return true if join condition is satisfied 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/livekit/MatrixAudioRenderer.tsx 81 TODO // TODO make sure to also skip the warn logging for the local identity 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/livekit/TrackProcessorContext.tsx 33 TODO //TODO-MULTI-SFU: This is not yet fully there. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/livekit/openIDSFU.ts 150 DEPRECATED // DEPRECATED 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/reactions/ReactionsReader.ts 76 TODO // TODO: Convert this class to the functional reactive style and get rid of 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/reactions/ReactionsReader.ts 269 TODO // TODO refactor to use memer id `membershipEvent.membershipID` (needs to happen in combination with other memberId refactors) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/reactions/index.ts 87 TODO // TODO: These need to be translated. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/CallEventAudioRenderer.test.tsx 173 TODO // TODO: What is this string supposed to be? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 8 TODO // TODO-MULTI-SFU: Restore or discard these tests. The role of GroupCallView has 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 92 TODO // // TODO: perhaps there is a more elegant way to manage the type import here? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 95 TODO // // TODO: leaveRTCSession no longer exists! Tests need adapting. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 176 TODO // TODO-MULTI-SFU: This cast isn't valid, it's likely the cause of some current test failures 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 188 TODO // TODO-MULTI-SFU: Make joined and setJoined work 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 464 XXX // XXX: Wrapping the following click in act() shouldn't be necessary (the 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.test.tsx 470 TODO // TODO investigate if this is a test setup issue or an actual problem. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 166 TODO // TODO move this into the callViewModel LocalMembership.ts 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 241 TODO // TODO-MULTI-SFU what to do with error handling now that we don't use this function? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 264 XXX // XXX: I think this is broken currently - LiveKit *won't* request 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 331 TODO // TODO refactor this + "joined" to just one callState 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/GroupCallView.tsx 336 TODO // TODO split this into leave and onDisconnect 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 103 TODO // TODO refactor those reasons into an enum 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 140 TODO // TODO move this somewhere else once we use the callViewModel in the lobby as well! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 224 TODO // TODO-MULTI-SFU This is unused now?? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 230 TODO // TODO-MULTI-SFU decide how to handle this properly 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/InCallView.tsx 648 TODO // TODO compute is local or tag it in the livekit room items already 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/LobbyView.tsx 99 TODO // TODO: Make sure that this module is resilient when it comes to camera/microphone availability! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/LobbyView.tsx 212 TODO // TODO: Unify this component with InCallView, so we can get slick joining 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/RoomPage.tsx 243 TODO // TODO: This doesn't belong here, the app routes need to be reworked 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/room/useRoomState.ts 25 TODO // TODO: matrix-js-sdk says that Room.currentState is deprecated, but it's not 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/settings/settings.ts 84 TODO // TODO: This setting can be disabled. Work out an approach to disableable 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/AndroidControlledAudioOutput.ts 142 TODO // TODO: it appears that on Android the hosting application is only using the deprecated callback (onOutputDeviceSelect) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/AndroidControlledAudioOutput.ts 281 TODO // TODO only want to check from the added device, not all devices.? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/AppViewModel.ts 17 TODO // TODO: Move more application logic here. The CallViewModel, at the very 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 161 TODO //TODO 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 241 TODO * TODO: it seems more reasonable to add a leave() method (that calls requestDisconnect) that will then update leave$ and remove the hangup pattern 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 540 TODO // TODO. This might need to get called again on each change of matrixRTCMode... 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 614 TODO // TODO if we are in "unknown" state we need a loading rendering (or empty screen) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 793 TODO // TODO: Respect io.element.functional_members 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 1300 TODO // TODO: Respect io.element.functional_members (while still 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/CallViewModel.ts 1303 TODO // TODO: Only hide name tags in DMs, not group chats that just 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.test.ts 534 TODO // TODO add an integration test combining publisher and localMembership 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.test.ts 683 TODO // TODO add tests for matrix local matrix participation. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 83 XXX // XXX: This state is removed for now since we do not have full control over 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 91 TODO // TODO not sure how to map that correctly with the 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 96 XXX // XXX: This state is removed for now since we do not have full control over 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 132 TODO // TODO add a comment into some code style readme or file header callviewmodel 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 304 XXX // XXX We might want to give some user feedback here to let them know their media is not working. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 635 TODO // TODO Update matrixRTCSession to allow udpating the transport without leaving the session! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 659 TODO // TODO refactor this based no livekitState$ 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalMember.ts 889 TODO // TODO where/how do we track errors originating from the ongoing rtcSession? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalTransport.ts 77 TODO // TODO livekit_alias-cleanup 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/LocalTransport.ts 227 XXX // XXX: WORK AROUND due to a reconnection glitch. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/Publisher.ts 257 TODO // TODO what about screen share? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts 93 TODO // TODO: Workaround for an issue in the js-sdk RoomWidgetClient that 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.test.ts 572 TODO // // TODO understand what is wrong with our mocking that requires ts-expect-error 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.test.ts 608 TODO // // TODO: Refactor the code to make it testable. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.ts 139 TODO // TODO: can we just keep the ConnectionOpts object instead of spreading? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/Connection.ts 193 TODO // TODO consider an autostart pattern... 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionFactory.ts 43 TODO // TODO evaluate if this should be done like the Publisher Factory 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionFactory.ts 190 TODO // TODO test and consider this: 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 83 TODO // TODO - write test for scopes (do we really need to bind scope) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 117 TODO // TODO logger: only construct one logger from the client and make it compatible via a EC specific sing 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 197 TODO // TODO: This whole optional SFUConfig parameter is not particularly elegant. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/ConnectionManager.ts 204 TODO // TODO subscribe to connection state to retry or log issues? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts 37 TODO // TODO decide if we can also drop the userId. Its in the matrix membership anyways. 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts 142 TODO // TODO add back in the callviewmodel pauseWhen(this.pretendToBeDisconnected$) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts 144 TODO // TODO add this to the JS-SDK 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.ts 81 TODO // TODO: do we need: pauseWhen(this.pretendToBeDisconnected$), 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/CallViewModel/remoteMembers/integration.test.ts 85 TODO //TODO a bit annoying to have to do a http mock? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.test.ts 82 TODO // TODO I'd expect it to go back to previous state (enabled) 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.test.ts 264 TODO // TODO I'd expect it to go back to previous state (enabled)?? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.ts 118 TODO // TODO: better error handling 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/MuteStates.ts 130 TODO // TODO: better error handling 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/state/media/MemberMediaViewModel.ts 44 TODO // TODO: Encryption status is kinda broken and thus unused right now. Remove? 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/tile/GridTile.tsx 370 TODO {/* TODO: Figure out how to make this slider keyboard accessible */} 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/tile/MediaView.tsx 191 TODO {/* TODO: Bring this back once encryption status is less broken */} 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/tile/TileAvatar.module.css 18 TODO /* TODO: make this --cpd-color-fg-primary when available. */ 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/useCallViewKeyboardShortcuts.ts 70 TODO // TODO: Make sure that this module is resilient when it comes to camera/microphone availability! 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call src/utils/matrix.ts 110 XXX // XXX: we read from the URL params in RoomPage too: 2026-07-31 9 8fb630cfb Thore Cimbal
threadnet-call tsconfig.json 43 TODO // TODO: Enable the following options later. 2026-07-31 9 8fb630cfb Thore Cimbal
Can't render this file because it contains an unexpected character in line 12 and column 89.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,105 @@
.devcontainer/Dockerfile
.devcontainer/README.md
.devcontainer/devcontainer.json
.devcontainer/docker-init.sh
.devcontainer/postCreateCommand.sh
.gitignore
.gitlab-ci.yml
.sops.yaml
CLAUDE.md
README.md
apps/authentik/authentik-backup-secret.yaml
apps/authentik/authentik-backup.yaml
apps/authentik/authentik-blueprints.yaml
apps/authentik/authentik-secret.yaml
apps/authentik/authentik.yaml
apps/authentik/certificate.yaml
apps/authentik/helm-repo.yaml
apps/authentik/ingress.yaml
apps/authentik/kustomization.yaml
apps/authentik/namespace.yaml
apps/authentik/networkpolicy.yaml
apps/base/infra/cert-manager-repo.yaml
apps/base/infra/cert-manager.yaml
apps/base/infra/kustomization.yaml
apps/base/infra/ns-cert-manager.yaml
apps/base/infra/ns-matrix.yaml
apps/base/matrix/ess-operator.yaml
apps/base/matrix/ess-repo.yaml
apps/monitoring/alloy-config.yaml
apps/monitoring/alloy.yaml
apps/monitoring/helm-repos.yaml
apps/monitoring/kube-state-metrics.yaml
apps/monitoring/kustomization.yaml
apps/monitoring/namespace.yaml
apps/production/apex-ingress.yaml
apps/production/cert-issuer.yaml
apps/production/clamav-http-scanner-Dockerfile
apps/production/clamav-http-scanner.py
apps/production/clamav-http-scanner.yaml
apps/production/clamav-pvc.yaml
apps/production/clamav.yaml
apps/production/clamav_spam_checker.py
apps/production/concierge-bot.py
apps/production/concierge-bot.yaml
apps/production/coturn-secret.yaml
apps/production/coturn.yaml
apps/production/custom-configs/element-values copy.yaml
apps/production/custom-configs/element-values.yaml
apps/production/custom-configs/mas-secret.yaml
apps/production/custom-configs/synapse-values.yaml
apps/production/draupnir-pvc.yaml
apps/production/draupnir-secret.yaml
apps/production/draupnir.yaml
apps/production/element-server-suite.yaml
apps/production/element-web-docs-configmap.yaml
apps/production/element-web-docs-server.yaml
apps/production/kustomization.yaml
apps/production/matrix-certificates.yaml
apps/production/matrix-postgres-auth.yaml
apps/production/networkpolicy.yaml
apps/production/synapse-backup-secret.yaml
apps/production/synapse-backup.yaml
apps/production/synapse-turn-secret.yaml
apps/production/turn-secret-rotation-secret.yaml
apps/production/turn-secret-rotation.yaml
ci/lab-ca-chain.crt
clusters/matrix/flux-system/authentik-sync.yaml
clusters/matrix/flux-system/gotk-components.yaml
clusters/matrix/flux-system/gotk-sync.yaml
clusters/matrix/flux-system/infra-sync.yaml
clusters/matrix/flux-system/kustomization.yaml
clusters/matrix/flux-system/monitoring-sync.yaml
clusters/matrix/flux-system/production-sync.yaml
docs/TASKS.md
docs/deployment-guides/01-turn-server-setup.md
docs/deployment-guides/02-authentik-identity-provider.md
docs/deployment-guides/03-monitoring-integration.md
docs/deployment-guides/04-element-customization.md
docs/deployment-guides/05-room-policies.md
docs/deployment-guides/06-moderation-content-scanning.md
docs/deployment-guides/07-host-maintenance-notifications.md
docs/deployment-guides/08-concierge-gaeste-einladungen.md
docs/deployment-guides/README.md
docs/install.md
docs/oldwiki/authentik.md
docs/oldwiki/fix report mrtc.md
docs/oldwiki/home.md
docs/oldwiki/invitereg.md
docs/ops-configmap-sync.md
docs/setup/README-Element-Setup.md
docs/setup/element-setup-linux.sh
docs/setup/element-setup-macos.command
docs/setup/element-setup-windows.cmd
docs/troubleshooting/AUTHENTIK-CREATE-INVITATION-FLOW.md
docs/troubleshooting/AUTHENTIK-FIX-TEMPLATE.md
docs/troubleshooting/AUTHENTIK-INVITATION-FLOW-FIX.md
docs/troubleshooting/DIAGNOSTIK-AUTHENTIK-FLOW.md
docs/troubleshooting/README.md
host-config/maintenance-notify/config.example
host-config/maintenance-notify/maintenance-notify.service
host-config/maintenance-notify/maintenance-notify.sh
host-config/maintenance-notify/maintenance-notify.timer
host-config/maintenance-notify/msmtprc.template
scripts/hooks/pre-commit
scripts/install-hooks.sh
+44
View File
@@ -0,0 +1,44 @@
.gitignore
.gitlab-ci.yml
.gitlab/issue_templates/Deploy-Übergabe.md
CLAUDE.md
README.md
ci/lab-ca-chain.crt
decisions/0001-gitlab-kanonisch-push-mirror.md
decisions/0002-issues-und-management-ins-lab.md
decisions/0003-cve-meldeweg-aggregiert.md
decisions/0004-site-to-site-vpn-hetzner-lab.md
decisions/0005-pm-framework-kanban.md
decisions/0006-wikis-konsolidieren-docusaurus.md
decisions/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md
decisions/0008-agenten-sessions-root-aequivalent.md
decisions/0009-commit-konventionen-und-historien-anonymisierung.md
decisions/README.md
decisions/template.md
hosts/cfgmon.md
hosts/game.md
hosts/matrix.md
hosts/overmind.md
roadmap.md
scripts/stillstandspruefung.py
shared/branding.md
shared/commit-zuordnung-2026-08-07.md
shared/lab-netzwerk.md
shared/zone-axion1337.md
verfahren/README.md
verfahren/aar-vorlage.md
verfahren/aar/2026-08-01-cve-pipeline-gitops47.md
verfahren/aar/2026-08-01-labnet02-cfgmon.md
verfahren/aar/2026-08-01-labnet02-lab.md
verfahren/aar/2026-08-02-wiki-und-desktop-clients.md
verfahren/aar/2026-08-09-refinement-und-betrieb.md
verfahren/deploy-uebergabe.md
verfahren/issue-migration/README.md
verfahren/issue-migration/migrate.py
verfahren/refinement.md
verfahren/retro/2026-08-09.md
verfahren/stillstandspruefung.md
verfahren/textbloecke.md
vision/axion1337-chat.md
vision/homelab.md
vision/threadnet.md
+4
View File
@@ -0,0 +1,4 @@
.gitignore
README.md
backup/gitea-backup.sh
docker-compose.yml
+598
View File
@@ -0,0 +1,598 @@
.dockerignore
.env.example
.env.production
.eslintrc.cjs
.githooks/pre-commit
.github/CODEOWNERS
.github/ISSUE_TEMPLATE/bug.yml
.github/ISSUE_TEMPLATE/config.yml
.github/ISSUE_TEMPLATE/enhancement.yml
.github/PULL_REQUEST_TEMPLATE.md
.github/release.yml
.github/workflows/blocked.yaml
.github/workflows/build-and-publish-docker.yaml
.github/workflows/build-element-call.yaml
.github/workflows/build.yaml
.github/workflows/changelog-label.yml
.github/workflows/deploy-to-netlify.yaml
.github/workflows/lint.yaml
.github/workflows/pr-deploy.yaml
.github/workflows/publish-embedded-packages.yaml
.github/workflows/publish.yaml
.github/workflows/test-netlify.yaml
.github/workflows/test.yaml
.github/workflows/translations-download.yaml
.github/workflows/translations-upload.yaml
.github/workflows/zizmor.yml
.gitignore
.gitlab-ci.yml
.node-version
.postcssrc.json
.prettierignore
.prettierrc.json
.storybook/main.ts
.storybook/manager.ts
.storybook/preview.tsx
.vscode/settings.json
CONTRIBUTING.md
Dockerfile
LICENSE-AGPL-3.0
LICENSE-COMMERCIAL
README.md
WIDGET_TEST.md
babel.config.cjs
backend/dev_homeserver-othersite.yaml
backend/dev_homeserver.yaml
backend/dev_livekit-othersite.yaml
backend/dev_livekit.yaml
backend/dev_nginx.conf
backend/dev_tls_local-ca.crt
backend/dev_tls_local-ca.key
backend/dev_tls_m.localhost.crt
backend/dev_tls_m.localhost.key
backend/dev_tls_setup
backend/ew.test.config.json
backend/ew.test.othersite.config.json
backend/playwright_homeserver-othersite.yaml
backend/playwright_homeserver.yaml
codecov.yaml
config/config.devenv.json
config/config.sample.json
config/config_netlify_preview.json
config/config_netlify_preview_sdk.json
config/httpd.conf
config/netlify_redirects
config/nginx.conf
config/otel_dev/README.md
config/otel_dev/collector-gateway.yaml
config/otel_dev/docker-compose.yaml
config/otel_dev/nginx_otel.conf
demo.gif
dev-backend-docker-compose.yml
docs/Federated_Setup.drawio.png
docs/MSC4195_setup.drawio.png
docs/README.md
docs/SFU_selection.drawio.png
docs/_developer.md
docs/axion1337-fork.md
docs/controls.md
docs/element_call_standalone.drawio.png
docs/element_call_widget.drawio.png
docs/embedded_package.drawio.png
docs/embedded_standalone.md
docs/full_package.drawio.png
docs/linking.md
docs/linking_concept_reasoning.md
docs/self_hosting.md
docs/url_params.md
embedded/android/.gitattributes
embedded/android/.gitignore
embedded/android/gradle.properties
embedded/android/gradle/libs.versions.toml
embedded/android/gradle/wrapper/gradle-wrapper.jar
embedded/android/gradle/wrapper/gradle-wrapper.properties
embedded/android/gradlew
embedded/android/gradlew.bat
embedded/android/lib/build.gradle.kts
embedded/android/lib/src/main/kotlin/io/element/android/call/embedded/Version.kt
embedded/android/publish_android_package.sh
embedded/android/settings.gradle
embedded/ios/.gitignore
embedded/ios/LICENSE-AGPL-3.0
embedded/ios/LICENSE-COMMMERCIAL
embedded/ios/Package.swift
embedded/ios/README.md
embedded/ios/Sources/EmbeddedElementCall/EmbeddedElementCall.swift
embedded/web/LICENSE-AGPL-3.0
embedded/web/LICENSE-COMMERCIAL
embedded/web/README.md
embedded/web/package.json
i18next.config.ts
index.html
knip.ts
localazy.json
locales/bg/app.json
locales/cs/app.json
locales/da/app.json
locales/de/app.json
locales/el/app.json
locales/en/app.json
locales/es/app.json
locales/et/app.json
locales/fa/app.json
locales/fi/app.json
locales/fr/app.json
locales/id/app.json
locales/it/app.json
locales/ja/app.json
locales/lv/app.json
locales/nl/app.json
locales/pl/app.json
locales/ro/app.json
locales/ru/app.json
locales/sk/app.json
locales/sv/app.json
locales/tr/app.json
locales/uk/app.json
locales/vi/app.json
locales/zh-Hans/app.json
locales/zh-Hant/app.json
package.json
playwright-backend-docker-compose.override.yml
playwright-backend-docker-compose.yml
playwright.config.ts
playwright/access.spec.ts
playwright/create-call.spec.ts
playwright/errors.spec.ts
playwright/fixtures/fixture-mobile-create.ts
playwright/fixtures/jwt-token.ts
playwright/fixtures/widget-user.ts
playwright/global.d.ts
playwright/landing.spec.ts
playwright/mobile/create-call-mobile.spec.ts
playwright/reconnect.spec.ts
playwright/restricted-sfu.spec.ts
playwright/sfu-reconnect-bug.spec.ts
playwright/spa-call-sticky.spec.ts
playwright/spa-helpers.ts
playwright/utils/synapse-admin.ts
playwright/widget/federated-call.test.ts
playwright/widget/federation-oldest-membership-bug.spec.ts
playwright/widget/hotswap-legacy-compat.test.ts
playwright/widget/huddle-call.test.ts
playwright/widget/pip-call-button-interaction.test.ts
playwright/widget/pip-call.test.ts
playwright/widget/screen-share.test.ts
playwright/widget/simple-create.spec.ts
playwright/widget/test-helpers.ts
playwright/widget/voice-call-dm.spec.ts
pnpm-lock.yaml
pnpm-workspace.yaml
public/favicon.png
renovate.json
scripts/.pnpmfile.cjs
scripts/dockerbuild.sh
scripts/playwright-webserver-command.sh
scripts/reformat-release-notes.py
scripts/setup-linking.sh
sdk/README.md
sdk/helper.ts
sdk/index.html
sdk/main.ts
src/@types/dom-mediacapture-transform.d.ts
src/@types/global.d.ts
src/@types/i18next.d.ts
src/@types/matrix-js-sdk.d.ts
src/@types/mdx.d.ts
src/@types/modules.d.ts
src/App.tsx
src/AppBar.module.css
src/AppBar.test.tsx
src/AppBar.tsx
src/Avatar.test.tsx
src/Avatar.tsx
src/ClientContext.tsx
src/DisconnectedBanner.module.css
src/DisconnectedBanner.tsx
src/ErrorView.module.css
src/ErrorView.tsx
src/FullScreenView.module.css
src/FullScreenView.tsx
src/Header.module.css
src/Header.test.tsx
src/Header.tsx
src/IndexedDBWorker.ts
src/LazyEventEmitter.ts
src/MediaDevicesContext.ts
src/Modal.module.css
src/Modal.test.tsx
src/Modal.tsx
src/Overlay.module.css
src/Platform.ts
src/QrCode.module.css
src/QrCode.test.tsx
src/QrCode.tsx
src/RTCConnectionStats.module.css
src/RTCConnectionStats.tsx
src/RichError.tsx
src/Slider.module.css
src/Slider.tsx
src/Toast.module.css
src/Toast.test.tsx
src/Toast.tsx
src/TranslatedError.ts
src/UrlParams.test.ts
src/UrlParams.ts
src/UserMenu.module.css
src/UserMenu.tsx
src/UserMenuContainer.tsx
src/__snapshots__/AppBar.test.tsx.snap
src/__snapshots__/Modal.test.tsx.snap
src/__snapshots__/QrCode.test.tsx.snap
src/__snapshots__/Toast-test.tsx.snap
src/__snapshots__/Toast.test.tsx.snap
src/analytics/AnalyticsNotice.tsx
src/analytics/PosthogAnalytics.test.ts
src/analytics/PosthogAnalytics.ts
src/analytics/PosthogEvents.test.ts
src/analytics/PosthogEvents.ts
src/auth/LoginPage.module.css
src/auth/LoginPage.tsx
src/auth/RegisterPage.tsx
src/auth/generateRandomName.ts
src/auth/useInteractiveLogin.ts
src/auth/useInteractiveRegistration.ts
src/auth/useRecaptcha.ts
src/auth/useRegisterPasswordlessUser.ts
src/button/Button.module.css
src/button/Button.test.tsx
src/button/Button.tsx
src/button/InviteButton.tsx
src/button/Link.module.css
src/button/Link.tsx
src/button/LinkButton.tsx
src/button/ReactionToggleButton.module.css
src/button/ReactionToggleButton.test.tsx
src/button/ReactionToggleButton.tsx
src/button/__snapshots__/ReactionToggleButton.test.tsx.snap
src/button/index.ts
src/components/CallFooter.mdx
src/components/CallFooter.module.css
src/components/CallFooter.stories.tsx
src/components/CallFooter.tsx
src/components/CallFooterViewModel.test.ts
src/components/CallFooterViewModel.tsx
src/components/MediaMuteAndSwitchButton.module.css
src/components/MediaMuteAndSwitchButton.stories.tsx
src/components/MediaMuteAndSwitchButton.test.tsx
src/components/MediaMuteAndSwitchButton.tsx
src/components/__snapshots__/MediaMuteAndSwitchButton.test.tsx.snap
src/config/Config.test.ts
src/config/Config.ts
src/config/ConfigOptions.ts
src/controls.ts
src/e2ee/e2eeType.ts
src/e2ee/matrixKeyProvider.test.ts
src/e2ee/matrixKeyProvider.ts
src/e2ee/sharedKeyManagement.ts
src/form/Form.module.css
src/form/Form.tsx
src/graphics/backgroundGradient.svg
src/graphics/loggedOutGradient.svg
src/grid/CallLayout.ts
src/grid/Grid.module.css
src/grid/Grid.tsx
src/grid/GridLayout.module.css
src/grid/GridLayout.tsx
src/grid/OneOnOneLandscapeLayout.module.css
src/grid/OneOnOneLandscapeLayout.tsx
src/grid/OneOnOnePortraitLayout.module.css
src/grid/OneOnOnePortraitLayout.tsx
src/grid/SpotlightExpandedLayout.module.css
src/grid/SpotlightExpandedLayout.tsx
src/grid/SpotlightLandscapeLayout.module.css
src/grid/SpotlightLandscapeLayout.tsx
src/grid/SpotlightPortraitLayout.module.css
src/grid/SpotlightPortraitLayout.tsx
src/grid/TileWrapper.module.css
src/grid/TileWrapper.tsx
src/home/CallList.module.css
src/home/CallList.test.tsx
src/home/CallList.tsx
src/home/HomePage.tsx
src/home/JoinExistingCallModal.module.css
src/home/JoinExistingCallModal.tsx
src/home/RegisteredView.module.css
src/home/RegisteredView.tsx
src/home/UnauthenticatedView.module.css
src/home/UnauthenticatedView.tsx
src/home/common.module.css
src/home/useGroupCallRooms.ts
src/icons/Check.svg
src/icons/Chevron.svg
src/icons/Close.svg
src/icons/FullScreenMaximise.svg
src/icons/FullScreenMinimise.svg
src/icons/LockOff.svg
src/icons/Login.svg
src/icons/Logo.svg
src/icons/LogoLarge.svg
src/icons/LogoMark.svg
src/icons/LogoType.svg
src/icons/Logout.svg
src/icons/Settings.svg
src/icons/StarSelected.svg
src/icons/StarUnselected.svg
src/icons/User.svg
src/index.css
src/initializer.test.ts
src/initializer.tsx
src/input/AvatarInputField.module.css
src/input/AvatarInputField.tsx
src/input/FeedbackInput.module.css
src/input/Input.module.css
src/input/Input.tsx
src/input/StarRating.test.tsx
src/input/StarRatingInput.module.css
src/input/StarRatingInput.stories.tsx
src/input/StarRatingInput.tsx
src/livekit/BlurBackgroundTransformer.ts
src/livekit/MatrixAudioRenderer.test.tsx
src/livekit/MatrixAudioRenderer.tsx
src/livekit/TrackProcessorContext.tsx
src/livekit/openIDSFU.test.ts
src/livekit/openIDSFU.ts
src/livekit/options.test.ts
src/livekit/options.ts
src/main.tsx
src/mediapipe/imageSegmenter/README.md
src/mediapipe/imageSegmenter/selfie_segmenter.tflite
src/profile/useProfile.ts
src/reactions/RaisedHandIndicator.test.tsx
src/reactions/RaisedHandIndicator.tsx
src/reactions/ReactionIndicator.module.css
src/reactions/ReactionIndicator.tsx
src/reactions/ReactionsReader.test.tsx
src/reactions/ReactionsReader.ts
src/reactions/__snapshots__/RaisedHandIndicator.test.tsx.snap
src/reactions/index.ts
src/reactions/useReactionsSender.tsx
src/room/CallEndedView.module.css
src/room/CallEndedView.tsx
src/room/CallEventAudioRenderer.test.tsx
src/room/CallEventAudioRenderer.tsx
src/room/EarpieceOverlay.module.css
src/room/EarpieceOverlay.tsx
src/room/EncryptionLock.module.css
src/room/EncryptionLock.tsx
src/room/GroupCallErrorBoundary.test.tsx
src/room/GroupCallErrorBoundary.tsx
src/room/GroupCallView.test.tsx
src/room/GroupCallView.tsx
src/room/InCallView.module.css
src/room/InCallView.test.tsx
src/room/InCallView.tsx
src/room/InviteModal.module.css
src/room/InviteModal.test.tsx
src/room/InviteModal.tsx
src/room/LobbyView.module.css
src/room/LobbyView.test.tsx
src/room/LobbyView.tsx
src/room/RageshakeRequestModal.tsx
src/room/ReactionAudioRenderer.test.tsx
src/room/ReactionAudioRenderer.tsx
src/room/ReactionsOverlay.module.css
src/room/ReactionsOverlay.test.tsx
src/room/ReactionsOverlay.tsx
src/room/RoomAuthView.module.css
src/room/RoomAuthView.tsx
src/room/RoomPage.tsx
src/room/VideoPreview.module.css
src/room/VideoPreview.test.tsx
src/room/VideoPreview.tsx
src/room/__snapshots__/GroupCallErrorBoundary.test.tsx.snap
src/room/__snapshots__/InCallView.test.tsx.snap
src/room/__snapshots__/LobbyView.test.tsx.snap
src/room/useJoinRule.ts
src/room/useLoadGroupCall.ts
src/room/useRoomAvatar.ts
src/room/useRoomName.ts
src/room/useRoomState.ts
src/settings/DeveloperSettingsTab.module.css
src/settings/DeveloperSettingsTab.test.tsx
src/settings/DeveloperSettingsTab.tsx
src/settings/DeviceSelection.module.css
src/settings/DeviceSelection.tsx
src/settings/FeedbackSettingsTab.tsx
src/settings/MediaQualitySettings.tsx
src/settings/PreferencesSettingsTab.tsx
src/settings/ProfileSettingsTab.module.css
src/settings/ProfileSettingsTab.tsx
src/settings/RageshakeButton.module.css
src/settings/RageshakeButton.tsx
src/settings/SettingsModal.module.css
src/settings/SettingsModal.tsx
src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap
src/settings/rageshake.test.ts
src/settings/rageshake.ts
src/settings/settings.test.ts
src/settings/settings.ts
src/settings/submit-rageshake.test.ts
src/settings/submit-rageshake.ts
src/settings/useSubmitRageshake.test.tsx
src/sound/LICENCE.md
src/sound/call_declined.mp3
src/sound/call_declined.ogg
src/sound/call_timeout.mp3
src/sound/call_timeout.ogg
src/sound/end_talk.mp3
src/sound/end_talk.ogg
src/sound/join_call.mp3
src/sound/join_call.ogg
src/sound/left_call.mp3
src/sound/left_call.ogg
src/sound/raise_hand.mp3
src/sound/raise_hand.ogg
src/sound/reactions/baduntss.mp3
src/sound/reactions/baduntss.ogg
src/sound/reactions/cat.mp3
src/sound/reactions/cat.ogg
src/sound/reactions/clap.mp3
src/sound/reactions/clap.ogg
src/sound/reactions/crickets.mp3
src/sound/reactions/crickets.ogg
src/sound/reactions/deer.mp3
src/sound/reactions/deer.ogg
src/sound/reactions/dog.mp3
src/sound/reactions/dog.ogg
src/sound/reactions/generic.mp3
src/sound/reactions/generic.ogg
src/sound/reactions/lightbulb.mp3
src/sound/reactions/lightbulb.ogg
src/sound/reactions/party.mp3
src/sound/reactions/party.ogg
src/sound/reactions/rock.mp3
src/sound/reactions/rock.ogg
src/sound/reactions/wave.mp3
src/sound/reactions/wave.ogg
src/sound/ringtone.mp3
src/sound/ringtone.ogg
src/sound/screen_share_started.mp3
src/sound/screen_share_started.ogg
src/sound/start_talk_local.mp3
src/sound/start_talk_local.ogg
src/sound/start_talk_remote.mp3
src/sound/start_talk_remote.ogg
src/soundUtils.ts
src/state/AndroidControlledAudioOutput.test.ts
src/state/AndroidControlledAudioOutput.ts
src/state/AppViewModel.ts
src/state/AudioOutput.test.ts
src/state/Behavior.ts
src/state/CallViewModel/CallNotificationLifecycle.test.ts
src/state/CallViewModel/CallNotificationLifecycle.ts
src/state/CallViewModel/CallViewModel.test.ts
src/state/CallViewModel/CallViewModel.ts
src/state/CallViewModel/CallViewModelTestUtils.ts
src/state/CallViewModel/LayoutSwitch.test.ts
src/state/CallViewModel/LayoutSwitch.ts
src/state/CallViewModel/localMember/HomeserverConnected.test.ts
src/state/CallViewModel/localMember/HomeserverConnected.ts
src/state/CallViewModel/localMember/LocalMember.test.ts
src/state/CallViewModel/localMember/LocalMember.ts
src/state/CallViewModel/localMember/LocalTransport.test.ts
src/state/CallViewModel/localMember/LocalTransport.ts
src/state/CallViewModel/localMember/Publisher.test.ts
src/state/CallViewModel/localMember/Publisher.ts
src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts
src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts
src/state/CallViewModel/remoteMembers/Connection.test.ts
src/state/CallViewModel/remoteMembers/Connection.ts
src/state/CallViewModel/remoteMembers/ConnectionFactory.ts
src/state/CallViewModel/remoteMembers/ConnectionManager.test.ts
src/state/CallViewModel/remoteMembers/ConnectionManager.ts
src/state/CallViewModel/remoteMembers/ECConnectionFactory.test.ts
src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.test.ts
src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts
src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.test.ts
src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.ts
src/state/CallViewModel/remoteMembers/integration.test.ts
src/state/CallViewModelWidget.test.ts
src/state/GridLikeLayout.ts
src/state/IOSControlledAudioOutput.ts
src/state/MediaDevices.ts
src/state/MuteAllAudioModel.test.ts
src/state/MuteAllAudioModel.ts
src/state/MuteStates.test.ts
src/state/MuteStates.ts
src/state/ObservableScope.test.ts
src/state/ObservableScope.ts
src/state/OneOnOneLandscapeLayout.ts
src/state/OneOnOnePortraitLayout.ts
src/state/PipLayout.ts
src/state/SessionBehaviors.ts
src/state/SpotlightExpandedLayout.ts
src/state/TileStore.ts
src/state/TileViewModel.ts
src/state/ViewModel.ts
src/state/VolumeControls.ts
src/state/initialMuteState.test.ts
src/state/initialMuteState.ts
src/state/layout-types.ts
src/state/media/LocalScreenShareViewModel.ts
src/state/media/LocalUserMediaViewModel.ts
src/state/media/MediaViewModel.test.ts
src/state/media/MediaViewModel.ts
src/state/media/MemberMediaViewModel.ts
src/state/media/RemoteScreenShareViewModel.ts
src/state/media/RemoteUserMediaViewModel.ts
src/state/media/RingingMediaViewModel.ts
src/state/media/ScreenShareViewModel.ts
src/state/media/UserMediaViewModel.ts
src/state/media/WrappedUserMediaViewModel.ts
src/state/media/observeRtpStreamStats.ts
src/state/media/observeSpeaker.test.ts
src/state/media/observeSpeaker.ts
src/state/observeTrackReference.ts
src/tabs/Tabs.module.css
src/tabs/Tabs.tsx
src/tile/GridTile.module.css
src/tile/GridTile.test.tsx
src/tile/GridTile.tsx
src/tile/MediaView.module.css
src/tile/MediaView.test.tsx
src/tile/MediaView.tsx
src/tile/SpotlightTile.module.css
src/tile/SpotlightTile.test.tsx
src/tile/SpotlightTile.tsx
src/tile/TileAvatar.module.css
src/tile/TileAvatar.test.tsx
src/tile/TileAvatar.tsx
src/useAudioContext.test.tsx
src/useAudioContext.tsx
src/useBehavior.ts
src/useCallViewKeyboardShortcuts.test.tsx
src/useCallViewKeyboardShortcuts.ts
src/useEvents.test.tsx
src/useEvents.ts
src/useInitial.ts
src/useLatest.ts
src/useLocalStorage.test.tsx
src/useLocalStorage.ts
src/useMatrixRTCSessionMemberships.ts
src/useMediaQuery.ts
src/useMergedRefs.ts
src/usePageTitle.ts
src/usePrefersReducedMotion.ts
src/useReactiveState.ts
src/useTheme.test.ts
src/useTheme.ts
src/useWakeLock.ts
src/utils/array.ts
src/utils/displayname-integration.test.ts
src/utils/displayname.test.ts
src/utils/displayname.ts
src/utils/errors.ts
src/utils/fetch.test.ts
src/utils/fetch.ts
src/utils/i18n.ts
src/utils/iter.test.ts
src/utils/iter.ts
src/utils/matrix.ts
src/utils/media.ts
src/utils/observable.test.ts
src/utils/observable.ts
src/utils/spa.ts
src/utils/test-fixtures.ts
src/utils/test-viewmodel.ts
src/utils/test.ts
src/utils/videoFit.test.ts
src/utils/videoFit.ts
src/vitest.setup.ts
src/widget.test.ts
src/widget.ts
tsconfig.json
vite-embedded.config.ts
vite-sdk.config.ts
vite.config.ts
vitest.config.ts
@@ -0,0 +1,27 @@
.gitignore
README.md
monitoring/.env.example
monitoring/README.md
monitoring/alertmanager/alertmanager.yml
monitoring/alertmanager/matrix-alerts.py
monitoring/alertmanager/release-watch.py
monitoring/alloy/config.alloy
monitoring/cve/cve-exporter.py
monitoring/cve/images.txt
monitoring/cve/scan-loop.sh
monitoring/docker-compose.yml
monitoring/grafana/dashboards/gameserver/pterodactyl-server.json
monitoring/grafana/dashboards/general/k3s-cluster-monitoring.json
monitoring/grafana/dashboards/general/kubernetes-views-nodes-list.json
monitoring/grafana/dashboards/general/logs-app.json
monitoring/grafana/dashboards/matrix/flux2.json
monitoring/grafana/dashboards/matrix/k8s-dashboard.json
monitoring/grafana/dashboards/operating/node-exporter-full.json
monitoring/grafana/dashboards/operating/operating-docker-host-container-overview.json
monitoring/grafana/dashboards/operating/operating-traefik-official-standalone-dashboard.json
monitoring/grafana/dashboards/security/cve-overview.json
monitoring/grafana/provisioning/dashboards/dashboards.yml
monitoring/grafana/provisioning/datasources/datasources.yml
monitoring/loki/loki-config.yaml
monitoring/prometheus/alerts.yml
monitoring/prometheus/prometheus.yml
+152
View File
@@ -0,0 +1,152 @@
"""Shared helpers for the neckbeard field-test inventory scripts.
Determinism rules obeyed by every consumer of this module:
* No wall-clock time enters any output file. Where an output needs a
"days since" figure, it is measured against REFERENCE_DATE, which is
the committer date of the management repo's HEAD -- a property of the
tree under analysis, not of the moment the script runs.
* Every collection written out is sorted by an explicit key.
* Paths in outputs are repo-relative, never absolute.
"""
import os
import re
import subprocess
from datetime import date
from pathlib import Path
# Repo layout. WORKSPACE holds the management clone plus a components/
# directory; override with NB_WORKSPACE when the checkout lives elsewhere.
MGMT_REPO = Path(__file__).resolve().parents[2]
WORKSPACE = Path(os.environ.get("NB_WORKSPACE", MGMT_REPO.parent))
COMPONENTS_DIR = WORKSPACE / "components"
DATA_DIR = MGMT_REPO / "analysis" / "data"
GITLAB_HOST = "https://git.lab"
GROUP = "axion1337.chat"
# Frozen in analysis/SCOPE.md, confirmed by the human at the Phase-0 STOP.
COMPONENTS = [
("threadnet-call", "ThreadNet Call"),
("thread-net-git", "ThreadNet Git"),
("threadnet-operating", "ThreadNet Operating"),
("axion1337.chat-gitops", "ThreadNet Server Suite"),
("ThreadNet-Web", "ThreadNet Web"),
]
# Named out of scope as analysis targets by the human. References into
# them are still recorded, tagged points-outside-scope.
OUT_OF_SCOPE_PROJECTS = ["game-operating", "gameserver"]
OUT_OF_SCOPE_SUBGROUPS = ["vendor", "Archiv"]
# Tracked-but-vendored paths, excluded from trees and scans.
VENDORED = re.compile(r"(^|/)(node_modules|dist|build|\.yarn|vendor)/")
DOC_SUFFIXES = {".md", ".rst"}
# The management repo is measured at its default branch, never at the
# analysis branch: otherwise this analysis observes its own commits and
# its own analysis/ files and reports them as project reality.
BASELINE_REF = {"management": "main"}
ANALYSIS_DIR = "analysis/"
def repos():
"""(name, path) for the management repo and every in-scope component."""
out = [("management", MGMT_REPO)]
out += [(slug, COMPONENTS_DIR / slug) for slug, _ in COMPONENTS]
return out
def ref_of(name):
return BASELINE_REF.get(name, "HEAD")
def assert_untouched():
"""Fail loudly if this session modified anything outside analysis/.
The mandate forbids changing any existing file. That is checked here
mechanically rather than trusted, on every run.
"""
ref = ref_of("management")
diff = git(MGMT_REPO, "diff", "--name-only", ref, "--", ".",
f":(exclude){ANALYSIS_DIR}")
untracked = git(MGMT_REPO, "ls-files", "--others", "--exclude-standard",
"--", ".", f":(exclude){ANALYSIS_DIR}")
offending = [p for p in (diff + untracked).split("\n") if p.strip()]
if offending:
raise SystemExit(
"ABORT: this session changed files outside analysis/, which the "
"field-test mandate forbids:\n " + "\n ".join(offending))
def git(repo, *args):
"""Run git in repo, return stdout as text. Raises on non-zero exit."""
res = subprocess.run(
["git", "-C", str(repo), *args],
capture_output=True, text=True, errors="replace",
)
if res.returncode != 0:
raise RuntimeError(f"git {' '.join(args)} in {repo}: {res.stderr.strip()}")
return res.stdout
def tracked_files(name, repo, skip_vendored=True):
"""Sorted repo-relative paths tracked at the repo's baseline ref.
Reads the ref, not the index, so the analysis branch's own files stay
out of the inventory.
"""
files = [f for f in
git(repo, "ls-tree", "-r", "-z", "--name-only", ref_of(name)).split("\0")
if f]
files = [f for f in files if not f.startswith(ANALYSIS_DIR)]
if skip_vendored:
files = [f for f in files if not VENDORED.search(f)]
return sorted(files)
def last_commit(name, repo, path):
"""(iso_date, author_name, short_sha) of the newest commit touching path."""
out = git(repo, "log", "-1", "--format=%ad\t%an\t%h", "--date=short",
ref_of(name), "--", path)
if not out.strip():
return ("", "", "")
return tuple(out.strip().split("\t"))
def _reference_date():
out = git(MGMT_REPO, "log", "-1", "--format=%cd", "--date=short",
ref_of("management"))
y, m, d = (int(x) for x in out.strip().split("-"))
return date(y, m, d)
REFERENCE_DATE = _reference_date()
def days_since(iso_date):
"""Whole days from iso_date to REFERENCE_DATE; '' when the date is empty."""
if not iso_date:
return ""
y, m, d = (int(x) for x in iso_date.split("-"))
return (REFERENCE_DATE - date(y, m, d)).days
def cell(text):
"""Make a value safe for a TSV cell: no tabs, no newlines, trimmed."""
return str(text).replace("\t", " ").replace("\r", " ").replace("\n", " ").strip()
def write_tsv(name, header, rows):
"""Write sorted rows to analysis/data/<name>, tab separated."""
DATA_DIR.mkdir(parents=True, exist_ok=True)
path = DATA_DIR / name
with path.open("w", encoding="utf-8") as fh:
fh.write("\t".join(header) + "\n")
for row in rows:
fh.write("\t".join(cell(v) for v in row) + "\n")
print(f" {name}: {len(rows)} rows")
return path
+99
View File
@@ -0,0 +1,99 @@
"""Export group issues from git.lab to analysis/data/gitlab_issues.json.
Metadata only -- titles, labels, dates, state -- never descriptions or
comment bodies. The token is read from the path the management repo's
CLAUDE.md sanctions (~/.config/gitlab-lab/token) and is never printed,
logged or written anywhere.
All issues of the group are exported, open and closed alike: the group is
small enough that a full export beats an arbitrary "recently closed"
cutoff, and a full export is trivially reproducible. Issues of projects
the human placed out of scope are exported too and tagged
in_scope=false -- they are evidence about where work lives.
Skipped without failing the run when the token file is missing or git.lab
is unreachable; run_all.sh then proceeds without the ticket dimension.
"""
import json
import sys
import urllib.error
import urllib.request
from pathlib import Path
from common import (
COMPONENTS, DATA_DIR, GITLAB_HOST, GROUP, OUT_OF_SCOPE_PROJECTS,
)
TOKEN_FILE = Path.home() / ".config" / "gitlab-lab" / "token"
IN_SCOPE = {slug for slug, _ in COMPONENTS} | {"management"}
# Exactly the fields the analysis needs. Anything else -- above all
# `description` -- is dropped before it reaches disk.
FIELDS = ["id", "iid", "project_id", "title", "state", "labels",
"created_at", "updated_at", "closed_at", "due_date"]
def api(token, path):
"""Yield every page of a GitLab list endpoint."""
url = f"{GITLAB_HOST}/api/v4/{path}"
while url:
req = urllib.request.Request(url, headers={"PRIVATE-TOKEN": token})
with urllib.request.urlopen(req, timeout=60) as resp:
yield from json.load(resp)
url = None
for link in resp.headers.get("Link", "").split(","):
if 'rel="next"' in link:
url = link.split(";")[0].strip().strip("<>")
def slim(issue, projects):
out = {k: issue.get(k) for k in FIELDS}
out["labels"] = sorted(out["labels"] or [])
out["project"] = projects.get(issue["project_id"], str(issue["project_id"]))
out["in_scope"] = out["project"] in IN_SCOPE
milestone = issue.get("milestone")
out["milestone"] = milestone["title"] if milestone else None
assignee = issue.get("assignee")
out["assignee"] = assignee["username"] if assignee else None
return out
def main():
if not TOKEN_FILE.exists():
print(f" gitlab_issues.json: SKIPPED, no token at {TOKEN_FILE}")
return 0
token = TOKEN_FILE.read_text().strip()
try:
projects = {
p["id"]: p["path"]
for p in api(token, f"groups/{GROUP}/projects?per_page=100&archived=false")
}
issues = list(api(token, f"groups/{GROUP}/issues?per_page=100&state=all&scope=all"))
except (urllib.error.URLError, TimeoutError) as exc:
print(f" gitlab_issues.json: SKIPPED, git.lab unreachable ({exc.reason})")
return 0
payload = {
"source": f"{GITLAB_HOST}/api/v4/groups/{GROUP}/issues?state=all",
"note": "metadata only; descriptions and comments deliberately not exported",
"projects": {
path: {"id": pid, "in_scope": path in IN_SCOPE,
"declared_out_of_scope": path in OUT_OF_SCOPE_PROJECTS}
for pid, path in sorted(projects.items(), key=lambda kv: kv[1])
},
"issues": sorted((slim(i, projects) for i in issues), key=lambda i: i["id"]),
}
out = DATA_DIR / "gitlab_issues.json"
DATA_DIR.mkdir(parents=True, exist_ok=True)
out.write_text(json.dumps(payload, indent=2, ensure_ascii=False,
sort_keys=True) + "\n", encoding="utf-8")
print(f" gitlab_issues.json: {len(payload['issues'])} issues, "
f"{len(projects)} projects")
return 0
if __name__ == "__main__":
sys.exit(main())
+83
View File
@@ -0,0 +1,83 @@
"""Extract checkable claims from the management repo's docs -> claims.tsv.
Phase 1 only *extracts*; nothing here judges whether a claim is true.
Verification happens in Phase 2.
A script cannot recognise a claim semantically, so extraction is trigger
based: a doc line is emitted when it matches at least one pattern that
marks it as asserting something checkable about the world (a component,
a count, a status, a version, a path, a date, the mirror topology, an
issue). Recall is favoured over precision -- a false positive costs a
Phase-2 glance, a false negative loses evidence.
Only management-repo docs are scanned: the mandate scopes claims to the
management repo's statements about its components.
"""
import re
from common import DOC_SUFFIXES, MGMT_REPO, cell, days_since, last_commit, \
tracked_files, write_tsv
COMPONENT_WORDS = (
r"ThreadNet[- ](?:Web|Call|Git|Operating|Server Suite)|threadnet-call|"
r"thread-net-git|threadnet-operating|threadnet-web|axion1337\.chat-gitops|"
r"game-operating|gameserver|management"
)
TRIGGERS = [
("component-ref", re.compile(COMPONENT_WORDS, re.I)),
("count", re.compile(
r"\b(ein|zwei|drei|vier|fünf|sechs|sieben|acht|neun|zehn|\d+)\s+"
r"(Repos?|Produkt-Repos?|Projekte?|Issues?|Commits?|Pipelines?|Themes?|"
r"Hosts?|Mirrors?)\b", re.I)),
("status", re.compile(
r"\b(erledigt|offen|live|aktiv|geschlossen|leer|umgezogen|entfallen|"
r"abgelöst|veraltet|überholt|scharf|grün|rot|tabu|kanonisch|"
r"zurückgestellt|verifiziert|bereinigt)\b", re.I)),
("version", re.compile(r"\bv?\d+\.\d+\.\d+\b|\b\d+\.\d+\.\d+-[\w.]+\b")),
("path-claim", re.compile(r"`[^`]*(?:/[^`]*|\.(?:md|ya?ml|json|py|ts|toml|crt))`")),
("date-claim", re.compile(r"\b(seit|Stand|bis|am|ab)\s+\d{4}-\d{2}-\d{2}\b", re.I)),
("mirror-topology", re.compile(
r"\b(Mirror|Spiegel|gespiegelt|Gitea|rohana|Push-Mirror|kanonisch|Flux-Source)\b",
re.I)),
("issue-ref", re.compile(r"(?:#\d+\b|/-/issues/\d+|\b[A-Z]{3,8}-\d{2}\b)")),
]
FENCE_RE = re.compile(r"^\s*(```|~~~)")
def main():
rows = []
docs = [f for f in tracked_files("management", MGMT_REPO)
if any(f.endswith(s) for s in DOC_SUFFIXES)]
for src in sorted(docs):
iso, _, _ = last_commit("management", MGMT_REPO, src)
text = (MGMT_REPO / src).read_text(encoding="utf-8")
in_fence = False
for lineno, line in enumerate(text.splitlines(), start=1):
if FENCE_RE.match(line):
in_fence = not in_fence
continue
stripped = line.strip()
if len(stripped) < 12:
continue
hits = [name for name, rx in TRIGGERS if rx.search(stripped)]
if not hits:
continue
rows.append([
src, lineno, ";".join(hits), "yes" if in_fence else "no",
iso, days_since(iso), cell(stripped)[:400],
])
rows.sort(key=lambda r: (r[0], r[1]))
write_tsv(
"claims.tsv",
["path", "line", "triggers", "in_code_block", "doc_last_commit_date",
"doc_days_since_change", "claim_text"],
rows,
)
if __name__ == "__main__":
main()
+146
View File
@@ -0,0 +1,146 @@
"""Link inventory across all analysed repos -> analysis/data/links.tsv.
Statuses are the three the mandate fixes:
ok target verified to exist
broken target verified to be absent
points-outside-scope target lies outside the analysed set
A fourth column, `kind`, carries the nuance the status alone cannot:
whether the target was a relative file, a git.lab issue, a repo URL, an
anchor, or an external URL.
Issue URLs resolve offline against gitlab_issues.json when that file
exists, so a rerun needs no network. Without it they are reported as
kind=issue-url, status=points-outside-scope, note=unresolved-no-issue-data.
"""
import json
import re
from urllib.parse import unquote, urlsplit
from common import (
COMPONENTS, DATA_DIR, DOC_SUFFIXES, GROUP, OUT_OF_SCOPE_PROJECTS,
OUT_OF_SCOPE_SUBGROUPS, repos, tracked_files, write_tsv,
)
# Inline markdown links, minus image embeds; reference definitions too.
LINK_RE = re.compile(r"(?<!\!)\[[^\]]*\]\(\s*<?([^)\s>]+)[^)]*\)")
# A reference definition needs a target that actually looks like one.
# Without that guard, log lines such as "[ERROR]: Task failed: ..." in
# imported wiki dumps parse as links to a file named "Task".
REFDEF_RE = re.compile(r"^\s{0,3}\[[^\]]+\]:\s*<?([^\s>]*[/.:#][^\s>]*)")
IN_SCOPE_REPOS = {slug for slug, _ in COMPONENTS} | {"management"}
ISSUE_URL_RE = re.compile(r"^/([^/]+(?:/[^/]+)*?)/-/issues/(\d+)")
def load_issue_index():
"""(project, iid) pairs known to exist, from a previous API export."""
path = DATA_DIR / "gitlab_issues.json"
if not path.exists():
return None
data = json.loads(path.read_text(encoding="utf-8"))
return {(i["project"], i["iid"]) for i in data["issues"]}
def classify_url(target, issue_index):
"""-> (kind, status, note) for an absolute URL."""
parts = urlsplit(target)
host = parts.netloc.lower()
if host != "git.lab":
return ("external-url", "points-outside-scope", f"host={host}")
m = ISSUE_URL_RE.match(parts.path)
if m:
ns, iid = m.group(1), int(m.group(2))
group, _, project = ns.rpartition("/")
if group != GROUP or project not in IN_SCOPE_REPOS:
return ("issue-url", "points-outside-scope", f"project={ns}")
if issue_index is None:
return ("issue-url", "points-outside-scope", "unresolved-no-issue-data")
if (project, iid) in issue_index:
return ("issue-url", "ok", f"{project}#{iid}")
return ("issue-url", "broken", f"{project}#{iid} not in group export")
segs = [s for s in parts.path.split("/") if s]
if segs and segs[0] == GROUP and len(segs) >= 2:
project = segs[1]
if project in OUT_OF_SCOPE_PROJECTS or project in OUT_OF_SCOPE_SUBGROUPS:
return ("repo-url", "points-outside-scope", f"declared out of scope: {project}")
if project in IN_SCOPE_REPOS:
return ("repo-url", "ok", f"in-scope repo {project}")
return ("repo-url", "points-outside-scope", f"path={parts.path or '/'}")
def classify_relative(repo_name, src, target, tracked):
"""-> (kind, status, note) for a repo-relative link."""
path = unquote(target.split("#")[0].split("?")[0])
if not path:
return ("anchor", "ok", "same-document anchor")
base = src.rsplit("/", 1)[0] if "/" in src else ""
joined = f"{base}/{path}" if base and not path.startswith("/") else path.lstrip("/")
resolved, stack = [], joined.split("/")
for seg in stack:
if seg in ("", "."):
continue
if seg == "..":
if resolved:
resolved.pop()
else:
return ("relative-file", "points-outside-scope",
"traverses above the repo root")
else:
resolved.append(seg)
cand = "/".join(resolved)
if cand in tracked:
return ("relative-file", "ok", cand)
# Directory links are legitimate targets in this doc set.
if any(t.startswith(cand + "/") for t in tracked):
return ("relative-file", "ok", cand + "/ (directory)")
# Extensionless doc links ("[x](playwright#anchor)") are common in
# imported upstream docs and resolve in the renderers that serve them.
for suffix in sorted(DOC_SUFFIXES):
if cand + suffix in tracked:
return ("relative-file", "ok", f"{cand}{suffix} (extension implied)")
return ("relative-file", "broken", f"no tracked file at {cand}")
def main():
issue_index = load_issue_index()
rows = []
for name, repo in repos():
tracked = set(tracked_files(name, repo))
docs = [f for f in tracked if any(f.endswith(s) for s in DOC_SUFFIXES)]
for src in docs:
try:
text = (repo / src).read_text(encoding="utf-8")
except (OSError, UnicodeDecodeError):
continue
for lineno, line in enumerate(text.splitlines(), start=1):
targets = LINK_RE.findall(line)
ref = REFDEF_RE.match(line)
if ref:
targets = targets + [ref.group(1)]
for target in targets:
if target.startswith(("mailto:", "tel:")):
kind, status, note = ("mailto", "points-outside-scope", "")
elif target.startswith("#"):
kind, status, note = ("anchor", "ok", "same-document anchor")
elif re.match(r"^[a-zA-Z][a-zA-Z0-9+.-]*://", target):
kind, status, note = classify_url(target, issue_index)
else:
kind, status, note = classify_relative(name, src, target, tracked)
rows.append([name, src, lineno, kind, target, status, note])
rows.sort(key=lambda r: (r[0], r[1], r[2], r[4]))
write_tsv("links.tsv",
["repo", "src_path", "line", "kind", "target", "status", "note"],
rows)
if __name__ == "__main__":
main()
+171
View File
@@ -0,0 +1,171 @@
"""Per-repo inventory: file trees, doc inventory, markers, git activity.
Writes tree_<repo>.txt, docs_inventory.tsv, markers.tsv, git_activity.tsv.
"""
import re
from collections import defaultdict
from datetime import date
from common import (
DATA_DIR, DOC_SUFFIXES, assert_untouched, days_since, git, last_commit,
ref_of, repos, tracked_files, write_tsv,
)
MARKER_RE = re.compile(r"\b(TODO|FIXME|HACK|XXX|DEPRECATED)\b")
# git grep's ERE does not implement \b, which silently reports zero
# markers; the scan therefore runs in Python, where \b works.
MAX_SCAN_BYTES = 512 * 1024
def write_trees():
for name, repo in repos():
files = tracked_files(name, repo)
path = DATA_DIR / f"tree_{name}.txt"
path.write_text("\n".join(files) + "\n", encoding="utf-8")
print(f" tree_{name}.txt: {len(files)} files")
def write_docs_inventory():
rows = []
for name, repo in repos():
for f in tracked_files(name, repo):
if not any(f.endswith(s) for s in DOC_SUFFIXES):
continue
size = (repo / f).stat().st_size
iso, author, sha = last_commit(name, repo, f)
rows.append([name, f, size, iso, author, days_since(iso), sha])
rows.sort(key=lambda r: (r[0], r[1]))
write_tsv(
"docs_inventory.tsv",
["repo", "path", "bytes", "last_commit_date", "last_author",
"days_since_change", "last_commit"],
rows,
)
def _blame_dates(repo, path, lines_wanted):
"""Map line number -> (author date, short sha, author) via one blame pass."""
try:
out = git(repo, "blame", "--line-porcelain", "--", path)
except RuntimeError:
return {}
result, sha, author, when, lineno = {}, None, None, None, None
for line in out.splitlines():
if re.match(r"^[0-9a-f]{40} ", line):
parts = line.split()
sha, lineno = parts[0], int(parts[2])
elif line.startswith("author "):
author = line[len("author "):]
elif line.startswith("author-time "):
when = date.fromtimestamp(int(line[len("author-time "):])).isoformat()
elif line.startswith("\t"):
if lineno in lines_wanted:
result[lineno] = (when or "", (sha or "")[:9], author or "")
return result
def write_markers():
rows = []
for name, repo in repos():
for f in tracked_files(name, repo):
full = repo / f
try:
if full.stat().st_size > MAX_SCAN_BYTES:
continue
text = full.read_text(encoding="utf-8")
except (OSError, UnicodeDecodeError):
continue # binary or unreadable: not a marker carrier
hits = {}
for i, line in enumerate(text.splitlines(), start=1):
m = MARKER_RE.search(line)
if m:
hits[i] = (m.group(1), line.strip()[:200])
if not hits:
continue
blame = _blame_dates(repo, f, set(hits))
for lineno in sorted(hits):
marker, snippet = hits[lineno]
when, sha, author = blame.get(lineno, ("", "", ""))
rows.append([name, f, lineno, marker, snippet, when,
days_since(when), sha, author])
rows.sort(key=lambda r: (r[0], r[1], r[2]))
write_tsv(
"markers.tsv",
["repo", "path", "line", "marker", "text", "blame_date",
"days_since_blame", "blame_commit", "blame_author"],
rows,
)
def _is_doc(path):
return any(path.endswith(s) for s in DOC_SUFFIXES)
def write_git_activity():
rows = []
for name, repo in repos():
log = git(repo, "log", "--format=%x01%H\t%ad", "--date=short",
"--name-only", ref_of(name))
per_month = defaultdict(lambda: {"commits": 0, "docs": 0, "code": 0,
"docs_only": 0})
commit_days = []
for chunk in log.split("\x01"):
if not chunk.strip():
continue
head, _, body = chunk.partition("\n")
sha, iso = head.split("\t")
files = [ln for ln in body.splitlines() if ln.strip()]
touched_docs = any(_is_doc(f) for f in files)
touched_code = any(not _is_doc(f) for f in files)
bucket = per_month[iso[:7]]
bucket["commits"] += 1
bucket["docs"] += 1 if touched_docs else 0
bucket["code"] += 1 if touched_code else 0
bucket["docs_only"] += 1 if touched_docs and not touched_code else 0
commit_days.append(iso)
for month in sorted(per_month):
b = per_month[month]
for metric in ("commits", "docs", "code", "docs_only"):
key = {"docs": "commits_touching_docs",
"code": "commits_touching_code",
"docs_only": "commits_docs_only"}.get(metric, metric)
rows.append([name, month, key, b[metric]])
days = sorted({d for d in commit_days})
totals = {
"commits": len(commit_days),
"commits_touching_docs": sum(b["docs"] for b in per_month.values()),
"commits_touching_code": sum(b["code"] for b in per_month.values()),
"commits_docs_only": sum(b["docs_only"] for b in per_month.values()),
"active_days": len(days),
"first_commit": days[0] if days else "",
"last_commit": days[-1] if days else "",
"days_since_last_commit": days_since(days[-1]) if days else "",
}
gap, gap_from, gap_to = 0, "", ""
for a, b in zip(days, days[1:]):
ya, ma, da = (int(x) for x in a.split("-"))
yb, mb, db = (int(x) for x in b.split("-"))
delta = (date(yb, mb, db) - date(ya, ma, da)).days
if delta > gap:
gap, gap_from, gap_to = delta, a, b
totals["max_gap_days"] = gap
totals["max_gap_from"] = gap_from
totals["max_gap_to"] = gap_to
for metric in sorted(totals):
rows.append([name, "ALL", metric, totals[metric]])
rows.sort(key=lambda r: (r[0], r[1], r[2]))
write_tsv("git_activity.tsv", ["repo", "scope", "metric", "value"], rows)
if __name__ == "__main__":
assert_untouched()
DATA_DIR.mkdir(parents=True, exist_ok=True)
write_trees()
write_docs_inventory()
write_markers()
write_git_activity()
+68
View File
@@ -0,0 +1,68 @@
#!/usr/bin/env bash
# Reproduce every raw data file of the neckbeard field test from zero.
#
# bash analysis/scripts/run_all.sh
#
# Clones the in-scope component repos next to the management repo if they
# are missing, then regenerates everything under analysis/data/.
# Rerunning on an unchanged tree must produce no diff -- no wall-clock
# time enters any output (see common.py).
#
# Requirements: bash, git, python3 (stdlib only). Network and lab access
# are needed for the initial clone and for gitlab_issues.json; both steps
# skip cleanly without them, and everything else still runs.
set -euo pipefail
MGMT_REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
WORKSPACE="${NB_WORKSPACE:-$(dirname "$MGMT_REPO")}"
COMPONENTS_DIR="$WORKSPACE/components"
SCRIPTS="$MGMT_REPO/analysis/scripts"
# Scope frozen in analysis/SCOPE.md, confirmed by the human at Phase 0.
COMPONENTS=(
threadnet-call
thread-net-git
threadnet-operating
axion1337.chat-gitops
ThreadNet-Web
)
echo "management repo: $MGMT_REPO"
echo "workspace: $WORKSPACE"
echo
echo "== components"
mkdir -p "$COMPONENTS_DIR"
for slug in "${COMPONENTS[@]}"; do
target="$COMPONENTS_DIR/$slug"
if [ -d "$target/.git" ]; then
echo " $slug: present"
continue
fi
echo " $slug: cloning"
GIT_TERMINAL_PROMPT=0 git clone -q \
"https://git.lab/axion1337.chat/$slug.git" "$target"
# This analysis must never write back. Break the push path on every
# clone it creates.
git -C "$target" remote set-url --push origin DISABLED-no-push
done
echo
echo "== tickets"
python3 "$SCRIPTS/fetch_gitlab_issues.py"
echo
echo "== repo inventory"
python3 "$SCRIPTS/inv_repo.py"
echo
echo "== links"
python3 "$SCRIPTS/inv_links.py"
echo
echo "== claims"
python3 "$SCRIPTS/inv_claims.py"
echo
echo "done. raw data in $MGMT_REPO/analysis/data/"