# KynxBot GitHub-Updates: Bilder in Patchnotes

KynxBot postet neue Commits eines GitHub-Repositorys automatisch als Update-Post (Embed) in einen Discord-Kanal. Die Commit-Nachricht ist dabei die Patchnote: die erste Zeile wird zum Titel, der Rest zur Beschreibung.

Mit dieser Funktion kommen **Bilder aus dem Commit** mit in den Post – zum Beispiel Screenshots einer neuen Funktion. Das funktioniert auch bei privaten Repositories, solange der Server im Dashboard mit GitHub verbunden ist.

Einstellungen im Dashboard unter `/github-updates` → Kanal öffnen → „Update-Einstellungen“:

- **Bilder aus Commits anhängen** – an/aus (Standard: an)
- **Bilder-Ordner im Repo** – Standard: `patchnotes/` (leer = nur Bilder, die im Commit-Text stehen)

## Format

Pro Bild eine eigene Zeile im Commit-Body (Markdown-Bild):

```
![Kurzbeschreibung](patchnotes/datei.png)
```

- Der Pfad ist relativ zum Hauptordner des Repositorys. Das Bild wird in dem Stand geladen, den der Commit hat – es muss also **im selben Commit** (oder früher) mit hochgeladen werden.
- Steht nur der Dateiname da (`![Menü](menue.png)`) und die Datei liegt nicht im Hauptordner, sucht KynxBot zusätzlich im Bilder-Ordner.
- Die Kurzbeschreibung wird als Bildbeschreibung (Alt-Text) in Discord übernommen.
- Dateinamen mit Leerzeichen in spitze Klammern setzen: `![Menü](<patchnotes/mein bild.png>)` (oder `%20` statt Leerzeichen). Einfacher sind Dateinamen ohne Leerzeichen.
- Bild-Zeilen werden aus dem Text des Posts entfernt. Der übrige Commit-Text bleibt normal lesbar.
- Bild-Links gehen auch: `![Kurzbeschreibung](https://example.com/bild.png)`, ein nackter Link `https://example.com/bild.png`, ein normaler Link `[Screenshot](https://example.com/bild.png)` (der Linktext bleibt im Text stehen) oder `<https://example.com/bild.png>`. Nur `https://`, keine internen Adressen.
- Links auf Bilder im selben Repository werden wie ein Pfad behandelt – das klappt auch bei privaten Repositories. Erkannt werden:
  - `https://github.com/<besitzer>/<repo>/blob/<branch>/<pfad>` (auch `/raw/`)
  - `https://raw.githubusercontent.com/<besitzer>/<repo>/<branch>/<pfad>`
  - `https://raw.githubusercontent.com/<besitzer>/<repo>/refs/heads/<branch>/<pfad>` (so sehen „Raw“-Links von GitHub heute aus; `refs/tags/<tag>` geht ebenso)
  - Branches mit `/` im Namen (z. B. `feature/menue`).

  Gibt es den Branch nicht (mehr), lädt KynxBot die Datei aus dem Stand des Commits. Bei öffentlichen Repositories wird ein Link, der sich gar nicht auflösen lässt, zuletzt direkt an Discord weitergegeben.
