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 1 6
Sanity checkPERF.6 Link to PERF.6Comment on PERF.6 Performance budget in the test suite: startup requests/bytes/time per app and DWG/IFC read-write times, logged per release

tools/perf/startup.mjs and tools/perf/io-bench.mjs (added 2026-11-08) measure a cold /use start per app and the engines on big files. Plan: run both at each release (bin/release-app.php or the release checklist), store the numbers in docs/releases/<x.y>.md's results section (rule: test results in release notes) and fail the smoke run when an app's request count or JS bytes grow more than 15 % over the last release without a note. Baseline 2026-11-08 in docs/0.9-sessions/perf-09.md. cc-ifc needs no work now: 22.5 MB opens in 76 ms, geometry 1.3 s (683k triangles), save 30 ms; 47 MB Schependomlaan (714k lines) opens in 411 ms, geometry 641 ms, save 743 ms.

– Planned – –
Performance roadmap — wave 2 12
Sanity checkPERF.17 Link to PERF.17Comment on PERF.17 Frame rates on a graphics card: the VPS measures software GL only (BimCraft zoom p95 500 ms, ModelCraft 649 ms) — run the open-file tool on workstation11a

tools/perf/open-file.mjs runs Chromium with swiftshader on the VPS, so the zoom frame times it prints for the 683k-triangle IFC (p95 500 ms) and the 10.7 MB glTF (p95 649 ms) are the main thread's plus a software rasteriser, not what a person sees. Plan: run the same tool on workstation11a (tools/gpu-remote/run.sh; Chrome with the GPU) against /use, record p50/p95 frame times per app and file in docs/0.9-sessions/perf-09.md, and set the budget (p95 under 33 ms while orbiting a 1M-triangle model); only then decide on instancing, LOD or culling work in the shared renderer.

– Planned – –
Performance roadmap — wave 3 60
Sanity checkPERF.19 Link to PERF.19Comment on PERF.19 Scale: time is linear, memory is the ceiling. The 10x/100x/1000x table and where each format stops

The wave 3 scale track ran every engine on 10x and where possible 100x and 1000x files (Node 24, 12 GB heap cap; docs/0.9-sessions/perf-wave3/scale-1000x.md, tool tools/perf/scale-bench.mjs, generators tools/perf/gen/, 7.6 GB of files registered in testfiles/LARGE-FILES.md). Read time scales linearly almost everywhere (exponents: DWG read 0.93, IFC open 0.95, glTF 0.9, LandXML 1.1, LAS 0.7, GDS 0.87, PDF 1.0); the DWG writer is super-linear (1.3). What stops a file is memory and the data shape: one JS string per text file (hard stop 512 MB, practical 100 MB), one object per entity (cc-dwg 35 bytes of heap per file byte), whole-document JSON per undo step. Passes today: point clouds to 2 GB (100 M points in 59.5 s, 3.8 GB), cc-ifc index to 1.9 GB (15.9 s), GDS/OASIS to 622 MB (2.4 s), pdf.js 2,000 sheets (0.6 s), glTF 400 MB import (17 s). Stops: DXF 15 MB (crash, FX.142, now fixed), cc-dwg 76 MB needs 2.6 GB and 66 s to write, LandXML 358 MB needs 4.9 GB, ModelCraft first edit after a 400 MB import 36 s and 9 GB. This row: put the 1x and 10x lines of scale-bench into the PERF.6 budget (one line per format, fail on +15 % or any task over 5 s), plus the in-app budgets the 2D and 3D tracks set with their scripts (tools/perf/apps2d-*.mjs, apps3d-*.mjs on the registered files): CadCraft 100k entities open under 3 s, redraw p95 under 33 ms, pick under 5 ms, autosave under 500 ms; CivilCraft 500k points open under 5 s, zoom p95 under 100 ms; MarkupCraft 2,000 sheets switch p95 under 150 ms, heap under 400 MB; BimCraft heap per MB of IFC, ModelCraft heap per face, DetailCraft per member, draw calls, edit to next frame. Keep the table in the release notes results section; each format and app row below is the work.

– Our engines Planned 2 – docs/0.9-sessions/perf-wave3/
Sanity checkPERF.61 Link to PERF.61Comment on PERF.61 Apps: bundled add-ons that can never load in a release are still shipped and probed at every start

In /use CivilCraft and DetailCraft the regs add-on is refused "api-newer" (the release speaks add-on API 1.3, the add-on needs 1.4), BimCraft energyplus and CivilCraft site-geocode-osm are refused "manifest"; each release ships them (0.9 to 2.3 MB) and fetches their addon.json at every start, and Settings shows greyed entries. Change: bin/release-app.php refuses or drops a bundled add-on whose manifest fails AddonCatalog::checkManifest for the release's API. Also the Library should hide packs a release cannot run (seen in wave 2).

BimCraftCivilCraftDetailCraft Tests and tooling Planned 1 – docs/0.9-sessions/perf-wave3/
Sanity checkPERF.70 Link to PERF.70Comment on PERF.70 Server: operations checks: two cron jobs without a lock, status-check's serial probes, no Apache scoreboard, static files gzipped per request

bin/mail-poll.php (IMAP, every 5 min) and bin/a Discord member-sandbox-sync.php (every 10 min) have no flock while every other job has one; status-check runs 7 probes serially with 12 to 40 s timeouts plus 5 s retry sleeps (about 2 min worst case inside a 5-min slot; MeCentral timed out once on 2026-11-07). mod_status is on (Require local) but /server-status is rewritten to the 404 page by the catch-all .htaccess, so there is no scoreboard for bin/admin-perf.php --http or future measuring. Static JS is gzipped on every request: cadcraft.js 198 to 59.5 KB costs 9.0 ms p50 against 0.7 ms for an uncompressed file through the same .htaccess, 147 req/s at c=10 and p99 1,029 ms at c=20 (PERF.16 carries the fix: pre-compressed .br/.gz siblings and an immutable one-year cache). Changes: add the flock, run the probes with curl_multi or cap the total at 60 s, a <Location /server-status> with RewriteEngine Off in this site's vhost. Load floors for the record (c=10, keep-alive, zero failures): health 775 req/s, catalog 303, /status 189, / 80, /apps/cadcraft 58, /use/cadcraft 17.4 req/s at p50 586 ms (its 830 KB page is the throughput ceiling: PERF.2, PERF.3).

– Site and servicesTests and tooling Planned 1 – 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.