Das Threads-Plugin bringt kollaborative Inline-Kommentare in Ihre Dokumentation. Wählen Sie einen beliebigen Text auf der Seite aus, hinterlassen Sie einen Kommentar, starten Sie eine Diskussion — alles wird direkt in Ihren Markdown-Quelldateien gespeichert, ganz ohne Datenbank.
Originalautor: @svallory
Dieses Plugin befindet sich in der Alpha-Phase. Die API und das Speicherformat sind stabil, aber die Benutzeroberfläche wird aktiv weiterentwickelt.
Einrichtung
docmd add threads
plugins: {
threads: {}
}
Konfigurationsoptionen
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
sidebar |
boolean |
false |
Wenn true, bleiben Threads am Ende der Seite gruppiert. Wenn false (Standard), werden Threads inline neben dem markierten Text positioniert. |
// Threads am Ende der Seite behalten statt inline
plugins: {
threads: {
sidebar: true
}
}
Funktionsweise
- Text markieren auf einer beliebigen Dokumentationsseite während
docmd dev. - Ein Kommentar-Popover erscheint — schreiben Sie Ihren Kommentar und senden Sie ihn ab.
- Der ausgewählte Text wird mit einem Thread-Marker hervorgehoben.
- Threads werden als
::: threads-Blöcke am Ende der Markdown-Datei gespeichert. - Keine Datenbank — Ihre Markdown-Dateien sind die “Source of Truth”.
Vorschau
So sehen Threads auf einer Live-Seite aus. Text mit Diskussionen wird so hervorgehoben und Thread-Karten erscheinen darunter.
sequenceDiagram hier?Und hier ist eine zweite Hervorhebung mit einer anderen Farbe — Threads durchlaufen automatisch eine Farbpalette.
Erledigte Threads erscheinen ausgegraut:
Ein schwebender Diskussions-Button 💬2 erscheint in der unteren rechten Ecke und zeigt die Anzahl der offenen Threads an. Klicken Sie darauf, um zum ersten Thread auf der Seite zu springen.
Speicherformat
Threads werden unter Verwendung der Container-Syntax von docmd in Ihr Markdown eingebettet:
# Meine Dokumentationsseite
Inhalt mit ==markiertem Text=={t-a1b2c3d4}, der einen Thread hat.
::: threads
::: thread t-a1b2c3d4
::: comment c-e5f6a7b8 "Alice" "2026-04-09"
Dieser Text muss klargestellt werden.
:::
::: comment c-d9e0f1a2 "Bob" "2026-04-09" reply-to c-e5f6a7b8
Habe es aktualisiert — passt das so?
::: reactions
- 👍 Alice
:::
:::
:::
:::
Die Syntax ==Text=={threadId} verknüpft markierten Text im Dokumentenkörper mit einem spezifischen Thread.
Features
| Feature | Beschreibung |
|---|---|
| Textauswahl | Markieren Sie beliebigen Text, um einen neuen Thread zu starten |
| Antworten | Verschachtelte Antwortketten innerhalb jedes Threads |
| Reaktionen | Emoji-Reaktionen auf einzelne Kommentare |
| Bearbeiten / Löschen | Ändern oder entfernen Sie Ihre Kommentare |
| Erledigen | Markieren Sie Threads als erledigt mit Autor + Zeitstempel |
| Autorenprofile | Git-basierte Autorenerkennung mit Gravatar-Unterstützung |
| Highlight-Marker | Visuelle Indikatoren auf der Seite, die zeigen, wo Threads verankert sind |
| Schwebender Button | Schnellzugriff-FAB mit Anzahl der offenen Threads |
| Scroll-Erhaltung | Die Seite bleibt nach dem Hinzufügen von Kommentaren an derselben Position |
Actions API
Das Threads-Plugin macht die folgenden Aktionen über das WebSocket-RPC-System verfügbar. Diese können von Browser-Plugins über docmd.call() aufgerufen werden:
| Aktion | Beschreibung |
|---|---|
threads:get-threads |
Parst und gibt alle Threads aus einer Datei zurück |
threads:add-thread |
Erstellt einen neuen Thread mit seinem ersten Kommentar |
threads:add-comment |
Fügt einen Kommentar zu einem bestehenden Thread hinzu |
threads:edit-comment |
Bearbeitet den Inhalt eines bestehenden Kommentars |
threads:delete-comment |
Entfernt einen Kommentar aus einem Thread |
threads:delete-thread |
Entfernt einen kompletten Thread und bereinigt die Highlights |
threads:resolve-thread |
Schaltet den Status zwischen erledigt/offen um |
threads:toggle-reaction |
Schaltet eine Emoji-Reaktion auf einen Kommentar um |
threads:get-authors |
Liest die Autorenprofil-Map aus |
threads:upsert-author |
Erstellt oder aktualisiert ein Autorenprofil |
Autorenprofile
Autoreninformationen werden in <docsRoot>/.threads/authors.json gespeichert:
{
"alice@example.com": {
"name": "Alice",
"avatarUrl": "https://gravatar.com/avatar/..."
}
}
Während der Entwicklung erkennt das Plugin automatisch Ihren Git-Benutzernamen und Ihre E-Mail zur Autorenidentifikation.
Da Threads in Ihren Markdown-Dateien gespeichert werden, unterliegen sie automatisch der Versionskontrolle mit Git. Überprüfen Sie Kommentare in PRs, verfolgen Sie die Diskussionshistorie und arbeiten Sie über Ihren bestehenden Workflow zusammen.