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
One lineup (consolidation) 2
FeatureBot obtainedDC.54 Link to DC.54Comment on DC.54 RhinoCraft or GrasshopperCraft: parametric modeling and scripting

Request to create a RhinoCraft or GrasshopperCraft product with parametric modeling and scripting capabilities like Rhino and Grasshopper.

ModelCraftPartCraft Built · Live – Hand check is community test DC.54-HAND (not blocking) From: Discord community (Discord) Discord #suggest-a-craft, Oct 14, 2026
Suggestions (Track SX) 25
FeatureSU.858 Link to SU.858Comment on SU.858 Material-handling layout, simulation and PLC emulation (conveyors, stations, AGVs)

Asked: emulation and simulation software for material handling that costs about $40,000 a year (#858, Oct 20; 43 votes, the most-voted ask). Do (docs/0.8-PART2.md § SU.858): a ModelCraft add-on `flow`: a catalogue of conveyors, merges, diverters, stations, buffers, sources/sinks, AGVs and sensors with ports; snap a layout in 3D; a deterministic discrete-event simulation with accumulation and routing rules; playback in 3D, statistics, CSV. Later, Studio only: PLC emulation over Modbus TCP or OPC UA (owner picks the first). No physics; loads are kinematic. PLC mode (2026-11-06): the panel's PLC mode chooses Soft or Real, saved with the model. Soft runs the Digital twin's soft PLC (ST or PLCopen XML) on the layout with no hardware, in the browser or Studio, repeatable to the byte. Real talks Modbus TCP to a PLC through Studio (plc.rs client commands) with an address map editor (tag, type, table, address, scale); in a browser tab it is off with the reason. Simulation-only safety line; the PLC's address is never saved in the file. Tested: Modbus spec known answers, loopback against a JS Modbus server, the real /lab page. Needs the 0.9 Studio build (Rust core tested alone, Tauri wrappers not compiled here). Real PLC check: community row SU.858-HAND.

ModelCraft Built · Live 20 Studio 0.9 build with the plc.rs client commands; real-PLC hand check is community test SU.858-HAND (not blocking) From: site suggestion (Suggestion) docs/0.8-PART2.md (Track SX), from /admin/suggestions 2026-10-27
FeatureSU.1112 Link to SU.1112Comment on SU.1112 Live in every app: see each other's cursors and names while co-editing

Asked (#1112, Oct 28): collaboration where people see each other's cursors, so working in teams is easier. CadCraft's Live already shows other people's cursors and selections (live.js presence). Do: the same presence layer in the other apps' Live sessions (cursor, name colour, selection), reusing the CadCraft code through the shared Live library. Relates to DC.27 and EG.41. **Implementation started 2026-11-02** (0.9 pick #7, second five, hardest first; session `live-cursors-09`, log docs/0.9-sessions/live-cursors-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). **Built 2026-11-02** (session `live-cursors-09`, log docs/0.9-sessions/live-cursors-09.md): one shared presence layer (assets/js/live-presence.js, synced by tools/shell/sync.mjs) with a thin adapter in each app's live.js; BimCraft, ModelCraft, TakeoffCraft, CivilCraft, DetailCraft and PartCraft now show cursors, names in the person's color and selections; CadCraft and MarkupCraft keep their own views on the same palette. Tested with two real pages per app (tools/live-apps-test/browser-apps.mjs) and test-presence.mjs.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 6 – From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02
FeatureSU.1128 Link to SU.1128Comment on SU.1128 Robot cells in the flow add-on: reach, cycle time and offline robot program export

Robot cells in the Material flow add-on (ModelCraft, /lab), Robot cell panel. The person chooses (owner 2026-11-06): a robot model (generic 6-axis, SCARA, delta, Cartesian, and a 6-axis with the UR5e's published kinematics; the joint table is editable and saved with the document) and which program formats to save, several at once, remembered per document and per user: path list (CSV and JSON, always), ROS URDF, ROS joint trajectory, Universal Robots URScript (two public sources, dated in the panel's Sources list). Reach, cycle time, I/O set and wait, pick and place. Left out (a language needs two independent public sources for every statement it uses): ABB RAPID, KUKA KRL (both close), Fanuc, Yaskawa, Kawasaki, Mitsubishi, Staubli, Denso. Reasons in the panel. Vendor programs are minimal, labelled unverified and not run on a robot. Not built: collision checks against the layout, tool/frame statements, blending. Tests: docs/0.9-sessions/flow-robots-09.md. Real-controller check: SU.1128-HAND.

ModelCraft Built · Live 14 Hand check is community test SU.1128-HAND (not blocking) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02
FeatureSU.1082 Link to SU.1082Comment on SU.1082 Reverse engineering: scan mesh to NURBS surfaces and solids (automatic surface fit)

Asked (#1082, Oct 27): Quicksurface Pro-style reverse engineering of 3D scans; too expensive for private use. mounts-09 2026-11-06 (partial): Help lines landed in ModelCraft and PartCraft nurbs-surfaces.md (rim fillets and variable fillets in what the fit finds; the "does not do" paragraph says where they are looked for); help rebuilt, 0 errors. See docs/0.9-sessions/mounts-09.md.

ModelCraftPartCraft Built · Live 15 Hand check is community test SU.1082-HAND (not blocking) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02
FeatureSU.810b Link to SU.810bComment on SU.810b A live link from a .3dm modeller into ModelCraft and PartCraft (one way, a script on the other side)

Asked (#810, Oct 19): a live connection between Rhino models and our apps, perhaps through Grasshopper. Built 2026-11-06, in /lab (log docs/0.9-sessions/3dm-link-09.md; design docs/spikes/SU.810.md). One script, cadcraft_link.py, runs in Rhino (watches the document, pushes after a pause, only what changed) and in a Grasshopper Script component (each solve). It sends .3dm bytes to Studio on this computer; link_push and link_status replace what the link brought last time: one group in ModelCraft (its placement, tag and neighbours stay; pushes within 2 s share an undo step), one import feature in PartCraft (features rebuild; a model that does not close changes nothing and says so). Over 4 MB goes in parts. The saved file keeps the link. Library lib/3dm-link, help live-3dm-link in both apps. Tests: tools/3dm-link/test.mjs 31/0; browser.mjs 38/0 (the real script with rhino3dm's writer, through the reference server and hub relay, into real /lab pages). Never run: real Rhino and real Grasshopper (none here; a stand-in plays their document and events, member names checked against McNeel's docs), Studio's native server, files saved by Rhino itself, SuperCad Studio's mounts. Not built: changes going back the other way, a packaged plug-in.

ModelCraftPartCraft Built · Live 3.25 – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest
FeatureSU.1087 Link to SU.1087Comment on SU.1087 ModelCraft is the SketchUp-style modeller, with CAD tools beside it in CadCraft Studio

Asked (#1087, Oct 28): SketchUp with a full CAD tool set pre-installed; the last free version (2017) is hard to find and runs badly on new machines. Covered by what is built and released (checked 2026-11-05; nothing new was built for this card): ModelCraft is our push/pull modeller in the SketchUp style, free, in the browser and in CadCraft Studio; it imports .skp files with groups, components, colours, textures, tags and soft edges (help "Bring in an SKP model"); CadCraft (2D and 3D CAD), PartCraft and the other apps are in the same CadCraft Studio. Not the same program: SketchUp extensions (Ruby plug-ins) do not run, and .skp is read, not written. Test re-run 2026-11-05: tools/skp-test/test.mjs --no-fuzz (see the log).

CadCraftModelCraft Built · Live 0 – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest
Requests for 0.8 5
FeatureD8.13 Link to D8.13Comment on D8.13 Add-on: factory floor — from CAM to the machines, cell control and SCADA monitoring

Discord (a Discord member, Oct 29): "CAMCraft", CAM + factory control + SCADA in the suite. Owner 2026-10-30: an add-on, not an app (eight apps). Pieces already in 0.8: CAM with editable posts in PartCraft (LC.15), send G-code to a machine on the network (EG.40, partly), the flow add-on for layout and simulation (SU.858), soft PLC with ladder / structured text (XE.13, partly), live data over OPC UA, MQTT, Modbus, BACnet (XE.9, IND.12, partly), plant historian (CH.27). The add-on ties them into one place: a machine and cell list (from the flow layout), a job queue that posts and sends programs to each machine, machine state read live (OPC UA, MQTT, MTConnect), an operator screen drawn over the layout with values, alarms and trends, history and simple OEE. Reading first; writing to a running machine or PLC stays off by default, behind a per-device switch and a confirm. Not a safety system and never in a safety chain — help says so.

ModelCraftPartCraftStudio App codeOur enginesDesktop host built – – From: Discord community (Discord) Discord 2026-10-29
Fixes 104
FeatureFX.56 Link to FX.56Comment on FX.56 Auto-focus panel (Settings › Global) and split tool tiles

Owner 2026-11-05. (1) Auto-focus panel: one engine in the shell (window.ccAutoFocus in assets/js/app-settings.js, CSS in app-shell.css, strings in lang/shell): a panel with several sections opens one and closes the others, a lock beside the caret keeps a section open, remembered per panel; a menu command opens the section it works with; a Settings switch (cc-autofocus, default on) lets people choose how the apps work best. CivilCraft: the left panel (Landscape on) and the Properties panel (groups by heading). The other seven apps adopt it by registering their panels. (2) CivilCraft Landscape ribbon tiles that hold several tools (Grade, Hardscape, Areas, Levels, Irrigation) are split buttons: the icon runs the tool used last, the edge with the arrow opens the menu (civilcraft/a Discord member/split-menu.js); the same pattern is wanted in the other apps. Tested headless: panels, setting on/off, split clicks; Landscape 533/0. Added 2026-11-05: Hardscape, Areas and Levels have their own sections in the Landscape panel (tools + what is drawn); the toolbox (layouts with a tool list) joins the auto-focus panel: its groups close each other, and the toolbox group and the panel section follow each other (shell: ccAutoFocus mode details, app-workspace.js tbxAf; civil link in landscape-ui.js). 2026-11-05 all eight apps: window.ccAutoFocus.auto() folds every app side panel with two or more sections (a section heading or its *-sec-head bar; MarkupCraft details sections; toolbox groups in the toolbox layouts), no per-app code; Settings › Global › Auto-focus panels switches it off. Split tool tiles stay CivilCraft-only until the other apps ask. Command links 2026-11-05: a tool that works with a panel section opens it (app-settings.js LINKS table, one line per rule): CadCraft constraint and parameter commands to Parameters; TakeoffCraft measuring tools to Items and note/cloud/highlight to Markups; ModelCraft Paint to Colors. The other apps have no tool with a section of its own yet; add a rule when one does. Command links 2026-11-05: a tool that works with a panel section opens it (app-settings.js LINKS table, one line per rule): CadCraft constraint and parameter commands to Parameters; TakeoffCraft measuring tools to Items and note/cloud/highlight to Markups; ModelCraft Paint to Colors. The other apps have no tool with a section of its own yet; add a rule when one does.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App code Built · Live – in /lab; owner to try From: owner (Owner) owner request 2026-11-05
Education (Track ED) 2
FeatureED.1 Link to ED.1Comment on ED.1 Live TeamWork: follow the teacher (follow the presenter)

Owner 2026-11-03 (educator kit): "allow students to follow the teacher". Built in a Live TeamWork session (assets/js/live-follow.js, shared by every app that uses the live presence layer; CadCraft and MarkupCraft mount it from their own live UI). A person can choose Follow on another person's name and their view moves with the presenter's: 2D camera centre and zoom (a smaller window zooms out to show all of the leader's view), 3D eye, target, field of view and parallel height, and the sheet, storey or space when the app can open it. The host can press "Ask everyone to follow me"; each joiner can still step away. Following stops by itself when the follower pans, zooms or orbits on their own, and a chip names who they were following and offers to rejoin. The view travels in the existing presence message, newest only, and nothing about it is saved in the file. Not tried in a live session with real students; the educator kit copy can now mention it.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftStudio Built · Live – – From: Owner (Owner)
FeatureED.2 Link to ED.2Comment on ED.2 Live TeamWork: class view, the teacher looks in on each student's work

Owner 2026-11-03 (educator kit): "allow instructor to look at student progress". Built as the people list in Live TeamWork (same module, assets/js/live-follow.js): everyone in the session with their colour and name, the tool they are running, the sheet they are on, how many edits this window saw from them and when the last one was, and a Follow button on each, so the teacher can go to a student's view. Names from other people reach the page as text only. NOT built from the first plan: students each working in their own drawing inside a class room, a live thumbnail of each student's work, and "Look in" read-only or "Help" with a separate viewer role. Today the class works in one shared drawing and the teacher sees the class at a glance in the list. Not tried in a live session with real students.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftStudio Built · Live – – From: Owner (Owner)
Library 8
FeatureLIB.C1 Link to LIB.C1Comment on LIB.C1 Library collections: the Library is the one home of every object; each app starts from a default collection

Owner 2026-11-05: library as the primary source of all object information; CivilCraft gets a default collection from the Library (its plants and items), usable in every app. Spec docs/0.9-LIBRARY-COLLECTIONS.md. Built: collections tables (migration 124), LibraryCollections, GET /api/v1/library/collections[/<slug>|/app/<app>], bin/library-collection-make.php, test bin/test-library-collections.php (17/0). Next: publish the 421 seed plants (bin/library-import-plants.php, dry run clean), make civilcraft-landscape the CivilCraft default, then CivilCraft Landscape loads it (C.3), places any Library item (C.4), other apps add it (C.5). Parametric Library objects (params + generator) are a separate track. C.2 done 2026-11-05: 421 seed plants published as Library plant items (system author), collection civilcraft-landscape published and set as CivilCraft default; served at /api/v1/library/collections/app/civilcraft. C.3 started 2026-11-05 (in /lab): the Plants section says where its list came from (the civilcraft-landscape collection, count, revision, or the built-in list when the Library is unreachable); Landscape panel sections fold shut and a menu command opens the one it works with (landscape/fold.js). The app still reads plants.csv for the data; reading the collection manifest itself comes next. C.3 done 2026-11-05 (in /lab): CivilCraft Landscape now reads its plants from its default collection (GET /api/v1/library/collections/app/civilcraft/plants.csv; every published plant when no collection is set; the built-in list when the Library cannot be reached). Panel sections: opening one shuts the others unless locked (lock icon by the caret). Landscape tests 533/0, collections 17/0. C.4 (place any Library item) and C.5 (other apps) still planned.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App code Built · Live – – From: owner (Owner) owner direction 2026-11-05
Print stage 15
FeaturePS.1 Link to PS.1Comment on PS.1 Print stage: put things on the bed in the app and send them, with no export

Spec: docs/0.9-PRINT-STAGE.md. ModelCraft's Print stage button: add Library items, position them in the view with the usual tools, Arrange or Fit on the bed, Send to 3D printer. Shared lib/printstage with ModelCraft as first host. Tested in Chromium in /lab against stand-in printers only; nothing has been printed (PS.5).

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.2 Link to PS.2Comment on PS.2 Our own FDM slicer (walls, skins, infill, supports, skirt)

Spec: docs/0.9-PRINT-STAGE.md. lib/printstage/ps-slice.js, Apache-2.0, polygon work by manifold-3d. Answers EG.8's own-slicer question for now. A cube read back move by move matches; 62 of a spread of 62 Library items slice with every move on the bed, 18 of them missing some pieces (the dialog says so). No real print yet; no bridges, seam choice or layer preview.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.3 Link to PS.3Comment on PS.3 Send to a printer: USB, Klipper (Moonraker), OctoPrint, PrusaLink

Spec: docs/0.9-PRINT-STAGE.md. Nothing connects or sends without a click, and sending asks first. Tested only against a fake USB printer and a stand-in Moonraker, following the vendors' docs. Network printers must allow the site (CORS). PrusaLink's sign-in may need more than the API key on some firmware.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.4 Link to PS.4Comment on PS.4 Print this on a Library item page

Spec: docs/0.9-PRINT-STAGE.md. Opens the print stage with the item on the bed. Shown to staff and lab testers while the stage is in the lab.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.10 Link to PS.10Comment on PS.10 Slicer: worker thread, layer preview, bridges, seams, printer profiles

Spec: docs/0.9-PRINT-STAGE.md. The slicer runs on the page's main thread in small steps; supports are slow on a big plate. Add a worker, a layer preview before sending, better surfaces, and real start G-code per printer as data. Worker thread, layer preview, bridges, seams and printer profiles (Ender-3, MK4, Klipper start G-code as data) built 2026-11-05; test-slice 37/0, browser-preview 11/0, browser 35/0. Start G-code of the new profiles has not run on those machines; nothing printed on a real printer.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.12 Link to PS.12Comment on PS.12 Choose your slicer: the print stage takes any engine

Spec: docs/0.9-PRINT-STAGE.md. One job in, G-code out. A picker on the card with Kiri:Moto, PrusaSlicer, OrcaSlicer and CadCraft basic; the choice is remembered. Every engine's output is read and refused if it leaves the bed or prints nothing. Tested in Chromium; real-print test is PS.5.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.13 Link to PS.13Comment on PS.13 Kiri:Moto as the default slicer (MIT, in the page)

Spec: docs/0.9-PRINT-STAGE.md. Built from its 4.7.3 tag, vendored at assets/vendor/kiri-moto (9.4 MB, loaded on first use). Slices a 20 mm cube correctly and in the right place on the bed; compared with CadCraft basic on Library items. Not tried in a packed Studio or offline edition.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.14 Link to PS.14Comment on PS.14 PrusaSlicer and OrcaSlicer through Studio (the person's own install)

Spec: docs/0.9-PRINT-STAGE.md. engines.rs Kind::Slicer: finds the program or lets the person pick it, writes the settings from checked fields, a crash gives no G-code. Built: Rust tests pass compiled alone; the files it writes slice correctly in the real PrusaSlicer 2.9.7 and OrcaSlicer 2.4.2 on Windows. Waits: a Studio build carrying it and a test through the real card; macOS and Linux paths untried. Owner, 2026-11-04: consider built; bugs come as fixes. Needs a Studio build to reach people.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.15 Link to PS.15Comment on PS.15 3D Print add-on

Spec: docs/0.9-PRINT-STAGE.md. modelcraft/a Discord member/addons/print3d, Apache-2.0, on by default: the Print stage button and the Print this link. ModelCraft's own code has no print stage in it. Answers PS.9.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.18 Link to PS.18Comment on PS.18 3D Print in the Add-on Library

Spec: docs/0.9-PRINT-STAGE.md. A listing with the required sections, so it can be added from the account and unbundled like the other add-ons. Listed 2026-11-04: print3d and the three slicer add-ons, behind the Library switch; required listing sections still to write.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
FeaturePS.19 Link to PS.19Comment on PS.19 Each slicer is its own add-on

Spec: docs/0.9-PRINT-STAGE.md. Owner, 2026-11-04. print3d carries the stage, the sending and CadCraft basic. slicer-kiri, slicer-prusaslicer and slicer-orcaslicer are off by default, offered with an Add button on the card and listed in the Library. Kiri is fetched only the first time it slices. Tested in Chromium in /lab.

ModelCraft App code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-04
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
Resin printing add-ons (RSN) 9
FeatureRSN.1 Link to RSN.1Comment on RSN.1 Resin slicer core: layers at the printer screen, hollowing, island check, layer preview (add-on slicer-resin)

Built in the lab: add-on slicer-resin over lib/printresin, in the 3D Print card under "Printing with: Resin". Layer pictures at the printer's screen resolution with smooth edges, hollowing with vent holes, floating pieces ringed on the layer preview, time, resin and cost. Free, nothing locked. Printer sizes are the makers' published numbers and the exposure numbers are starting points. Tests: slice 35/0, browser 24/0. Never run on a printer.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.2 Link to RSN.2Comment on RSN.2 Resin file: Elegoo GOO (add-on printer-resin-goo)

Built in the lab, from Elegoo's published Goo Format Spec V1.2 with no third-party source read. What the spec leaves open is now switchable on the card: byte order (big or little endian; big by default from an unverified secondary report) and checksum (negated sum or plain sum). The spec's own example offset cannot be reached by its field table (the table gives 195,477 bytes, the example 195,255), so the example is read as illustrative. Other gaps are marked SPEC-GAP in rs-goo.js. Read back by our own reader only (86/0). A real Elegoo printer is the check.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.3 Link to RSN.3Comment on RSN.3 Resin file: SL1 layered-image archive (add-on printer-resin-sl1)

Built in the lab, from public descriptions (Prusa publishes no specification): config.ini and numbered 8-bit PNG layers in a zip. Several keys are marked UNVERIFIED in rs-sl1.js. Read back by our own reader only (38/0). NanoDLP's different layout is not built.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.4 Link to RSN.4Comment on RSN.4 Resin exposure test: test part and a ladder of exposures (add-on resin-calibration)

Built in the lab: a 46 x 30 mm test part (square pillars 0.3 to 1.5 mm, round holes 0.4 to 1.5 mm, two bridges) and the same print at five exposures from 70 to 130 percent, one file each, in a zip. Test 10/0 and in the browser test.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.5 Link to RSN.5Comment on RSN.5 Resin supports and raft: pillars from islands, overhangs and the first layer

Built in the lab inside slicer-resin: the part is lifted on a raft; unsupported areas are sampled on a grid and each gets a pillar to the raft or the part below, fine tip and wider shaft; density light, medium, heavy. New and unproven: pillars do not brace each other, no suction-cup detection. Tests in test-slice.mjs.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.6 Link to RSN.6Comment on RSN.6 Resin files from Chitubox: CBDDLP and CTB (add-on printer-resin-chitu)

Built in the lab (owner 2026-11-08), clean room: both written from ONE prose document (cbiffle/catibo a Discord member/cbddlp-ctb.adoc, BSD-2-Clause repository; whether that file carries its own licence is for legal to confirm), no GPL code read. CBDDLP in full; CTB for the layout that document describes (version 2, 7-bit pixels), with the document's cipher as an option. Options on the card: edge smoothing levels, projection flag, resolution field type, encryption. The document says it was tested on the Creality LD-002R and files for the older Elegoo Mars; no other printer is named. Later CTB versions are NOT written (see RSN.10). Tests cbddlp 28/0, ctb 25/0, browser 31/0. Never loaded on a printer.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.8 Link to RSN.8Comment on RSN.8 Resin slicing on a worker thread

Built in the lab (2026-11-08). The resin slicer runs on a module worker (lib/printresin/rs-worker.js, started by rs-run.js) so the page stays alive while a big plate is sliced; the worker borrows the print stage's manifold file and ps-slice.js through the URLs the host already gives the filament slicer. The layers come back as run-length data, moved not copied. Cancel ends the worker. A page that cannot start a worker slices on the page as before. Same layers byte for byte as slicing directly (test-worker 14/0; the real-browser run confirms rs-worker.js starts). With FX.140 the drawing is also about 6 times faster. Not tried on a real printer.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.10 Link to RSN.10Comment on RSN.10 Resin files: Chitubox CTB versions 3, 4 and 5 (in add-on printer-resin-chitu)

Built in the lab (owner 2026-11-08: "build to version 3+"), our own Apache-2.0 code from a written specification (docs/resin-formats/ctb-v3-v5-SPEC.md), by a builder who saw nothing else. Two layouts under one name: plain tables (version 3, 4, 5) and encrypted settings (version 4, 5; AES and SHA-256 through the platform's WebCrypto). Options on the card: layout, version, edge smoothing, projection, layer scrambling. The vendor's disclaimer text is not reproduced (our own 320 bytes: a printer might check it). Which printer needs which layout is not established. The v2 writer's cipher constant is now an option too. Tests ctb3 170/0, incl. the spec's test vectors. Never loaded on a printer.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
FeatureRSN.11 Link to RSN.11Comment on RSN.11 Resin files: Anycubic Photon Workshop PWMX and PWS (add-on printer-resin-anycubic)

Built in the lab (owner 2026-11-08), our own Apache-2.0 code from a written specification (docs/resin-formats/anycubic-pwmx-SPEC.md), by a builder who saw nothing else. .pwmx (file version 1, optionally 516) and .pws. Options: mirror the picture, file version, edge smoothing, per-layer flag. Not written: versions 517 and 518 (the newer M5 and M7 families). The spec writer measured two public sample files (a .pws and a .pwmx) and found the real files differ from the reference code in three places; the spec records them. Tests pwmx 91/0, browser 38/0. Never loaded on a printer.

BimCraftModelCraftPartCraft Built · Live – Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md
Layouts 1
FeatureRH.1 Link to RH.1Comment on RH.1 Rhino layout, Rhino keys and four views (Top, Perspective, Front, Right)

A built-in layout called Rhino (Settings › Global › Layout) and, as a separate setting, a Rhino key set (Settings › <App> › Menus, keys and mouse), for people who model with curves, surfaces and solids from a command line. Asked on Discord by a first-time visitor: the top, right, front and perspective views as an option, plus Rhino shortcuts. Layout (all eight apps): menus File Edit View Curve Surface Solid Mesh Dimension Transform Tools Analyze Render Panels Help (menubar set=rhino, each command under one menu; the verb decides for mixed groups), tool rows, two columns of tools left, panel right, command line in the status strip. New block `viewports` (layout four), filled only by apps that offer it: ModelCraft shows Top, Perspective, Front and Right at once (viewports-mc.js). One view is active and is the real view (picking, tools, keys unchanged); a click activates another; Zoom extents refits all; Ctrl+M maximizes and restores; leaving the layout gives the single view back. Keys (ModelCraft style `rhino`): typed Rhino command names (Line, Box, Extrude, Move, BooleanUnion, Top, Undo, 4View…) run the closest ModelCraft command; Ctrl+G, Ctrl+Shift+G, Ctrl+H, Ctrl+Alt+H, F9, Ctrl+Shift+E, Ctrl+M; right button turns the view, Shift+right pans. The layout's command line tries these words first (ccInput.typed). Not built: Rhino keys and four views in the other seven apps; Enter to repeat; osnap bar; per-view cameras are not saved in the file; other views draw no axes, guides or selection. Ctrl+H, Ctrl+Alt+H and F9 are from memory of Rhino's defaults: a daily user should check. Test: node bin/test-rhino-layout.mjs.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Partly built 1 owner look in /lab; a daily Rhino user to check the keys; the other seven apps' keys and views Discord request, 2026-11-09 (the owner answers the requester directly; no lab pass)
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.