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.77 Link to FX.77Comment on FX.77 Studio and browser-edition packers: stale file lists (suite stubs, hub files, docinfo and About modules)

Found by mounts-09 2026-11-06 while building the Studio suite for the undo test. (1) studio/pack/suite-stubs.php WORKSPACE_MODULES lacked app-workspace-icons.js and app-workspace-vector.js, so node pack/suite.mjs stopped with "a plain re-render differs from the edition's index.html" for every app: a Studio rebuild could not have been made. (2) pack/suite.mjs HUB_FILES did not copy the new hub/undo-journal.js. (3) tools/shell-test/test-packed-imports.mjs failed 6 checks: devshell/edition.php and devshell/pack.php lacked docinfo.js, app-docinfo.js and app-about.js (DI.1, ABT.1), so packaged editions would have asked for files that are not there. All three lists fixed; the suite packs for cadcraft, detailcraft and takeoffcraft and the test reports "all packers list every imported shell file". The full eight-app suite was not rebuilt here.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 0.5 – docs/0.9-sessions/mounts-09.md
FixFX.78 Link to FX.78Comment on FX.78 Tests: the team button sits in a folded panel section; add-on buttons are not registry commands

mounts-09 2026-11-06: tools/bimcraft-test/browser-r5.mjs clicked [data-model-team] while the shell's panel accordion had its section folded (a person opens the section first; the test now does too). tools/shell-test/browser-input-apps.mjs's "every toolbar button is a registry command" no longer lists add-on buttons (data-addon-tool), as print-09 asked; ModelCraft's 3D Print button passes. Still failing there, not from this session: "Move the Tools toolbar" (the toolbar tear grip) and the Settings style-card radio that is not visible; and tools/civil-mount-test/browser.mjs la4 clicks the first of two "Ground modifiers" menu items, which is hidden.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 0.5 – docs/0.9-sessions/mounts-09.md
FixFX.79 Link to FX.79Comment on FX.79 ModelCraft Surfaces solids test opens the folded Surfaces section first

tools/modelcraft-test/browser-solids.mjs failed before any change of 2026-11-06: the right panel now folds its sections (app-settings.js, one open at a time), so the Surfaces button was not visible. The test now clicks the Surfaces heading when the section is folded (as a person does), and expects 9 Solids commands (+ Fillet between faces, Thicken into a solid, SU.747c); PartCraft's browser-solids.mjs the same count. Both pass (14/0, 18/0). Not fixed here: ModelCraft's browser-trim.mjs, browser-scanfit.mjs and tools/nurbs/browser-scanfit-09.mjs open the panel the same old way (listed in docs/0.9-sessions/nurbs-s3-09.md § Found).

ModelCraftPartCraft Built · Live 0.1 – docs/0.9-sessions/nurbs-s3-09.md
FixFX.83 Link to FX.83Comment on FX.83 Settings > Layout: the layouts are a drop-down of two-line choices, not a long radio list

The layout list (built-ins plus add-on and imported layouts) grew into a long radio column. Now a button shows the chosen layout (icon, name, hint) and opens a pop-up list of two-line choices, scrolling past 24rem. The radios stay inside the pop-up, so picking, the extras list, Remove and the keyboard (arrows between layouts) work as before; Esc, a pick or a click elsewhere closes it; without JS the list just shows. Files: app-settings.inc, app-settings.js (wsCur, wsOpen), app-shell.css. Checked: syntax and php -l; not yet tried in a browser. Owner tried it in /lab 2026-11-06: works.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftSuperCad Studio App shell Built · Live – – From: owner (Owner) owner request 2026-11-06
FixBot obtainedFX.94 Link to FX.94Comment on FX.94 Material flow Real mode: connect again after the link ended on PLC exceptions

When a Real link ended after several exception answers, Studio's socket stayed open (only the page stopped), so pressing Connect again was refused with "already connected". RealLink.connect now closes the old socket first. Found by tools/plc-sim/test.mjs against a software Modbus slave. Also plc.rs: the below-1024 port rule is a plain function with a test.

ModelCraft Built · Live – – twin-plc-09 2026-11-06
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
Discord, last sweep before 0.9 (2026-11-05) 5
FixFX.31 Link to FX.31Comment on FX.31 ModelCraft: Play turns into Pause while an animation plays, and Space toggles it

Reported 2026-10-20: the Play button stays a triangle while the animation runs (it acts as stop); the reporter asks for a Pause state, matching the timeline, and for Space to play and pause while the timeline is open. Untested. Built 2026-11-05 (model-fix-09), in /lab. The timeline's own Play button already turned into Pause while playing (since 0.6); what stayed a triangle was the Animate workspace's toolbar Play (a second button, and Stop beside it). Now it shows Pause (icon, word, pressed) while the animation plays and a second click pauses; Space plays and pauses while the timeline is open (not when a button has the focus, not while a tool runs; with the timeline closed Space is still Select); the new command Play or pause the animation (camera.play) can be given any key in a style of your own. Tests: browser-fix09.mjs 'FX.31' (real keys and clicks) and test-fix09.mjs. Help: animation topic.

