Release planning

CadCraft 1.0 impact map

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

ProjectCadCraft
Sheet0.10 impact
Items110
Date2026-11-09
51Fix
22Feature
0Spike
28Platform
0Site ops
8Sanity check
1Decision
≈ 319days in the written 0.10 plans
  • Planned 101 on the plan for the release it is filed under
  • Built 0 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 3 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 5 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: 0 Built · Live, 0 Built · in the lab.

Sheet 1 · impact areas

Where 0.10 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 20 17 – 10 – 3 1 51
BimCraft 18 20 – 9 – 4 1 52
ModelCraft 19 20 – 10 – 3 1 53
MarkupCraft 12 16 – 9 – 3 1 41
TakeoffCraft 14 16 – 9 – 3 1 43
CivilCraft 21 18 – 10 – 4 1 54
DetailCraft 15 17 – 9 – 4 1 46
PartCraft 15 17 – 9 – 3 1 45
Studio – 1 – – – – – 1
SuperCad Studio – 6 – 6 – 1 1 14
Layers
Site and services 13 3 – 8 – 1 – 25
Desktop host – 1 – 1 – – – 2
App shell 5 15 – 8 – 2 1 31
App code 23 4 – 3 – – – 30
Our engines 8 – – 1 – 1 – 10
Vendor engines – – – – – – – 0
Drawing surface 3 – – – – – – 3
Help and words 2 1 – – – 1 – 4
Tests and tooling 2 1 – 2 – 3 – 8

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
Performance roadmap — wave 3 60
FixPERF.28 Link to PERF.28Comment on PERF.28 CadCraft: the redraw cache is one Path2D per color for the whole drawing, rebuilt from every entity on every change, with no culling or level of detail

Measured in /use 0.8.2 (software GL, so frame time is main-thread cost) with 10k / 100k / 1M entities (1M = the 100k drawing multiplied in the page): view.js:646-721 builds one Path2D per color for the whole space and any edit, undo, redo, layer flag or REGEN rebuilds it from scratch: 0.8 s at 100k, 33 s at 1M (move all = 35 s redraw, undo 29 s, one layer off 34 s; undo itself is a delta and takes 68 ms, the redraw is the cost). Path2D.closePath() on a multi-million-segment path costs in proportion to the path: 18 % at 100k, 45 % (73 s) at 1M. The whole drawing is stroked each frame and drawTexts loops over every text: one redraw 25 ms at extents and 58 ms zoomed in at 1M. Change: per-chunk or per-tile Path2D keyed by entity, rebuilt only for the entities an operation touched, first build sliced across frames; a grid or R-tree of bounds so only visible chunks are stroked, sub-pixel chunks skipped, an offscreen bitmap for pure pans. Also a Discord member.load draws inside the load event (view.js:81 to fit() to ensureCache(): 33 of the 37 s load at 1M). Targets for the 100k drawing: open under 3 s, redraw p95 under 33 ms.

CadCraft Drawing surface Planned 10 – docs/0.9-sessions/perf-wave3/
FixPERF.29 Link to PERF.29Comment on PERF.29 CadCraft: hit test, snap and hover pick are O(n) on every pointer move (461 ms a move at 1M entities; 40 of 43 s blocked during a pointer sweep)

view.js:538-607 plus moveCursor (cadcraft.js:925) run view.pick over every entity on every pointer move: pick 1.2 / 30 / 461 ms and snap 2.2 / 31 / 314 ms at 10k / 100k / 1M entities; a pointer sweep across the drawing is blocked 1.1 s at 100k and 40 of 43 s at 1M; 54 to 80 % of the zoom and a Discord member profiles at 1M is the pick, not the drawing. Change: the same spatial index as the redraw row (grid or R-tree of entity bounds), one pick per animation frame at most, snap candidates from the cells under the cursor. Target: pick under 5 ms at 100k.

CadCraft Drawing surface Planned 4 – docs/0.9-sessions/perf-wave3/
FixPERF.32 Link to PERF.32Comment on PERF.32 CivilCraft: every survey point is painted every frame (13 s a paint, 4.2 s per a Discord member frame at 500k points)

scene.js:88 to view.js:175 paints all survey points on each frame: 13 s per paint and 4.2 s per a Discord member frame at 500k points, 1.2 s at the LAS import's 106k. Contours and labels add to it: contours(1) takes 6.7 s for 10,788 lines at 500k (string keys; 20,949 lines on the LAS), and labels call measureText plus fillText per frame (a 32 s paint on the LandXML scene). Change: a cached Path2D or bitmap per zoom bucket, decimation by zoom, a grid in-view test, integer keys in the contour tracer, label layout cached per bucket. Target for 500k: open under 5 s, zoom p95 under 100 ms.

CivilCraft Drawing surface Planned 3 – docs/0.9-sessions/perf-wave3/
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.