- Added new sections for WP-26 integration, including links to the Lastenheft, interface specification, and implementation checklist. - Enhanced the overall structure of the documentation index to improve navigation and accessibility of WP-26 related resources.
9.5 KiB
WP-26 Implementierungs-Checkliste für mindnet_obsidian Plugin
Version: 1.0
Datum: 25. Januar 2026
Status: Implementierungsleitfaden
Basis: WP26_Plugin_Interface_Specification.md
Übersicht
Diese Checkliste dient als Implementierungsleitfaden für die Integration von WP-26 Features (Section Types & Intra-Note-Edges) in das mindnet_obsidian Plugin.
Referenz: Vollständige Spezifikation siehe WP26_Plugin_Interface_Specification.md
Phase 1: Grundlagen (Kern-Parsing)
✅ 1.1 Section-Type-Parsing
Datei: src/mapping/sectionParser.ts
Tasks:
- Funktion
extractSectionType(content: string): string | nullhinzufügen- Regex:
/^\s*>\s*\[!section\]\s*(\w+)/ - Suche in gesamter Section (nicht nur direkt nach Heading)
- Regex:
- Funktion
extractBlockId(heading: string): string | nullhinzufügen- Regex:
/\^([a-zA-Z0-9_-]+)/
- Regex:
- Interface
NoteSectionerweitern:sectionType?: string; blockId?: string; splitIntoSections()erweitern:- Extrahiere Section-Type aus Content
- Extrahiere Block-ID aus Heading
- Propagiere Section-Type retroaktiv zur Überschrift
Tests:
src/tests/mapping/sectionTypeParser.test.tserstellen- Test: Section-Type an beliebiger Stelle in Section
- Test: Block-ID-Extraktion aus Heading
- Test: Retroaktive Propagation
✅ 1.2 Edge-Parsing-Erweiterung
Datei: src/parser/parseEdgesFromCallouts.ts
Tasks:
- Funktion
extractBlockId(link: string): string | nullhinzufügen- Erkenne
[[#^block-id]] - Erkenne
[[#Section Name ^block-id]]→ extrahiere nurblock-id
- Erkenne
- Interface
ParsedEdgeerweitern:isInternal?: boolean; blockIds?: string[]; parseEdgesFromCallouts()erweitern:- Extrahiere Block-IDs aus Targets
- Setze
isInternal: truewenn alle Targets Block-IDs sind
Tests:
src/tests/parser/parseEdgesFromCallouts.test.tserweitern- Test: Block-ID-Extraktion aus
[[#^block-id]] - Test: Block-ID-Extraktion aus
[[#Section ^block-id]] - Test:
isInternalFlag für Intra-Note-Edges
✅ 1.3 Graph-Schema-Loader
Datei: src/schema/GraphSchemaLoader.ts (NEU)
Tasks:
- Klasse
GraphSchemaLoadererstellen (analog zuChainRolesLoader.ts) - Parse
Dictionary/graph_schema.md:- Format:
## Source: \type`` - Tabelle:
| Target | Typical | Prohibited |
- Format:
- Funktion
loadGraphSchema(): GraphSchemaimplementieren - Funktion
getTypicalEdgeFor(sourceType, targetType): string | nullimplementieren - Funktion
getTopologyInfo(sourceType, targetType): {typical, prohibited}implementieren - Fallback-Logik: exact → "any" → "default"
Tests:
src/tests/schema/graphSchemaLoader.test.tserstellen- Test: Schema-Loading
- Test: Typical Edge Lookup
- Test: Fallback-Logik
Phase 2: UI-Komponenten
✅ 2.1 Section-Type-Modal
Datei: src/ui/SectionTypeModal.ts (NEU)
Tasks:
- Modal-Komponente erstellen
- Type-Auswahl aus
types.yaml(viaDictionaryLoader) - Block-ID-Generierung/-Bearbeitung
- Vorschau: Wie wird es im Backend interpretiert?
- Integration in Commands
UI-Features:
- Dropdown für Section-Type-Auswahl
- Input-Feld für Block-ID (mit Auto-Generierung)
- Vorschau-Panel
- Save/Cancel Buttons
✅ 2.2 Block-ID-Autovervollständigung
Datei: src/ui/LinkPromptModal.ts (ERWEITERN)
Tasks:
- Block-ID-Suggestions hinzufügen
- Format:
[[#^block-id]]mit Heading-Vorschau - Filterung nach Section-Type (optional)
- Integration in Edge-Editing-Flows
UI-Features:
- Autovervollständigung für Block-IDs
- Zeige Heading + Section-Type in Vorschau
- Unterscheidung: Intra-Note vs. Inter-Note Links
✅ 2.3 Edge-Type-Chooser-Erweiterung
Datei: src/ui/EdgeTypeChooserModal.ts (ERWEITERN)
Tasks:
- Section-Type-basierte Vorschläge integrieren
- Schema-Validierung (Visual Feedback)
- Nutze
GraphSchemaLoaderfür Vorschläge - Zeige Warnungen bei "prohibited" Edges
UI-Features:
- ✅ Typisch (grün)
- ⚠️ Atypisch (gelb)
- ❌ Verboten (rot)
- Vorschläge basierend auf Source/Target Section-Types
Phase 3: Feature-Integration
✅ 3.1 Interview-Wizard-Integration
Dateien:
src/interview/types.tssrc/interview/renderer.tssrc/interview/wizardState.ts
Tasks:
CaptureTextSteperweitern:sectionType?: string; output?: { includeSectionCallout?: boolean; };CaptureTextLineSteperweitern:output?: { generateBlockId?: boolean; blockIdFromKey?: boolean; };renderer.tserweitern:- Funktion
renderSectionWithType()hinzufügen - Automatische
[!section]Callout-Einfügung - Automatische Block-ID-Generierung
- Funktion
Tests:
src/tests/interview/renderer.test.tserweitern- Test: Section-Type-Rendering
- Test: Block-ID-Generierung
✅ 3.2 Chain-Workbench-Integration
Dateien:
src/workbench/types.tssrc/workbench/todoGenerator.tssrc/analysis/chainInspector.ts
Tasks:
WorkbenchMatcherweitern:sectionTypes?: Map<string, string>;MissingLinkTodoerweitern:fromSectionType?: string; toSectionType?: string;todoGenerator.tserweitern:- Berücksichtige Section-Types bei Edge-Type-Vorschlägen
- Nutze
graph_schema.mdfür Vorschläge
chainInspector.tserweitern:- Erkenne Intra-Note-Edges
- Nutze Section-Types für besseres Matching
Tests:
src/tests/workbench/todoGenerator.test.tserweitern- Test: Section-Type-basierte Vorschläge
✅ 3.3 Mapping-Integration
Dateien:
src/mapping/mappingBuilder.tssrc/mapping/semanticMappingBuilder.tssrc/mapping/updateMappingBlocks.ts
Tasks:
MappingContexterweitern:sectionTypes: Map<string, string>; blockIds: Map<string, string>;- Funktion
generateIntraNoteEdges()hinzufügen:- Generiere automatische Edges zwischen Sections
- Nutze
graph_schema.mdfür Default-Edge-Types - Nur wenn keine expliziten Edges vorhanden
Tests:
src/tests/mapping/mappingBuilder.test.tserweitern- Test: Automatische Intra-Note-Edge-Generierung
Phase 4: Validierung & Linting
✅ 4.1 Lint-Rules
Dateien: src/lint/rules/ (NEU)
Tasks:
4.1.1 Section-Type-Validierung
rule_section_type.tserstellen- Prüfe: Section-Type muss in
types.yamlexistieren - Warnung: Fehlende Block-IDs für referenzierte Sections
- Warnung: Section-Types ohne explizite Edges
4.1.2 Edge-Validierung
rule_unkown_edge.tserweitern- Prüfe: Edge-Types gegen
graph_schema.md(prohibited) - Warnung: Atypische Edges (nicht in "typical")
4.1.3 Block-ID-Validierung
rule_block_id.tserstellen- Warnung: Fehlende Block-IDs für referenzierte Sections
- Warnung: Doppelte Block-IDs innerhalb einer Note
- Warnung: Unbenutzte Block-IDs
Tests:
src/tests/lint/rules/rule_section_type.test.tserstellensrc/tests/lint/rules/rule_block_id.test.tserstellen
✅ 4.2 Vault-Triage-Erweiterung
Dateien:
src/workbench/vaultTriageScan.tssrc/commands/vaultTriageScanCommand.ts
Tasks:
- Erkenne Notes ohne Section-Types
- Erkenne fehlende Block-IDs bei referenzierten Sections
- Erkenne Intra-Note-Edges, die noch nicht explizit sind
- Zeige Verbesserungsvorschläge
Phase 5: Commands
✅ 5.1 Neue Commands
Datei: src/main.ts (Command-Registrierung)
Tasks:
5.1.1 "Add Section Type"
- Command-ID:
mindnet:add-section-type - Öffne
SectionTypeModal - Füge
[!section]Callout zur aktuellen Section hinzu - Generiere Block-ID falls nicht vorhanden
5.1.2 "Add Block ID to Heading"
- Command-ID:
mindnet:add-block-id - Füge Block-ID zur aktuellen Überschrift hinzu
- Generiere ID aus Heading-Text (slugified)
5.1.3 "Insert Intra-Note Edge"
- Command-ID:
mindnet:insert-intra-note-edge - Füge
[!edge]Callout mit Block-Reference hinzu - Zeige Autovervollständigung für Block-IDs
Phase 6: Dokumentation
✅ 6.1 Benutzerhandbuch
Datei: docs/01_Benutzerhandbuch.md
Tasks:
- Abschnitt "Section Types" hinzufügen
- Abschnitt "Intra-Note-Edges" hinzufügen
- Abschnitt "Block-IDs" hinzufügen
- Quick-Start-Guide für WP-26 Features
✅ 6.2 Entwicklerhandbuch
Datei: docs/03_Entwicklerhandbuch.md
Tasks:
- Abschnitt "WP-26 Integration" hinzufügen
- API-Referenz für neue Funktionen
- Beispiele für Section-Type-Parsing
Zusammenfassung
| Phase | Komponenten | Status |
|---|---|---|
| Phase 1 | Section-Parsing, Edge-Parsing, Schema-Loader | ⏳ Offen |
| Phase 2 | Section-Type-Modal, Block-ID-Autocomplete, Edge-Chooser | ⏳ Offen |
| Phase 3 | Interview, Chain-Workbench, Mapping | ⏳ Offen |
| Phase 4 | Lint-Rules, Vault-Triage | ⏳ Offen |
| Phase 5 | Commands | ⏳ Offen |
| Phase 6 | Dokumentation | ⏳ Offen |
Nächste Schritte
- Review der Spezifikation (
WP26_Plugin_Interface_Specification.md) - Priorisierung: Welche Phase zuerst?
- Start mit Phase 1: Grundlagen (Parsing & Schema-Loader)
Ende der Checkliste