Das @docmd/plugin-threads-Plugin ermöglicht kollaboratives Inline-Kommentieren und Textannotationen auf allen Dokumentationsseiten. Hervorhebungen und Diskussionsthreads werden nativ in Markdown-Quelldateien mithilfe benutzerdefinierter Container-Blöcke (::: threads) gespeichert. Es ist keine externe Datenbank erforderlich.
Ursprünglicher Autor: @svallory
Dieses Plugin befindet sich derzeit in der Alpha-Phase. Kerne-APIs und Speicher-Schemas sind stabil, während UI-Komponenten aktiv iteriert werden.
Installation & Setup
Installieren Sie das Plugin über die CLI:
npx @docmd/core add threads
Aktivieren Sie die Thread-Konfiguration in docmd.config.json:
| Option | Typ | Standard | Technische Beschreibung |
|---|---|---|---|
sidebar |
boolean |
false |
Bei true werden Threads in einem dedizierten Panel angezeigt; bei false werden Threads inline an Texthervorhebungen angehängt. |
devOnly |
boolean |
true |
Beschränkt Client-UI-Assets auf Live-Dev-Server-Builds (docmd dev). Werden in statischen Produktions-Builds (docmd build) weggelassen. |
Live-Entwicklungs-Server-Anforderung
Die interaktive Kommentaroberfläche, Texthervorhebungs-Werkzeuge und Markdown-Persistenzaktionen erfordern einen aktiven lokalen Entwicklungs-Server (docmd dev) mit einer funktionierenden WebSocket-RPC-Verbindung.
Da Threads requiresLiveServer: true deklariert:
- Entwicklung (
docmd dev): Der Ausklapp-Tab, die Inline-Vorschaukarten, das Auswahl-Popover und die Thread-Seitenleiste sind vollständig geladen und funktionsfähig. - Statische Produktions-Builds (
docmd build): Client-Skripte und CSS werden automatisch weggelassen, damit öffentliche Websites ultraschnell, schlank und frei von inaktiven UI-Elementen oder fehlerhaften WebSocket-Verbindungsversuchen bleiben. Vorhandene Markdown-Syntax (::: threadsund==Text=={t-...}) wird weiterhin fehlerfrei geparst. - Manuelle Überschreibung: Wenn Sie die Threads-Client-Assets ausdrücklich auch in statische Builds bündeln möchten, konfigurieren Sie
"devOnly": falseunterplugins.threads.
Globales Konfigurationsbeispiel
{
"plugins": {
"threads": {
"sidebar": true,
"devOnly": true
}
}
}
Workflow-Übersicht
- Textauswahl: Wählen Sie während der lokalen Live-Entwicklung (
npx @docmd/core dev) Fließtext aus. - Kommentar-Popover: Geben Sie Feedback im Popover-Modal ein.
- Anker-Injizierung: Ausgewählter Fließtext wird mit einer Thread-Kennung hervorgehoben (
==hervorgehobener Text=={t-a1b2c3d4}). - Markdown-Persistenz: Thread-Strukturen werden am Ende der Markdown-Datei als
::: threads-Block angehängt. - Git-Synchronisation: Der Diskussionsverlauf wird in der Quellverwaltung zusammen mit Dokumentbearbeitungen gespeichert.
Interaktive Vorschau
Text mit angehängten Diskussionen erhält Inline-Farbhervorhebungen. Thread-Karten werden darunter gerendert:
sequenceDiagram hier?Zusätzliche Hervorhebungen durchlaufen automatisch verschiedene Farbpaletten:
Gelöste Diskussionen werden im abgedunkelten Zustand angezeigt:
Ein rechts verankertes Registerkarten-Element 💬2 schmiegt sich an den rechten Bildschirmrand und zeigt die Anzahl ungelöster Threads an. Das Überfahren von markiertem Text öffnet direkt eine Inline-Vorschaukarte im Dokumentinhalt, während ein Klick auf die Registerkarte die Seitenleiste öffnet. Threads bleiben beim Öffnen und Schließen der Leiste nahtlos erhalten, ohne die Seite neu zu laden.
Markdown-Speicherformat
Threads werden in Dokumentquelldateien mithilfe von Containerblock-Syntax gespeichert:
# Engine-Übersicht
Kernarchitekturfunktionen ==hervorgehobener Text=={t-a1b2c3d4} mit angehängtem Thread.
::: threads
::: thread t-a1b2c3d4
::: comment c-e5f6a7b8 "Alice" "2026-04-09"
Dieser Text erfordert zusätzliche technische Details.
:::
::: comment c-d9e0f1a2 "Bob" "2026-04-09" reply-to c-e5f6a7b8
Mit zusätzlichen Spezifikationen aktualisiert.
::: reactions
- 👍 Alice
:::
:::
:::
:::
Hauptfunktionen
- Textauswahl: Heben Sie beliebigen Fließtext hervor, um neue Threads zu verankern.
- Thread-Antworten: Verschachtelte Konversationsthreads.
- Emoji-Reaktionen: Fügt Kommentaren Zähler für Reaktionen hinzu.
- Auflösungsstatus: Markiert Threads mit Autorenattributierung als gelöst.
- Autorenidentität: Lokale Git-Anmeldeinformationen lösen Avatar- und Profildetails automatisch auf.
RPC-Aktionen-API
Das Threads-Plugin stellt WebSocket-RPC-Endpunkte bereit, die über docmd.call() zugänglich sind:
| RPC-Methode | Technische Beschreibung |
|---|---|
threads:get-threads |
Ruft alle geparsten Threads für einen bestimmten Dateipfad ab. |
threads:add-thread |
Verankert einen neuen Thread und einen ersten Kommentar. |
threads:add-comment |
Hängt eine Antwort an einen bestehenden Thread an. |
threads:edit-comment |
Aktualisiert den Kommentartext. |
threads:delete-comment |
Entfernt einen Kommentareintrag. |
threads:delete-thread |
Entfernt den Thread-Container und bereinigt Text-Hervorhebungsanker. |
threads:resolve-thread |
Schaltet den Status der Thread-Auflösung um. |
threads:toggle-reaction |
Fügt Emoji-Reaktionen hinzu oder entfernt sie. |
Speicher für Autorenprofile
Autorenprofile werden in <docsRoot>/.threads/authors.json zwischengespeichert:
{
"alice@example.com": {
"name": "Alice",
"avatarUrl": "https://gravatar.com/avatar/..."
}
}
Da Thread-Metadaten vollständig in .md-Dateien liegen, folgen Kommentare den Standard-Workflows für Git-Branching, Pull-Request-Reviews und Commit-Historien.