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
PlatformPERF.1 Link to PERF.1Comment on PERF.1 HTTP/2 for getcadcraft.com: Apache runs mpm_prefork + mod_php, so every app start is 140 to 520 requests over HTTP/1.1

Measured 2026-11-08 (tools/perf/startup.mjs, localhost): a cold /use start fetches cadcraft 398 requests / 2.6 MB (233 JS modules), bimcraft 521 / 3.8 MB, partcraft 371 / 3.2 MB, civilcraft 313, modelcraft 238, detailcraft 185, markupcraft 159, takeoffcraft 141. All over HTTP/1.1: Apache is mpm_prefork with mod_php, and mod_http2 cannot run under prefork. A browser opens 6 connections per host, so for a visitor with a 70 ms round trip the request count alone is about 400/6 x 70 ms = 4.5 s before any module runs; on localhost the same start takes 1.2 s. The fix is a server change, not code: mpm_event + php-fpm 8.3 (installed at /usr/sbin/php-fpm8.3, not in use) + Protocols h2 http/1.1. The VPS serves about 80 virtual hosts from the same Apache, every one on mod_php today, so this needs the owner's go, a maintenance window and a rollback plan (keep the prefork config). Expected: one connection, all modules multiplexed, start time near the localhost figure plus one RTT per import depth. Alternatives rejected: bundling the releases (add-ons import the apps' modules by URL; a bundle would run two copies), a CDN for app files (same request count). Decision needed: go / not now.

– Decision Time – –
Performance roadmap — wave 3 60
PlatformPERF.62 Link to PERF.62Comment on PERF.62 Server: the opcache interned-strings buffer is full and the cache restarts during the day

Measured: opcache interned strings 8.0 of 8.0 MB used (70,128 strings), oom_restarts 1 at 20:11 UTC today on a cache started 01:58; 1,195 scripts, 54 of 128 MB. After each restart every PHP file of every vhost recompiles (CadCraft alone 379 scripts / 33 MB): a CPU spike and slow first requests several times a day. Change in /etc/php/8.3/apache2/conf.d/10-opcache.ini: opcache.interned_strings_buffer=32, opcache.memory_consumption=256, then apache2ctl graceful. Healthy otherwise: hit rate 99.94 %, realpath cache 14 % used, autoloader one is_file per class, .env parse 0.04 ms, bootstrap 2 to 3 ms, DB connect 0.8 ms.

– Site and services Decision Time 1 Owner: server-wide PHP setting (shared by about 80 vhosts), no functional risk. docs/0.9-sessions/perf-wave3/
PlatformPERF.66 Link to PERF.66Comment on PERF.66 Server: Apache and TLS settings for a 400-request app start: MaxKeepAliveRequests 100, no OCSP stapling, RSA-2048, no HSTS, MaxConnectionsPerChild 0

Measured: a TLS handshake is 25 to 30 ms on localhost (RSA-2048, session tickets off by certbot, no stapling: "OCSP response: no response sent"); with MaxKeepAliveRequests 100 and six connections a 400-request CadCraft start forces at least four extra handshakes (each about two round trips plus CPU for a visitor). Prefork MaxRequestWorkers 150; 36 to 40 children at 50 MB (81 MB max) = 2 GB; MaxConnectionsPerChild 0 so a mod_php child never recycles. HSTS is on api.getcadcraft.com and the forks, not on getcadcraft.com. Changes: MaxKeepAliveRequests 1000 (or 0) in /etc/apache2/apache2.conf; SSLUseStapling On plus SSLStaplingCache shmcb:${APACHE_RUN_DIR}/stapling(128000) in mods-available/ssl.conf; certbot --key-type ecdsa for getcadcraft.com and api (halves handshake signing); Header always set Strict-Transport-Security "max-age=31536000" on getcadcraft.com; MaxConnectionsPerChild 10000 in mpm_prefork.conf. All moot or smaller after PERF.1 (HTTP/2), which these numbers also strengthen.

