Das docmd 0.7.8 Release führt das Git-Plugin für Repository-basierte Metadaten ein, eine komplett neu gestaltete Terminal-Oberfläche mit Live-Fortschritts-Feedback, parallele Seitenverarbeitung für dramatisch schnellere Builds, automatische Plugin-Installation für offizielle Plugins und Container-Syntax-Kompatibilität für Benutzer, die von anderen Dokumentations-Engines migrieren.

Highlights

Build-Engine — Parallele Verarbeitung

Die Seiten-Rendering-Pipeline wurde von sequentiell zu gebündelter paralleler Verarbeitung umgestaltet und liefert signifikante Beschleunigung für Dokumentationsseiten aller Größen.

Was sich geändert hat:

  • Gebündelte Datei-I/O: Dateien werden jetzt 64 gleichzeitig gelesen und 128 gleichzeitig geschrieben via Promise.all, statt einzeln sequentiell
  • Pipeline-Überlappung: Dateilesen, Markdown-Parsing und HTML-Schreiben überlappen sich jetzt über Batches hinweg
  • Parallele Schreibvorgänge: Alle gerenderten HTML-Dateien werden gleichzeitig in Batches auf die Festplatte geschrieben

Voraussichtliche Leistung (einfache Seiten):

Skalierung Vorher (0.7.7) Nachher (0.7.8) Verbesserung
~1.000 Seiten ~22s ~12s ~45% schneller
~10.000 Seiten ~4 Min+ ~1,5 Min ~60% schneller
Datei-Lesephase Sequentiell 64-Datei-Batches 64x Parallelität
Datei-Schreibphase Sequentiell 128-Datei-Batches 128x Parallelität
Fortschritts-Feedback Keines (stumm) Live-Fortschrittsbalken Echtzeit
Skaliert mit Ihrer Dokumentation

Die Leistungsverbesserung skaliert mit der Dokumentationsgröße. Größere Seiten (1.000+ Seiten) mit umfangreicher I/O profitieren am meisten von der gebündelten parallelen Verarbeitung.

Terminal-Oberfläche — Einheitliches TUI

Alle Terminal-Ausgaben wurden in ein einheitliches, signalstarkes Designsystem umgestaltet, das über alle Befehle hinweg geteilt wird. Keine stummen Wartezeiten, inkonsistente Formatierung oder unübersichtliche mehrzeilige Ausgaben mehr.

Neue TUI-Primitiven:

Feature Beschreibung
Fortschrittsbalken ━━━━━━━━━━━━───────── 42/100 (42%) — einzeilig, aktualisiert sich in-place
Spinner ⠋ ⠙ ⠹ — Braille-Punkt-Animation während langer Operationen
Timer Jeder Build, Rebuild und jedes Projekt zeigt die vergangene Zeit
Sektionen Konsistente ┌─ Sektion / └── Rahmung über alle Befehle

Einheitliche Ausgabe über alle Befehle:

┌─ Build
│  Source          docs/
│  Output          site/
│  Versions        2 (v06, v07)
│  Locales         4 (en, hi, zh, fr)
│  Processing pages ━━━━━━━━━━━━━━━━━━━━  419/419  (100%)
└──────────────────────────────────────────────────────────

┌─ Post-Build Tasks
│  Search index                                   [ DONE ]
│  Sitemap                                        [ DONE ]
└──────────────────────────────────────────────────────────

⬢ Build complete. Generated 238 pages in 1.4s.

Vereinheitlichte Befehle:

  • docmd build — Sektions-Header mit Quelle/Ausgabe/Versionen/Sprachen, Fortschrittsbalken, Zeitanzeige
  • docmd dev — Animierter Spinner während des initialen Builds und bei Rebuilds, Zeit pro Rebuild
  • Multi-Projekt-Builds — Spinner-Animation pro Projekt, Zeit pro Projekt, Gesamtübersicht
  • docmd live — Konsistente Sektions-Rahmung wie bei allen anderen Befehlen

Git-Plugin (Core)

Das neue Git-Plugin bringt Repository-basierte Metadaten auf Ihre Dokumentationsseiten — Zeitstempel der letzten Aktualisierung, Commit-Verlauf-Tooltips und Bearbeitungslinks — alles direkt aus Ihrem Git-Verlauf ohne Konfiguration.

