Expand description
brep-app — engine-native UI spike (an eframe host for the brep-render engine).
The same app::BrepApp runs on native (main.rs → run_native) and on
the web (start below → eframe::WebRunner), sharing one wgpu frame with
egui. Additive spike: it does NOT touch the previous app or the render wasm build.
Modules§
- app
BrepApp— the THIN shell of the engine-native UI.- column_
tree - The SHARED COLUMN-TREE widget — a table whose rows are a TREE, with resizable, reorderable, hideable, sortable columns and a per-column editor kind. One function draws a complete columned tree and returns what the user did.
- document
- The MULTI-DOCUMENT model — the app holds N open models, exactly ONE of which is active.
- fonts
- Font setup — the OS’s default monospace font for all text.
- form
- The generic, schema-driven egui form engine — ONE per-field renderer for BOTH the display-settings dialog AND the schema-driven feature dialogs (the user’s principle: the structure of a thing drives the UI; you don’t rewrite UI code per field, and you don’t write two dialog engines).
- form_
view - The SHARED schema-driven FORM VIEW — one function that draws a COMPLETE form for a schema-described subject (a history feature, an assembly constraint, a future PMI annotation) and returns what the user did.
- icon_
text IconText— a label that draws catalogued characters as real SVG images, inline with the surrounding text.- icons
- The inline-icon catalog: every
assets/glyphs/*.svgas SVG source, keyed by the character it draws. - palette
- A generic, reusable searchable command-palette modal — engine-agnostic.
- panels
- The left-control-panel modules — one file per panel, each following ONE pattern so parallel agents can add a new panel with minimal conflict:
- recovery
- AUTOSAVE + CRASH RECOVERY — the answer to “the tab closed and my last hour is gone”.
- store
- The persistent-storage / filesystem seam — the ONE platform exception in
the engine-native UI. Settings, dock layout, and model documents all use the
same
ModelStore::read/ModelStore::writeAPI. Only its backend differs: desktop writes files; the browser mirrors an ASYNC, swappable [mirror_store::StoreBackend] — IndexedDB today, a remote server next — into memory and writes behind it, which is what keeps this whole API synchronous. - viewport
- The 3D viewport — everything that draws + drives the central
brep-renderscene, split out of the thin app shell. - workbench
- Per-file WORKBENCH registry — a UI FILTER over feature-CREATION.