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
Drafting and app features 4
FixTK.1 Link to TK.1Comment on TK.1 TakeoffCraft: show lengths in meters, centimeters or millimeters

TakeoffCraft's own settings tab gets "Show lengths as": Follow Global (the metric length unit starred in Settings > Global > Units, else feet-inches), Feet-inches, m, cm or mm. It changes how lengths read on the sheet, in the status bar and in the panels, and the heights too: item height/depth, thickness, head, base and the Levels dialog; a bare number typed in a height field is read in the shown unit. The 1/16, 1/8 and 1/4 inch picker shows only for feet-inches. Display only: quantities, costs and exports still use the exact lengths. Asked for on Discord (a user could not find a meters option). Built in the a Discord member build, checked by syntax and number formatting; not yet tried in a browser.

TakeoffCraft App code Built · Live – – From: Discord community (Discord) Discord, 2026-11-03
Fixes 104
FixFX.55 Link to FX.55Comment on FX.55 BimCraft: typing LEVEL does nothing and the ribbon has no Levels button; optional side-panel accordion with a lock (setting, default off)

a Discord member, 2026-11-05 (working in /lab with the drafting ribbon): the help describes the Levels panel, but typing LEVEL on the command line said Unknown command and no ribbon button led to it. Built (/lab, a Discord member): the command line takes LEVEL, LEVELS, STOREY, STOREYS (opens Add levels…); a Levels button sits in the Home > Levels group (Drafting ribbon), the Architecture > Model group (Ribbon) and the Home menu (model.levels in input-bimcraft.js). The left/right panel's collapsible sections (Find, Quantity totals, Checks, Clash …) close each other so the one you opened has the focus when Settings > BimCraft > Side panels is on (default OFF, owner's call 2026-11-05); a lock beside each caret keeps one open, remembered on this device (panel-focus.js). Test: tools/bimcraft-test/browser-levels09.mjs, 15/0. Not in the Docked/Duncan layouts' own tool sets (the docked ribbon already had Level). New strings are English only until the next language sync.

BimCraft App code Built · Live 1 – From: Discord community (Discord) Discord, a Discord member, 2026-11-05
FixFX.92 Link to FX.92Comment on FX.92 CadCraft: text styles (STYLE) and a font for every text

STYLE (ST, TEXTSTYLE; -STYLE on the command line; Draw > Text > Text style): named styles with font, height (0 = ask each time), width factor and oblique angle, kept in the file's STYLE table (DXF/DWG already read and wrote it). New TEXT and MTEXT take the current style's font, width and slant and carry its name; changing a style changes the text that uses it in one undo step; Apply to selected text; New / Set current / Delete (a style in use and Standard are refused). Text objects now have their own font (e.font) drawn and measured in that face (canvas measurement; monospace fallback). Files: textstyles.js, textstyle-ui.js, font.js, geom.js, view.js, mtext-draw.js, plot.js, commands.js. Tests: bin/test-cadcraft.mjs section Text styles and fonts; tools/cadcraft-test/browser-textstyle.mjs. Known limit: the plotted PDF sets text in Helvetica whatever the font (the screen and the plot preview show it).

CadCraft App code Built · Live – in /lab; outcome waits on the requester's lab pass (hand check: a font that is not installed falls back; plotted PDFs still set other fonts in Helvetica) From: Mohammad Imtaar (Staff) email 2026-11-06 (Mohammad Imtaar)
FixFX.93 Link to FX.93Comment on FX.93 CadCraft: MTEXT editor with font, size, bold, italic, underline, colour, alignment

The paragraph text box (MTEXT, TEXTEDIT, a double-click on text) is now a formatted editor: font list, size (the selection, or all of it with nothing selected), B / I / U / strike, colour, left / centre / right, degree, plus-minus and diameter signs, Ctrl+Enter to finish. It writes the MTEXT codes (mt) and the plain text (s), so find, snap, DXF and DWG keep working; text left unchanged keeps its own codes untouched; paste is text only. Files: mtext-edit.js, cadcraft.js (editText), commands.js, cadcraft.css. The command line's height (suggestion 1083, SU.1083) is the third point of the email: the handle on its top edge, or COMMANDLINE, or one line plus F2. Tests: bin/test-cadcraft.mjs; tools/cadcraft-test/browser-textstyle.mjs (headless Chromium).

CadCraft App code Built · Live – in /lab; outcome waits on the requester's lab pass (not built: bullet and numbered lists, the tab ruler, justify) From: Mohammad Imtaar (Staff) email 2026-11-06 (Mohammad Imtaar)
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.155 Link to FX.155Comment on FX.155 CadCraft: no Arc drop-down in the default toolbar, and the ribbon Arc menu showed 6 of its 12 tools

CadCraft default toolbar (ui.inc): Arc and Circle had no drop-down; the eleven arc methods and the two circle methods sat only under Draw > More. Each now has a caret beside the button listing its ways to draw (moved out of More). FX.137 added the eleven ways to draw an arc, but the shared menu code (assets/js/app-input.js) kept only the first 6 tools of any split button, and dropped the rest without a word. CadCraft's Arc and PartCraft's sketch Arc (12 tools each) lost half their list; no other built-in split in any app is longer than 6. The limit is now 16, and a split cut to fit is reported like any other bad menu entry instead of vanishing. New test tools/shell-test/input-splits-test.mjs runs every built-in menu style of every app through the sanitiser and fails if anything is dropped (it fails on the old limit of 6, passes on 16). Installed 0.9.0 desktop builds carry their own copy of the menu code, so they need the 0.9.1 build (docs/0.9.1.md, 91.1); the web edition has the fix now.

CadCraftPartCraft App code Built · Live – The reporter to try it in /lab; the 0.9.1 build. From: a CadCraft user (Staff) email 2026-11-08
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
FixFX.157 Link to FX.157Comment on FX.157 CadCraft: objects moved against each other while zooming in a drawing at distant coordinates (a stray object near 0,0 made hatches slide off their outlines)

A member sent a screen recording: a hatch and its outline drifted apart as they zoomed, in a drawing near E 830000 / N 4480000. They guessed a 32-bit float problem, and it is one. A canvas Path2D keeps its points as 32-bit floats and the matrix that draws them is 32-bit too. CadCraft stores paths relative to an origin, but the origin was the middle of the whole drawing's extents: with one object left near 0,0 it sat 2.3 million units from the geometry on screen, so zoomed in the digits were gone. Measured in the released 0.9 build (new tools/cadcraft-test/browser-far-coords.mjs, the real view.js in Chromium): a hatch edge 1 px off at 20 px per unit, 22 px at 200, 94 px at 1000, fill gone at 2000; without the stray object, or with one 20 km away, exact. Only the picture was wrong; coordinates, snaps, measurements and saved files are 64-bit. Fix (view.js): the cache is rebuilt around the view center once the origin is more than 160,000 px from it (FAR_PX), also for the model shown in a sheet viewport; ordinary drawings never rebuild. The test fails on 0.9 (99 px) and passes in the lab (0 px at every zoom); bin/test-cadcraft.mjs 2847 passed. /accuracy had the old origin down as keeping values small: now a 32-bit policy, Drawing far from the origin, on screen, with the measurements and an open item to test BimCraft dwg-view.js, TakeoffCraft cadset.js and CivilCraft view.js (same pattern). Installed 0.9.0 desktop builds carry their own view.js and need 0.9.1.

CadCraft App code Built · Live – The reporter to try it in /lab (send the file or a lab pass); the 0.9.1 build; the other three apps tested for the same pattern. From: Discord community (Discord) Discord 2026-11-09
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.