// Optional: Bearbeitungslinks konfigurieren
plugins: {
  git: {
    repo: 'https://github.com/ihre-org/docs',
    branch: 'main'
  }
}

Funktionen:

  • Zeitstempel der letzten Aktualisierung: Zeigt an, wann jede Seite zuletzt geändert wurde, mit relativer Formatierung für aktuelle Änderungen
  • Commit-Verlauf-Tooltip: Hover zeigt aktuelle Commits mit Autorennamen und Nachrichten
  • Bearbeitungslinks: Erstellt automatisch “Diese Seite bearbeiten”-Links für GitHub, GitLab und Bitbucket
  • Graceful Degradation: Deaktiviert sich automatisch, wenn das Projekt nicht in einem Git-Repository ist

Das Plugin ersetzt die veraltete editLink-Konfigurationsoption durch eine funktionsreichere Alternative. Siehe die Git-Plugin-Dokumentation für vollständige Details.

Automatische Installation für offizielle Plugins

Offizielle Plugins, die in Ihrer docmd.config.js aufgeführt sind, werden jetzt automatisch installiert, wenn sie fehlen. Wenn Sie ein Plugin zu Ihrer Konfiguration hinzufügen, das nicht installiert ist, lädt docmd es beim nächsten Build von npm herunter.

// docmd.config.js
plugins: {
  pwa: {},     // Nicht installiert? docmd installiert es automatisch
  threads: {}  // Dasselbe hier
}

Sicherheitsfunktionen:

  • Funktioniert nur für offizielle @docmd/plugin-*-Pakete in der Registry
  • Installiert die exakte Version, die zu Ihrer @docmd/core-Version passt
  • Verwendet den Paketmanager Ihres Projekts (npm, pnpm, yarn oder bun)
  • Zeigt Fortschritt im Terminal an

Container-Syntax-Kompatibilität

Benutzer, die von VitePress, Docusaurus oder ähnlichen Dokumentations-Engines migrieren, können jetzt vertraute Container-Syntax ohne Änderungen verwenden.

VitePress-Style-Container funktionieren jetzt:

:::tip
Dies wird als Tipp-Callout gerendert.
:::

:::warning
Dies wird als Warnung-Callout gerendert.
:::

:::details Klicken zum Erweitern
Dies wird als zusammenklappbarer Abschnitt gerendert.
:::

Docusaurus-Style-Container funktionieren jetzt:

:::note
Dies wird als Info-Callout gerendert.
:::

:::caution
Dies wird als Warnung-Callout gerendert.
:::

Zusätzlich wird Syntax ohne Leerzeichen jetzt für alle Container unterstützt:

:::callout info
Funktioniert genauso wie ::: callout info
:::

:::tabs
Funktioniert genauso wie ::: tabs
:::

Dies ermöglicht die Migration von Dokumentation aus anderen Engines mit minimalen Änderungen.

Migrationsfreundliche Aliase

Alias Entspricht Herkunft
:::tip callout tip VitePress
:::warning callout warning VitePress
:::danger callout danger VitePress
:::info callout info VitePress
:::details collapsible VitePress
:::note callout info Docusaurus
:::caution callout warning Docusaurus
Nahtlose Migration

Diese Aliase funktionieren stillschweigend neben der Standard-docmd-Syntax. Ihre bestehende Dokumentation funktioniert weiterhin unverändert, während importierte Inhalte aus anderen Engines korrekt gerendert werden.

Interne Verbesserungen

Britisches Englisch Standardisierung

Die Dokumentation wurde aktualisiert, um durchgehend britische englische Schreibweisen zu verwenden. Dies umfasst Terminologie wie “optimised”, “centralised”, “localisation” und “colour”, wo angemessen.

Code-Qualität

  • Em-Striche durch Standard-Bindestriche in Dokumentation und Code-Kommentaren ersetzt für verbesserte Lesbarkeit
  • Standardisierte Kommentarformatierung in Quelldateien
  • Verbesserte TypeScript-Typdefinitionen für Plugin-APIs

Vollständiges Changelog

