====== WvdS FPC RAD Studio - Developer Documentation ====== //Internal documentation for developers of the WvdS FPC RAD Suite// This documentation is for **internal developers** of the suite, not for end users. For user documentation see [[..:p:start|Public Documentation]]. ===== Overview ===== WvdS FPC RAD Studio is an extension suite for Visual Studio Code, written entirely in Pascal and transpiled to JavaScript using pas2js. ==== Core Principles ==== * **No TypeScript** - All extensions are Pascal-based * **SSOT** - Single Source of Truth in ''sources/'' * **Separation of Concerns** - Strict layered architecture * **KRITIS/NIS2 compliant** - Security as a fundamental requirement ===== Documentation Index ===== ==== Architecture ==== ^ Document ^ Content ^ | [[.:architektur|Architecture Overview]] | Monorepo structure, layers, dependencies | | [[.:umgebung|Development Environment]] | Project structure, paths, SSOT rules | | [[.:pxaml-pipeline|PXAML Pipeline]] | Markup to IR to Renderer | | [[.:extension-architektur|Extension Architecture]] | Entry Points, Activation, Services | | [[.:targets|Build Targets]] | GUI, TUI, Web - Differences and commonalities | ==== Development ==== ^ Document ^ Content ^ | [[.:extension-entwicklung|Extension Development]] | Creating new extensions, Best Practices | | [[.:control-entwicklung|Control Development]] | 7-Step workflow for UI controls | | [[.:code-konventionen|Code Conventions]] | Naming, structure, documentation | | [[.:sicherheit|Security Guidelines]] | OWASP, KRITIS, Audit | | [[.:i18n|Internationalization]] | Resourcestrings, translations | | [[.:debugging|Debugging]] | Debug logging, error analysis | ==== Build and Release ==== ^ Document ^ Content ^ | [[.:build-pipeline|Build Pipeline]] | pas2js compilation, Toolchain CLI, artifacts | | [[.:pack-struktur|Pack Structure]] | Third-party packs, manifests, distribution | | [[.:testing|Testing]] | Unit tests, integration tests | | [[.:release|Release Process]] | Versioning, VSIX creation, publishing | ==== TUI Development ==== ^ Document ^ Content ^ | [[.:tui-entwicklung|TUI Overview]] | Architecture, quality requirements, when to use TUI | | [[.: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, containers | ==== Quality Assurance ==== ^ Document ^ Content ^ | [[.:qualitaetssicherung|QA Overview]] | Workflow, profile matrix, audit processes | | [[.:audit-core|Core Checklist]] | Production-ready, error handling, logging | | [[.:audit-sicherheit|Security Checklist]] | KRITIS/NIS2, OWASP, Crypto | | [[.:audit-codequalitaet|Code Quality Checklist]] | Naming, functions, DRY, SSOT | | [[.:kommentierung|Documentation Standards]] | PasDoc, doc comments, review | | [[.:audit-vscode|VSCode Checklist]] | Extension-specific, pas2js | ==== API Reference ==== ^ Document ^ Content ^ | [[.:core-api|Core API]] | Shared services, toolchain access | | [[.:meta-api|Meta API]] | Component registry, IntelliSense provider | | [[.:vscode-wrapper|VSCode Wrapper]] | WvdS.VSCode.* Units | ==== Control Library ==== ^ Document ^ Content ^ | [[.:control-bibliothek|Control Catalog]] | All 108 controls with DevExpress mapping | | [[.:control-architektur|Control Architecture]] | Properties/ViewInfo/Control Pattern | | [[.:control-vsix-erstellen|Creating VSIX]] | Manually creating control extension | | [[.:control-generierung|Control Generation]] | Batch generation with PowerShell | ==== Control API Reference ==== ^ Document ^ Content ^ | [[.: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) | ===== Quick Start for New Developers ===== ==== 1. Set Up Development Environment ==== # Clone repository git clone https://github.com/ArmandoFilho/WvdS.FPC.git cd WvdS.FPC # Open VS Code code . ==== 2. Install Tools ==== Required: * Free Pascal Compiler 3.2.2+ * pas2js 2.2.0+ * Node.js 18+ (for vsce) * VS Code 1.85.0+ Optional: * lazbuild (for LCL projects) * Inno Setup (for Windows installers) ==== 3. First Compilation ==== cd sources/extensions/wvds.vscode.core pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas ==== 4. Test Extension ==== - Press ''F5'' in VS Code to start the Extension Development Host - A new VS Code window opens with loaded extensions - Command Palette: ''WVDS: Hello'' to test ===== Repository Structure ===== WvdS.FPC/ ├── sources/ # SSOT - Version controlled │ ├── common/ # Shared Units │ │ ├── core/ # Base 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 applications │ ├── tools/ # CLI tools (wvds-build, etc.) │ └── packages/ # IDE Packages │ ├── binaries/ # Build output (not version controlled) │ ├── out/ # Compiled artifacts │ ├── cache/ # Compiler cache │ ├── dist/ # Release packages │ └── logs/ # Build logs │ └── .claude/ # Claude configuration └── CLAUDE.md # Repository rules ===== Policy Rules ===== These rules are **non-negotiable** and are checked by wvds-lint: ==== P0: Single Source of Truth ==== ALLOWED: sources/common/WvdS.System.pas FORBIDDEN: sources/extensions/wvds.vscode.core/WvdS.System.pas (duplicate!) ==== P1: No TypeScript ==== ALLOWED: *.pas -> pas2js -> *.js FORBIDDEN: *.ts, handwritten *.js ==== P2: Wrappers Only in common ==== ALLOWED: sources/common/web/vscode/VSCode.API.pas FORBIDDEN: sources/extensions/wvds.vscode.build/VSCode.API.pas ==== P3: Self-contained Output ==== dist/extension_main.js must contain all required units ===== Contacts ===== * **Repository:** [[https://github.com/ArmandoFilho/WvdS.FPC|github.com/ArmandoFilho/WvdS.FPC]] * **Issues:** [[https://github.com/ArmandoFilho/WvdS.FPC/issues|Bug Reports and Feature Requests]] * **Code Review:** Pull Requests via GitHub ===== Next Steps ===== * [[.:architektur|Understand the Architecture in Detail]] * [[.:extension-entwicklung|Develop Your First Extension]] * [[.:code-konventionen|Internalize Code Conventions]]