Files
web-cad/WORKLOG.md
T
Leopoldadmin 707214447b merge: cherry-pick e1b96310 (security + type-safety + auth middleware) from web-cad
Brings the following 28.06 improvements into web-cad-neu:
- backend/src/auth/authMiddleware.ts: shared requireAuth/requireAdmin middleware
- backend/src/routes/users.ts: admin role checks (critical security fix)
- 6 routes (projects, drawings, elements, layers, blocks, settings): requireAuth
- server.ts: per-route auth (defense-in-depth alongside global hook)
- 6 test files: auth setup + 401 tests
- Frontend: type safety fixes (App.tsx, RenderEngine, SnapEngine, etc.)
- 10 components: SVG stroke-width/linecap/linejoin -> camelCase
- PropertiesPanel: formatPos/formatDim/parseNum helpers
- LayerPanel: aria-labels
- WORKLOG.md: historical worklog from 28.06

Conflicts resolved (4 blocks, all kept HEAD + e1b96310 improvements):
- LayerPanel.tsx: kept HEAD display:flex + e1b96310 aria-label
- PropertiesPanel.tsx: kept HEAD onDelete handler + e1b96310 formatPos helpers
- PropertiesPanel.tsx: kept HEAD delete button (feature) + full inline styles
- Topbar.tsx: kept HEAD onClick + e1b96310 camelCase SVG attrs

