====== WvdS FPC RAD Studio - Documentazione per sviluppatori ====== //Documentazione interna per gli sviluppatori della WvdS FPC RAD Suite// Questa documentazione è destinata agli **sviluppatori interni** della suite, non agli utenti finali. Per la documentazione utente vedere [[..:p:start|Public Documentation]]. ===== Panoramica ===== WvdS FPC RAD Studio è una suite di estensioni per Visual Studio Code, scritta interamente in Pascal e transpilata in JavaScript tramite pas2js. ==== Principi fondamentali ==== * **Nessun TypeScript** - Tutte le estensioni sono basate su Pascal * **SSOT** - Single Source of Truth in ''sources/'' * **Separation of Concerns** - Architettura a strati rigorosa * **Conforme a KRITIS/NIS2** - Sicurezza come requisito fondamentale ===== Indice della documentazione ===== ==== Architettura ==== ^ Documento ^ Contenuto ^ | [[.:architektur|Panoramica architettura]] | Struttura monorepo, strati, dipendenze | | [[.:umgebung|Ambiente di sviluppo]] | Struttura progetto, percorsi, regole SSOT | | [[.:pxaml-pipeline|Pipeline PXAML]] | Da markup a IR a renderer | | [[.:extension-architektur|Architettura estensioni]] | Entry point, attivazione, servizi | | [[.:targets|Target di build]] | GUI, TUI, Web - Differenze e punti in comune | ==== Sviluppo ==== ^ Documento ^ Contenuto ^ | [[.:extension-entwicklung|Sviluppo estensioni]] | Creare nuove estensioni, best practice | | [[.:control-entwicklung|Sviluppo controlli]] | Workflow in 7 passaggi per i controlli UI | | [[.:code-konventionen|Convenzioni del codice]] | Naming, struttura, documentazione | | [[.:sicherheit|Linee guida sulla sicurezza]] | OWASP, KRITIS, audit | | [[.:i18n|Internazionalizzazione]] | Resourcestrings, traduzioni | | [[.:debugging|Debugging]] | Debug logging, analisi errori | ==== Build e release ==== ^ Documento ^ Contenuto ^ | [[.:build-pipeline|Pipeline di build]] | Compilazione pas2js, CLI toolchain, artefatti | | [[.:pack-struktur|Struttura pack]] | Pack di terze parti, manifesti, distribuzione | | [[.:testing|Testing]] | Unit test, test di integrazione | | [[.:release|Processo di release]] | Versionamento, creazione VSIX, pubblicazione | ==== Sviluppo TUI ==== ^ Documento ^ Contenuto ^ | [[.:tui-entwicklung|Panoramica TUI]] | Architettura, requisiti di qualità, quando usare TUI | | [[.:tui-engine|TUI Engine]] | CellBuffer, DiffEngine, rendering flicker-free | | [[.:tui-controls|Controlli TUI]] | Pattern Model+Renderer, stati, input, focus | | [[.:tui-layout|Layout TUI]] | Anchoring, responsive, breakpoint, container | ==== Assicurazione qualità ==== ^ Documento ^ Contenuto ^ | [[.:qualitàetssicherung|Panoramica QA]] | Workflow, matrice profili, processi di audit | | [[.:audit-core|Checklist core]] | Production-ready, gestione errori, logging | | [[.:audit-sicherheit|Checklist sicurezza]] | KRITIS/NIS2, OWASP, crittografia | | [[.:audit-codequalitàet|Checklist qualità codice]] | Naming, funzioni, DRY, SSOT | | [[.:kommentierung|Standard di commento]] | PasDoc, doc-comments, review | | [[.:audit-vscode|Checklist VSCode]] | Specifico per estensioni, pas2js | ==== Riferimento API ==== ^ Documento ^ Contenuto ^ | [[.:core-api|Core API]] | Servizi condivisi, accesso toolchain | | [[.:meta-api|Meta API]] | Registry componenti, provider IntelliSense | | [[.:vscode-wrapper|VSCode Wrapper]] | Unit WvdS.VSCode.* | ==== Libreria controlli ==== ^ Documento ^ Contenuto ^ | [[.:control-bibliothek|Catalogo controlli]] | Tutti i 108 controlli con mapping DevExpress | | [[.:control-architektur|Architettura controlli]] | Pattern Properties/ViewInfo/Control | | [[.:control-vsix-erstellen|Creare VSIX]] | Creare manualmente estensione controllo | | [[.:control-generierung|Generazione controlli]] | Generazione batch con PowerShell | ==== Riferimento API controlli ==== ^ Documento ^ Contenuto ^ | [[.:api-controls-basic|Controlli base]] | Label, Button, CheckBox, ecc. (12) | | [[.:api-controls-editors|Controlli editor]] | TextEdit, SpinEdit, DateEdit, ecc. (18) | | [[.:api-controls-navigation|Navigazione]] | TabControl, Wizard, NavBar, ecc. (7) | | [[.:api-controls-data|Controlli dati]] | DataGrid, TreeList, PivotGrid, ecc. (10) | | [[.:api-controls-charts|Grafici]] | LineSeries, PieSeries, Sparkline, ecc. (16) | | [[.:api-controls-gauges|Indicatori]] | CircularGauge, LED, Thermometer, ecc. (10) | | [[.:api-controls-layout|Layout]] | LayoutControl, DockingManager, ecc. (10) | | [[.:api-controls-bars|Barre/Ribbon]] | RibbonControl, StatusBar, ecc. (10) | | [[.:api-controls-specialized|Specializzati]] | Scheduler, Spreadsheet, Map, ecc. (15) | ===== Guida rapida per nuovi sviluppatori ===== ==== 1. Configurare l'ambiente di sviluppo ==== # Clonare il repository git clone https://github.com/ArmandoFilho/WvdS.FPC.git cd WvdS.FPC # Aprire VS Code code . ==== 2. Installare gli strumenti ==== Richiesti: * Free Pascal Compiler 3.2.2+ * pas2js 2.2.0+ * Node.js 18+ (per vsce) * VS Code 1.85.0+ Opzionali: * lazbuild (per progetti LCL) * Inno Setup (per installer Windows) ==== 3. Prima compilazione ==== cd sources/extensions/wvds.vscode.core pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas ==== 4. Testare l'estensione ==== - ''F5'' in VS Code per avviare l'Extension Development Host - Si apre una nuova finestra VS Code con le estensioni caricate - Palette comandi: ''WVDS: Hello'' per testare ===== Struttura del repository ===== WvdS.FPC/ ├── sources/ # SSOT - Versionato │ ├── common/ # Unit condivise │ │ ├── core/ # Unit base │ │ ├── ui/ # UI Framework │ │ └── web/ # Host Bridges (Node, VSCode) │ ├── extensions/ # Estensioni VSIX │ │ ├── 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/ # Applicazioni standalone │ ├── tools/ # Strumenti CLI (wvds-build, ecc.) │ └── packages/ # Pacchetti IDE │ ├── binaries/ # Output build (non versionato) │ ├── out/ # Artefatti compilati │ ├── cache/ # Cache compilatore │ ├── dist/ # Pacchetti release │ └── logs/ # Log di build │ └── .claude/ # Configurazione Claude └── CLAUDE.md # Regole repository ===== Regole di policy ===== Queste regole sono **non negoziabili** e vengono verificate da wvds-lint: ==== P0: Single Source of Truth ==== CONSENTITO: sources/common/WvdS.System.pas VIETATO: sources/extensions/wvds.vscode.core/WvdS.System.pas (duplicato!) ==== P1: Niente TypeScript ==== CONSENTITO: *.pas -> pas2js -> *.js VIETATO: *.ts, *.js scritto a mano ==== P2: Wrapper solo in common ==== CONSENTITO: sources/common/web/vscode/VSCode.API.pas VIETATO: sources/extensions/wvds.vscode.build/VSCode.API.pas ==== P3: Output autocontenuto ==== dist/extension_main.js deve contenere tutte le unit necessarie ===== Contatti ===== * **Repository:** [[https://github.com/ArmandoFilho/WvdS.FPC|github.com/ArmandoFilho/WvdS.FPC]] * **Issues:** [[https://github.com/ArmandoFilho/WvdS.FPC/issues|Bug report e richieste di funzionalità]] * **Code Review:** Pull request tramite GitHub ===== Prossimi passi ===== * [[.:architektur|Comprendere l'architettura in dettaglio]] * [[.:extension-entwicklung|Sviluppare la prima estensione]] * [[.:code-konventionen|Interiorizzare le convenzioni del codice]]