HANDOVER: Übergabe an neue Instanz — Nordstern 2/3/4/5 gelandet, Schnitt-UI-Anbindung offen
This commit is contained in:
+83
-29
@@ -41,38 +41,92 @@ Code/Doku noch in der Git-Historie.
|
|||||||
vor dem Edit frisch lesen (der „modified since read"-Guard verhindert blindes
|
vor dem Edit frisch lesen (der „modified since read"-Guard verhindert blindes
|
||||||
Überschreiben).
|
Überschreiben).
|
||||||
|
|
||||||
## >>> STAND 2026-07-03 (Nordstern-Session) — ZUERST LESEN <<<
|
## >>> STAND 2026-07-03 Abend (Nordstern-Session, Übergabe an neue Instanz) — ZUERST LESEN <<<
|
||||||
|
|
||||||
Ein Master-Branch (alle Feature-/Worktree-Branches konsolidiert und gelöscht), alles auf
|
Ein Master-Branch (alle Feature-/Worktree-Branches konsolidiert und gelöscht), alles auf
|
||||||
origin/master gepusht. Heute gelandet (jeweils eigene Commits, Reihenfolge = Historie):
|
origin/master gepusht, Working Tree sauber bis auf eine vorbestehende, unabhängige
|
||||||
- **7ca5197** Resource Manager: Materialien-Tab (PBR-Kugel-Vorschau via geteiltem Offscreen-
|
Materials-Library-WIP (`.gitignore`, `public/assets/materials/manifest.json`,
|
||||||
Renderer, Suche + Kategorie-Chips, lazy per IntersectionObserver).
|
`src/materials/library.ts`, `scripts/fetch-materials.mjs` — NICHT anfassen/reverten, ist
|
||||||
- **c8a4188** render3d als WASM/WebGPU-Viewport in der App (`?engine=wasm` bzw. localStorage
|
fremde in Arbeit befindliche Sache, nicht Teil der Engine-Session). Heute gelandet, acht
|
||||||
`cad.rendererMode`; three.js bleibt Default). Geteilter wgpu-22-Shim in
|
Commits in dieser Reihenfolge:
|
||||||
src/engine/requestDeviceShim.ts. Probe: scripts/probe-engine3d.mjs (HEADFUL=1 nötig —
|
|
||||||
headless Chromium präsentiert keine WebGPU-Frames, gilt auch für render2d).
|
|
||||||
- **54211b1 + 76029db** render3d/src/section.rs: Schnittebene → Cut-Polygone + sichtbare/
|
|
||||||
verdeckte projizierte Kanten, inkl. Öffnungen (Brüstung/Sturz-Teilrechtecke, Durchblick).
|
|
||||||
29 Tests, Beweis-SVG docs/welle-c-hlr-spike/section-engine-proof.svg, Doku
|
|
||||||
docs/design/engine-section-pipeline.md. Eigen-Engine-Ersatz für den OCCT-Pfad (66 MB WASM).
|
|
||||||
- **ce6bd26** 2D-Engine-Parität: WASM-Pfad deckungsgleich zum SVG-Referenzpfad (?gl=0!).
|
|
||||||
Fixes: text_scale entkoppelt, glyphon ColorMode::Web, z-basierte Maler-Reihenfolge
|
|
||||||
(draw_sequence), CSS-Klassenfarben in toRenderScene, greyed 0.3, Dämmwellen-Bézier +
|
|
||||||
userSpaceOnUse-Anker + widthScreen-Schraffurbreite. Probe: scripts/probe-engine-parity.mjs.
|
|
||||||
- **4b02e40** render2d Headless: Feature `headless`, HeadlessRenderer ohne Surface (Vulkan),
|
|
||||||
CLI-Bin render_png, Golden-Test (bit-exakt auf dieser Maschine) tests/golden/demo.png,
|
|
||||||
Doku docs/design/engine-headless.md.
|
|
||||||
|
|
||||||
**Bei Abbruch dieser Session evtl. noch unfertig im Working Tree** (Agents liefen noch):
|
1. **7ca5197** Resource Manager: Materialien-Tab (PBR-Kugel-Vorschau via geteiltem Offscreen-
|
||||||
(a) Vektor-PDF aus der RenderScene: src/export/sceneToPrintSvg.ts (neu) + exportPdf.ts-
|
Renderer, Suche + Kategorie-Chips, lazy per IntersectionObserver).
|
||||||
Umstellung — Ziel: PDF aus derselben Szene wie der Viewport (Nordstern 2). (b) wgpu-Upgrade
|
2. **c8a4188** render3d als WASM/WebGPU-Viewport in der App (`?engine=wasm` bzw. localStorage
|
||||||
22→aktuell in render2d+render3d inkl. glyphon-Mithub und Ausbau von requestDeviceShim.ts.
|
`cad.rendererMode`; three.js bleibt Default). Probe: scripts/probe-engine3d.mjs (HEADFUL=1
|
||||||
Gates für beide: tsc/build/vitest bzw. cargo check/test nativ+wasm32, Proben probe-pdf.mjs /
|
nötig — headless Chromium präsentiert keine WebGPU-Frames, gilt auch für render2d).
|
||||||
probe-engine-parity.mjs / probe-engine3d.mjs. Wenn die Diffs sauber und Gates grün: committen
|
3. **54211b1 + 76029db** render3d/src/section.rs: Schnittebene → Cut-Polygone + sichtbare/
|
||||||
(Regeln oben beachten). Danach als Nächstes: Schnitt-Pipeline an UI/TS anbinden (SectionOutput
|
verdeckte projizierte Kanten, inkl. Öffnungen (Brüstung/Sturz-Teilrechtecke, Durchblick).
|
||||||
→ Plan-Primitive, Schnitt-Views statt Stubs), src-tauri/-Ordner umbenennen/entflechten (User
|
29 Tests, Beweis-SVG docs/welle-c-hlr-spike/section-engine-proof.svg, Doku
|
||||||
will keine Tauri-Reste im Namensraum; Electron ist die Shell), mesh.rs-Öffnungen,
|
docs/design/engine-section-pipeline.md. Eigen-Engine-Ersatz für den OCCT-Pfad (66 MB WASM).
|
||||||
Nordstern 1 (mm-Strichbreiten-Audit). Nicht-Engine-Backlog weiter unten.
|
**mesh.rs (3D-Vollkörper-Extrusion) berücksichtigt Öffnungen weiterhin NICHT** — dokumentierte,
|
||||||
|
bewusst offene Lücke (Cut/Ansicht-Pipeline und 3D-Solid-Mesh sind bis dahin inkonsistent).
|
||||||
|
4. **ce6bd26** 2D-Engine-Parität: WASM-Pfad deckungsgleich zum SVG-Referenzpfad (**Referenz ist
|
||||||
|
`?gl=0`**, nicht der Default!). Fixes: text_scale entkoppelt, glyphon ColorMode::Web,
|
||||||
|
z-basierte Maler-Reihenfolge (draw_sequence), CSS-Klassenfarben in toRenderScene, greyed 0.3,
|
||||||
|
Dämmwellen-Bézier + userSpaceOnUse-Anker + widthScreen-Schraffurbreite. Probe:
|
||||||
|
scripts/probe-engine-parity.mjs.
|
||||||
|
5. **4b02e40** render2d Headless: Feature `headless`, HeadlessRenderer ohne Surface (Vulkan),
|
||||||
|
CLI-Bin render_png, Golden-Test (bit-exakt) tests/golden/demo.png, Doku
|
||||||
|
docs/design/engine-headless.md.
|
||||||
|
6. **382771b** Vektor-PDF aus der RenderScene (**Nordstern 2 abgeschlossen**): exportPdf baut
|
||||||
|
jetzt `planToRenderScene(plan)` — derselbe Aufruf wie der Viewport — und serialisiert über
|
||||||
|
den neuen `src/export/sceneToPrintSvg.ts` nach Papier-mm (PEN_STEPS-Quantisierung wie bisher,
|
||||||
|
widthScreen-Schraffurbreiten korrekt in mm umgerechnet, Texte jetzt als echte Vektor-Texte —
|
||||||
|
der alte Pfad liess sie komplett weg). `planToPrintSvg.ts` bleibt nur als Referenz stehen
|
||||||
|
(Kopfkommentar markiert sie als abgelöst). Verifiziert per `pdftoppm`: 53.51×43.69mm vs.
|
||||||
|
erwartet 53.45×43.45mm bei 1:100. **Bekannte Alt-Lücke, nicht neu:** Zeilenabstand
|
||||||
|
mehrzeiliger Stempeltexte in `toRenderScene.ts` ist nur bei Massstab 1:100 exakt (STAMP_REF_N),
|
||||||
|
bei anderen Export-Massstäben proportional leicht daneben — betrifft Viewport identisch, nicht
|
||||||
|
PDF-spezifisch, absichtlich nicht mitgefixt (out of scope für den additiven Umbau).
|
||||||
|
7. **b4c4a2c** wgpu 22 → 29, glyphon 0.6 → 0.11 (glyphon pinnt `^29`, obwohl wgpu 30 existiert).
|
||||||
|
`src/engine/requestDeviceShim.ts` komplett entfernt (das 22er-Limit
|
||||||
|
`maxInterStageShaderComponents` wird von 29 nicht mehr gesendet). Verifiziert: cargo check
|
||||||
|
nativ (render2d/render3d/src-tauri), cargo test render2d 17/17 + Golden weiterhin bit-exakt,
|
||||||
|
render3d 29/29, wasm32 --features web für beide, tsc + npm build — alles grün.
|
||||||
|
|
||||||
|
**Damit sind Nordstern 2, 3, 4 (Kern) und 5 gelandet.** Verifiziert per Screenshot: App läuft im
|
||||||
|
Electron-Fenster (`env -u ELECTRON_RUN_AS_NODE npm run electron`), 3D-Perspektive rendert das
|
||||||
|
echte Modell über den Engine-Renderer (Umschalter unten rechts: WebGL2/Engine).
|
||||||
|
|
||||||
|
**WICHTIG — was NICHT fertig ist (User hat das selbst am Screenshot bemerkt):** Die
|
||||||
|
Zeichnungsebenen vom Typ „Schnitt"/„Ansicht" (z.B. „Schnitt A", „Ansicht Süd" in der
|
||||||
|
Ebenen-Liste rechts) sind weiterhin **Stubs** — sie zeigen KEINEN echten Inhalt. Das
|
||||||
|
render3d-Schnitt-Modul (section.rs, Commits 54211b1/76029db) liefert das Rohmaterial
|
||||||
|
(SectionOutput: cut_polygons + visible_edges/hidden_edges), ist aber **noch nicht an
|
||||||
|
App.tsx/das Dokumentmodell angebunden** — es gibt noch keinen Code-Pfad, der beim Öffnen
|
||||||
|
einer Schnitt-/Ansichts-Zeichnungsebene das render3d-Modell durchschneidet und das Ergebnis
|
||||||
|
in Plan-Primitive für PlanView/render2d übersetzt. Das ist der wichtigste nächste Schritt
|
||||||
|
(Nordstern 4b, siehe Liste unten).
|
||||||
|
|
||||||
|
**Nächste Schritte, priorisiert:**
|
||||||
|
1. **[Nordstern 4b] Schnitt-Pipeline an UI anbinden** — grösster Brocken: SectionOutput
|
||||||
|
(Rust/render3d) → TS-Seite (WASM-Aufruf analog `toWalls3d.ts`/`nativeSync.ts`) → neue
|
||||||
|
Plan-Primitive-Kind(e) für Cut-Polygone + sichtbare/gestrichelte Kanten → generatePlan.ts
|
||||||
|
bindet das für DrawingLevel vom Typ Schnitt/Ansicht ein, statt des aktuellen Stub-Verhaltens.
|
||||||
|
PlanView.tsx rendert es wie normale Primitive (Parität-Infrastruktur aus ce6bd26 gilt 1:1).
|
||||||
|
2. **mesh.rs: Öffnungen im 3D-Vollkörper** — 3D-Ansicht zeigt Öffnungen zwar korrekt (das war
|
||||||
|
schon vorher so, per Mesh-Aussparung), aber das Schnitt-Modul rechnet gegen dieselben
|
||||||
|
Prismen — sobald 4b. steht, hier gegenprüfen ob mesh.rs nachgezogen werden muss oder ob es
|
||||||
|
getrennte Datenwege bleiben.
|
||||||
|
3. **Aufräumen:** `src-tauri/`-Ordner umbenennen/entflechten — User will keine Tauri-Reste im
|
||||||
|
Namensraum, Electron ist die Shell. render2d/render3d/geometry sind eigenständige Workspaces
|
||||||
|
ohne Tauri-Abhängigkeit, könnten z.B. nach `engine/` oder `crates/` wandern. Toten Tauri-Host
|
||||||
|
(`cad-tauri`, tauri.conf.json, native.rs/native2d/native3d) explizit mit dem User klären:
|
||||||
|
behalten (Beweis für späteren All-Native-Schritt) oder entfernen.
|
||||||
|
4. **[Nordstern 1]** Papier-mm-exakte Strichbreiten-Audit über den gesamten Engine-Pfad
|
||||||
|
(Screen bei jedem Zoom/Massstab = Druck) — nach 2/3/4/5 jetzt der einzige verbliebene
|
||||||
|
unbearbeitete Nordstern-Punkt.
|
||||||
|
5. Nicht-Engine-CAD-Backlog (Wand-Referenzlinien, Editier-Welle, nahtfreie Verschneidung,
|
||||||
|
Overrides/Multi-Page-Layouts) — weiter unten in diesem Dokument, nachrangig zur Engine-Arbeit.
|
||||||
|
|
||||||
|
**Arbeitsweise dieser Session (fortführen):** Pipeline aus bis zu 2 parallelen Sonnet-Subagents
|
||||||
|
(User-Regel: immer 2 am Laufen halten, nachfüllen sobald einer fertig ist). Jeder Agent bekommt
|
||||||
|
explizit zugewiesenes Terrain (Dateipfade), damit sich parallele Agents nicht überschreiben.
|
||||||
|
Ergebnisse werden von der Hauptinstanz verifiziert (Screenshots ansehen, Gates laufen lassen)
|
||||||
|
und committet — Agents committen nie selbst. Nach Prozessabstürzen (kam heute zweimal vor)
|
||||||
|
lässt sich ein Agent per SendMessage mit seiner agentId aus dem Transcript fortsetzen, sein
|
||||||
|
Working-Tree-Zwischenstand bleibt erhalten.
|
||||||
|
|
||||||
## >>> ENGINE-NORDSTERN (User-Direktive 2026-07-02): die volle Engine-Vision <<<
|
## >>> ENGINE-NORDSTERN (User-Direktive 2026-07-02): die volle Engine-Vision <<<
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user