Internal documentation for developers of the WvdS FPC RAD Suite
WvdS FPC RAD Studio is an extension suite for Visual Studio Code, written entirely in Pascal and transpiled to JavaScript using pas2js.
sources/| Document | Content |
|---|---|
| Architecture Overview | Monorepo structure, layers, dependencies |
| Development Environment | Project structure, paths, SSOT rules |
| PXAML Pipeline | Markup to IR to Renderer |
| Extension Architecture | Entry Points, Activation, Services |
| Build Targets | GUI, TUI, Web - Differences and commonalities |
| Document | Content |
|---|---|
| Extension Development | Creating new extensions, Best Practices |
| Control Development | 7-Step workflow for UI controls |
| Code Conventions | Naming, structure, documentation |
| Security Guidelines | OWASP, KRITIS, Audit |
| Internationalization | Resourcestrings, translations |
| Debugging | Debug logging, error analysis |
| Document | Content |
|---|---|
| Build Pipeline | pas2js compilation, Toolchain CLI, artifacts |
| Pack Structure | Third-party packs, manifests, distribution |
| Testing | Unit tests, integration tests |
| Release Process | Versioning, VSIX creation, publishing |
| Document | Content |
|---|---|
| TUI Overview | Architecture, quality requirements, when to use TUI |
| TUI Engine | CellBuffer, DiffEngine, flicker-free rendering |
| TUI Controls | Model+Renderer Pattern, states, input, focus |
| TUI Layout | Anchoring, responsive, breakpoints, containers |
| Document | Content |
|---|---|
| QA Overview | Workflow, profile matrix, audit processes |
| Core Checklist | Production-ready, error handling, logging |
| Security Checklist | KRITIS/NIS2, OWASP, Crypto |
| Code Quality Checklist | Naming, functions, DRY, SSOT |
| Documentation Standards | PasDoc, doc comments, review |
| VSCode Checklist | Extension-specific, pas2js |
| Document | Content |
|---|---|
| Core API | Shared services, toolchain access |
| Meta API | Component registry, IntelliSense provider |
| VSCode Wrapper | WvdS.VSCode.* Units |
| Document | Content |
|---|---|
| Control Catalog | All 108 controls with DevExpress mapping |
| Control Architecture | Properties/ViewInfo/Control Pattern |
| Creating VSIX | Manually creating control extension |
| Control Generation | Batch generation with PowerShell |
| Document | Content |
|---|---|
| Basic Controls | Label, Button, CheckBox, etc. (12) |
| Editor Controls | TextEdit, SpinEdit, DateEdit, etc. (18) |
| Navigation | TabControl, Wizard, NavBar, etc. (7) |
| Data Controls | DataGrid, TreeList, PivotGrid, etc. (10) |
| Charts | LineSeries, PieSeries, Sparkline, etc. (16) |
| Gauges | CircularGauge, LED, Thermometer, etc. (10) |
| Layout | LayoutControl, DockingManager, etc. (10) |
| Bars/Ribbon | RibbonControl, StatusBar, etc. (10) |
| Specialized | Scheduler, Spreadsheet, Map, etc. (15) |
# Clone repository git clone https://github.com/ArmandoFilho/WvdS.FPC.git cd WvdS.FPC # Open VS Code code .
Required:
Optional:
cd sources/extensions/wvds.vscode.core pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas
F5 in VS Code to start the Extension Development HostWVDS: Hello to testWvdS.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
These rules are non-negotiable and are checked by wvds-lint:
ALLOWED: sources/common/WvdS.System.pas FORBIDDEN: sources/extensions/wvds.vscode.core/WvdS.System.pas (duplicate!)
ALLOWED: *.pas -> pas2js -> *.js FORBIDDEN: *.ts, handwritten *.js
ALLOWED: sources/common/web/vscode/VSCode.API.pas FORBIDDEN: sources/extensions/wvds.vscode.build/VSCode.API.pas
dist/extension_main.js must contain all required units