Highlights

docmd v0.9.6 bietet eine Vielzahl wegweisender Funktionen und Systemverbesserungen:

  • Fokusmodus (Zen-Modus): Ablenkungsfreies Lesen mit dedizierter Steuerung für Drucken und Hell-/Dunkelmodus oben rechts.
  • Multi-Positions-Bannersystem: 7 Banner-Positionen (top, header, sidebar-top, sidebar-bottom, toc-top, toc-bottom, footer) mit Vererbung, dauerhafter Standardanzeige für Karten und Sitzungsspeicherung.
  • Überschriften-Anker-Permalinks: Sofortiges Kopieren der vollständigen URL bei Klick auf das Ankersymbol (#) mit animierter Bestätigung.
  • Bilder-Lightbox Re-Binding & UI-Feinschliff: Automatische Wiederanbindung bei SPA-Seitenwechseln, Bildunterschriften mit Milchglaseffekt (backdrop-filter) und runder Schließen-Button.
  • Titel- und SEO-Architektur: Granulare Konfiguration via layout.titleSeparator, Steuerung von titleAppend und automatische Google-konforme JSON-LD-Schemas (Organization, WebSite, BreadcrumbList sowie benutzerdefiniertes ldJson).
  • Open Knowledge Format (OKF): Automatische Konzeptbeschreibungen in okf.yaml und Zusammenführung von tags und keywords.
  • Post-Build-Asset-Hook: Bereitstellung eines unveränderlichen Snapshots aller aufgelösten Vorlagen- und Plugin-Assets (report.resolvedAssets) für Post-Build-Hooks.
  • Multi-Turn-Streaming des KI-Assistenten: Streaming-Ersetzungsprotokoll (meta.replace: true) und architektonische Fallback-Synthese bei mehrstufigem Schlussfolgern.
  • Sicherheits- und Abhängigkeitshärtung: Schließung von Schwachstellen in sharp, adm-zip und protobufjs sowie automatisiertes Audit in der Build-Pipeline.
  • Pre-Flight-Batch-Installation von Runtime-Abhängigkeiten: Einheitliche, automatische Batch-Installation von Vorlagen, Plugins und semantischen Suchabhängigkeiten ohne manuelle package.json-Einträge oder npm-Baumbeschneidung.
  • Parser- und Live-Editor-Optimierungen: Unterstützung für das open-Flag in ::: details-Aliasen, erweiterte Container-Attribute und nahtlose Rückkehr zur Startseite im Live-Editor.

Fokusmodus & Drucksteuerung (@docmd/ui & @docmd/template-summer)

  • Ablenkungsfreies Zen-Lesen: Mit einem Klick im Optionsmenü oder über das Tastaturkürzel (Alt+F / Option+F) treten alle Navigationsseitenleisten, Kopfzeilen, Inhaltsverzeichnisse, Breadcrumbs, Fußzeilen und schwebenden Werkzeuge in den Hintergrund. Der Inhalt zentriert sich mit optimaler Zeilenlänge für intensives technisches Lesen.
  • Dedizierte Steuerung oben rechts: Im Fokusmodus bleiben in der schwebenden Symbolleiste oben rechts nur die drei wichtigsten Werkzeuge sichtbar:
    1. Seite drucken (printer-Symbol, ruft window.print() mit einem maßgeschneiderten, sauberen Druck-Stylesheet auf).
    2. Hell-/Dunkelmodus umschalten (nahtloser Designwechsel während des Lesens).
    3. Fokusmodus beenden (minimize-2-Symbol oder über Esc / Alt+F).
  • Drucken-Schaltfläche in Kopier-Widgets: Wenn Drucken aktiviert ist (layout.print: true, layout.optionsMenu.components.print: true oder layout.copyWidgets.print: true), wird direkt neben den Schaltflächen zum Kopieren von Markdown und Kontext eine eigene Drucken-Schaltfläche im Dokumentenkopf angezeigt.
  • Umfassendes Druck-Stylesheet: Integrierte @media print-Regeln stellen sicher, dass gedruckte Dokumentationen oder PDF-Exporte sämtliche Web-Navigationen entfernen und gestochen scharfe Dokumente erzeugen.
  • Vorlagenübergreifende Unterstützung: Vollständig unterstützt in der @docmd/ui-Standardvorlage sowie im @docmd/template-summer-Layout.
  • Konfigurierbares Optionsmenü: optionsMenu.components.focusMode und optionsMenu.components.print können direkt in docmd.config.json unter layout.optionsMenu.components konfiguriert werden.

Multi-Positions-Banner & Vererbung (layout.banners)

  • 7 Dedizierte Anzeigepositionen: Schalten Sie Ankündigungen und kontextuelle Hinweise in top, header, sidebar-top, sidebar-bottom, toc-top, toc-bottom und footer.
  • Standardmäßig dauerhafte Karten-Banner: Seitenleisten- und Inhaltsverzeichniskarten (sidebar-top, sidebar-bottom, toc-top, toc-bottom) bleiben standardmäßig dauerhaft sichtbar (dismissible: false). Ein Schließen-Button kann explizit über dismissible: true oder dismissable: true aktiviert werden.
  • Schreibweisen-Aliase: Unterstützung von dismissable und closable als alternative Bezeichnungen für dismissible.
  • Hierarchische Vererbung: Dokumentationen mit Versionsverwaltung können globale Banner erben, während bestimmte Versionen (z. B. v09) obere Banner überschreiben können, ohne Hinweise in der Seitenleiste zu verlieren.
  • Umfangreiche Inhalte & Speicherung: Unterstützung von Markdown, Lucide-Icons, Hyperlinks, Designvarianten (info, tip, warning, announcement) und Speicherung des Schließstatus via sessionStorage.

  • Klick zum Kopieren von Überschriften-Ankern: Ein Klick auf das Raute-Symbol (#) einer Überschrift kopiert die vollständige URL direkt in die Zwischenablage und bestätigt dies durch eine kurze Häkchen-Animation.
  • Bilder-Lightbox Re-Binding & UI-Veredelung: Die Lightbox-Modale binden Event-Handler nach clientseitigen SPA-Seitenwechseln (docmd:page-mounted) nun zuverlässig neu an. Ein Milchglashintergrund für Beschriftungen und ein runder Schließen-Button runden das UI ab.
  • Präzisere Lesezeitberechnung: Verbesserte Zählung von Wörtern und Schätzung der Lesezeit bei Dokumenten mit Codeblöcken und Tabellen.
  • Gehärteter Client-Router: Zuverlässige Erkennung von target="_blank" und rel="noopener", Bereinigung überflüssiger Anführungszeichen in href-Attributen und Erhaltung von Stammverzeichnispfaden.
  • Unmaskierte Attribute: EJS-Attributmaskierung (<%-) für fehlerfreie Ausgabe benutzerdefinierter Link- und Datenattribute.
  • Live-Reload-Synchronisierung: Zuverlässige Neuzuweisung des Moduls an rawModule in packages/api/src/hooks.ts.

Titel, Navigation & SEO-Architektur (@docmd/plugin-seo & @docmd/core)

  • Konfigurierbare Trennzeichen: Definieren Sie das Trennzeichen zwischen Seitentitel und Website-Name über layout.titleSeparator (z. B. " - ", " | ", " / "), mit seitenbezogener Überschreibung.
  • Steuerung des Website-Anhangs: titleAppend: false im Frontmatter oder layout.titleAppend: false verhindert das Anhängen des Website-Namens für präzise Einzeltitel.
  • Strukturierte JSON-LD-Schemas:
    • Automatische Injektion des Google-konformen Organization-Schemas auf der Startseite.
    • Generierung des WebSite-Schemas mit Suchfunktionsspezifikation.
    • Automatische Erstellung hierarchischer BreadcrumbList-Schemas.
    • Unterstützung für eigene strukturierte Daten über die Frontmatter-Eigenschaft ldJson.
  • Konsistenz im Social Graph: Identische Seitentitel in <title>, Open Graph og:title und Twitter twitter:title.

Open Knowledge Format (OKF) Erweiterungen (@docmd/plugin-okf)

  • Konzeptbeschreibungen: Konzepte in okf.yaml extrahieren automatisch Beschreibungen aus dem description-Frontmatter oder der einleitenden Zusammenfassung.
  • Flexible Tag-Zusammenführung: Der OKF-Generator fasst tags und keywords (sowohl Listen als auch kommagetrennte Zeichenketten) nahtlos zusammen.

Post-Build-Asset-Deklarations-Hook (@docmd/api & @docmd/core)

  • Unveränderliche Asset-Snapshots: Die Plugin-Hook-Pipeline übergibt Post-Build-Hooks einen schreibgeschützten Snapshot aller aufgelösten Vorlagen- und Plugin-Dateien (report.resolvedAssets), um Dateimanipulationen auszuschließen.

Multi-Turn-Streaming & Aktionsschaltflächen des KI-Assistenten (@docmd/plugin-ai & docmd-assistant)

  • Erweitertes Multi-Turn-Budget: Bis zu 6 Dialogzüge für vollständige mehrstufige Werkzeugrecherchen vor der Antwortausgabe.
  • Echtzeit-Stream-Ersetzung: Streaming-Ersetzungsprotokoll (meta.replace: true), das Live-Tokens während des Nachdenkens überträgt, ohne Werkzeugfragmente preiszugeben.
  • Architektonischer Fallback: Mehrstufige Kontextsynthese für Anfragen zu nicht explizit in der Navigation verlinkten Themen.
  • Konfigurierbare Aktionen: Schaltflächen zum Kopieren, Wiederholen und Bearbeiten von Prompts via config.plugins.ai.messageActions: true.

Dateiausschlüsse & Git-Ignore-Filterung

  • Projektweite Ausschlüsse: Unterstützung von config.exclude-Mustern zum Ausblenden von Entwürfen und internen Notizen.
  • Automatische .gitignore-Beachtung: Integrierter Parser zum automatischen Ausschluss ignorierter Dateien von Build und semantischer Suche.

Parser- und Container-Erweiterungen (@docmd/parser)

  • Open-Flag in Details: Unterstützung für open in ::: details analog zu ::: collapsible open.
  • Eigenschaftszuordnung: Unterstützung für title, text und label in Badges, Buttons, Tooltips und Changelogs.
  • Icon-Update: Aktualisierung von lucide-static auf ^1.47.0.

Live-Editor im Browser (@docmd/live)

  • Nahtlose Rückkehr: Rückkehr-Link zur Startseite https://docmd.io über Zurück-Button und Logo.
  • KaTeX-Mathematik-Presets: Fehlerbehebung bei der Ersetzung von Doppel-Dollarzeichen ($$).

Sicherheitsaudits & CVE-Behebung

  • Kritische Sicherheits-Patches:
    • sharp (^0.35.4): Behebung von Schwachstellen in libheif (GHSA-rgj7-g3m4-5g8c).
    • adm-zip (>=0.6.0): Schutz vor Directory Traversal (GHSA-955c-w567-g4pw).
    • protobufjs (^7.6.5): Behebung von Prototype-Pollution (CVE-2023-36665).
    • onnxruntime-node (^1.27.0): Native Builds für Apple Silicon und moderne Linux-Systeme.
  • Automatisierte Audits: Zwingende Sicherheitsprüfung im Build via tools/prep.js (pnpm audit --audit-level=high).

Optimierungen für Summer-Template & Mobilgeräte (@docmd/template-summer & @docmd/plugin-ai)

  • Summer-Farbpaletten-Bridge: Globale und Plugin-CSS-Variablen (--docmd-*, --bg-color, --sidebar-bg, etc.) sind nun direkt auf die Summer-Theme-Tokens gemappt, sodass Plugin-Oberflächen (KI-Assistent, Git, OpenAPI) und gemeinsame Komponenten im Summer-Design harmonisch dargestellt werden.
  • Mobile Suche in der Kopfleiste: Adaptiver Such-Button für Viewports unter 900px ermöglicht mobilen Nutzern den einfachen Zugriff auf das Suchfeld. Integriert mit Cmd/Ctrl+K und /, Schließen per Escape.
  • Responsives Git-Popover: Neuausrichtung des Commit-Popovers unter 900px zur Anpassung an die Bildschirmbreite ohne horizontales Überlaufen des Viewports.
  • Flexible KI-Eingabeleiste: min-width: 0 für das Eingabefeld des KI-Assistenten verhindert Layout-Überläufe auf schmalen mobilen Bildschirmen.

Pre-Flight-Batch-Installation von Runtime-Abhängigkeiten (@docmd/api & @docmd/core)

  • Keine manuelle Installation für Templates, Plugins & Semantische Suche: Dokumentationsprojekte können offizielle Templates (z. B. theme.template: 'summer'), Plugins (z. B. plugins: ['math', 'mermaid']), Such-Engines (plugins.search.semantic: true) oder Rendering-Engines (engine: 'rust') direkt in der Konfiguration angeben, ohne diese manuell in der package.json deklarieren zu müssen.
  • Pre-Flight-Erkennung & atomare Batch-Installation: Vor Beginn der Kompilierung führt docmd sowohl bei Multi-Projekt-Workspaces (buildWorkspace) als auch bei Einzelprojekten (buildSite) einen Pre-Flight-Scan durch. Fehlen Runtime-Pakete in node_modules (docmd-search, @huggingface/transformers, onnxruntime-node, sharp), ermittelt docmd dynamisch deren Versionen und installiert alle Pakete gemeinsam in einem einzigen Batch-Befehl mit --no-save.
  • Verhinderung von npm-Baumbereinigungen: Zuvor führte das schrittweise Installieren fehlender Pakete dazu, dass modernes npm (v7+) zuvor installierte Pakete als überflüssig einstufte und löschte (z. B. das Entfernen von @docmd/template-summer, sobald docmd-search nachgeladen wurde). Die einheitliche Batch-Installation garantiert, dass alle Vorlagen und Assets vollständig erhalten bleiben.
  • Dynamische Versionsauflösung über die npm-Registry: Runtime-Installationen fragen dynamisch registry.npmjs.org ab, um die neuesten veröffentlichten Versionen zu beziehen und ETARGET-Fehler bei Vorabversionen zu verhindern.
  • Strikte Sicherheits- und Registry-Prüfung: Unbekannte Paketnamen außerhalb von @docmd/* oder nicht im offiziellen docmd-Katalog gelistete Pakete werden abgewiesen und mit klaren Warnungen protokolliert.

Danksagung an Mitwirkende der Community

Unser herzlicher Dank gilt den Mitwirkenden aus der Community für ihre Pull Requests und Fehlerbehebungen in dieser Version:

  • @MSOB7YY: Mobile Suche im Summer-Theme, responsives Git-Popover, CSS-Token-Bridge und KI-Eingabeüberlauf-Fix (#238) sowie Behebung defekter Links und Pfadnormalisierung (#229).
  • @w666: Lightbox Re-Binding bei SPA-Seitenwechseln und UI-Verbesserungen (#234) sowie Klick zum Kopieren von Überschriften-Permalinks (#236).
  • @justinTM: Korrektur der präzisen Lesezeitberechnung (#231).