README kritisch auf aktuellen Stand gebracht

Faktische Fehler korrigiert: geometry-Crate längst gelöscht (5 statt 6
Rust-Crates), src/section/ existiert nicht mehr, opencascade.js komplett
raus (nicht nur "nur noch von totem Code importiert"), Ribbon-UI gelöscht
(nur noch ein Icon-Helfer übrig). Frische Zahlen (LOC, Testanzahl) statt
vager Formulierung.

Grösster Fund: JEDE im "Weiterlesen"-Abschnitt verlinkte Datei (STATUS.md,
ARCHITECTURE.md, ROADMAP.md, HANDOVER.md, PENDENZEN.md, CONVENTIONS.md,
docs/) ist per .gitignore bewusst vom öffentlichen Repo ausgeschlossen —
das README verlinkte trotzdem überall drauf. Für jeden Besucher des
öffentlichen Gitea-Repos waren das tote Links. Alle entlinkt, mit einer
kurzen ehrlichen Erklärung ersetzt statt stillschweigend entfernt.

Nebenbei: package.json hatte noch ein build:geometry-Skript, das auf die
gelöschte Crate zeigte — ebenfalls tot, entfernt.
This commit is contained in:
2026-08-20 20:11:28 +02:00
parent bdbd87bf85
commit 2154e1ca6c
2 changed files with 17 additions and 27 deletions
+17 -26
View File
@@ -24,9 +24,8 @@ Konkret heißt das auch: Der Grundriss entsteht nicht aus einem zerschnittenen
3D-Mesh, sondern **analytisch aus den Bauteil-Parametern** (Wandachsen + Dicken → 3D-Mesh, sondern **analytisch aus den Bauteil-Parametern** (Wandachsen + Dicken →
Linien, Öffnungen → Lücken + Symbol). PDF-Export ist derselbe Plan, nur mit Linien, Öffnungen → Lücken + Symbol). PDF-Export ist derselbe Plan, nur mit
echten mm-Stiftstärken statt Bildschirm-Hairlines. Schnitte und Ansichten laufen echten mm-Stiftstärken statt Bildschirm-Hairlines. Schnitte und Ansichten laufen
über eine eigene, analytische Rust-Pipeline (kein Hidden-Line-Removal nötig, über eine eigene, analytische Rust-Pipeline (kein Hidden-Line-Removal nötig)
siehe [ARCHITECTURE.md](ARCHITECTURE.md) §4.3) und sind seit Juli live im und sind seit Juli live im 3D-Viewport verdrahtet, nicht nur ein Spike.
3D-Viewport verdrahtet, nicht nur ein Spike.
## Stand heute ## Stand heute
@@ -34,11 +33,10 @@ Aus dem ursprünglichen Risiko-Spike ist binnen weniger Wochen ein
**funktionsreiches Desktop-BIM-Tool** geworden: eigenes semantisches **funktionsreiches Desktop-BIM-Tool** geworden: eigenes semantisches
Gebäudemodell, zwei eigene Rust/WASM-Rendering-Engines, IFC/DXF/PDF/STL/OBJ- Gebäudemodell, zwei eigene Rust/WASM-Rendering-Engines, IFC/DXF/PDF/STL/OBJ-
Export, Swisstopo-Import, SIA-416-Flächen, Materialbibliothek, Layouts/ Export, Swisstopo-Import, SIA-416-Flächen, Materialbibliothek, Layouts/
Plansätze, native Tauri-Fenster. Eine vollständige, ehrliche Bestandsaufnahme Plansätze, native Tauri-Fenster. ~91.000 Zeilen TypeScript + ~19.500 Zeilen
(inklusive offener Punkte und bekannter technischer Schulden) steht in Rust (ohne Tests), 891 Vitest-Tests, alle grün.
**[STATUS.md](STATUS.md)**.
**Funktioniert (Auszug — volle Liste in STATUS.md §3):** **Funktioniert (Auszug, nicht abschliessend):**
- Semantisches Modell mit **mehrschichtigen Wänden**, L-Eck-Gehrung **und** - Semantisches Modell mit **mehrschichtigen Wänden**, L-Eck-Gehrung **und**
Prioritäts-T-/X-Stössen (`joinPriority` am Component) — konsistent in Prioritäts-T-/X-Stössen (`joinPriority` am Component) — konsistent in
Grundriss, 3D-Viewport und 3D-Live-Schnitt. Grundriss, 3D-Viewport und 3D-Live-Schnitt.
@@ -65,7 +63,7 @@ Plansätze, native Tauri-Fenster. Eine vollständige, ehrliche Bestandsaufnahme
- **Resource Manager** (Component/Hatch/Line/Typ-Editoren), regelbasierte - **Resource Manager** (Component/Hatch/Line/Typ-Editoren), regelbasierte
Overrides, Panel-System (dockbar/floatend), i18n (de/en). Overrides, Panel-System (dockbar/floatend), i18n (de/en).
**Bewusst noch offen** (Details + volle Liste: STATUS.md §4.7): **Bewusst noch offen** (Auszug):
- **Echtes Mesh-Boolean für Öffnungen** — funktioniert heute über achsparallele - **Echtes Mesh-Boolean für Öffnungen** — funktioniert heute über achsparallele
Rechteck-Löcher; ein generisches CSG-Boolean existiert bereits Rechteck-Löcher; ein generisches CSG-Boolean existiert bereits
(`trucksolid`/`csgrs`), ist aber nicht an die Wand-Pipeline angeschlossen. (`trucksolid`/`csgrs`), ist aber nicht an die Wand-Pipeline angeschlossen.
@@ -90,11 +88,9 @@ Plansätze, native Tauri-Fenster. Eine vollständige, ehrliche Bestandsaufnahme
| Import | `dxf-parser`, `@mlightcad/libredwg-web` (DWG), eigene `.lin`/`.pat`-Parser | | Import | `dxf-parser`, `@mlightcad/libredwg-web` (DWG), eigene `.lin`/`.pat`-Parser |
| Materialien | `jszip` (ambientCG-Zip-Entpacken), `three.js` `TextureLoader` | | Materialien | `jszip` (ambientCG-Zip-Entpacken), `three.js` `TextureLoader` |
`opencascade.js` steht noch als Dependency in `package.json`, wird aber nur Der ursprünglich geplante OCCT/`opencascade.js`-HLR-Pfad für Schnitte ist
noch von totem Code (`src/section/hlr.ts`, superseded durch die Rust- komplett entfernt (weder Dependency noch Code) — abgelöst durch die
Schnitt-Pipeline) importiert. Details zu allen Rust-Crates (inkl. zwei analytische Rust-Schnitt-Pipeline (siehe Grundgedanke oben).
aktuell unbenutzten WASM-Builds) in [ARCHITECTURE.md](ARCHITECTURE.md) §1
und [STATUS.md](STATUS.md) §4.1.
## Entwicklung ## Entwicklung
@@ -130,17 +126,16 @@ src/
tools/ interaktive Zeichenwerkzeuge + Snapping + Transformationen tools/ interaktive Zeichenwerkzeuge + Snapping + Transformationen
plan/ Grundriss-Ableitung (generatePlan) + PlanView (SVG) + glPlan (WebGL2) + Rust-Bindings plan/ Grundriss-Ableitung (generatePlan) + PlanView (SVG) + glPlan (WebGL2) + Rust-Bindings
viewport/ Viewport3D (Three.js) + Wasm3DViewport (Rust/wgpu „Nordstern", Default) viewport/ Viewport3D (Three.js) + Wasm3DViewport (Rust/wgpu „Nordstern", Default)
section/ TOTER Code (OCCT-HLR-Spike) — Schnitt läuft über render3d, siehe ARCHITECTURE.md §4.3
export/ IFC4-, PDF-, DXF-, STL/OBJ-, CSV-Export aus derselben Plan-/Modell-Struktur export/ IFC4-, PDF-, DXF-, STL/OBJ-, CSV-Export aus derselben Plan-/Modell-Struktur
materials/ ambientCG-Live-Suche + gebündelte Starter-Bibliothek + PBR-Runtime materials/ ambientCG-Live-Suche + gebündelte Starter-Bibliothek + PBR-Runtime
panels/ dockbares Panel-System + die einzelnen Paletten panels/ dockbares Panel-System + die einzelnen Paletten
state/ eigener Store (useSyncExternalStore) + Slices (project/selection/view/layout/…) state/ eigener Store (useSyncExternalStore) + Slices (project/selection/view/layout/…)
native/ Tauri-only: native Fenster, macOS-Menüleiste, Fenster-Chrome native/ Tauri-only: native Fenster, macOS-Menüleiste, Fenster-Chrome
ui/ App.tsx-Shell, Top-Bar, Resource Manager, Kontextmenü, Kommandozeile, Ribbon ui/ App.tsx-Shell, Top-Bar, Resource Manager, Kontextmenü, Kommandozeile
io/ Import/Export (DXF, DWG, .lin, .pat), Swisstopo/LV95, OSM-Kontext io/ Import/Export (DXF, DWG, .lin, .pat), Swisstopo/LV95, OSM-Kontext
i18n/ Wörterbücher de/en i18n/ Wörterbücher de/en
src-tauri/ 6 Rust-Crates (render2d/render3d/geometry/kernel2d/trucksolid/dwgimport, src-tauri/ 5 eigenständige Rust-Crates (render2d/render3d/kernel2d/trucksolid/
je headless UND per wasm-pack baubar) + der Tauri-Host selbst dwgimport, je headless UND per wasm-pack baubar) + der Tauri-Host selbst
``` ```
## Konventionen ## Konventionen
@@ -149,18 +144,14 @@ src-tauri/ 6 Rust-Crates (render2d/render3d/geometry/kernel2d/trucksolid/dwg
(Design Layer, Component, Hatch, Wall Style). **UI-Texte sind deutsch**, immer (Design Layer, Component, Hatch, Wall Style). **UI-Texte sind deutsch**, immer
über `t('key')` — keine hartcodierten Strings im JSX. über `t('key')` — keine hartcodierten Strings im JSX.
- Intern alles in **Metern**; Anzeige via `formatM`. - Intern alles in **Metern**; Anzeige via `formatM`.
- Verbindliches in [CONVENTIONS.md](CONVENTIONS.md).
## Weiterlesen ## Weiterlesen
- [STATUS.md](STATUS.md) — **vollständige, ehrliche Bestandsaufnahme**: Zahlen, Dieses README ist die einzige Doku im öffentlichen Repo — `STATUS.md`,
Feature-Inventar, Mist-Liste, Doku-Widersprüche, Tag-1-Vision vs. heute `ARCHITECTURE.md`, `ROADMAP.md`, `HANDOVER.md`, `PENDENZEN.md`,
- [ARCHITECTURE.md](ARCHITECTURE.md) — technische Architektur im Detail (Ist-Zustand) `CONVENTIONS.md` und `docs/` sind bewusst per `.gitignore` ausgeschlossen
- [ROADMAP.md](ROADMAP.md) — ursprüngliche Produktvision (Tag-1-Stand, historisch) (interne Arbeitsnotizen/Backlog, kein öffentlicher Anspruch auf Vollständigkeit
- [HANDOVER.md](HANDOVER.md) / [PENDENZEN.md](PENDENZEN.md) — laufendes oder Aktualität) und daher hier absichtlich **nicht** verlinkt.
Arbeitsprotokoll bzw. Backlog (Single Source of Truth für offene Punkte)
- [docs/](docs/) — Design-Specs (teils ebenfalls Tag-1-Vision, siehe Hinweis
in `docs/README.md`)
## Lizenz ## Lizenz
-1
View File
@@ -19,7 +19,6 @@
"electron": "scripts/electron-shell.sh", "electron": "scripts/electron-shell.sh",
"build:engine": "wasm-pack build src-tauri/render2d --release --target web --out-dir ../../src/engine/pkg --out-name render2d --no-default-features --features web", "build:engine": "wasm-pack build src-tauri/render2d --release --target web --out-dir ../../src/engine/pkg --out-name render2d --no-default-features --features web",
"build:engine3d": "wasm-pack build src-tauri/render3d --release --target web --out-dir ../../src/engine/pkg3d --out-name render3d --no-default-features --features web", "build:engine3d": "wasm-pack build src-tauri/render3d --release --target web --out-dir ../../src/engine/pkg3d --out-name render3d --no-default-features --features web",
"build:geometry": "wasm-pack build src-tauri/geometry --release --target web --out-dir ../../src/engine/pkgGeometry --out-name geometry --no-default-features --features web",
"build:kernel2d": "wasm-pack build src-tauri/kernel2d --release --target web --out-dir ../../src/engine/pkgKernel2d --out-name kernel2d --no-default-features --features web", "build:kernel2d": "wasm-pack build src-tauri/kernel2d --release --target web --out-dir ../../src/engine/pkgKernel2d --out-name kernel2d --no-default-features --features web",
"build:dwgimport": "wasm-pack build src-tauri/dwgimport --release --target web --out-dir ../../src/engine/pkgDwgImport --out-name dwgimport --no-default-features --features web", "build:dwgimport": "wasm-pack build src-tauri/dwgimport --release --target web --out-dir ../../src/engine/pkgDwgImport --out-name dwgimport --no-default-features --features web",
"build:truck": "wasm-pack build src-tauri/trucksolid --release --target web --out-dir ../../src/engine/pkgTruck --out-name trucksolid --no-default-features --features web" "build:truck": "wasm-pack build src-tauri/trucksolid --release --target web --out-dir ../../src/engine/pkgTruck --out-name trucksolid --no-default-features --features web"