====== WvdS FPC RAD Studio - Entwicklerdokumentation ====== //Interne Dokumentation für Entwickler der WvdS FPC RAD Suite// Diese Dokumentation ist für **interne Entwickler** der Suite, nicht für Anwender. Für Anwenderdokumentation siehe [[..:p:start|Public Documentation]]. ===== Überblick ===== WvdS FPC RAD Studio ist eine Extension-Suite für Visual Studio Code, die vollständig in Pascal geschrieben und mit pas2js nach JavaScript transpiliert wird. ==== Kernprinzipien ==== * **Kein TypeScript** - Alle Extensions sind Pascal-basiert * **SSOT** - Single Source of Truth in ''sources/'' * **Separation of Concerns** - Strikte Schichtenarchitektur * **KRITIS/NIS2-konform** - Sicherheit als Grundanforderung ===== Dokumentationsindex ===== ==== Architektur ==== ^ Dokument ^ Inhalt ^ | [[.:architektur|Architektur-Übersicht]] | Monorepo-Struktur, Schichten, Abhängigkeiten | | [[.:umgebung|Entwicklungsumgebung]] | Projektstruktur, Pfade, SSOT-Regeln | | [[.:pxaml-pipeline|PXAML-Pipeline]] | Markup zu IR zu Renderer | | [[.:extension-architektur|Extension-Architektur]] | Entry Points, Activation, Services | | [[.:pasls-patches|pasls — Eigene Patches]] | Hover, References, DocumentHighlight — Änderungen am pascal-language-server | | [[.:targets|Build-Targets]] | GUI, TUI, Web - Unterschiede und Gemeinsamkeiten | ==== Entwicklung ==== ^ Dokument ^ Inhalt ^ | [[.:extension-entwicklung|Extension-Entwicklung]] | Neue Extension erstellen, Best Practices | | [[.:control-entwicklung|Control-Entwicklung]] | 7-Schritte-Workflow für UI-Controls | | [[.:code-konventionen|Code-Konventionen]] | Naming, Struktur, Dokumentation | | [[.:sicherheit|Sicherheitsrichtlinien]] | OWASP, KRITIS, Audit | | [[.:i18n|Internationalisierung]] | Resourcestrings, Übersetzungen | | [[.:debugging|Debugging]] | Debug-Logging, Fehleranalyse | ==== Build und Release ==== ^ Dokument ^ Inhalt ^ | [[.:build-pipeline|Build-Pipeline]] | pas2js-Kompilierung, Toolchain CLI, Artefakte | | [[.:pack-struktur|Pack-Struktur]] | Drittanbieter-Packs, Manifeste, Verteilung | | [[.:testing|Testing]] | Unit-Tests, Integration-Tests | | [[.:release|Release-Prozess]] | Versionierung, VSIX-Erstellung, Publishing | ==== TUI-Entwicklung ==== ^ Dokument ^ Inhalt ^ | [[.:tui-entwicklung|TUI-Übersicht]] | Architektur, Qualitätsanforderungen, Wann TUI verwenden | | [[.:tui-engine|TUI Engine]] | CellBuffer, DiffEngine, Flicker-free Rendering | | [[.:tui-controls|TUI Controls]] | Model+Renderer Pattern, States, Input, Focus | | [[.:tui-layout|TUI Layout]] | Anchoring, Responsive, Breakpoints, Container | ==== Qualitätssicherung ==== ^ Dokument ^ Inhalt ^ | [[.:qualitaetssicherung|QA-Übersicht]] | Workflow, Profil-Matrix, Audit-Prozesse | | [[.:audit-core|Core-Checkliste]] | Production-Ready, Error Handling, Logging | | [[.:audit-sicherheit|Sicherheits-Checkliste]] | KRITIS/NIS2, OWASP, Crypto | | [[.:audit-codequalitaet|Codequalität-Checkliste]] | Naming, Functions, DRY, SSOT | | [[.:kommentierung|Kommentierungsstandards]] | PasDoc, Doc-Comments, Review | | [[.:audit-vscode|VSCode-Checkliste]] | Extension-spezifisch, pas2js | ==== API-Referenz ==== ^ Dokument ^ Inhalt ^ | [[.:core-api|Core API]] | Shared Services, Toolchain-Zugriff | | [[.:meta-api|Meta API]] | Komponenten-Registry, IntelliSense-Provider | | [[.:vscode-wrapper|VSCode Wrapper]] | WvdS.VSCode.* Units | ==== Control-Bibliothek ==== ^ Dokument ^ Inhalt ^ | [[.:control-bibliothek|Control-Katalog]] | Alle 108 Controls mit DevExpress-Mapping | | [[.:control-architektur|Control-Architektur]] | Properties/ViewInfo/Control Pattern | | [[.:control-vsix-erstellen|VSIX erstellen]] | Control Extension manuell erstellen | | [[.:control-generierung|Control-Generierung]] | Batch-Generierung mit PowerShell | ==== Control API-Referenz ==== ^ Dokument ^ Inhalt ^ | [[.:api-controls-basic|Basic Controls]] | Label, Button, CheckBox, etc. (12) | | [[.:api-controls-editors|Editor Controls]] | TextEdit, SpinEdit, DateEdit, etc. (18) | | [[.:api-controls-navigation|Navigation]] | TabControl, Wizard, NavBar, etc. (7) | | [[.:api-controls-data|Data Controls]] | DataGrid, TreeList, PivotGrid, etc. (10) | | [[.:api-controls-charts|Charts]] | LineSeries, PieSeries, Sparkline, etc. (16) | | [[.:api-controls-gauges|Gauges]] | CircularGauge, LED, Thermometer, etc. (10) | | [[.:api-controls-layout|Layout]] | LayoutControl, DockingManager, etc. (10) | | [[.:api-controls-bars|Bars/Ribbon]] | RibbonControl, StatusBar, etc. (10) | | [[.:api-controls-specialized|Specialized]] | Scheduler, Spreadsheet, Map, etc. (15) | ===== Schnellstart für neue Entwickler ===== ==== 1. Entwicklungsumgebung einrichten ==== # Repository klonen git clone https://github.com/ArmandoFilho/WvdS.FPC.git cd WvdS.FPC # VS Code öffnen code . ==== 2. Werkzeuge installieren ==== Erforderlich: * Free Pascal Compiler 3.2.2+ * pas2js 2.2.0+ * Node.js 18+ (für vsce) * VS Code 1.85.0+ Optional: * lazbuild (für LCL-Projekte) * Inno Setup (für Windows-Installer) ==== 3. Erste Kompilierung ==== cd sources/extensions/wvds.vscode.core pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas ==== 4. Extension testen ==== - ''F5'' in VS Code zum Starten des Extension Development Host - Neues VS Code-Fenster öffnet sich mit geladenen Extensions - Befehlspalette: ''WVDS: Hello'' zum Testen ===== Repository-Struktur ===== WvdS.FPC/ ├── sources/ # SSOT - Versioniert │ ├── common/ # Shared Units │ │ ├── core/ # Basis-Units │ │ ├── ui/ # UI Framework │ │ └── web/ # Host Bridges (Node, VSCode) │ ├── extensions/ # VSIX Extensions │ │ ├── wvds.vscode.core/ │ │ ├── wvds.vscode.build/ │ │ ├── wvds.vscode.projects/ │ │ ├── wvds.vscode.packaging/ │ │ ├── wvds.vscode.ui.designer/ │ │ ├── wvds.vscode.ui.meta/ │ │ └── wvds.vscode.ui.preview/ │ ├── applications/ # Standalone-Anwendungen │ ├── tools/ # CLI-Tools (wvds-build, etc.) │ └── packages/ # IDE-Packages │ ├── binaries/ # Build-Output (nicht versioniert) │ ├── out/ # Kompilierte Artefakte │ ├── cache/ # Compiler-Cache │ ├── dist/ # Release-Pakete │ └── logs/ # Build-Logs │ └── .claude/ # Claude-Konfiguration └── CLAUDE.md # Repo-Regeln ===== Policy-Regeln ===== Diese Regeln sind **nicht verhandelbar** und werden von wvds-lint geprüft: ==== P0: Single Source of Truth ==== ERLAUBT: sources/common/WvdS.System.pas VERBOTEN: sources/extensions/wvds.vscode.core/WvdS.System.pas (Duplikat!) ==== P1: Kein TypeScript ==== ERLAUBT: *.pas -> pas2js -> *.js VERBOTEN: *.ts, handgeschriebenes *.js ==== P2: Wrapper nur in common ==== ERLAUBT: sources/common/web/vscode/VSCode.API.pas VERBOTEN: sources/extensions/wvds.vscode.build/VSCode.API.pas ==== P3: Self-contained Output ==== dist/extension_main.js muss alle benötigten Units enthalten ===== Kontakte ===== * **Repository:** [[https://github.com/ArmandoFilho/WvdS.FPC|github.com/ArmandoFilho/WvdS.FPC]] * **Issues:** [[https://github.com/ArmandoFilho/WvdS.FPC/issues|Bug Reports und Feature Requests]] * **Code Review:** Pull Requests via GitHub ===== Nächste Schritte ===== * [[.:architektur|Architektur im Detail verstehen]] * [[.:extension-entwicklung|Erste Extension entwickeln]] * [[.:code-konventionen|Code-Konventionen verinnerlichen]]