feat: slice 3 - wiki, sources and AARs in their neckbeard homes
Gate 4, slice 3: verfahren/, hosts/, vision/ and shared/ moved via git mv - six AARs to docs/aar/ (four harvested by the 2026-08-09 retro, two open), procedures and host knowledge to docs/wiki/ (admin, deployment, architecture, new area vision), the retro protocol and the commit mapping table to docs/sources/ (protokolle/, migration/). New: the wiki index linking every page, and the mirror-topology page carrying the why-two-places reasoning verbatim from the old CLAUDE.md (F-013 preserved). All moved-path references retargeted; the link checker drove the sweep to zero. pruefe_prosa.py added (pattern C+D): SHA citations resolve via repo, mapping table, optional component clones or a curated exemption list (documented dead Gitea-force-push commits, a vendor-repo tag, an Authentik uid that is hex but no git SHA, the external neckbeard reference); wiki task prose without an issue reference errors, with a visible pragma for deliberate checklists; the dead-tracker denylist now covers every mirrored repo's retired Gitea tracker (F-005) - two links re-verified against live GitLab titles and retargeted, five defused into honest historical citations. Verified: validate 0/0, gen_status --check current, drift 0. Demo on the pre-migration state fires 6 findings (3 orphaned SHAs, 3 task blocks); on the current tree exactly the 3 F-004 task blocks remain - they turn green in slice 4 when the issues exist, which is why pruefe_prosa joins CI only then. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
70e81e2ff1
commit
92b448fe30
@@ -0,0 +1,220 @@
|
||||
---
|
||||
type: wiki-page
|
||||
area: architecture
|
||||
related: []
|
||||
---
|
||||
|
||||
# Branding: Marke, Farben, Bildsprache
|
||||
|
||||
Übergreifend, weil dieselben Farben in mehreren Oberflächen eingestellt werden
|
||||
(Chat-Clients, Wikis, künftige Dienste) und sich das nicht pro Host oder Linie
|
||||
trennen lässt: **Bestand** (welche Farbe wo eingetragen ist) und **Historie**
|
||||
(was wann warum geändert wurde).
|
||||
|
||||
Hier im `management`-Repo, weil es als einziges der beteiligten Repos
|
||||
**gespiegelt** ist und jede Werkzeugentscheidung überlebt: Wird das
|
||||
BookStack-Experiment nach [ADR-0007](../../adr/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md)
|
||||
abgeräumt oder ein Client ersetzt, bleiben Marke und Paletten bestehen.
|
||||
|
||||
## Bildmarke
|
||||
|
||||
`threadnet-mark.png` (Bildmarke) und `threadnet-logo-wortmarke.png` (mit
|
||||
Schriftzug), erstellt von sorb. Sie liegen im Wiki-Repo unter `static/img/` und
|
||||
sind die Quelle für alle abgeleiteten Formate — Favicon, App-Icons für macOS,
|
||||
Windows und Linux, Web-Icons.
|
||||
|
||||
⚠️ Beim Ableiten den **transparenten Rand wegschneiden** und mit `resize()`
|
||||
skalieren, nicht mit `thumbnail()` — Letzteres verkleinert nur und lässt das Motiv
|
||||
in großen Icons als Briefmarke zurück (real passiert, siehe
|
||||
[AAR 2026-08-02](../../aar/2026-08-02-wiki-und-desktop-clients.md)).
|
||||
|
||||
⚠️ **Und danach mittig setzen — das ist ein zweiter, eigener Schritt.** Beim ersten
|
||||
Anlauf wurde nur beschnitten und skaliert: Das Motiv füllte 81 % der Breite, saß
|
||||
aber mit 3 % Rand oben und 40 % unten an der Oberkante. In runden und quadratischen
|
||||
Icon-Slots fällt das sofort auf. Korrigiert am 2026-08-06 auf 21 % oben wie unten.
|
||||
|
||||
**Das Rezept, das jetzt gilt:** Bounding-Box des Motivs ermitteln, darauf
|
||||
beschneiden, auf ~81 % der Kantenlänge skalieren, auf einer quadratischen,
|
||||
transparenten Fläche **mittig einsetzen**. Alle Größen aus *derselben* Quelldatei
|
||||
ableiten — dann können sie nicht auseinanderlaufen.
|
||||
|
||||
### Wo überall Icons liegen
|
||||
|
||||
Elf Artefakte, alle aus einer Quelle (Stand 2026-08-06, `v0.4.0`):
|
||||
|
||||
| Ort | Was |
|
||||
|---|---|
|
||||
| `apps/web/res/vector-icons/` | 1024, 512, 180, 152, 144, 120, 24 px |
|
||||
| `apps/desktop/build/icon.png` | App-/Installer-Icon |
|
||||
| `apps/desktop/build/icon.ico` | Windows, 7 Größen von 16 bis 256 |
|
||||
| `apps/desktop/build/icon.icns` | macOS, via `iconutil` aus einem `.iconset` |
|
||||
| `apps/desktop/build/icon.icon/Assets/element.png` | Layer des macOS-Icon-Composers |
|
||||
|
||||
Prüfen lässt sich die Gleichheit über die Prüfsumme von `vector-icons/1024.png`
|
||||
gegen `build/icon.png` — weichen sie ab, ist eine Seite nachgezogen worden und die
|
||||
andere nicht.
|
||||
|
||||
## Paletten
|
||||
|
||||
### aXion1337 Dark — das Stammschema
|
||||
|
||||
Gruvbox Dark. Grundtöne `#282828` / `#1d2021`, Text `#ebdbb2`, Akzent `#bd93f9`,
|
||||
Sekundär `#fe8019`. Die acht Username-Farben sind der Gruvbox-Satz.
|
||||
**`aXion1337 Light` ist das exakte helle Gegenstück** (Gruvbox Light) — gleiche
|
||||
Rollenverteilung, gespiegelte Helligkeitsachse. Wer eines ändert, zieht das andere
|
||||
mit.
|
||||
|
||||
### Terrakotta-Beige — sorbs BookStack-Schema
|
||||
|
||||
Am 2026-08-02 in der BookStack-Oberfläche eingestellt und von dort extrahiert
|
||||
(die Werte stehen als CSS-Variablen im ausgelieferten HTML). Fünf der sieben sind
|
||||
der Coolors-Satz `#264653 · #2A9D8F · #E9C46A · #F4A261 · #E76F51`:
|
||||
|
||||
| Rolle in BookStack | Wert | Ton |
|
||||
|---|---|---|
|
||||
| Primäre Farbe | `#264653` | Charcoal |
|
||||
| Standard-Linkfarbe | `#5f757b` | gedämpftes Blaugrau |
|
||||
| Regalfarbe | `#e76e51` | Burnt Sienna |
|
||||
| Buchfarbe | `#e9c46a` | Saffron |
|
||||
| Kapitelfarbe | `#f3a261` | Sandy Brown |
|
||||
| Seitenfarbe | `#77bb41` | Grün |
|
||||
| Seitenentwurfsfarbe | `#e32400` | Rot |
|
||||
|
||||
Bemerkenswert: **dieses von Hand eingestellte Schema ist bis auf zwei Ziffern die
|
||||
offizielle Sunset-Boulevard-Palette** (siehe nächster Abschnitt) — `#e76e51` statt
|
||||
`#e76f51`, `#f3a261` statt `#f4a261`. Beide Wege sind unabhängig voneinander auf
|
||||
demselben Coolors-Satz gelandet. Die Irritation an der ersten Theme-Fassung war
|
||||
also berechtigt und ließ sich an der Originalquelle belegen.
|
||||
|
||||
### theme-factory — die zehn benannten Themes
|
||||
|
||||
Quelle ist Anthropics [theme-factory-Skill](https://github.com/anthropics/skills/tree/main/skills/theme-factory):
|
||||
je Theme vier Farben plus ein Schriftpaar. Sie sind seit 2026-08-02 **wörtlich
|
||||
übernommen** (gitops `b10b607`), nachdem eine erste Fassung die Namen frei
|
||||
interpretiert hatte.
|
||||
|
||||
| Theme | Hintergrund | hell/dunkel | Akzent · Sekundär · Highlight |
|
||||
|---|---|---|---|
|
||||
| Ocean Depths | `#f1faee` | hell | `#2d8b8b` · `#a8dadc` · `#457b9d` |
|
||||
| Sunset Boulevard | `#264653` | dunkel | `#e76f51` · `#f4a261` · `#e9c46a` |
|
||||
| Forest Canopy | `#faf9f6` | hell | `#2d4a2b` · `#7d8471` · `#a4ac86` |
|
||||
| Modern Minimalist | `#ffffff` | hell | `#36454f` · `#708090` · `#d3d3d3` |
|
||||
| Golden Hour | `#4a403a` | dunkel | `#f4a900` · `#c1666b` · `#d4b896` |
|
||||
| Arctic Frost | `#fafafa` | hell | `#4a6fa5` · `#d4e4f7` · `#c0c0c0` |
|
||||
| Desert Rose | `#5d2e46` | dunkel | `#d4a5a5` · `#b87d6d` · `#e8d5c4` |
|
||||
| Tech Innovation | `#ffffff` | hell | `#0066ff` · `#00ffff` · `#1e1e1e` |
|
||||
| Botanical Garden | `#f5f3ed` | hell | `#4a7c59` · `#f9a620` · `#b7472a` |
|
||||
| Midnight Galaxy | `#e6e6fa` | hell | `#2b1e3e` · `#4a4e8f` · `#a490c2` |
|
||||
|
||||
⚠️ **Ob ein Theme hell oder dunkel gemeint ist, steht nicht verlässlich in den
|
||||
Beschreibungen** — „Warm Sand · backgrounds" findet sich bei einem Theme, dessen
|
||||
Showcase-Seite dunkel ist. Maßgeblich ist `theme-showcase.pdf` im Skill: sieben der
|
||||
zehn sind hell, nur Sunset Boulevard, Golden Hour und Desert Rose dunkel.
|
||||
„Midnight" Galaxy ist trotz des Namens ein helles Theme mit dunkelviolettem Akzent.
|
||||
Wer die Werte prüfen will, rendert die PDF-Seiten und misst die Hintergrundfarbe,
|
||||
statt der Prosa zu glauben.
|
||||
|
||||
Die übrigen Rollen (Flächenabstufungen, Username-Farben) sind aus diesen vier
|
||||
Farben gemischt — so bleibt jedes Theme in sich stimmig, ohne dass Werte
|
||||
dazuerfunden werden.
|
||||
|
||||
## Namensgebung: ThreadNet oder aXion1337.Chat?
|
||||
|
||||
**Beides, auf verschiedenen Ebenen — und das ist Absicht, kein Versehen.**
|
||||
|
||||
| Ebene | Name | Wo gesetzt |
|
||||
|---|---|---|
|
||||
| Betriebssystem, Startmenü, Installer, PWA | **ThreadNet** | `productName` in `apps/desktop/axion1337/build.json`, `name` in `apps/web/res/manifest.json` |
|
||||
| in der Anwendung | **aXion1337.Chat** | `brand` in `element-values.yaml` (Prod) und `apps/desktop/axion1337/config.json` |
|
||||
| eingebettetes Call-Widget | **aXion1337.Chat** | `VITE_PRODUCT_NAME` in `.env.production` (threadnet-call) |
|
||||
| Anmeldeseite (Authentik) | **ThreadNet** | `branding_title` im Brand-Blueprint (gitops, `apps/authentik/authentik-blueprints.yaml`) |
|
||||
|
||||
Das Call-Widget folgt der Zeile darüber: Es läuft *in* der Anwendung, also heißt es
|
||||
dort auch so. Die Anmeldeseite dagegen kommt **vor** der Anwendung — dort meldet man
|
||||
sich am Werkzeug an, nicht in der Gemeinschaft. Deshalb ThreadNet.
|
||||
|
||||
Die Leitplanke dahinter steht in [`vision/threadnet.md`](../vision/threadnet.md):
|
||||
*ThreadNet ist das Tool, axion1337.chat die Community.* Das Programm heißt
|
||||
ThreadNet — auch wenn es jemand für eine andere Instanz nutzt; die Gemeinschaft
|
||||
darin heißt aXion1337.Chat.
|
||||
|
||||
⚠️ **Nicht „geradeziehen".** Wer nur eine der beiden Stellen sieht, hält es für
|
||||
eine Inkonsistenz. Ist es nicht.
|
||||
|
||||
**Attribution:** „ThreadNet — powered by Element" steht seit `v0.4.0` in
|
||||
*Einstellungen → Hilfe & Info*, direkt unter der Client-Version, verlinkt auf
|
||||
element.io. Element Web steht unter der AGPL; ein Fork unter eigenem Namen ist
|
||||
erlaubt, die Nennung ist die faire Form davon. Bewusst **nicht** im Kopiertext der
|
||||
Versionsangabe — der landet in Fehlerberichten, dort ist die Fork-Herkunft nur
|
||||
Rauschen.
|
||||
|
||||
## Wo was eingestellt ist
|
||||
|
||||
| Oberfläche | Ort | Anmerkung |
|
||||
|---|---|---|
|
||||
| Element/ThreadNet-Web | `apps/production/custom-configs/element-values.yaml` (gitops), `setting_defaults.custom_themes` | 17 Themes; Änderungen chirurgisch, **nie die YAML neu serialisieren** |
|
||||
| Web-Icons + PWA | `apps/web/res/vector-icons/`, `apps/web/res/manifest.json` (ThreadNet-Web) | `theme_color` = `#ed4f4c`, die Markenfarbe — nicht Elements `#76CFA6` |
|
||||
| Desktop-Icons | `apps/desktop/build/` (ThreadNet-Web) | `.png`, `.ico`, `.icns`, Layer-Asset — alle aus derselben Quelle |
|
||||
| ThreadNet Desktop | `apps/desktop/axion1337/config.json` (ThreadNet-Web) | eigene Kopie derselben Themes — beim Ändern beide mitziehen |
|
||||
| BookStack | *Settings → Customization*, getrennt für hell und dunkel | liegt in der Datenbank, **nicht im Repo** — schriftlich hier und in `theme/sorbs-palette.md` |
|
||||
| BookStack (Feinschliff) | `theme/*.css` im Wiki-BookStack-Repo | nur Flächen, Text, Ränder — die sieben Farben oben gehören in die Oberfläche |
|
||||
| Docusaurus-Wiki | `src/css/custom.css` (homelab/wiki) | bislang nur Akzentfarbe |
|
||||
| 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 |
|
||||
| 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 |
|
||||
|
||||
### Titelbild
|
||||
|
||||
Seit 2026-08-06 zeigt die Login-Seite ein Alpenglühen über einer Bergkette statt
|
||||
Elements See: **John Towner** ([@heytowner](https://unsplash.com/@heytowner)),
|
||||
[Unsplash](https://unsplash.com/photos/JgOeRuGD_Y4), *Unsplash License*.
|
||||
|
||||
Die Lizenz erlaubt kommerzielle Nutzung und Bearbeitung ohne Genehmigung und
|
||||
**verlangt keine Namensnennung**. Genannt wird er trotzdem — in *Einstellungen →
|
||||
Hilfe & Info* unter „Danksagungen". Verboten wäre nur der Weiterverkauf
|
||||
unbearbeiteter Bilder und das Nachbauen eines konkurrierenden Bilddienstes; beides
|
||||
trifft uns nicht.
|
||||
|
||||
⚠️ **Die Danksagung ist bewusst nicht übersetzt.** Elements Schlüssel
|
||||
`credits|default_cover_photo` liegt in 32 Sprachdateien, 31 davon nennen deren
|
||||
Fotografen namentlich. Nur `en`/`de` anzupassen hätte in 29 Sprachen eine **falsche
|
||||
Attribution** stehen lassen — und diese 29 pflegen wir nicht, sie kommen aus Elements
|
||||
Übersetzungsdienst. Deshalb steht die Zeile als fester Text im TSX, wie schon die
|
||||
„powered by Element"-Attribution.
|
||||
|
||||
⚠️ **Authentik hängt an dieser Datei.** Der Flow-Hintergrund dort zeigt auf
|
||||
`https://axion1337.chat/themes/element/img/backgrounds/alpenglow.jpg`. Wer das Bild im
|
||||
Client umbenennt oder entfernt, macht die Anmeldeseite grau — und merkt es nicht,
|
||||
weil im Client alles stimmt.
|
||||
|
||||
### Warum in Authentik kein PNG-Logo funktioniert
|
||||
|
||||
Der erste Versuch setzte `branding_logo` auf `vector-icons/512.png`. Ergebnis: das
|
||||
Logo rendert in der Anmeldemaske in **Naturgröße**. Authentiks Default ist ein SVG,
|
||||
das sich seiner Box anpasst — ein PNG tut das nicht, und der Slot begrenzt die Höhe
|
||||
nicht.
|
||||
|
||||
Zurückgesetzt am 2026-08-06 auf Authentiks eigenes Logo. Ein Ersatz braucht eine
|
||||
**Wortmarke im Querformat, am besten als SVG**; alles Vorhandene ist quadratisch,
|
||||
auch `threadnet-logo-wortmarke.png` (Bildmarke *über* Schriftzug). Offen in
|
||||
gitops#55.
|
||||
|
||||
⚠️ **Nicht über Authentiks Oberfläche einstellen.** Solange `branding_logo` im
|
||||
Blueprint steht, gewinnt der Blueprint: eine Auswahl in der UI hält bis zur nächsten
|
||||
Reconciliation und ist dann wieder weg.
|
||||
|
||||
⚠️ **Das BookStack-Schema lebt nur in der Datenbank.** Bei einem Volume-Verlust
|
||||
ist es weg — deshalb steht es oben in dieser Tabelle. Wiederherstellen heißt:
|
||||
sieben Felder in der Oberfläche neu eintragen.
|
||||
|
||||
Es steht bewusst an **zwei** Stellen schriftlich, und die Rollen sind verschieden:
|
||||
`theme/sorbs-palette.md` im BookStack-Repo ist die betriebsnahe Kopie mit den
|
||||
DB-Schlüsseln, liegt aber in der Gruppe `homelab` — die hat **keine Mirrors** und
|
||||
ist von außerhalb des Labs nicht lesbar. Diese Datei hier ist die gespiegelte
|
||||
und damit maßgebliche Fassung. Wer die Farben ändert, zieht beide mit; im
|
||||
Zweifel gilt, was in der laufenden Instanz eingestellt ist.
|
||||
|
||||
## Offen
|
||||
|
||||
Ob die Terrakotta-Richtung das Stammschema ablösen oder eine Alternative neben
|
||||
Gruvbox bleiben soll, ist nicht entschieden — das gehört in die Rebranding-Runde
|
||||
(→ [`vision/threadnet.md`](../vision/threadnet.md), ThreadNet-Web#10).
|
||||
Reference in New Issue
Block a user