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
Engineering gaps (Track EG) 2
SpikeEG.21 Link to EG.21Comment on EG.21 Spike: AR on site — the model at full size through a phone

Place a BimCraft or ModelCraft model at full size on site through a phone camera (WebXR immersive-ar; Safari on iPhone has none, so the spike says what iPhone users get). Owner's review list 2026-10-27 (duplicates removed). Plan docs/0.8-PART5.md. Widened 2026-10-27 (second list): also show what is hidden in a wall or slab — pipes, conduit, rebar — aligned to the model on a tablet.

BimCraftModelCraftStudio App codeDesktop host Built · Live 3 You: an Android phone with ARCore and a tape measure. Session: AR session, align dialog, x-ray lens (about 5 days). Spike: docs/spikes/EG.21_PART_4.md From: owner (Owner) Owner, 2026-10-27 (engineering gaps list, add to 0.8)
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
FixFX.137 Link to FX.137Comment on FX.137 Arc: all ten methods (3-Point, Start/Center/End/Angle/Length, Start/End/Angle/Direction/Radius, Center/Start/End/Angle/Length) and Continue

The Arc tool only offered a start point or a centre. Now every method is there, in CadCraft, ModelCraft, PartCraft sketches, MarkupCraft and TakeoffCraft, from one shared library (lib/arcs, copies via tools/arcs/sync.mjs). Arcs run counter-clockwise; a negative angle or chord length takes the clockwise arc, a negative radius the major arc. Angle, length, radius and direction can be clicked or typed. CadCraft also has Continue (Enter at the start point) tangent to the last line, arc or polyline, and a split button listing the methods. MarkupCraft and TakeoffCraft keep their saved arc formats; PartCraft arcs stay centre/start/end so constraints work. Tests: tools/arcs/test.mjs, test-cadcraft, test-markupcraft, test-takeoffcraft, tools/partcraft-test/test-sketch-arcs.mjs, tools/modelcraft-test/tools07.mjs. Not yet checked by hand in a browser: MarkupCraft and TakeoffCraft pointer flow, PartCraft split face label, ModelCraft on a tilted face.

CadCraftModelCraftMarkupCraftTakeoffCraftPartCraft App code Built · Live – The reporter to try it in /lab. From: a CadCraft user (Staff) email 2026-11-08
FixFX.140 Link to FX.140Comment on FX.140 Resin slicing: faster on big screens and dense miniature meshes, and less memory

A tester reported the resin slicer crashed while slicing; they later said the model was a dense mesh from a miniatures set, a few MB, not regular geometry. The cause is not confirmed and no crash was reproduced, but tests found three real problems. (1) Drawing: the page spent most of its time turning each layer into a 12K picture (59 million pixels a layer); a 100 mm part at 0.05 mm took over 280 s. Now only the rows a layer lights are touched, one buffer is reused, and dark rows are written as single runs: a 60 mm part 151 s to 27 s, the 100 mm one over 280 s to 100 s. (2) Dense meshes: the island check ran an exact overlap test for every small piece of every layer (40 of 52 s on a 40,000-triangle noisy ball with supports); the overlap of the whole layers is now found once and cut into pieces, same island counts as before (251 = 251 on a test mesh), 52 s to 22 s. The cavity of a hollow part is worked out on an outline simplified by half a pixel (about 25 percent faster, wall within half a pixel). (3) Memory: a 40-piece, 139,000-triangle mesh at 0.03 mm, hollow with supports, peaked at 1.98 GB (enough to kill a browser tab), because every layer's pieces were kept to the end; temporary shapes are now given back at once: 1.20 GB, and it finishes in about 4.5 minutes where it ran past 7. Layers are identical to before the change except the half-pixel cavity. With RSN.8 the slicing also runs on a worker thread, so the page cannot freeze. Not tried on a real printer or on the tester's own file.

BimCraftModelCraftPartCraft App code Built · Live – The tester to try again in /lab and say what happens (printer, layer height, hollow/supports, model size). From: Discord community (Discord) Discord 2026-11-08: "it crashed while slicing"
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/
FixFX.156 Link to FX.156Comment on FX.156 Tooltips: one Bootstrap engine everywhere; the other tooltip methods are gone

Tips were drawn five ways: app-tooltips.js (Bootstrap, from title), a hand-made .ws-tooltip div in the workspace, a second Bootstrap instance for cut-off text in Settings, one each for the area badge, the download copy button and CivilCraft's narrow number boxes, and a CSS ::after bubble on the status bars. Now app-tooltips.js is the only one: it reads data-ws-reason, title or an old data-bs-title, and offers ccTooltips.showText(el, text) for text a page computes (cut-off text, Copied, a clipped number). The site footer and admin footer load it too, so public pages match the apps. Popped-out ribbon, panel and dialog windows get Bootstrap and the engine through ccTooltips.attach(win), so they show the same tips. Same look everywhere (.tooltip.cc-tip).

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App code Built · Live – The 0.9.1 build (desktop installers carry the shared files from their pack date). From: the owner (Staff) owner 2026-11-09
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
SpikePS.8 Link to PS.8Comment on PS.8 Bambu Lab P2S through Bambu Connect

Spec: docs/0.9-PRINT-STAGE.md. Owner, 2026-11-04: Bambu Connect, with installing it in the add-on's instructions. Add-on printer-bambu: slices with the person's own OrcaSlicer and its P2S presets to a sliced .gcode.3mf, then opens it in Bambu Connect, where they start the print. Setup steps on the card and in the Library listing. The file was made by the real OrcaSlicer 2.4.2 on Windows. Not yet run: a Studio build, Bambu Connect itself, a P2S. Other Bambu models and direct sending not built.

ModelCraft Our enginesApp code Built · Live – – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03
DecisionPS.9 Link to PS.9Comment on PS.9 Print stage: stay in the app or become an add-on

Spec: docs/0.9-PRINT-STAGE.md. Loaded on first use from ModelCraft today, so the code is in the build. Moving it means a Library listing and the add-on API reaching the view and the model. Recommended: decide after a real print works. Owner, 2026-11-03: an add-on. Built as print3d (PS.15).

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
DecisionPS.16 Link to PS.16Comment on PS.16 Bundle PrusaSlicer and OrcaSlicer, or use the person's own copy

Spec: docs/0.9-PRINT-STAGE.md. Built as their own install with a download link. Really bundling them changes ADDONS-SPEC named-GPL condition 4 and means about 110 MB and 140 MB per platform, passing on AGPL source offers, and following their releases. Recommended: keep their own install. Owner, 2026-11-04: not bundled; each slicer is its own add-on (PS.19).

ModelCraft App 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
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.