Das docmd 0.7.1 Release führt eine wesentliche architektonische Verbesserung ein — das Plugin-System wurde in ein dediziertes @docmd/api-Paket ausgelagert. Dies bringt Plugin-Deskriptoren, Absturz-Isolation und die Durchsetzung von Fähigkeiten (Capability Enforcement) in das Ökosystem.
✨ Highlights
📦 @docmd/api — Dediziertes Plugin-Paket
Die Plugin-API — bestehend aus Hook-Registrierung, WebSocket-RPC-Dispatching und Werkzeugen zur Quelltextbearbeitung — befindet sich nun in einem eigenen Paket: @docmd/api.
Dies entkoppelt das Plugin-Ökosystem von der eigentlichen Build-Engine. Plugin-Entwickler können nun gegen einen leichtgewichtigen API-Vertrag entwickeln, ohne das gesamte @docmd/core-Paket einbinden zu müssen.
Abwärtskompatibel: Alle Exporte aus
@docmd/apiwerden von@docmd/corere-exportiert. Bestehender Code funktioniert weiterhin ohne Änderungen.
🛡️ Plugin-Deskriptoren
Plugins können nun einen plugin-Deskriptor exportieren, der ihren Namen, ihre Version und ihre Fähigkeiten deklariert. Die Engine validiert diese Deskriptoren beim Laden.
Mibrations-Hinweis: Deskriptoren sind in 0.7.x optional. Ab Version 0.8.0 werden sie zwingend erforderlich sein.
🔒 Plugin-Isolation
Jeder Hook-Aufruf ist nun in eine Try/Catch-Grenze gehüllt. Ein fehlerhaftes Plugin kann den Build-Prozess nicht mehr zum Absturz bringen oder andere Plugins beeinträchtigen. Fehler werden gesammelt und am Ende des Builds in einer Zusammenfassung angezeigt.
🔑 Durchsetzung von Fähigkeiten (Capability Enforcement)
Plugins, die Fähigkeiten deklarieren, können sich nur noch für Hooks registrieren, die zu diesen Deklarationen passen. Wenn ein Plugin einen Hook exportiert, den es nicht deklariert hat, wird dieser von der Engine mit einer Warnung übersprungen.
📝 Vollständiger Changelog
📦 Architektur
- Auslagerung von
loadPlugins,createActionDispatcher,createSourceToolsund allen Plugin/RPC-Typen in das Paket@docmd/api. - Bereinigung von totem Code in
@docmd/corenach der Migration.
🔌 Plugin-System
- Einführung des Plugin-Deskriptors (Export von
plugin) mit Name, Version und Fähigkeiten. - Strikte Validierung für
@docmd/plugin-*-Pakete. - Isolation: Sicherheits-Wrapper (
safeCall) für alle Hooks. - Erweiterte Lebenszyklus-Hooks: Einführung von
onConfigResolved,onDevServerReady,onBeforeParse,onAfterParseundonPageReady. - Zusammenfassung von Plugin-Fehlern am Ende des Builds.
🐛 Fehlerbehebungen (Bug Fixes)
- Korrektur der Anzeige von Rohschlüsseln auf der 404-Seite bei fehlenden Übersetzungen.
- Behebung eines Problems, bei dem clientseitiger i18n-Code im
stringModefälschlicherweise in noStyle-Seiten eingefügt wurde. - Fix der Plugin-Auflösung in
pnpm-Workspaces.
⚠️ Breaking Changes
Plugin-API Import-Pfad
Der offizielle Ort für die Plugin-API ist nun @docmd/api. Plugin-Entwickler werden gebeten, ihre Importe von @docmd/core auf @docmd/api zu aktualisieren.
Threads-Plugin Peer-Dependency
Das Paket @docmd/plugin-threads hängt nun von @docmd/api ab (Peer-Dependency) statt von @docmd/core.
Migrationsleitfaden
Für Endbenutzer: Keine Änderungen erforderlich. npm install docmd@latest genügt.
Für Plugin-Entwickler:
- Fügen Sie Ihrem Standard-Export einen Plugin-Deskriptor hinzu.
- Aktualisieren Sie Ihre Importe von
@docmd/corezu@docmd/api. - Aktualisieren Sie die Peer-Dependencies in Ihrer
package.json.