From 72e5eb43c4e6578fe8e67e6f8a6f10b044cadcbe Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Sun, 26 Jul 2026 23:41:42 +0200 Subject: [PATCH] test: README-Hilfen abdecken, Doku, Version 1.4.0 Elf Tests: welche Dateinamen als README gelten, dass Markdown Vorrang hat, dass an einer Zeilengrenze gekuerzt wird und dass base64 mit Umlauten und Zeilenumbruechen richtig ankommt. Im Browser gegen vercel/swr geprueft, dazu ein erfundenes README fuer die relativen Links, die swr nicht hergibt: aufgeloeste Pfade, unveraenderte absolute Links, Anker bleiben Anker, kein img im Dokument und kein a im a. Co-Authored-By: Claude Opus 5 (1M context) --- FEATURES.md | 23 +++++++++++++++++++++++ ROADMAP.md | 11 +++-------- package.json | 2 +- src/lib/changelog.ts | 26 ++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/FEATURES.md b/FEATURES.md index 020844b..eb76b42 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -299,6 +299,29 @@ App und Infrastruktur. Sie gehören trotzdem in **eine** Karte. Der Projektdialog bearbeitet weiterhin nur das führende Repository; weitere verwaltet das Git-Panel. Beim Anlegen eines Projekts entsteht aus den Git-Feldern das erste. +### 4.0a README-Vorschau + +Das README des führenden Repositories steht auf der Projektseite — man muss nicht ins Git +wechseln, nur um zu sehen, worum ein halbvergessenes Projekt eigentlich ging. Lange +READMEs sind eingeklappt, ein Knopf zeigt alles. + +- Geholt wird **höchstens einmal am Tag**, wie die Heatmap. GitHub hat einen eigenen + Endpunkt, der jede Schreibweise findet; bei GitLab und Gitea braucht es zwei Aufrufe + (Wurzelverzeichnis auflisten, dann die Datei holen). +- Erkannt werden `README.md` und die üblichen Varianten, Groß- und Kleinschreibung egal. + Markdown hat Vorrang — nur das lässt sich wirklich darstellen. +- Bei 60 000 Zeichen wird an einer **Zeilengrenze** abgeschnitten, damit kein halber + Codeblock stehen bleibt. +- **Relative Links** werden gegen das Verzeichnis der Datei im Repository aufgelöst, sonst + liefen sie ins Leere. +- **Bilder werden nicht geladen.** Die Content-Security-Policy erlaubt `img-src` nur von + der eigenen Instanz; sie dafür zu öffnen hieße, jedem fremden README das Nachladen + beliebiger Bilder zu gestatten — also auch Zählpixeln. Für Abzeichen und + Bildschirmfotos, die in einer Vorschau ohnehin Beiwerk sind, ist das kein guter Tausch. + Stattdessen steht ein anklickbarer Verweis mit dem Alternativtext. +- Der Inhalt stammt aus einem fremden Repository und läuft deshalb durch dieselbe + Bereinigung wie Notizen (`rehype-sanitize`). + ### 4.1 Unterstützte Systeme | System | API | Authentifizierung | Besonderheit | diff --git a/ROADMAP.md b/ROADMAP.md index db8b3aa..b0e6592 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -20,20 +20,14 @@ erreichbar ist. Der Zeitplan bleibt als Rückfalllösung. --- -### 1.2 README-Vorschau `S` - -Das README aus dem Repo holen und auf der Projektseite anzeigen. Ein -zusätzlicher API-Aufruf, Markdown kann Nebula schon. Erspart den Wechsel ins -Git, nur um zu sehen, worum ein halbvergessenes Projekt eigentlich ging. - -### 1.3 Läuft es noch? `M` +### 1.2 Läuft es noch? `M` Eine Health-Check-URL je Projekt, die der Zeitgeber regelmäßig anpingt. Nebula wüsste dann, ob ein Projekt nicht nur existiert, sondern auch läuft. Nutzt Zeitgeber und Benachrichtigungen, die es schon gibt. Der SSRF-Schutz greift dabei wie bei den Git-Aufrufen. -### 1.4 Persönliche API-Token `M` +### 1.3 Persönliche API-Token `M` Derzeit geht die API nur mit Sitzungscookie. Ein Token je Konto würde `curl`-Aufrufe und Handy-Shortcuts erlauben — Idee aus dem Terminal anlegen, @@ -115,6 +109,7 @@ Damit klar ist, was **nicht** kommt und warum: | **v1.1.0** Freie Reihenfolge im Brett, Mehrfachauswahl, installierbar als App, Änderungsverlauf | ✓ | | **v1.2.0** Commit-Heatmap über ein Jahr, Projektvorlagen | ✓ | | **v1.3.0** Wiederkehrende Aufgaben, Barrierefreiheit nach WCAG 2.1 AA | ✓ | +| **v1.4.0** README-Vorschau auf der Projektseite | ✓ | Zur Entscheidung beim Export: Git-Tokens gehen **nicht** mit. Die Verbindung wird nur beschrieben, das Token ist nach dem Import neu zu hinterlegen. Snapshots bleiben diff --git a/package.json b/package.json index f5bd137..b46b8e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nebula", - "version": "1.3.0", + "version": "1.4.0", "private": true, "description": "Nebula – Dashboard fuer Vibe-Coding Projekte mit Git-Anbindung (GitHub, GitLab, Gitea)", "scripts": { diff --git a/src/lib/changelog.ts b/src/lib/changelog.ts index a2b088e..783efbb 100644 --- a/src/lib/changelog.ts +++ b/src/lib/changelog.ts @@ -41,6 +41,32 @@ export const KIND_META: Record }; export const CHANGELOG: Release[] = [ + { + version: "1.4.0", + date: "2026-07-26", + headline: "Worum ging es hier nochmal?", + changes: [ + { + kind: "neu", + text: + "README-Vorschau auf der Projektseite. Erspart den Wechsel ins Git, nur um zu " + + "sehen, worum ein halbvergessenes Projekt eigentlich ging.", + }, + { + kind: "besser", + text: + "Relative Links im README zeigen dorthin, wo sie hingehören — aufgelöst gegen " + + "das Verzeichnis der Datei im Repository.", + }, + { + kind: "besser", + text: + "Bilder im README werden bewusst nicht geladen, sondern als anklickbarer " + + "Verweis gezeigt. Die Content-Security-Policy dafür zu öffnen hieße, jedem " + + "fremden README das Nachladen beliebiger Bilder zu erlauben — auch Zählpixeln.", + }, + ], + }, { version: "1.3.0", date: "2026-07-26",