====== 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]]