Files
web-cad/CHANGELOG.md
T

4.7 KiB
Raw Permalink Blame History

Changelog

2.0.0 (2026-08-29)

Vollständige Neuentwicklung der Kern-Architektur (Phasen AH der Roadmap).

Architektur

  • Plugin-System v2 (A1A4): ToolExtensionV2/PanelExtension/LibraryProviderExtension-Registry mit Interaktions-Dispatcher, CADDocument-Fassade über Yjs mit echtem Y.UndoManager (1 Aktion = 1 Undo-Schritt), Undo-fähige transact-Bündelung, V2HistoryPanel. Alle 30+ Werkzeuge als V2-Plugins migriert.
  • PixiJS-Renderer (C1C4): WebGL-Rendering als Default (Opt-out), inkrementelles Element-Rendering über Map-Diff, Snap-Marks + Selection-Handles im Overlay, MockAdapter für headless Tests.
  • Kernel: React-freies kernel/** (Regel), documentService-Singleton, featureFlags.

CAD-Werkzeuge (D1D12, vollständig)

  • Ellipse (3-Klick, Rotation aus Zugrichtung, Bogen via Winkel-Optionen) + Spline (CV-basiert, Catmull-Rom durch alle Kontrollpunkte)
  • Point/XLine/Ray auf Auto-angelegtem defpoints-Layer mit construction:true-Tag
  • MTEXT (mehrzeilig, optionaler Rahmen in derselben Transaktion)
  • Stretch, Break, Join, Explode, Align, Chamfer, Lengthen, PolylineEditor (verifiziert, Phase D complete)
  • GripEditing: Vertex-/Center-Grips (Linien-Endpunkte, Polyline-Vertices, Kreis-Zentrum) mit Drag in einer Transaktion; BBox-Corner-Skalierung bleibt parallel
  • Arrays: rect, polar, path (Kopien gleichmäßig entlang Pfadlänge)
  • Snaps erweitert: Quadrant (4 Kreis-Quadranten), Perpendicular (Fußpunkt vom Referenzpunkt), Tangent (beide Tangentenpunkte via acos), fromOffset-Helfer
  • BlockAttribute: BlockAttrDef auf Definitionen, attrValues auf Instanzen, Rendering als Text-Primitives, PropertiesPanel-Formular

Event-Bestuhlung (E1E7, vollständig)

  • Sitzreihen/-blöcke mit Drag-Interaktion, ArcRows (Stühle tangential rotiert), Vorlagenkatalog (Kino, Bankett, Stehtisch, Podest), CSV-Sitzlistent-Export, Gäste-Verwaltung mit Stuhl-Zuweisung
  • Neu: Vorhang (wellige Polyline), Scheinwerfer (Kegel-Polygon mit Winkel + Farbe), Absperrung (Kettenglieder), Bühnenhöhen-Attribut

Bibliothek & Import/Export (F1F8, vollständig)

  • Globale Block-Bibliothek: Ordner, Suche, Favoriten, Thumbnails, Grid-Ansicht, Drag&Drop in die Zeichenfläche
  • Export/Import als JSON (.wcadlib) und echtes ZIP-Paket (manifest.json + blocks.json + thumbs/)
  • DXF-Import erweitert: ELLIPSE, SPLINE (Grad ≤ 3, de-Boor-Approximation), MTEXT, POINT, ATTDEF, MINSERT-Arrays, strukturierter skippedEntities-Fehlerreport
  • DXF-Export erweitert: BLOCKS+INSERTS mit Namens-Sanitizing, ATTDEF/ATTRIB/SEQEND, AC1009 (R12) + AC1015, R12-korrektes POLYLINE+VERTEX+SEQEND; Roundtrip-Tests deckten und fixten 3 latente Konventions-Bugs (Circle-Zentrum in Writer und Parser, ARC-Winkel-Radian→Grad)
  • SVG-Import als echte Geometrie: voller Path-Parser (M/L/H/V/C/S/Q/T/A/Z, absolut+relativ, Bézier-Flattening, Arc-Endpoint→Center), rect/circle-Konventions-Fixes, Ellipse als Polygon
  • Builtin-Kataloge: Event/Architektur/Landschaft (je 15 Blöcke) über LibraryProvider, User- und Global-Library angebunden

Layouts & Plot (G1G5, vollständig)

  • Layout-Datenmodell in Yjs (undo-getrackt), LayoutBar mit Viewport-Minimap, zoom-to
  • Titelblock mit attributierten Texten (Projekt/Datum/Maßstab/Autor), auto-insert als Layout-Frame
  • PDF-Export je Layout: A4 landscape im Ausgabemaßstab, Linienbreiten + Dash-Patterns aus Layern, monochrome-Option, Titelblock-Mitzeichnung
  • Browser-Print: @media print mit A4 landscape, UI-Chrome ausgeblendet, Print-Service mit Cleanup

Modi & Rollen (H1H5, vollständig)

  • simple/pro-Modus (localStorage-persistiert): simple zeigt nur basic-Tools, CommandLine pro-only, Topbar-Toggle
  • Projekt-Templates: 6 Branchen-Presets (Halle/OpenAir/Saal/Messe/Büro/Garten) mit Grid/Layern/Plugin-Seed
  • Rollenschutz: library-admin (an admin-Rolle gebunden) für alle 8 schreibenden Global-Library-Routen; Lesen/Export für alle authentifizierten Nutzer
  • i18n-Grundlage: strings.ts de/en-Maps mit t()-Funktion, Persistenz, useT-Hook; LayoutBar + Modus umgestellt
  • Flächenberechnung: Shoelace-polygonArea, formatArea (quadratische Skalierung), measure-area-Tool, PropertiesPanel-Anzeige

Behobene Fehlerklassen

  • BUG-1-Klasse komplett geschlossen: alle Date.now()-Auto-IDs im Backend durch UUID-Slice ersetzt (deterministische Tests mit eingefrorener Zeit beweisen die Kollisionsfreiheit)
  • Circle-Center-Konvention in DXF-Writer, DXF-Parser und SVG-Import vereinheitlicht (Zentrum statt min-corner)
  • ARC-Winkel-Konvertierung dxf-parser (intern Radiant) → App (Grad) gefixt

Tests

  • Frontend: 697 Tests (alle grün), Backend: 287 Tests (alle grün)
  • Volle tsc-Typechecks und Production-Builds grün bei jedem Task