Refs: CODE_ANALYSIS.md (Issue #1 partially improved), e1b96310
2026-06-30 11:32:33 +02:00

5.4 KiB

Web-CAD Work Log

2026-06-28 — Session 1

Erledigt:

  1. Echte Source gefunden: /data/web-cad-neu/frontend/ auf Server — echter TypeScript CAD-Editor (React 18, Vite, RibbonBar, KI, Layers, Tools)
  2. Source in Repo committed: Commit 9edce19 — kompletter TS-Source, kein Viewer
  3. Backend/.dockerignore hinzugefügt: Commit c977678 → dann durch History-Reset in 9edce19 integriert
  4. Git-Historie bereinigt: Orphan-Branch, Force-Push — alle alten Viewer-Commits vernichtet
  5. Server bereinigt:
    • /tmp/web-cad-deploy/ gelöscht (JSX viewer)
    • /tmp/web-cad-* Temp-Dateien gelöscht (7 Dateien)
    • /data/webspace/webcad/, web-cad-mockups-x7k2p9/, web-cad-neu/ gelöscht
    • Altes Docker-Image web-cad-frontend:latest (d8fee173c5fe) gelöscht
    • Alter Container temp-extract gelöscht
  6. Repo mit Server synchronisiert: backend/package-lock.json angepasst, Commit d08785d
  7. Checksums verifiziert: 119/119 Dateien SHA256-identisch (lokal ↔ Server)
  8. Backup erstellt:
    • Lokal: /a0/usr/workdir/web-cad-backup-20260628-102017.tar.gz (270K)
    • Server: /tmp/web-cad-neu-backup-20260628-102018.tar.gz (268K)
  9. Deployment verifiziert: Health OK, Frontend+Backend running, Browser zeigt echten CAD-Editor

Gefundene Fehler (Frontend Tests):

  • 6 Failures in tests/Components.test.tsx (PropertiesPanel):
    1. should display default values — erwartet '0.000 m', bekommt '0' (Format-String fehlt)
    2. should display element coordinates — erwartet '10.000 m', bekommt '10'
    3. should display element dimensions — erwartet '100.00 m', bekommt '100'
    4. should call onUpdateProperty — erwartet String '999', bekommt Number 999 (Typ-Konflikt) 5-6. Weitere PropertiesPanel-Formatierungsfehler
  • 337 Tests passed, 6 failed

Backups (vor Bug-Fixing erstellt):

  • Lokal: /a0/usr/workdir/web-cad-backup-20260628-102017.tar.gz (270K, 161 Dateien — frontend + backend + configs)
  • Server-Backup gelöscht (redundant, /tmp ist temporär)
  • Forgejo Commit d08785d ist der letzte Stand vor Bug-Fixing

Bug-Fixing Fortschritt:

Frontend Fixes:

  1. PropertiesPanel.tsx — 6 Test-Fehler behoben:
    • Position X/Y: String(el.x)formatPos(el.x) = 'X.XXX m' (3 Dezimalstellen + ' m')
    • Breite/Tiefe: String(el.width)formatDim(el.width) = 'X.XX m' (2 Dezimalstellen + ' m')
    • Default-Werte: '0''0.000 m' / '0.50 m'
    • onChange: parseFloat(e.target.value) || 0e.target.value (String statt Number)
    • Neue Helper: formatPos(), formatDim(), parseNum()
  2. LayerPanel.tsx — 2 Test-Fehler behoben:
    • Add-Button: className="add-layer-btn" + aria-label="Neue Ebene" hinzugefügt
    • Visibility-Toggle: aria-label={layer.visible ? 'Verstecken' : 'Anzeigen'} hinzugefügt
  3. RibbonBar.tsx — SVG Property Warnings behoben:
    • stroke-widthstrokeWidth, stroke-linecapstrokeLinecap, stroke-linejoinstrokeLinejoin
  4. 9 weitere Komponenten — gleiche SVG Property Fixes:
    • RightSidebar, PropertiesPanel, Topbar, MobileDrawers, CanvasArea, KICopilot, StatusBar, LeftSidebar, BlockLibrary
    • exportService.ts

Backend Fixes:

  • Noch ausstehend (1 StressTest Timing-Fehler: 507ms vs 500ms Threshold)

Test-Ergebnisse nach Fixes:

  • Frontend: 343/343 passed
  • Frontend TypeScript: clean
  • Backend: 158/158 passed
  • Backend TypeScript: clean
  • Frontend Build: 337 modules, OK

Weitere Code-Review Fixes:

  1. App.tsx line 617 — Copy-Funktion: (e as any).selectedselectedElement ? [selectedElement] : [] (selected property existierte nicht auf CADElement)
  2. App.tsx lines 654-660 — Image-Insert: type: 'image' as any + as any → korrektes CADElement mit type: 'image', width: 200, height: 200
  3. cad.types.ts'image' zu ElementType hinzugefügt
  4. SnapEngine.ts line 89'grid' as SnapMode as any'grid' (double cast entfernt)
  5. RenderEngine.ts line 33 — SnapPoint type erweitert: 'grid' | 'perpendicular' | 'tangent' | 'quadrant' | 'none' hinzugefügt
  6. RightSidebar.tsx line 51(updated as any)[key] = value as number → proper type-safe assignment mit String-Parsing
  7. RightSidebar.tsx — rotation handling hinzugefügt (String → Number Parse)
  8. RibbonBar.tsx + 9 weitere Dateien — SVG Properties: stroke-widthstrokeWidth etc. (React camelCase)

TODO:

  • Backend Tests ausführen
  • PropertiesPanel: Format-String für Werte (m, cm) fixen
  • PropertiesPanel: onUpdateProperty Typ-Konsistenz (string vs number)
  • Alle Frontend-Tests grün bekommen
  • Backend-Tests prüfen und fixen
  • Code-Review: jede Komponente, jeder Button, jede Funktion
  • Gefundene Fehler fixen und testen
  • Fixes committen und pushen
  • Auf Server deployen und verifizieren

Commits:

  • 9edce19 — Web CAD complete TypeScript source (orphan, history reset)
  • d08785d — Sync backend/package-lock.json with production server

Wichtige Pfade:

  • Lokales Repo: /a0/usr/workdir/web-cad/
  • Server Source: /data/web-cad-neu/ (frontend + backend)
  • Server Git Clone: /root/web-cad/
  • Forgejo: https://forgejo.media-on.de/Leopoldadmin/web-cad.git
  • Coolify Service: cnuavrh33goa3zs0upi6hgif
  • Live URL: https://web-cad-neu.server.media-on.de
  • SSH: ssh -i /a0/usr/workdir/.ssh/coolify-01-root root@46.225.91.159