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) <noreply@anthropic.com>
This commit is contained in:
+23
@@ -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
|
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.
|
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
|
### 4.1 Unterstützte Systeme
|
||||||
|
|
||||||
| System | API | Authentifizierung | Besonderheit |
|
| System | API | Authentifizierung | Besonderheit |
|
||||||
|
|||||||
+3
-8
@@ -20,20 +20,14 @@ erreichbar ist. Der Zeitplan bleibt als Rückfalllösung.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 1.2 README-Vorschau `S`
|
### 1.2 Läuft es noch? `M`
|
||||||
|
|
||||||
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`
|
|
||||||
|
|
||||||
Eine Health-Check-URL je Projekt, die der Zeitgeber regelmäßig anpingt.
|
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.
|
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
|
Nutzt Zeitgeber und Benachrichtigungen, die es schon gibt. Der SSRF-Schutz
|
||||||
greift dabei wie bei den Git-Aufrufen.
|
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
|
Derzeit geht die API nur mit Sitzungscookie. Ein Token je Konto würde
|
||||||
`curl`-Aufrufe und Handy-Shortcuts erlauben — Idee aus dem Terminal anlegen,
|
`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.1.0** Freie Reihenfolge im Brett, Mehrfachauswahl, installierbar als App, Änderungsverlauf | ✓ |
|
||||||
| **v1.2.0** Commit-Heatmap über ein Jahr, Projektvorlagen | ✓ |
|
| **v1.2.0** Commit-Heatmap über ein Jahr, Projektvorlagen | ✓ |
|
||||||
| **v1.3.0** Wiederkehrende Aufgaben, Barrierefreiheit nach WCAG 2.1 AA | ✓ |
|
| **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
|
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
|
beschrieben, das Token ist nach dem Import neu zu hinterlegen. Snapshots bleiben
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nebula",
|
"name": "nebula",
|
||||||
"version": "1.3.0",
|
"version": "1.4.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Nebula – Dashboard fuer Vibe-Coding Projekte mit Git-Anbindung (GitHub, GitLab, Gitea)",
|
"description": "Nebula – Dashboard fuer Vibe-Coding Projekte mit Git-Anbindung (GitHub, GitLab, Gitea)",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -41,6 +41,32 @@ export const KIND_META: Record<ChangeKind, { label: string; className: string }>
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const CHANGELOG: Release[] = [
|
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",
|
version: "1.3.0",
|
||||||
date: "2026-07-26",
|
date: "2026-07-26",
|
||||||
|
|||||||
Reference in New Issue
Block a user