Release planning

CadCraft 0.9 impact map

Every fix and feature lined up for 0.9, and what each one touches: which apps, and which layers of the stack.

ProjectCadCraft
Sheet0.9 impact
Items273
Date2026-11-09
115Fix
147Feature
4Spike
0Platform
0Site ops
0Sanity check
7Decision
≈ 0days in the written 0.9 plans
  • Planned 0 on the plan for the release it is filed under
  • Built 271 built and working in /lab (the dev builds). Whether the public has it is its reach: "in the lab", "Live" (the last gate) or "switched off"; see docs/REACH-LIVE.md
  • Partly built 1 part of it is built in /lab; the rest waits (see "Waits on")
  • Promised 0 the live site already says it is coming
  • Moved 0 moved here from an earlier release or wishlist
  • Found 0 bug found after a release shipped; fixed in a point release or the next one
  • Candidate 0 recommended in a spike or session log; owner to choose
  • Community please test 0 built and in /use; a Discord post gives the steps and the expected result and asks people to try it on their own devices, files or know-how
  • Decision Time 0 a decision, check, file, key, flag or go only you can give; folds into the list once answered

Built means built and working in the lab. Live means the public can use it, and is the last gate: 270 Built · Live, 1 Built · in the lab.

Sheet 1 · impact areas

Where 0.9 lands

How many items touch each app and each layer, by kind. One item can touch several areas, so the rows add up to more than the item count. Pick a row to filter the schedule below.

Impact areaFixFeatureSpikePlatformSite opsSanity checkDecisionAll
Apps
CadCraft 38 36 – – – – 2 76
BimCraft 27 53 2 – – – – 82
ModelCraft 19 45 2 – – – 2 68
MarkupCraft 16 11 – – – – – 27
TakeoffCraft 18 7 – – – – – 25
CivilCraft 14 32 – – – – – 46
DetailCraft 13 13 – – – – – 26
PartCraft 18 27 1 – – – – 46
Studio 2 5 1 – – – – 8
SuperCad Studio 22 17 – – – – – 39
Layers
Site and services 7 11 – – – – 5 23
Desktop host 1 1 1 – – – – 3
App shell 2 1 – – – – – 3
App code 10 28 3 – – – 3 44
Our engines – 12 1 – – – 1 14
Vendor engines – – – – – – – 0
Drawing surface – – – – – – – 0
Help and words 1 2 – – – – 1 4
Tests and tooling – – – – – – – 0

Sheet 2 · schedule

Every fix and feature

Grouped by track. App chips carry each app’s layer colour; Studio is in ink. "Waits on" names what has to happen first; the small lines under it say who asked and where the item is written up.

Add an item Fork map (Rust and C++ forks) The roadmap

Issues sync every 10 minutes; last sync Nov 9, 2026 7:00 pm.

ItemWhatAppsLayersStatusDaysWaits onIssues
Fixes 104
FixFX.2 Link to FX.2Comment on FX.2 Render falls back to WebGL when the GPU cannot start (Windows dxcompiler.dll error 87)

Reported by email: 'Failed to execute requestDevice on GPUAdapter: DynamicLib.Open: dxcompiler.dll Windows Error: 87' and the render stopped. The WebGPU path tracer already fell back to WebGL when GPU setup failed, but a requestDevice rejection carried no code, so the fallback never ran. pt-gpu.js and pt-denoise-gpu.js (BimCraft and ModelCraft) now tag that failure gpu_setup, so the still render drops to the WebGL engine instead of failing. The live view (ipr.js) calls the tracer without that fallback and may still show the error; not checked. Not tried on a Windows machine with the broken driver. Advice to the reporter: update the graphics driver and the browser, send chrome://gpu.

BimCraftModelCraft Built · Live – – From: site feedback (Site) feedback email 2026-11-03, Windows WebGPU
FixFX.142 Link to FX.142Comment on FX.142 CadCraft: Plans.dwg (200,000 3D faces) and any DXF over about 70,000 entities failed to open with "Maximum call stack size exceeded"

