The problem
Every serious tool ends up rebuilding the same shell: docking panels, command palettes, settings, persistence, window management, typed transport. Each copy drifts, each team pays for it twice, and none of it is the part users actually care about.
The library owns everything that is not application-specific.
jethaForge takes that position literally. The foundation supplies the workbench; the application supplies its records, handlers, editor tools, and engines.
What it provides
- Composable workspaces. Registered panels, docking and splits, floating native windows, named layouts, and saved preferences — with explicit panel ownership across windows.
- One action catalog. Menus, palettes, toolbars, and contextual overlays all resolve the same typed application actions. ⌘K is not a separate feature; it's the same surface.
- Portable contracts. FlatBuffers records and bounded facades across TypeScript, Rust, and Python — one schema, no drift between runtimes.
- Native surfaces. Compose once in React; host in a browser or ship real desktop windows through Tauri 2. 2D and 3D viewports (SVG, Three.js) cover cameras, picking, selection, and geometry lifecycle.
- State that survives. Durable preferences, pending operations, immutable snapshots, and idempotent receipts are built into the foundation, not bolted on per app.
Where it sits in the studio
| Layer | Owner | Examples |
|---|---|---|
| Workbench system | jethaForge | WorkspaceShell, docking, command palette, settings, window host |
| Runtime surfaces | jethaForge | Viewports, transport, geometry lifecycle, durable store |
| Domain | each tool | Garment fit evidence (Atelier), TM engine (HouseCat), clip ops (Walt), tree synthesis (Midori), LOD pipeline (Lodder), shader workbench (Matthias), 3D authoring (Megumi), verification harness (GameQA) |
How the boundary stays honest
Contracts are versioned and pinned. Applications consume the stack by immutable revision, not a floating dependency, so a stack change can't silently alter a shipping tool. New capabilities enter through schema changes and reviewed stack PRs — never by reaching around the boundary.