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/
Interface roadmap — wave 1 26
Sanity checkUI.13 Link to UI.13Comment on UI.13 Icon quality bar: a review sheet of every icon at 16, 20, 24 and 32 px in every style and both themes; redraw what fails

Owner 2026-11-09: "Our icons look like crap. We want cleaner colorful and theme colored icons." The CadCraft set (assets/js/app-workspace-icons.js, 0.9 DU.1, 2026-11-05) has 114 drawings on a 32-unit grid with a 1.5-unit round stroke and flat two-tone fills (roles w, a to e, s1/s2, t); 37 wall-tool icons were added by WT.1. It was drawn in one day, reviewed on one sheet at one size, and used only where a layout opts in (toolrows.icons "set", the Vector palettes); everywhere else the apps show Bootstrap Icons (one weight, grey) or their own drawings, so the screen mixes three icon families. This row, before more drawing: (1) a review sheet page (tools/icons/sheet.mjs → a static HTML in the lab) rendering every icon at 16 / 20 / 24 / 32 px, full colour, outline colorized and theme colour (UI.15), light and dark, next to the Bootstrap icon and the app drawing it replaces; (2) drawing rules written in the module header from the owner's look: grid, stroke and corner radius, the five fills and when each is used, what a 16 px icon may still show (no text, no detail under 2 units, one idea), silhouette first; (3) a lint (tools/icons/lint.mjs) that fails an icon off the grid, with a stroke under 1 or a sub-2-unit detail; (4) redraw every icon the sheet shows as muddy at 16 px (a first look at the set suggests the dimension, text and view icons). The sheet stays as the standing check (the test runs the lint).

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App shell Planned 3 Owner look at the sheet; his word on the drawing rules (stroke, corner radius, fill palette) before the volume row UI.14. docs/0.9-sessions/interface-wave1/SUMMARY.md
Sanity checkUI.17 Link to UI.17Comment on UI.17 Stability pass: every app × every layout × both themes × three widths on one contact sheet, the engine gaps closed, tests that hold

Owner: "I personally dont feel like our efforts are strong and stable and consistent." What exists: bin/test-app-workspaces.mjs (12 contract points per app and layout, green on 2026-10-24 for the two layouts of that day); the newer layouts were checked in CadCraft and BimCraft only (DU.1, VEC.1, SK.1 all "partial"); the engine inbox (docs/0.7-sessions/workspace-layouts.md § Inbox) lists gaps the per-app sessions found, most closed in the follow-up run, some still worked around in app CSS (z-index lifts, canvas sizing); FX.37 (tablets in portrait), FX.43 (packaged editions print no mount for toolbar tear) and FX.82 to FX.85 are partial. This row: (1) a contact sheet tool (tools/workspace-test/contact-sheet.mjs) that opens every app (eight plus SuperCad) in every layout, light and dark, at 1920, 1280 and 760 px wide with a showcase file, and writes one page of screenshots for the owner, re-run before every release and kept in the release notes results section; (2) run the conformance test for every app × layout and fix what fails, including the new points from UI.1; (3) remove the per-app CSS workarounds the engine now covers; (4) the partial rows above closed or re-filed; (5) a flake budget: the suite runs three times green on the VPS before this row is Built.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftSuperCad Studio App shellTests and tooling Planned 3 – docs/0.9-sessions/interface-wave1/SUMMARY.md
Sanity checkUI.18 Link to UI.18Comment on UI.18 Words, help, add-ons guide, release note and the "Pick your workspace" video for the wave

Every new word under shell.ws.* in en, es-MX and id with bin/test-shell-lang.mjs knowing the families (the language sweep carries the other 80 locales); help topics common/layout-drafting (new), layout-own (dragging, customizing, windows), layout-ribbon and layout-toolbox (the switcher, the status bar), arrange-panels (one tear-off); the add-ons repo docs/LAYOUTS.md v2 section and a second example layout that uses windows and corner overlays; the release note's interface section with the contact sheet (UI.17) and the icon count (UI.14); the 0.7 "Pick your workspace" video re-filmed on the Drafting layout with a ribbon torn to a second monitor (video-designer; the file handed to the owner, never posted).

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft Help and words Planned 2 The wave's feature rows built. docs/0.9-sessions/interface-wave1/SUMMARY.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.