Built in the lab. Two readers appended whole lists with push(...list), which puts every item on the call stack. (1) model3d.js:187 and :213 (split3d): the 3D faces a drawing's block references place, up to MAX_PLACED = 200,000, so Plans.dwg (288 objects, 50 blocks) failed in /use 0.8.2 with "Could not open Plans.dwg" after the worker had read it; wave 2 counted that open as accepted because the heap grew. (2) dxf.js:102, :162-165, :479: any DXF from about 70,000 entities (a 15 MB file) threw the same RangeError with no message. (3) The same spread in io.js:1291 (ModelCraft, and CadCraft's m3d copy) for a flattened component. All use a loop now. Measured: Plans.dwg opens in the lab build in 7.8 s (4.8 s blocking, one 4.6 s task placing the 200k faces into the 3D tab, heap 518 MB: that cost is PERF.9's); a 19 MB DXF (137,851 entities) that crashed reads in 1.4 s; 1,000,000 entities (122 MB) read in 10 s and 2.1 GB in Node, so the next wall is memory and the one-string reader (wave 3 scale rows). bin/test-cadcraft.mjs 2,847/0. Other spread-into-push sites that take whole lists remain in bimcraft res-skeleton.js:349, res-views.js:282, dwg/nongraphic-write.js:332 (every copy) and lib/cabinetcraft cornerdrill.js:113: small lists today, worth the same loop when touched. Found by the wave 3 scale and 2D tracks (docs/0.9-sessions/perf-wave3/scale-1000x.md, apps-2d.md).

CadCraftModelCraft App code Built · Live – A 0.8.3 point release if the owner wants Plans-sized drawings to open in /use before 0.9. docs/0.9-sessions/perf-wave3/
Digital twin add-on (TW) 9
FeatureTW.1 Link to TW.1Comment on TW.1 Digital twin: soft PLC runs on the flow model

Built in the lab: lib/plc in lock step with the flow simulation, IEC 61131-3 ST or PLCopen XML, starter program from the layout. Same program and seed repeat to the byte. No real PLC involved.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.2 Link to TW.2Comment on TW.2 Digital twin: forces, faults, stock tests, report

Built in the lab: force any signal; stuck eye, stuck gate, belt stop, station down, emergency stop; stall watchdog; tests every layout gets; CSV report. A program that ignores the stop fails on the right check. Not a safety validation.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.3 Link to TW.3Comment on TW.3 Digital twin: rigid-body physics on loads

Built in the lab: our own XPBD with moving belt surfaces, boxes only, up to 8 loads along one line. Checked against closed forms: slip tan θ = μ, tip tan θ = L/H, belt pick-up v/(μg). Formula screen per belt agrees with the run. Not against a measured line yet (TW.12).

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.4 Link to TW.4Comment on TW.4 Digital twin: compare layouts, bottleneck ranking

Built in the lab: repeat runs on common random numbers, 95 % intervals on paired differences, "no clear difference" when the interval holds zero. Ranks what is limiting; found a planted slow station. A ranking, not a proof.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.5 Link to TW.5Comment on TW.5 Digital twin: equipment view

Built in the lab: frames, rollers, legs, machines, robots with moving arms, people, cartons and vehicles in place of plain marks. Generic shapes for the picture. Arm motion is for the picture, not a robot program. Not checked for frame rate on large layouts.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.6 Link to TW.6Comment on TW.6 Digital twin: run into the model for the path tracer

Built in the lab: equipment as real geometry, loads on the animation timeline, up to 150 loads. Path-traced frame at a timeline time rendered on workstation11a (RTX 5070). A full path-traced clip has not been run. Arms do not move in the baked clip.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.8 Link to TW.8Comment on TW.8 Digital twin: ready cells as data

Built in the lab: PLC stop gate, robot palletizing, two-lane sorter, incline and curve. One data entry per cell. Numbers are starting points.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.9 Link to TW.9Comment on TW.9 Digital twin: bill of materials

Built in the lab: quantities from the layout, CSV with price and supplier columns for the person to fill in.

ModelCraft Built · Live – – docs/0.9-DIGITAL-TWIN.md
FeatureTW.15 Link to TW.15Comment on TW.15 Digital twin: order files from a warehouse system

Built in the lab (Material flow add-on, ModelCraft): a source can take its arrivals from a CSV orders file instead of random times (columns time_s / time_min / time_h / time / clock, type, length_m / length_mm, qty, source, order; the time unit and base are stated in the help). The same file gives the same run for any seed (no random draw is used). A row that cannot be read stops the whole read and the panel names the first bad row (line, column, what the cell said); nothing is skipped. Tables are saved in the model file; Save as CSV writes one back. Sample orders (about 130 invented rows) are in the add-on's data folder and the flow listing's Data section. Tested: lib/flow orders tests in the flow suite, and in the real /lab page (browser-orders.mjs 10/0). Does not read any warehouse system's own format.

ModelCraft Built · Live 4 – docs/0.9-DIGITAL-TWIN.md
Planned suggestions, built in 0.9 (2026-11-06) 4
FeatureSU.747c Link to SU.747cComment on SU.747c NURBS surfaces, step S3: fillets and blends between faces, thickening, a solid written to STEP as one closed shell

Asked (#747, #748, #749, #750, Oct 16): concept-to-prototype NURBS and production-quality surfacing. S1 (curves, untrimmed surfaces, measured G0 to G2) is Built in 0.8; trimmed surfaces, solids from them with union, subtract and intersect, and PartCraft Bake are Built in /lab 0.9 (docs/0.9-sessions/nurbs-09.md). That log lists what is left and says 'Fillets between faces come next'. Plan (lib/nurbs): (1) fillets and blends between two faces, constant then variable radius, deviation from the rolling ball measured; (2) thickening a surface into a solid, self-intersection refused and named; (3) a solid written to STEP as one closed shell, read back; (4) Booleans as nodes. Each result measured against a closed form. Not claimed: class-A surfacing, the other programs' file formats, a result equal to Alias or ICEM Surf. Class-A and equality with Alias/ICEM are never claimed. Completed 2026-11-06: in /lab (ModelCraft, PartCraft, SuperCad Studio's panel through the shared libs): fillet between two faces (constant/variable radius, convex/concave, closed edge; deviation from the rolling ball measured), several edges at once (mitred corners; one sphere patch where three flat square faces meet, radius equal), thicken into a solid, STEP and IGES (186 over closed shell 514) with a solid as one closed shell, read back as a solid, Booleans as nodes in the node editor, help lines. Measured against closed forms (removed volume within 2 % at tol 0.05, goes with the tolerance). Not built: vertex blend for curved faces or unequal radii, fillet between faces that do not meet, inside fillet ending on a slanted or curved face, several inside edges that reliably close (the result line says if not), Booleans/fillets on the surfaces without triangles, IGES not tried in another program. Tests: docs/0.9-sessions/nurbs-s3-09.md.

ModelCraftPartCraft Built · Live 8 A real surface model from the reporters (#747 to #750) opened in another program would be the best test docs/0.9-sessions/planned-suggestions-09.md
FeatureSU.908 Link to SU.908Comment on SU.908 Finite elements for plates, shells and solids (linear static and modal), the engine behind slabs, shear walls and a solid stress check

Asked (#908: Abaqus, Ansys, SAP2000, STAAD.Pro, ETABS and others; #890 RFEM; #1057 SPACE GASS; #1141 SAP2000): finite elements beyond beams. Built (lib/fem, own code, Apache-2.0): four-node shell (MITC4 or DKQ), ten-node tetrahedron, modal analysis, sparse IC(0)-PCG solver, slabs and shear walls through the frame mesher; known-answer tests with cited derivations (Navier, Lame, Timoshenko, Leissa, Blevins; 60 + 10 + 15 checks). Reachable: the Analysis panel of BimCraft and DetailCraft, block 'Finite elements: natural frequencies': modes, period, effective modal mass, mode drawn on the model, member end releases and rigid floors carried, settings saved with the model, the report carries the table, help written. Deflections, reactions and plate moments of slabs and walls are shown by the frame solver in the same panel (lib/frame plates; lib/fem agrees with it to 1 % in tests). Solid FEM: lib/fem's tet10 solid is the PartCraft add-on 'Solid FEM' with its own panel (SU.908c); PartCraft keeps its own solver (owner 2026-11-06). DKQ is a panel choice; the static solve in the panel stays lib/frame's (one engine, no second copy). Not built: nonlinear, contact, damping, response spectrum, soil models. No claim of equality with any other program. Hand check: SU.908-HAND (big meshes and a real building on a workstation or by the community; not a blocker). fem-complete 2026-11-06: docs/0.9-sessions/fem-09.md

BimCraftModelCraftDetailCraftPartCraft Built · Live 12 Hand check is community test SU.908-HAND (not blocking) docs/0.9-sessions/planned-suggestions-09.md
Units 1
FeatureTKW.1 Link to TKW.1Comment on TKW.1 Weight and temperature units (kg, lb, t, ton; °C, °F, K, °R)

Asked in support message #1329 (metric in the quick properties, kilograms, Celsius). Owner 2026-11-08: build weight and temperatures, both F and C, into 0.9. Shared table lib/units gets two kinds: mass (mg, g, kg, tonne, oz, lb, ton, long ton; exact factors from the 1959 pound) and temperature (K, °C, °F, °R; offset scales, converted without a detour through kelvin for C and F, negative values read correctly); Settings › Global › Units lists them (en, es-MX, id words). TakeoffCraft: lb, ton, kg and t as typed-quantity units (priced like CY), an optional Temperature on every item typed and shown in °C or °F (Settings › TakeoffCraft: Follow Global / °C / °F), kept in kelvin. bin/test-units.mjs 261/0, bin/test-takeoffcraft.mjs 1210/0. Seen in the real /lab page: browser-weights-temps.mjs 12/12 (unit lists, temperature typed in C and F, display setting, undo). Temperatures are absolute (a difference is not converted). Reports/exports do not carry the item temperature yet. Reply sent 2026-11-08 (support #1329, answered). No account for abdulrahman.mahmoud@almada-eg.com yet: the reply invites him to sign up; grant the lab pass (TakeoffCraft, a Discord member) when the account appears.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live – requester account for the lab pass From: Abdulrahman Mahmoud (Site) support message #1329 2026-11-08
Suggest an item

Anyone can send one; no account and no name needed. The team reads each idea, and the ones we take on appear on this page. Please leave out web addresses.