ModelCraft Built · Live 1 – docs/0.9-sessions/final-sweep-2026-11-05.md
FixFX.32 Link to FX.32Comment on FX.32 ModelCraft: the Render view pop-up stays over the toolbar, and the Render panel shows "null" under Detail

Reported 2026-10-25 on macOS Studio: switching to Render shows a "The path tracer renders the view..." pop-up that does not go away and passes clicks to the toolbar underneath; the Render in the view panel has the word null below the Detail drop-down. Untested; not yet looked for in the code. Checked 2026-11-05 (model-fix-09): already fixed in 0.7.1 (71.1: the long note became a plain paragraph in the Render panel instead of the floating stage hint; 71.2: the empty slot that printed "null" is gone), and the code is the same in 0.8.1. The reporter was on 0.7. Reproduced in /lab with a browser test (tools/modelcraft-test/browser-fix09.mjs, 'FX.32'): the note sits inside the side panel, does not cover the toolbar, a click on it lands on it, it has a Close control (and "What is this?" brings it back), and the word null is nowhere in the panel. Not tested on macOS Studio itself.

ModelCraft Built · Live 1 – docs/0.9-sessions/final-sweep-2026-11-05.md
Owner-reported, 2026-11-09 10
FixFX.147 Link to FX.147Comment on FX.147 All apps: a panel tab strip that does not fit scrolls (visible chevrons) instead of cutting tabs off

Owner, 2026-11-09 (MarkupCraft right panel): the tab row (Properties, Markups, Punch list, Tasks, Notes, Field, Tool chest) was cut off with no way to scroll; only widening the panel reached the last tab. Tab labels never wrap.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 1 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
FixFX.148 Link to FX.148Comment on FX.148 All apps: every panel and sub-section header is title, lock, caret at the far right (open down, closed up); lock at 50% opacity

Owner, 2026-11-09 (MarkupCraft, DetailCraft, CivilCraft, CadCraft panels): carets were on the left, lock icons hung off the title, CivilCraft's sections had neither, carets did not line up. One shared header; the direction is one CSS variable (--af-caret-open / --af-caret-closed); --cc-lock-opacity .5. A lint reads the DOM of every app. Sections that were open stay open by default.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 2 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
FixFX.149 Link to FX.149Comment on FX.149 All apps: every tooltip is a Bootstrap tooltip

Owner, 2026-11-09: the top-bar icon buttons showed the browser's native title tooltip. Rule: all tooltips are Bootstrap (local 5.3). One delegated initialiser upgrades every title in the shell; no double tooltip; keyboard focus shows it.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 1 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
FixFX.150 Link to FX.150Comment on FX.150 All apps: the row-remove x is small and shared; the start/help card has a close x

Owner, 2026-11-09 (DetailCraft Levels rows; the 'Start a model' card): the x buttons were too large, and the start card could not be dismissed. One compact .shell-x style; the start card closes, is remembered per app, and comes back from the palette.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 1 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
FixFX.151 Link to FX.151Comment on FX.151 All apps: add-on toolbar buttons look and behave like core ribbon buttons (PartCraft Print stage)

Owner, 2026-11-09: the Print stage button had no gap between icon and label and a non-standard grey fill and white border. The add-on loader mistook the right panel's pin tab for the toolbar; the button now carries the core tool class (same computed style at rest in PartCraft, BimCraft, ModelCraft).

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 1 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
FixFX.152 Link to FX.152Comment on FX.152 DetailCraft and the other apps: the mass readout ("0 kg") belongs in a panel section, not a fixed corner pill

Owner, 2026-11-09: the '0 kg' pill sat in a fixed corner and could not move; it should really be in a panel. Moves into a section of the panel (title, lock, caret) so it docks, folds and floats with the panel system; the fixed-corner widgets of the other apps are audited.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 1 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
FixFX.153 Link to FX.153Comment on FX.153 All apps: browser tab titles and favicons follow one pattern

Owner, 2026-11-09 (tab strip screenshot): DetailCraft read 'Untitled — DetailCraft' while the others read '<App> — Lab | CadCraft'; favicons missing or inconsistent. Pattern: '<App> | CadCraft' on /use, '<App> — Lab | CadCraft' on /lab, '<document> — <App> | CadCraft' with a document, '| CadCraft' always last; each app has its own icon (SVG plus raster fallbacks).

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Built · Live 1 Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md
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.