v0.9.6 - Fokusmodus, Multi-Positions-Banner, Anker-Links, UI-Erweiterungen, SEO & Sicherheitsupdates
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 vontitleAppendund automatische Google-konforme JSON-LD-Schemas (Organization,WebSite,BreadcrumbListsowie benutzerdefiniertesldJson). - Open Knowledge Format (OKF): Automatische Konzeptbeschreibungen in
okf.yamlund Zusammenführung vontagsundkeywords. - 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-zipundprotobufjssowie 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:
- Seite drucken (
printer-Symbol, ruftwindow.print()mit einem maßgeschneiderten, sauberen Druck-Stylesheet auf). - Hell-/Dunkelmodus umschalten (nahtloser Designwechsel während des Lesens).
- Fokusmodus beenden (
minimize-2-Symbol oder überEsc/Alt+F).
- Seite drucken (
- Drucken-Schaltfläche in Kopier-Widgets: Wenn Drucken aktiviert ist (
layout.print: true,layout.optionsMenu.components.print: trueoderlayout.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.focusModeundoptionsMenu.components.printkönnen direkt indocmd.config.jsonunterlayout.optionsMenu.componentskonfiguriert 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-bottomundfooter. - 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 überdismissible: trueoderdismissable: trueaktiviert werden. - Schreibweisen-Aliase: Unterstützung von
dismissableundclosableals alternative Bezeichnungen fürdismissible. - 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.
UI-, Navigations- und Link-Erweiterungen
- 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"undrel="noopener", Bereinigung überflüssiger Anführungszeichen inhref-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
rawModuleinpackages/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: falseim Frontmatter oderlayout.titleAppend: falseverhindert 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.
- Automatische Injektion des Google-konformen
- Konsistenz im Social Graph: Identische Seitentitel in
<title>, Open Graphog:titleund Twittertwitter:title.
Open Knowledge Format (OKF) Erweiterungen (@docmd/plugin-okf)
- Konzeptbeschreibungen: Konzepte in
okf.yamlextrahieren automatisch Beschreibungen aus demdescription-Frontmatter oder der einleitenden Zusammenfassung. - Flexible Tag-Zusammenführung: Der OKF-Generator fasst
tagsundkeywords(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
openin::: detailsanalog zu::: collapsible open. - Eigenschaftszuordnung: Unterstützung für
title,textundlabelin Badges, Buttons, Tooltips und Changelogs. - Icon-Update: Aktualisierung von
lucide-staticauf^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 inlibheif(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+Kund/, Schließen perEscape. - Responsives Git-Popover: Neuausrichtung des Commit-Popovers unter 900px zur Anpassung an die Bildschirmbreite ohne horizontales Überlaufen des Viewports.
- Flexible KI-Eingabeleiste:
min-width: 0fü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 derpackage.jsondeklarieren 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 innode_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, sobalddocmd-searchnachgeladen 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.orgab, um die neuesten veröffentlichten Versionen zu beziehen undETARGET-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).