- Pro Commit werden höchstens 8 Bild-Verweise ausgewertet (davon kommen höchstens 4 in den Post). Weitere Bild-Zeilen verschwinden trotzdem aus dem Text.
- Innerhalb von Code (`` `…` `` oder ```` ``` ````-Blöcken) wird nichts als Bild erkannt.

## Bilder-Ordner

Alle Bilder, die ein Commit im Bilder-Ordner **neu hinzufügt oder ändert**, kommen automatisch mit – auch ohne eigene Zeile im Commit-Text. Bilder mit eigener Zeile kommen zuerst (in der Reihenfolge im Text), danach die übrigen aus dem Ordner.

Der Ordner wird pro Kanal eingestellt. Leer lassen schaltet diese Automatik ab; Bild-Zeilen im Text funktionieren dann weiterhin.

## Limits

| Was | Grenze |
| --- | --- |
| Bilder pro Commit | höchstens 4 (weitere werden ignoriert) |
| Bild-Verweise im Commit-Text | höchstens 8 werden ausgewertet |
| Größe pro Bild | bis 8 MB |
| Größe aller Bilder zusammen | bis 20 MB (auf Discord-Servern ohne Boost gilt das Upload-Limit des Servers, meist 10 MB) |
| Formate | PNG, JPG/JPEG, WebP, GIF (der Dateiinhalt wird geprüft, nicht nur die Endung) |

Ein Bild, das nicht passt (zu groß, falsches Format, nicht gefunden), wird übersprungen. Der Post erscheint trotzdem – notfalls ohne Bilder.

Update-Posts erscheinen im neuen Discord-Layout: ein Rahmen in der Embed-Farbe mit Repository und Branch oben, Titel, Text, allen Bildern als Galerie im Rahmen (das erste groß), Commit-Infos darunter und den Knöpfen „Commit ansehen“ / „Repository“ direkt im Rahmen (statt einer zweiten Nachricht mit Link). Klappt das neue Layout einmal nicht, postet KynxBot automatisch im klassischen Embed – dann zeigt Discord weitere Bilder als Galerie darunter, wenn im Kanal „Klickbar“ eingeschaltet ist. Ein im Dashboard festgelegtes großes Bild wird bei Commits mit eigenen Bildern durch diese ersetzt.

## Beispiel

Dateien im Commit:

```
patchnotes/einstellungen.png   (neu)
src/settings.js                (geändert)
```

Commit-Nachricht:

```
Einstellungen: neues Menü.

Alle Optionen findest du jetzt an einem Ort.
![Das neue Einstellungsmenü](patchnotes/einstellungen.png)
```

Ergebnis in Discord: Titel „Einstellungen: neues Menü.“, Beschreibung „Alle Optionen findest du jetzt an einem Ort.“ und darunter das Bild.

Hinweis: Commits mit `[intern]` im Titel postet KynxBot gar nicht.

## Anleitung für KI-Agenten

Diesen Abschnitt kannst du deinem Coding-Agenten (Claude Code, Codex, Cursor …) geben oder in `CLAUDE.md` bzw. `AGENTS.md` deines Projekts ablegen. Im Dashboard gibt es dafür den Knopf „Anleitung für deinen KI-Agenten kopieren“ – dort ist dein eingestellter Ordner schon eingesetzt.

```
## Patchnotes mit Bildern (KynxBot GitHub-Updates)

Unsere Commits werden von KynxBot automatisch als Update-Post in Discord gepostet.
Bilder aus dem Commit kommen mit in den Post.

Regeln für Commits mit sichtbaren Änderungen:
1. Mach Screenshots oder Bilder der Änderung und speichere sie im Ordner `patchnotes/`
   – mit sprechenden Dateinamen, z. B. `patchnotes/neues-menue.png`.
2. Erlaubt sind PNG, JPG, WebP oder GIF, jeweils unter 8 MB, höchstens 4 Bilder pro Commit.
3. Schreib im Commit-Body pro Bild eine eigene Zeile:
   ![Kurzbeschreibung](patchnotes/datei.png)
4. Committe die Bilddateien im selben Commit mit.
5. Der übrige Commit-Text bleibt normal lesbar – die Bild-Zeilen entfernt KynxBot aus dem Post.
6. Commits ohne sichtbare Änderung bekommen keine Bilder.
```

Regeln für Agenten, kurz zusammengefasst:

- Bildpfad = relativer Pfad im Repository, ohne `../`, ohne führendes `/`.
- Dateiname ohne Leerzeichen, nur Buchstaben, Ziffern, `-` und `_`.
- Bild nicht in `.gitignore` aufnehmen und nicht per Git LFS speichern – sonst kann KynxBot es nicht lesen.
- Nicht mehr als 4 Bild-Zeilen pro Commit; große PNGs vorher verkleinern (z. B. auf 1600 px Breite).

## Summary (English)

KynxBot posts new GitHub commits as Discord embeds. To attach images, add one line per image to the commit body: `![Short description](patchnotes/file.png)` and commit the image file in the same commit. New or changed images inside the configured image folder (default `patchnotes/`, set per channel in the dashboard, empty = off) are attached automatically. `https://` image links also work (`![](url)`, `[text](url)`, `<url>` or a bare URL); links to files in the same repository (`blob/…`, `raw.githubusercontent.com/…`, including `refs/heads/<branch>/…`) are loaded through the GitHub connection, so they work for private repositories. Paths with spaces go in angle brackets: `![](<patchnotes/my image.png>)`. Limits: max 8 image references evaluated, max 4 images per commit, 8 MB per image, 20 MB in total, PNG/JPG/WebP/GIF only. Image lines are removed from the posted text. Images that fail are skipped; the post is always sent.