– Site and services Decision Time 1 Owner: apache2.conf, mods-available/ssl.conf and mpm_prefork.conf are server-wide (about 80 vhosts); the ECDSA certificate and HSTS header are this site's. docs/0.9-sessions/perf-wave3/
PlatformPERF.67 Link to PERF.67Comment on PERF.67 Server: MySQL settings versus the data on the box: a full 1 GB buffer pool for 5.2 GB of data, table cache overflowing, slow log off

Measured: innodb_buffer_pool_size 1 GB with 1,024 free pages and wait_free 74,540 against 5.2 GB of data plus index across 56 schemas (cadcraft_db 1.23 GB; the two analytics tables alone are 1 GB); table_open_cache 4000 full with 110,482 overflows; Sort_merge_passes 1.1 M with a 256 KB sort buffer; innodb_io_capacity 200 on an SSD; slow_query_log OFF and long_query_time 10 (7 hits in 12 days; nothing below it is known). Also from the SQL track: 64,469 COMMITs at 2.76 ms (innodb_flush_log_at_trx_commit = 1, every autocommit an fsync) and SET time_zone run 1.28 M times = one per connection (no persistent connections). Changes: innodb_buffer_pool_size 4G (SET GLOBAL plus mysqld.cnf), table_open_cache 8000, sort_buffer_size 1M, innodb_io_capacity 1000 / max 4000, slow_query_log ON with long_query_time 0.5 and log_queries_not_using_indexes capped, init_connect = "SET time_zone='+00:00'" if persistent connections are wanted; flush_log_at_trx_commit 2 is a server-wide trade (a second of rows lost on a crash) the other sites would share: the analytics row removes most of the fsyncs anyway. Healthy: pool hit rate 99.9 %, 2 disk temp tables of 3.6 M, redo 430 MB a day, max_used_connections 44 of 151.

– Site and services Decision Time 1 Owner: shared MySQL (56 schemas); all settings are dynamic, no restart; the pool adds about 3 GB to mysqld's 2.8 GB RSS (15 GB free). docs/0.9-sessions/perf-wave3/
Interface roadmap — wave 1 26
DecisionUI.19 Link to UI.19Comment on UI.19 Owner: which mainstream interfaces to mock next, per app, for interface wave 2

Built-in layouts after this wave: Ribbon and project browser (docked), Toolbox and info box, AutoRev, Duncan, Vector, Sketch, Drafting (UI.12). Owner 2026-11-09: each app has several mainstream interfaces people like; mock them so a person picks the one they like per app. Candidates not yet mocked, by app, for your pick (names here are for you; the layout names stay ours, see the vendor-names rule): CadCraft: the classic toolbars-and-command-line drafting screen of the 2000s (menu bar, docked toolbars on four sides, command window, no ribbon). BimCraft: the Toolbox layout already follows the Archicad pattern and AutoRev the Revit one; a Vectorworks Architect pattern is Vector. ModelCraft: Sketch is there; a Blender-style editor-areas layout (split editors, header per area, N-panel) and a Rhino-style layout (four viewports, command line, toolbar tabs, right panels). MarkupCraft and TakeoffCraft: the Bluebeam pattern (left thumbnails, tool chest and markups list in right tabs, a properties toolbar under the ribbon) and the PlanSwift pattern (left pages tree, right takeoff items list, a quantities bar). CivilCraft: the Civil 3D pattern is a ribbon with a Toolspace palette (Prospector / Settings / Survey tabs) at the left. DetailCraft: the Tekla pattern (ribbon, a side pane with Applications & components, a mini toolbar at the selection). PartCraft: the Fusion / SolidWorks pattern (toolbar tabs, a browser tree at the left, a timeline at the bottom, a marking menu at the pointer, a Command Manager). Pick the three or four that matter most for 0.10 and this row becomes wave 2's list; each is one layout file plus the blocks it needs (split editors and a timeline are the two blocks none of the above have).

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftSuperCad Studio App shell Decision Time – Owner's pick. 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.