Inhaltsverzeichnis

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

Documentation Index

Architecture

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

Development

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

Build and Release

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

TUI Development

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

Quality Assurance

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

API Reference

Document Content
Core API Shared services, toolchain access
Meta API Component registry, IntelliSense provider
VSCode Wrapper WvdS.VSCode.* Units

Control Library

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

Control API Reference

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)

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:

Optional:

3. First Compilation

cd sources/extensions/wvds.vscode.core
pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas

4. Test Extension

  1. Press F5 in VS Code to start the Extension Development Host
  2. A new VS Code window opens with loaded extensions
  3. 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

Next Steps