Funktionen

  • Git-Plugin (Core): Neues Core-Plugin für Zeitstempel der letzten Aktualisierung, Commit-Verlauf und Bearbeitungslinks mit Graceful Degradation
  • Auto-Install: Offizielle Plugins in der Konfiguration werden automatisch installiert, wenn sie fehlen
  • Container-Aliase: VitePress- und Docusaurus-Container-Syntax funktioniert jetzt sofort
  • Container ohne Leerzeichen: Alle Container akzeptieren jetzt Syntax mit oder ohne Leerzeichen nach :::
  • Parallele Verarbeitung: Gebündelte Datei-I/O mit 64-Datei-Lese- und 128-Datei-Schreib-Parallelität
  • Einheitliches TUI: Fortschrittsbalken, Spinner, Timer und konsistente Sektions-Ausgabe über alle Befehle

Verbesserungen

  • Build-Leistung: Bis zu ~60% schnellere Builds bei großen Seiten durch paralleles I/O-Batching
  • Live-Fortschritt: Echtzeit-Fortschrittsbalken während der Seitenverarbeitung
  • Animierte Spinner: Visuelles Feedback während Builds, Rebuilds und Multi-Projekt-Verarbeitung
  • Build-Zeitanzeige: Jede Operation meldet die vergangene Zeit
  • Git-Widget UI: Tooltip verwendet CSS :hover/:focus-within für flüssige, ruckelfreie Anzeige
  • Code-Block-Styling: docmd-code-block-wrapper verwendet jetzt die universelle --shadow-sm-Variable
  • Live-Editor TUI: Einheitliche Sektions-Rahmung und Graceful Shutdown
  • Dokumentation: Britisches Englisch Schreibweisen-Standardisierung
  • Code-Stil: Konsistente Formatierung in der gesamten Codebasis
  • Plugin-Registry: Git-Plugin zur offiziellen Registry hinzugefügt

Veraltungen

  • editLink-Konfiguration: Die eigenständige editLink-Konfigurationsoption ist zugunsten des Git-Plugins veraltet

Migrationsanleitung

Übernahme des Git-Plugins

Wenn Sie die editLink-Konfiguration verwendet haben, ersetzen Sie diese durch das git-Plugin. Der neue Ansatz ist intelligenter — er erkennt automatisch Ihr git-Repository-Stammverzeichnis und berechnet den korrekten Dateipfad, sodass Sie kein Verzeichnis mehr in der URL hartcodieren müssen.

Vorher (veraltet):

export default defineConfig({
  editLink: {
    enabled: true,
    baseUrl: 'https://github.com/org/repo/edit/main/docs' // ← hartcodiertes Verzeichnis
  }
});

Nachher:

export default defineConfig({
  plugins: {
    git: {
      repo: 'https://github.com/org/repo', // ← nur das Repository, kein Pfad nötig
      branch: 'main'
    }
  }
});

Das Plugin löst den korrekten Dateipfad relativ zum git-Stammverzeichnis automatisch auf. Das bedeutet, dass Bearbeitungslinks in Monorepos und Multi-Projekt-Setups ohne manuelle Pfadkonfiguration korrekt funktionieren.

Weitere Optionen:

Option Standard Beschreibung
repo Repository-URL (beliebiger Anbieter)
branch 'main' Zu verlinkender Branch
editPath 'edit' URL-Segment für die Bearbeitungsseite. '-/edit' für GitLab, 'src' für Bitbucket
editLink true Auf false setzen, um den Bearbeitungslink zu deaktivieren
editLinkText i18n-String Benutzerdefinierte Beschriftung für den Bearbeitungslink
Breaking Change: editLink baseUrl Format

Wenn Sie editLink.baseUrl mit einem hartcodierten Unterverzeichnis verwendet haben (z.B. .../edit/main/docs), wird dieses Verzeichnissegment jetzt automatisch berechnet. Beim Wechsel zum git-Plugin muss das Unterverzeichnis aus der URL entfernt werden — verwenden Sie als repo-Wert nur https://github.com/org/repo.

Für Benutzer, die von anderen Engines migrieren

Wenn Sie Dokumentation von VitePress, Docusaurus oder ähnlichen Engines importieren:

  1. Ihre bestehenden :::tip, :::warning, :::note-Container werden korrekt gerendert
  2. Syntax ohne Leerzeichen wie :::tabs funktioniert neben dem Standard ::: tabs
  3. Keine Änderungen an Ihren Markdown-Dateien sind erforderlich

Wir empfehlen, schrittweise zur Standard-docmd-Syntax (::: callout tip) für neue Inhalte überzugehen, da sie mehr Flexibilität mit Titeln und Icons bietet.