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.
- 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 area | Fix | Feature | Spike | Platform | Site ops | Sanity check | Decision | All |
|---|---|---|---|---|---|---|---|---|
| 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.
Issues sync every 10 minutes; last sync Nov 9, 2026 6:40 pm.
| Item | What | Apps | Layers | Status | Days | Waits on | Issues |
|---|---|---|---|---|---|---|---|
| Decision Time 5 | |||||||
DecisionAO.8
Link to AO.8Comment on AO.8 |
Send the add-on posts Approve and send the drafted "Build an add-on" and Apparel news and Discord posts. |
CadCraft | Site and services | Built · Live | – | You: publish From: asked of the owner by: addons-posts-draft (Session) addons-posts-draft | |
DecisionLIB-PUBLIC
Link to LIB-PUBLICComment on LIB-PUBLIC |
Make Library public Set LIBRARY_PUBLIC=1 after the library decisions below; residential, entourage and standard-part items wait on it. |
– | Site and services | Built · Live | – | You: flag From: asked of the owner by: TASKS, render, bim-residential (Session) TASKS, render, bim-residential | |
DecisionLIB-LEGAL
Link to LIB-LEGALComment on LIB-LEGAL |
Legal review of /library/rules The library rules (contributing, licenses, sources, takedown and counter-statement text, bounties) are now published on the site under Legal at /legal/library (also linked in the footer, the sitemap and llms.txt). Still open: a lawyer’s review of the text, and whether to name a DMCA agent. The page says nothing about being reviewed. |
– | Site and servicesHelp and words | Built · Live | – | – From: asked of the owner by: TASKS (Session) TASKS | |
DecisionMEP-REL
Link to MEP-RELComment on MEP-REL |
Release the HVAC and piping add-ons List them on /addons; a mechanical or plumbing professional reviews the labelled defaults. |
CadCraft | App codeSite and services | Built · Live | – | Review is community test MEP-REL-HAND (not blocking) From: asked of the owner by: cad-mep (Session) cad-mep | |
DecisionEG.24
Link to EG.24Comment on EG.24 |
Students and classrooms: free student mode and classroom licences? Should students get a free mode, and schools classroom licences (pricing, how a school is verified, what a student file may be used for)? Owner's review list 2026-10-27 (duplicates removed). Plan docs/0.8-PART5.md. |
– | Site and services | Built · Live | – | owner From: owner (Owner) Owner, 2026-10-27 (engineering gaps list, add to 0.8) | |
| One lineup (consolidation) 2 | |||||||
FeatureBot obtainedDC.1
Link to DC.1Comment on DC.1 |
One app with plugin modes (SuperCadCraft) User proposes collapsing eight separate apps into one app with plugin-based operating modes for BIM, 3D, CAM, GIS, and structural work instead of separate applications. |
– | App shell | Built · Live | – | – From: Discord community (Discord) Discord #suggest-a-craft, Oct 11, 2026 | |
FeatureBot obtainedDC.54
Link to DC.54Comment on DC.54 |
RhinoCraft or GrasshopperCraft: parametric modeling and scripting Request to create a RhinoCraft or GrasshopperCraft product with parametric modeling and scripting capabilities like Rhino and Grasshopper. |
ModelCraftPartCraft | Built · Live | – | Hand check is community test DC.54-HAND (not blocking) From: Discord community (Discord) Discord #suggest-a-craft, Oct 14, 2026 | ||
| Regional standards 1 | |||||||
FeatureZA.1
Link to ZA.1Comment on ZA.1 |
South African market: SANS 10143 drawing practice + SANS 10400 building regulations Sell into South Africa: local practice draws to SANS 10143 (building drawing practice) and builds to SANS 10400 (National Building Regulations). Full note for the 2026-10-26 meeting: docs/0.8-ZA-STANDARDS.md. Today: no SA support. BimCraft residential is hard-coded to US codes (res-stair.js IRC stair limits, res-framing.js 2x lumber + US header table, US egress window, US electrical symbols). Suggested order: 1. Built on REG.1: regulations by jurisdiction as library packs; ZA.1 delivers the South African country packs. 2. SANS 10143 drawing pack: metric mm dims, levels in m, A-series sheets, SA title block (erf, SACAP reg. no.), hatches, symbols, D1/W1 marks. 3. SA residential defaults: 230/280 cavity masonry, SA brick and block, 38x114/38x152 timber, trusses, IBR/tile roofs; Part M stair and Part O window-area checks. 4. Part XA energy check (climate zones 1-6, fenestration, R-values) and an SA municipal submission set export. The differentiator. 5. CivilCraft: Hartebeesthoek94 Lo zones with the Y-westing / X-southing axis flip; SANS 10142 electrical symbols. Business: SANS texts are copyrighted (buy, encode, cite clauses, edition dates); POPIA; ZAR + 15% VAT, regional pricing?; offline/load-shedding is a selling point. Meeting questions: 0.8 market or later? Buy the SANS set? An SA reviewer? Regional pricing? Drawing pack or XA first? Afrikaans? All SANS figures are from memory; check against purchased copies before shipping. LAB SAMPLE (2026-10-25): a small South African pack (stairs, room height, window and openable area) can be seen in /lab/bimcraft under Settings > Building regulations. Its numbers are unchecked. |
CadCraftBimCraftCivilCraftDetailCraft | App codeSite and servicesHelp and words | Built · Live | – | – From: Owner docs/0.8-ZA-STANDARDS.md Read the doc | |
| Suggestions (Track SX) 25 | |||||||
FeatureSU.1058
Link to SU.1058Comment on SU.1058 |
Project document manager: check-out, revisions, release states Asked: a document manager like a paid PDM, without that price (#1058; again #1129: "shouldn't have to pay to manage my own files"). Built (vault-09 2026-11-06, in /lab; docs/0.9-sessions/vault-09.md): the Documents panel over a project folder in CadCraft (View > More > Documents..., or DOCUMENTS), PartCraft and BimCraft (File > Documents...), and so in SuperCad Studio, which hosts them. Check out and in with a lock file two people respect, revision letters (A.1, A.2, A, B.1; ASME skip), states (work in progress, for review, released, obsolete) with the revision table and a revision block on the sheet, history of who did what, where-used and BOM (PartCraft assemblies, xrefs, IFC links), approver list and four eyes (LC.8 merged), title-block fields VAULT.REV/STATE/DATE/APPROVER, read-only guard on Save, cloud folders in Studio (server built). Walkthrough: help topic "Documents and revisions (the vault)" in the three apps. Tested: lib/vault 141, UI 68, bridge 15, cloud 22, TWO REAL PROCESSES on one folder and on a cloud folder 86 (24 of 24 simultaneous check-outs, one winner each), walkthrough buttons 82; real pages 26+26+45 and Super 15; lock_ops.rs 4 under rustc. Found and fixed: BimCraft did not mount in Super. Not built: the sheet set's index does not show each sheet's revision; Open copy and Compare only in CadCraft; the approver is a typed name; no cloud folder in a web tab (Studio first); the commands in desktop-shell are not cargo-compiled (Windows Studio 0.9 build). Real shared-folder check with two people: SU.1058-HAND. |
CadCraftBimCraftPartCraftStudio | Built · Live | 12 | – From: site suggestion (Suggestion) docs/0.8-PART2.md (Track SX), from /admin/suggestions 2026-10-27 | ||
FeatureSU.1056
Link to SU.1056Comment on SU.1056 |
Structural follow-up: concrete design, slabs and shear walls, wind and seismic loads Asked: ETABS as the main program, so a Linux user can switch (#1056, Oct 25). Same family as SU.878 (#878, #754, #859), #908 and #890. Built and reachable in the Analysis panel of BimCraft and DetailCraft: model (members, end releases, slabs, walls, rigid floors, supports), load cases and your own loads (node, member, area pressures), combinations typed by hand or made from ASCE 7 and EN 1990, first-order and P-Delta results (forces, reactions, deflections, plate moments), natural frequencies by finite elements (modal masses, mode shapes), concrete member and slab checks (0.8), seismic equivalent lateral force with drift check (0.8), reports (PDF, CSV). Wind can be entered as your own pressures in a Wind case; every panel says 'not a code check; your engineer reviews the results'. Not built (split to SU.1056b): wind loads made from ASCE 7-22 chapters 26-27 and the code's seismic hazard data. Response spectrum, time history and nonlinear analysis: built (see the last line). Not there: design checks beyond those listed. This is a frame and shell analysis program for the stated ask; it is not ETABS and makes no claim to equal it. mounts-09 2026-11-06: P-Delta help in BimCraft. fem-complete 2026-11-06: modal block wired in both apps, help, tests (docs/0.9-sessions/fem-09.md). dynamics 2026-11-06: response spectrum (CQC, SRSS, ten percent, 100/30 or SRSS directions, table or ASCE 7 shape, optional scale to a typed base shear), time history (modal and Newmark, Rayleigh and modal damping, record file, paste or synthetic), pushover and nonlinear time history by plastic hinges with P-delta. Blocks under Finite elements in BimCraft and DetailCraft; real-building check = SU.1056-HAND. Not built: brace yielding and buckling, hinges inside a span, code checks. |
BimCraftDetailCraft | Built · Live | 18 | Wind and seismic hazard by code is SU.1056b; hand check is community test SU.908-HAND (not blocking) From: site suggestion (Suggestion) docs/0.8-PART2.md (Track SX), from /admin/suggestions 2026-10-27 | ||
FeatureSU.858
Link to SU.858Comment on SU.858 |
Material-handling layout, simulation and PLC emulation (conveyors, stations, AGVs) Asked: emulation and simulation software for material handling that costs about $40,000 a year (#858, Oct 20; 43 votes, the most-voted ask). Do (docs/0.8-PART2.md § SU.858): a ModelCraft add-on `flow`: a catalogue of conveyors, merges, diverters, stations, buffers, sources/sinks, AGVs and sensors with ports; snap a layout in 3D; a deterministic discrete-event simulation with accumulation and routing rules; playback in 3D, statistics, CSV. Later, Studio only: PLC emulation over Modbus TCP or OPC UA (owner picks the first). No physics; loads are kinematic. PLC mode (2026-11-06): the panel's PLC mode chooses Soft or Real, saved with the model. Soft runs the Digital twin's soft PLC (ST or PLCopen XML) on the layout with no hardware, in the browser or Studio, repeatable to the byte. Real talks Modbus TCP to a PLC through Studio (plc.rs client commands) with an address map editor (tag, type, table, address, scale); in a browser tab it is off with the reason. Simulation-only safety line; the PLC's address is never saved in the file. Tested: Modbus spec known answers, loopback against a JS Modbus server, the real /lab page. Needs the 0.9 Studio build (Rust core tested alone, Tauri wrappers not compiled here). Real PLC check: community row SU.858-HAND. |
ModelCraft | Built · Live | 20 | Studio 0.9 build with the plc.rs client commands; real-PLC hand check is community test SU.858-HAND (not blocking) From: site suggestion (Suggestion) docs/0.8-PART2.md (Track SX), from /admin/suggestions 2026-10-27 | ||
SpikeSU.897
Link to SU.897Comment on SU.897 |
Spike: KiCad boards into PartCraft for enclosure design Asked: schematic and PCB place-and-route, a more modern KiCad (#897, Oct 21). A full EDA is not an app in the lineup (owner can overrule). Spike: read .kicad_pcb (open S-expression format) → board outline, holes, component bodies (boxes, or their STEP models when present) into PartCraft so an enclosure can be designed around a board; written up with what a deeper step would take. |
PartCraft | Built · Live | 2 | Hand check is community test SU.897-HAND (not blocking) From: site suggestion (Suggestion) docs/0.8-PART2.md (Track SX), from /admin/suggestions 2026-10-27 | ||
FeatureSU.1123
Link to SU.1123Comment on SU.1123 |
BimCraft: edit directly in elevation and section views; custom sheet sizes and title blocks; rename families and types Asked (#1123, Oct 29, a Revit user): edit the project inside elevation and section views (avoids extra sheets), customise sheet formats, rename families and other elements. Do: draw and move walls, openings, levels and annotations in elevation and section views (the plan edit tools run in the view's plane); sheet sizes and title-block templates as library data (name, size, border, fields); rename family, type and element from the browser. Relates to D8.12 (BimCraft working style), DC.117 (views), DC.114 (families on IFC types). **Implementation started 2026-11-02** (0.9 top-5 pick #3, hardest first; session `bim-views-09`, log docs/0.9-sessions/bim-views-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
BimCraft | Built · Live | 12 | – From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1110
Link to SU.1110Comment on SU.1110 |
CivilCraft: reusable corridor templates and several assemblies on one corridor, with left and right pavement and end conditions set apart Asked (#1110, Oct 28): templates for roadway and site structures (curb, gutter, sidewalk, retaining walls), as OpenRoads Designer does: a template usable on any element, even applied to terrain surfaces; several templates or assemblies on one corridor; pavement and end conditions controlled left and right separately; small templates reused instead of a custom one per project. Builds on D7.35 (corridor assemblies) and WL.25 (corridor targets). Do: template library (components with offsets, slopes, materials, point codes); corridor takes a list of templates by station range; left and right pavement and end conditions (daylight to ground, wall, ditch) independent; surface templates for terrain edits (LD.3 grading). Example templates are for checking by an engineer. **Implementation started 2026-11-02** (0.9 top-5 pick #4, hardest first; session `civil-templates-09`, log docs/0.9-sessions/civil-templates-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
CivilCraft | Built · Live | 10 | Engineer review of the 8 example templates (placeholders, marked for checking by an engineer) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1085
Link to SU.1085Comment on SU.1085 |
MarkupCraft: batch links, callouts and details linked to sheets by sheet name Asked (#1085, Oct 27): links and batch links like Bluebeam and Procore: search the sheet names and connect callouts and details to the plans. Do: read sheet numbers and names from title blocks (text layer, with a hand fix), find callout text such as 3/A-501, link each to its sheet and view in one pass, show a list of what linked and what did not, save as PDF link annotations and as MarkupCraft links. **Implementation started 2026-11-02** (0.9 pick #8, second five, hardest first; session `markup-links-09`, log docs/0.9-sessions/markup-links-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
MarkupCraft | Built · Live | 4 | Built in /lab, tested on our own fixture set only; owner: a real multi-sheet set to check view finding. New words English-only until a translation run. From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1083
Link to SU.1083Comment on SU.1083 |
CadCraft: a thinner, floating command line and a smaller top area, to give the drawing more room Asked (#1083, Oct 27, in Italian): make the command line at the bottom resizable, much thinner and floating as in AutoCAD, and shrink the top commands area, for more working space. Do: command line docks bottom or floats (drag, remembered), one-line height option with the history in a pop-up, ties into the layout-fit prompt and compact ribbon already built (WS, PANEL-COMPACT, shell.fit). **Implementation started 2026-11-02** (0.9 pick #10, second five, hardest first; session `cad-cmdline-09`, log docs/0.9-sessions/cad-cmdline-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
CadCraft | Built · Live | 3 | – From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1125
Link to SU.1125Comment on SU.1125 |
BimCraft: export the model as Collada (.dae) for Blender and Google Earth Asked (#1125, Oct 29): export a BIM model to Collada (.dae) for rendering in Blender and viewing in Google Earth. ModelCraft already writes and reads Collada 1.4.1 (io.js exportDAE / importDAE). Do: reuse that writer from BimCraft (elements as nodes with materials, metres, Z up), optional geolocation block for Google Earth, and a test that Blender reads it. **Implementation started 2026-11-02** (0.9 pick #9, second five, hardest first; session `bim-dae-09`, log docs/0.9-sessions/bim-dae-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
BimCraft | Built · Live | 3 | Owner: open a .kmz in Google Earth Pro and the .dae in Blender 4.x (neither installed here) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1112
Link to SU.1112Comment on SU.1112 |
Live in every app: see each other's cursors and names while co-editing Asked (#1112, Oct 28): collaboration where people see each other's cursors, so working in teams is easier. CadCraft's Live already shows other people's cursors and selections (live.js presence). Do: the same presence layer in the other apps' Live sessions (cursor, name colour, selection), reusing the CadCraft code through the shared Live library. Relates to DC.27 and EG.41. **Implementation started 2026-11-02** (0.9 pick #7, second five, hardest first; session `live-cursors-09`, log docs/0.9-sessions/live-cursors-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). **Built 2026-11-02** (session `live-cursors-09`, log docs/0.9-sessions/live-cursors-09.md): one shared presence layer (assets/js/live-presence.js, synced by tools/shell/sync.mjs) with a thin adapter in each app's live.js; BimCraft, ModelCraft, TakeoffCraft, CivilCraft, DetailCraft and PartCraft now show cursors, names in the person's color and selections; CadCraft and MarkupCraft keep their own views on the same palette. Tested with two real pages per app (tools/live-apps-test/browser-apps.mjs) and test-presence.mjs. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 6 | – From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1128
Link to SU.1128Comment on SU.1128 |
Robot cells in the flow add-on: reach, cycle time and offline robot program export Robot cells in the Material flow add-on (ModelCraft, /lab), Robot cell panel. The person chooses (owner 2026-11-06): a robot model (generic 6-axis, SCARA, delta, Cartesian, and a 6-axis with the UR5e's published kinematics; the joint table is editable and saved with the document) and which program formats to save, several at once, remembered per document and per user: path list (CSV and JSON, always), ROS URDF, ROS joint trajectory, Universal Robots URScript (two public sources, dated in the panel's Sources list). Reach, cycle time, I/O set and wait, pick and place. Left out (a language needs two independent public sources for every statement it uses): ABB RAPID, KUKA KRL (both close), Fanuc, Yaskawa, Kawasaki, Mitsubishi, Staubli, Denso. Reasons in the panel. Vendor programs are minimal, labelled unverified and not run on a robot. Not built: collision checks against the layout, tool/frame statements, blending. Tests: docs/0.9-sessions/flow-robots-09.md. Real-controller check: SU.1128-HAND. |
ModelCraft | Built · Live | 14 | Hand check is community test SU.1128-HAND (not blocking) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1119
Link to SU.1119Comment on SU.1119 |
Environmental analysis: shade studies, daylight, PV yield, wind and outdoor comfort on the site and the building Asked (#1119, Oct 29): what Autodesk Forma and ClimateStudio give: solar angles, shade studies, interior daylight, PV analysis, wind studies, thermal comfort, auto-generated site information. Already built: sun hours and massing (LC.1), daylight, sun and grid (LC.20), EnergyPlus wasm (0.8). Missing: shade-study images and animations on the site, PV yield on roofs and facades, outdoor comfort (UTCI) from weather files, and wind (the hard one: needs a validated solver, never invented). Candidate: owner chooses. **Implementation started 2026-11-02** (0.9 pick #14, third five, hardest first; session `env-analysis-09`, log docs/0.9-sessions/env-analysis-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). **2026-11-02 (env-analysis-09):** built in the shared library lib/envir (solar position tested against NREL SPA and Meeus, shade study with sun/shade-hours maps, shaded-area series and an animation, PV yield on roofs and walls from an EPW file with the model written out, UTCI from the published polynomial, 78 + 17 tests). Wind is not built: it needs a validated solver, and the validation list is in the log. Reachable once the one mount line lands in CivilCraft's massing-ui.js. |
BimCraftCivilCraft | Built · in the lab | 12 | Built in 0.9; wind is Experimental, not validated vs wind-tunnel data (only Cp converges). Owner: check .epw vs PVWatts, UTCI; AIJ/CEDVAL data. From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1082
Link to SU.1082Comment on SU.1082 |
Reverse engineering: scan mesh to NURBS surfaces and solids (automatic surface fit) Asked (#1082, Oct 27): Quicksurface Pro-style reverse engineering of 3D scans; too expensive for private use. mounts-09 2026-11-06 (partial): Help lines landed in ModelCraft and PartCraft nurbs-surfaces.md (rim fillets and variable fillets in what the fit finds; the "does not do" paragraph says where they are looked for); help rebuilt, 0 errors. See docs/0.9-sessions/mounts-09.md. |
ModelCraftPartCraft | Built · Live | 15 | Hand check is community test SU.1082-HAND (not blocking) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1080
Link to SU.1080Comment on SU.1080 |
CivilCraft: GIS analysis tools (buffer, overlay, spatial join, attribute tables) with shapefile and GeoPackage Asked (#1080, Oct 26): a GIS tool; ArcGIS Pro is expensive and the requester has not learned QGIS. CivilCraft has map layers and GeoJSON/LandXML. Do (after a gap check against map layers): attribute table with filters and joins, buffer, clip, intersect and dissolve, symbology by attribute, shapefile and GeoPackage read and write. Candidate: owner decides whether CivilCraft should grow GIS or point people to QGIS. **Implementation started 2026-11-02** (0.9 pick #12, third five, hardest first; session `civil-gis-09`, log docs/0.9-sessions/civil-gis-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). **Built in /lab 2026-11-02 (session civil-gis-09, log docs/0.9-sessions/civil-gis-09.md):** Surface > More > Analyze (or type ANALYZE): buffer, overlay (intersect, union, erase, dissolve), spatial join, select by attribute or shape, measure and statistics, each a new layer in one undo step, with help topic gis-analysis. Shapefile and GeoPackage read/write were already built. **Round 2 built in /lab 2026-11-02 (same log, Round 2):** attribute table (layer menu or Surface > More > Attribute table): sort, filter by expression or words, rows and plan features selected both ways, cell edits with undo, add/rename/remove fields, field calculator (no eval), CSV, 3,000+ features without freezing; Style by attribute (single, categorized, graduated: equal interval, quantile, natural breaks; colour-blind safe ramps, size by attribute for points, polygon tint, legend on the plan), saved in the project file. **Not built:** manual class colours, a legend in plots, adding or deleting rows, field type changes, geodesic buffers. |
CivilCraft | Built · Live | 14 | owner: hand check in /lab with a real parcels file (table, style, Analyze) From: site suggestion (Suggestion) docs/0.9-PLAN.md § 9, from /admin/suggestions 2026-11-02 | ||
FeatureSU.1192
Link to SU.1192Comment on SU.1192 |
DetailCraft: UK steel sizes (UB, UC, PFC, EA, UEA, CHS, SHS, RHS) and unequal angles Asked (#1192, Nov 3): add UK steel member sizes for UB, UC, PFC, EA, UEA, CHS, SHS, RHS. Built in /lab: 976 sizes from the Steel for Life Blue Book (hot finished and cold formed hollow sections apart) in the shared section table, in DetailCraft's profile lists, CadCraft's Standard panel, PartCraft weldments and BimCraft's rolled-shape check. Sizes typed as on drawings work (305x165x40 UB, L100x100x10). DetailCraft now handles unequal angles: both legs in IFC in and out and NC files, a mirror turns the piece end for end. Not checked yet by a UK fabricator; NC files for UEA not run on a machine. |
CadCraftBimCraftDetailCraftPartCraft | Built · Live | 2 | – From: site suggestion (Suggestion) docs/0.9-sessions/uk-sections-shop-set-09.md, from /admin/suggestions 2026-11-04 | ||
FeatureSU.1193
Link to SU.1193Comment on SU.1193 |
DetailCraft: all shop drawings at once, one sheet per part mark, one PDF Asked (#1193, Nov 3): GA drawings are made automatically; do the same for shop drawings, selecting one by one is slow. Built in /lab: Shop drawing needs no selection, its window lists every part mark, downloads one sheet or all in one PDF, numbered Sheet n of N. Channels, angles and hollow sections now get sheets too, so nothing drops out of the set. PDF only (the Drawings window also has DWG and DXF). Not checked yet by the person who asked. |
DetailCraft | Built · Live | 2 | – From: site suggestion (Suggestion) docs/0.9-sessions/uk-sections-shop-set-09.md, from /admin/suggestions 2026-11-04 | ||
FeatureSU.886
Link to SU.886Comment on SU.886 |
Router carving add-on: V-carve, engrave and relief from a depth map to G-code, with an editable post and a program check Asked (#886, Oct 21): an open-source, agent-friendly CAM for hobby CNC routers and laser cutter/engravers: 2D (DWG, DXF, SVG, image) and 3D (STEP, STL, depth map) in, G-code out; cutting, V-carving, engraving, tool library, nesting, simulation, editable post-processors, agents that can check the G-code. Suggested name CamCraft or CarveCraft. Answer (owner 2026-11-04): not a ninth app. Most of it already existed: PartCraft CAM (contour, pocket, adaptive, drill, chamfer, 3D finishing, material-removal simulation, editable posts, LC.15), laser cutting and engraving incl. picture engraving (SU.772), nesting (LC.17), cabinet G-code (SU.1035). The gap was V-carving, relief carving from a depth map, and a G-code check, so it is one add-on over a DOM-free engine in lib/carve (so SuperCad Studio and the other apps can host it). Built in /lab (CadCraft add-on `carving`, off until switched on in Settings > General > Add-ons): V-carve of closed outlines (medial-axis V-bit pass with the depth set by the width, every axis point moved onto the exact bisector; flat floor at a maximum depth cleared by a flat mill or the V-bit), engraving at a depth, relief from a grey picture (drop-cutter finishing with ball, flat or V cutters, layered roughing with a leave); G-code through an editable post-processor (GRBL, LinuxCNC, Mach3, Fanuc style, inches or millimetres); a checker that reads any program back (no feed, no spindle, rapid across the work, outside the table, too deep, no unit, no end); preview of the cut block; commands CARVE, CARVEDRAW, CARVEGCODE. Not built: text to outlines (CadCraft has no such command yet), picture to vector tracing, a tool library, tabs and lead-in arcs, arcs in the G-code, 4/5-axis and lathe, PartCraft / ModelCraft / SuperCad Studio hosts (the engine is shared, an adapter each), the Library listing. Hand checks on a real machine are the owner's. |
CadCraft | Built · Live | 3 | A real machine hand check (owner); hosts in PartCraft, ModelCraft and SuperCad Studio; text to outlines in CadCraft. From: site suggestion (Suggestion) docs/0.9-sessions/carve-09.md, from /admin/suggestions 2026-10-21 | ||
FeatureSU.1209
Link to SU.1209Comment on SU.1209 |
CadCraft: draw.io XML to 2D geometry (DIAGRAM reads <mxfile> / <mxGraphModel>, positions kept) Asked (#1209, Nov 5): turn the draw.io XML a local model (Qwen coder) writes into 2D geometry, so PDF/SVG content a model reads can become drawing objects; feed it straight from a local LLM. Built in /lab: DIAGRAM (T2D), the diagram_from_text tool and its headless twin read draw.io XML: boxes, rounded, ellipse, rhombus, text, swimlane/container boxes (dashed, titled), connectors with waypoints, arrow ends, dashed; HTML labels to text; positions kept (12 px = the text height); draw.io's compressed save is inflated first. Local model: no new code, it already works through AC.7 (Ollama / LM Studio / llama.cpp recipes) calling diagram_from_text with format drawio; not tried with a real local runner (none installed). Untested on real draw.io files beyond the test fixtures; shapes of other kinds are drawn as boxes, images and loose-end connectors skipped and counted. Test: bin/test-cadcraft.mjs, 9 new checks. |
CadCraft | Built · Live | 1 | – From: site suggestion (Suggestion) docs/0.9-sessions/drawio-import-09.md, from /admin/suggestions 2026-11-05 | ||
FeatureSU.1084
Link to SU.1084Comment on SU.1084 |
Schematic capture and circuit simulation (a Multisim-style tool) Asked (#1084, Oct 27): schematic simulation software without a subscription, easy like NI Multisim. Built 2026-11-06 (session circuit-09): the CadCraft add-on `circuit` (Circuit simulation, off by default) on lib/schematic and lib/em. A schematic editor (resistor, capacitor, inductor, DC, AC and pulse sources, current source, switch, diode, LED, NPN/PNP, N/P MOSFET, op-amp, ground), wiring with junctions, net names, a rule check through Problems (no ground, floating pins, duplicate names, two names joined, bad values, no DC path, source loops). DC operating point, transient and AC sweep, read with a meter, scope and plotter placed on nets. Save/Open, netlist export, example, help in English. Measured (public_html/assets/apps/cadcraft/a Discord member/addons/circuit/test/test.mjs, 87 passed; errors printed): divider 2e-9, RC step worst 1e-3 V on 5 V, RLC resonance curve 1e-10, rectifier peak vs an independent Shockley solve 6e-12, op-amp stage 1e-13, MOSFET 1e-11, BJT bias 2e-7, LED 1e-8. Real page in Chromium: test/browser.mjs, 30 passed (with the mount added by a route). Not claimed: equality with Multisim or any program; Multisim files and part models are not read; no real part library (values are typed, generic defaults); op-amp has no rails or bandwidth; no noise, sweeps or Monte Carlo; not tried on a phone or in Studio. Mounted 2026-11-06: "circuit" in CadCraft's a Discord member addons/index.json (off by default); browser test 30/0 with the real index. SuperCad Studio mounts CadCraft inline from its a Discord member build, so the add-on is listed there too. Not claimed: equality with Multisim. |
CadCraft | Built · Live | 6 | – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest | ||
FeatureSU.1132
Link to SU.1132Comment on SU.1132 |
BimCraft: scan to BIM, walls, floors and openings proposed from a point cloud Asked (#1132, Oct 31): scan to BIM, naming the commercial scan-to-BIM programs and plug-ins. Checked 2026-11-05: BimCraft reads point clouds (PLY, PCD, PTX, LAS; E57 in part) as a reference, and the Point clouds add-on (PC rows, CivilCraft, /lab) views, slices and measures large clouds. EG.37 (0.8) was a spike only: a phone scan's slice traced into walls and rooms, not in BimCraft's menus. Not built: the point clouds add-on in BimCraft (PC.11, planned) and automatic extraction of walls, floors, columns, doors and windows. Do, after PC.11: slice by level, fit wall lines to the slice (the 0.7 plan trace), propose walls with thickness and height for the person to accept, and report how far each wall is from the points. Nothing was built for this card on 2026-11-05. scan-bim-09 2026-11-06 (partial): see docs/0.9-sessions/scan-bim-09.md. |
BimCraft | Built · Live | 6 | Hand check is community test SU.1132-HAND (not blocking) From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest | ||
FeatureSU.961
Link to SU.961Comment on SU.961 |
Sprockets for roller chain by standard (the missing third of #961) Asked (#961, Oct 24, in Spanish): nesting of parts inside the CAD, standard profile tables as in AutoCAD Mechanical, and sprockets. Checked 2026-11-05: nesting is built and released (PartCraft's Nest flat parts, CadCraft's Nesting add-on; SU.755, NEST-CAD-PATH) and standard steel profiles are built (the shared section tables in CadCraft's Standard panel, PartCraft weldments, DetailCraft; UK sizes in /lab by SU.1192). Built 2026-11-06 (sprockets-data): sprockets are a CadCraft add-on, Roller chain sprockets (id chain, off by default, in the lab): SPROCKET draws the real tooth outline for a chain number and tooth count; CHAINS lists the table; CHAINSOURCES names the catalogues. Table lib/chain/chain-table.json: 38 chains (ANSI 25 to 240, ISO 606 A series 08A to 48A with 085, B series 04B to 48B), pitch, roller, inner width and plate height read from nine public catalogues on 2026-11-06 and kept only where two agree (tools/chain/chain-sources.mjs, build-chain-table.mjs); NOT copied from ISO 606 or ASME B29.1. Left out: ISO 04C, 06C, 36A (one catalogue only) and plate heights the catalogues dispute (null). Found by the real rows: the default tip circle let the swinging roller hit the tip edge at 25 to 28 teeth, now 0.35 p above the pitch circle. Tests: test-chain-table.mjs 3326/0 (every chain draws and seats at 9 to 80 teeth), test-chain.mjs 298/0, add-on test 14/0, browser-chain.mjs 11/0 in /lab/cadcraft, catalogue entry + listing seeded (lab). Limits: the tooth form (2 % seat clearance, 80 degree seat half angle, tip, tooth width) is our generator's, not the standard's, and no sprocket was compared with a catalogue sprocket; CadCraft only (PartCraft, ModelCraft and SuperCad Studio hosts and Library items on the owner's seed go are not done). |
CadCraftPartCraft | Built · Live | – | – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest | ||
FeatureSU.810b
Link to SU.810bComment on SU.810b |
A live link from a .3dm modeller into ModelCraft and PartCraft (one way, a script on the other side) Asked (#810, Oct 19): a live connection between Rhino models and our apps, perhaps through Grasshopper. Built 2026-11-06, in /lab (log docs/0.9-sessions/3dm-link-09.md; design docs/spikes/SU.810.md). One script, cadcraft_link.py, runs in Rhino (watches the document, pushes after a pause, only what changed) and in a Grasshopper Script component (each solve). It sends .3dm bytes to Studio on this computer; link_push and link_status replace what the link brought last time: one group in ModelCraft (its placement, tag and neighbours stay; pushes within 2 s share an undo step), one import feature in PartCraft (features rebuild; a model that does not close changes nothing and says so). Over 4 MB goes in parts. The saved file keeps the link. Library lib/3dm-link, help live-3dm-link in both apps. Tests: tools/3dm-link/test.mjs 31/0; browser.mjs 38/0 (the real script with rhino3dm's writer, through the reference server and hub relay, into real /lab pages). Never run: real Rhino and real Grasshopper (none here; a stand-in plays their document and events, member names checked against McNeel's docs), Studio's native server, files saved by Rhino itself, SuperCad Studio's mounts. Not built: changes going back the other way, a packaged plug-in. |
ModelCraftPartCraft | Built · Live | 3.25 | – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest | ||
FeatureSU.1087
Link to SU.1087Comment on SU.1087 |
ModelCraft is the SketchUp-style modeller, with CAD tools beside it in CadCraft Studio Asked (#1087, Oct 28): SketchUp with a full CAD tool set pre-installed; the last free version (2017) is hard to find and runs badly on new machines. Covered by what is built and released (checked 2026-11-05; nothing new was built for this card): ModelCraft is our push/pull modeller in the SketchUp style, free, in the browser and in CadCraft Studio; it imports .skp files with groups, components, colours, textures, tags and soft edges (help "Bring in an SKP model"); CadCraft (2D and 3D CAD), PartCraft and the other apps are in the same CadCraft Studio. Not the same program: SketchUp extensions (Ruby plug-ins) do not run, and .skp is read, not written. Test re-run 2026-11-05: tools/skp-test/test.mjs --no-fuzz (see the log). |
CadCraftModelCraft | Built · Live | 0 | – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest | ||
FeatureSU.1120
Link to SU.1120Comment on SU.1120 |
CivilCraft covers eSurvey-style work: contours, cut and fill, cross and long sections, KML Asked (#1120, Oct 29): eSurvey-style software for civil projects: soil cut and fill, contour maps, KML files, cross sections and longitudinal sections. Covered by CivilCraft, released (checked 2026-11-05; nothing new was built for this card): contours (help "Read contours, elevations and slopes"), cut and fill volumes ("Earthwork volumes"), cross sections with cut and fill at each station ("Sample lines and cross sections"), longitudinal profiles ("Design a vertical profile", "Plan and profile sheets"), KML and KMZ out and in (the GIS export and import topics). Not checked: eSurvey's own file formats or a side-by-side with its outputs. Tests re-run 2026-11-05: test-civilcraft-kml, -sections, -earthwork (see the log). |
CivilCraft | Built · Live | 0 | – From: site suggestion (Suggestion) docs/0.9-sessions/suggestions-sweep-09.md, from /suggest | ||
FeatureBot obtainedSU.1056b
Link to SU.1056bComment on SU.1056b |
Wind loads by ASCE 7 and the code seismic hazard data and spectrum Split from SU.1056 (ETABS ask #1056): wind by code, the code's seismic hazard data and the spectrum. Built, owner 2026-11-06 (do not wait for bought pages). Reachable in the Analysis panel of BimCraft and DetailCraft: Wind loads (ASCE 7-10 / 7-16 directional procedure, rigid enclosed building: V, exposure B/C/D, Kzt, Kd, Ke, G, enclosure, qz at every floor, wall pressures, a force on every floor as load cases +-X/+-Y), Seismic site and system (Ss, S1, site class A-D to Fa, Fv, SDS, SD1 for 7-16; SMS/SM1 for 7-22; R, Cd, Omega0 of seven systems; design spectrum; optional USGS lookup only when you press the button; fills the Seismic block), ASCE 7 combinations (LRFD and ASD, vertical seismic effect, overstrength) feeding the combination machinery. Saved with the model, in the PDF/CSV report, with a Sources list and a left-out list in the panel. Spectrum module lib/frame/spectrum-asce7.js designSpectrum({SDS, SD1, TL}) for the response-spectrum analysis. Method: every value kept only if two independent public pages print it (URLs and date read in lib/frame/loads-sources.js). Left out and listed: ASCE 7-22 wind, V by risk category, Kz table beyond the formula, leeward Cp for L/B above 1 (-0.5 used and flagged), roof pressures, site class E/F, Ie for risk I/III, most of Table 12.2-1, 7-22 combinations, Eurocode wind. The 0.8 constants were checked: Ct SI values were on no page (now converted from the US values), Table 12.12-1 drift ratios are unconfirmed (flagged). Known-answer tests from published examples (STAAD, SkyCiv, SEAOC, FEMA P-2192). Not a code check; no claim of equality with any program. Hand check: SU.1056b-HAND. wind-seismic 2026-11-06: docs/0.9-sessions/fem-09.md |
BimCraftDetailCraft | Built · Live | 12 | Hand check is community test SU.1056b-HAND (not blocking); response spectrum analysis itself is built by the dynamics session docs/0.9-sessions/fem-09.md, split from SU.1056 | ||
| Engineering gaps (Track EG) 2 | |||||||
SpikeEG.21
Link to EG.21Comment on EG.21 |
Spike: AR on site — the model at full size through a phone Place a BimCraft or ModelCraft model at full size on site through a phone camera (WebXR immersive-ar; Safari on iPhone has none, so the spike says what iPhone users get). Owner's review list 2026-10-27 (duplicates removed). Plan docs/0.8-PART5.md. Widened 2026-10-27 (second list): also show what is hidden in a wall or slab — pipes, conduit, rebar — aligned to the model on a tablet. |
BimCraftModelCraftStudio | App codeDesktop host | Built · Live | 3 | You: an Android phone with ARCore and a tape measure. Session: AR session, align dialog, x-ray lens (about 5 days). Spike: docs/spikes/EG.21_PART_4.md From: owner (Owner) Owner, 2026-10-27 (engineering gaps list, add to 0.8) | |
SpikeEG.37
Link to EG.37Comment on EG.37 |
Spike: phone scan of a building into BimCraft walls and rooms Read a phone LiDAR scan (PLY, OBJ or E57 from a scanning app; the readers exist) and build walls, floors and rooms from a slice with the 0.7 plan trace. MEP is not part of this. Owner's second list 2026-10-27 (duplicates removed). Plan docs/0.8-PART5.md § Second list. |
BimCraft | App code | Built · Live | 4 | You: send 2-3 real phone scans with a tape-measured wall. Session: BimCraft menu and panel mount (closing_PART_4 inbox). Log: spikes_PART_4.md From: owner (Owner) Owner, 2026-10-27 (engineering ideas list, add to 0.8) | |
| From GitHub (to review) 2 | |||||||
FeatureBot obtainedGH.5
Link to GH.5Comment on GH.5 |
DWG reader: class list fails when a class's maintenance version is 256 or more (read as BITSHORT, spec has BITLONG) ## Summary `readClassesSection` in `app/dwg/read.js` (line 229) reads each R2004+ class record's DWG version and maintenance version as BITSHORT. The Open Design Specification for .dwg files v5.4.1, chapter 10, gives both as BITLONG. The two encodings agree for values 0 to 255 and part from 256 up: BITSHORT code 00 is followed by 16 bits and BITLONG code 00 by 32, and BITSHORT code 11 means 256 where BITLONG has no code 11. So a class whose maintenance version is 256 or more shifts every later field by 16 bits, and the read stops with `Classes could not be read: bad BITLONG code 11`. ## Where we saw it Three real R2018 (AC1032) drawings from a third party (we cannot share the files). Their class records carry DWG version 33 with maintenance version 329 for MLEADERSTYLE, ACDBDETAILVIEWSTYLE and SUN. The classes before the first of those (ACDBDICTIONARYWDFLT, MATERIAL, VISUALSTYLE, SCALE, TABLESTYLE) read fine, so the read fails on the class right after MLEADERSTYLE. A fourth R2018 drawing whose classes are all below 256 reads correctly. ## Effect - `model.classes` comes back empty, with the note `Classes could not be read: bad BITLONG code 11`. - Every class-based object then reads as unknown (`CLASS_5xx` in `report.unknown`). In our files that included two IMAGE entities inside a title block definition, which dropped out of the drawing. - `writeDwg(readDwg(bytes), { version: 'AC1032' })` leaves those objects out: "Not copied (cc-dwg cannot write them in this version, or they depend on them): 3 CLASS_501, 24 CLASS_502, 17 CLASS_503, 1 CLASS_504, 1 CLASS_505, 1 CLASS_506, 1 CLASS_507, 1 CLASS_508, 2 CLASS_511, 2 CLASS_512, 1 CLASS_513, 5 CLASS_509." Model space, layer… Opened on GitHub by a Discord member: https://github.com/getcadcraft/cadcraft/issues/5 Sweep 2026-11-05: accepted into 0.9 (planned). cad-fix-09 2026-11-05 (done): see docs/0.9-sessions/cad-fix-09.md. |
CadCraft | Built · Live | – | – From: a Discord member (GitHub) GitHub getcadcraft/cadcraft#5, Oct 28, 2026 | cadcraft#5 open | |
FeatureBot obtainedGH.10
Link to GH.10Comment on GH.10 |
Assistant/MCP: tools to place electrical devices (sockets, switches, lights, …) ### What do you need to do Let an AI assistant place electrical devices (sockets, switches, luminaires, detectors, boards, …) through the MCP / assistant interface, the same way it can already draw walls, openings, floors and cable carriers. Today the assistant tool set has no way to create a device: - `carrier_add` draws cable trays and conduits, and `carriers_check` / `lighting_check` / `loads_set` / `photometry_set` work on what is there, - but none of the ~80 tools (`agents.js`, `mep-agents.js`, `bim-agent.js`, …) places a device. `furniture_add` only furnishes rooms by rule. So an assistant can route conduits to an outlet it cannot create, and an electrical plan still has to be clicked in by hand. The building blocks already exist in `app/res-elec.js` (`placeDevice`, `changeDevice`, `linkLight`, `removeDevices`, `DEVICES` with 33 kinds). Exposing them as tools would cover it, for example: | Tool | Does | Arguments (sketch) | |---|---|---| | `devices_add` | Place one or more devices | `level`, `kind` (a key of `DEVICES`), `at` [x, y] mm, optional `wall` (snap to the nearest wall face like the UI does), `height`, `angle`, `circuit`, `load_w`, `tag` | | `device_change` | Change tag, circuit, load, height, position | `guid` + fields | | `lights_link` | Link a switch / sensor to the lights it controls | `switch`, `lights[]` | | `devices_delete` | Remove devices (and unlink lights) | `guids[]` | | `devices_list` | Devices of a level with kind, tag, circuit, load, height, host wall, linked lights | `level` | Typical requests this would enable: - "Put a double socket every 2 m along the walls of the living room on level 1, 300 mm high, circuit 3." - "Add a ceiling li… Opened on GitHub by a Discord member: https://github.com/getcadcraft/bimcraft/issues/16 Sweep 2026-11-05: accepted into 0.9. Assistants/MCP tools to place electrical devices; belongs with the add-on's device kinds (ELEC-BUILDING). bim-hosts-09 2026-11-06 (done): see docs/0.9-sessions/bim-hosts-09.md. |
BimCraft | Built · Live | – | Hand check is community test GH.10-HAND (not blocking) From: a Discord member (GitHub) GitHub getcadcraft/bimcraft#16, Nov 3, 2026 | bimcraft#16 open | |
| Drafting and app features 4 | |||||||
FeatureWB.6
Link to WB.6Comment on WB.6 |
CivilCraft New Feature: Corridor, Templates, Terrain Templates and a Template Creation tool -Template Creation Tool: A Template creation tool would be nice to see. The template creation tool should be designed to allow users the freedom to create any object. Points should be controlled through parametric constraints or targeting. -Terrain Template: Other software packages use the idea of applying a template to a terrain and it is a game changer for designers. Placing a template on a terrain allows 3d volumetric components to be "draped" on a terrain. i.e., 6" of Topsoil can be placed below a terrain or 5" of pavement with 12" of Base can be place on a terrain of a parking lot. This allows designers to create a site grading design and apply material without using a corridor modeler. Ideas: The 0,0 point of the template controls the point materials are built vertically. Any component or shape is applied to the terrain from the 0,0 point. Widths and slopes don't matter for these types of templates. Terrain templates can be clipped by a 2d shape in plan view. This will allow multiple terrain templates can be used on a terrain if different materials are required. -Corridors: Multiple Corridors: Please allow for multiple corridors to be applied to an alignment. Long alignments require the design to be broken into pieces at times. Multiple Templates : Allow multiple templates to be applied at once. i.e. Template for pavement and end condition Lt & Rt. The end condition templates can be controlled separately. Creating small reusable templates. **Built:** Built in /lab 2026-11-02 as SU.1110 (civil-templates-09): the template creation tool (parametric points, targets), terrain templates draped from the 0,0 point and clipped by a parcel, pad or closed feature line, several corridors on one alignment, several templates by station, left and right end conditions. Surface › More › Corridor templates… and Terrain templates…; an alignment's Properties › Corridor. |
CivilCraft | Built · Live | – | – From: a visitor (Site) | ||
FeatureWB.10
Link to WB.10Comment on WB.10 |
Civilcraft: Add basic drafting tools. Snapping on elements. Move , Copy Rotate etc.... Drawing tools needed in Civilcraft. Snaps are need when drawing parcels, alignments and pads. All menu dialogs with coordinates show should have a button to allow users to snap to a point in the drawing. Entering N,E,Z manually is very , very time consuming and not used by any major civil design programs anymore. Points and bearings should have a pick button on all menus. Tangents should have two pick button to define the bearing with two points. **Built:** Built in /lab 2026-11-06 (civil-snap-09). Snaps: the Alignment, Pad, Parcel, Mass, Feature line, Measure, Boundary and Catchment tools and a dragged PI or corner snap to survey points and to PIs, pad / parcel / mass corners, feature-line vertices and structures within 10 px (a marker with a label and the E, N; Alt = free). A crosshair Pick button sits beside a PI's northing, every corner's northing and the move / rotate blocks. Tangent from two points under the PI table. Move, copy and rotate (typed distance or two picked points; about the middle or a picked point) for an alignment, pad, parcel and feature line. Not yet: snap to a segment middle or crossing, Pick in the landscape / power-line / water panels, move of storm networks. |
CivilCraft | Built · Live | – | – From: a visitor (Site) | ||
FeatureWB.15
Link to WB.15Comment on WB.15 |
Alignment and Parcels coordinates 1. Allow users to enter Northings and Eastings for parcel and alignment vertices. 2. Allow users to snap to objects when creating or editing alignments and parcels. A pick button in the properties dialog for the N,E would be great. Users can snap to an existing element and the NE for the vertex will be updated. **Built:** Built in /lab 2026-11-06 (civil-snap-09). Alignment PIs already took a typed E / N; now pad, parcel and feature-line corners list typed E and N too, and every one has a Pick button: press it, click a place in the plan (snapped to survey points, PIs, corners and vertices; Alt = free), and the vertex takes that easting and northing, one undo step. Drawing and dragging alignments and parcels snaps the same way. |
CivilCraft | Built · Live | – | – From: a visitor (Site) | ||
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 | |
| BIM interop 1 | |||||||
FeatureGH.3-A
Link to GH.3-AComment on GH.3-A |
One display unit everywhere Audit and fix the display-unit pick so coordinates, measurements, sections and sheet scale families all follow it (feet-inches, decimal feet, inches, millimetres, centimetres, metres). Imported DWG coordinates keep their native units where their meaning must stay. Part of GH.3 (GitHub getcadcraft/bimcraft#3). Owner approved 2026-10-29; scheduled for 0.9. |
BimCraft | Built · Live | 2 | Requester asked to test 2026-11-03 (bimcraft#3); lab pass once he sends his account email From: yisraelk (GitHub) GitHub getcadcraft/bimcraft#3, Oct 22, 2026 | ||
| Requests for 0.8 5 | |||||||
FeatureD8.12
Link to D8.12Comment on D8.12 |
BimCraft: a working style in Settings — how duplicated views, printing and element classes behave Discord (a Discord member, Oct 28; owner 2026-10-30: "feels like a LAYOUT in settings"): people coming from the two big BIM programs expect different behaviour, and neither is wrong. Settings › BimCraft › Working style picks a preset that sets the defaults of D8.12-A…D, each still changeable on its own, like the workspace layouts (Track WS): - Each view its own (default): a duplicated view copies its annotations and they stay that view's; sheets print as the screen shows. - Shared annotations and pen tables: duplicates share annotations; printing goes through a pen table. Names describe the way of working, never a product (trademark rule). Checked in /lab 2026-10-30 — already there: families and the family editor (BIM-FAM-MORE, partly built), docked ribbon and toolbox + info box layouts (Track WS), drafting shown only in its own view (DC.117 d), view templates (DF.19), per-view pen overrides (SU.1055, partly). Missing: D8.12-A duplicate a view, D8.12-B print as shown, D8.12-C use an element as another class, D8.12-D project templates. Also from the thread: a Discord member pointed at the vendor's public ideas forum (most-voted) as a list of what users miss; a Discord member offered to work through our project files as an experienced user — the owner/a Discord member to send files. **Implementation started 2026-11-02** (0.9 top-5 pick #2, hardest first; session `bim-views-09`, log docs/0.9-sessions/bim-views-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
BimCraft | App code | Built · Live | – | – From: Discord community (Discord) Discord 2026-10-28 | |
FeatureD8.12-A
Link to D8.12-AComment on D8.12-A |
BimCraft: duplicate a view, as its own copy or linked Today a plan is one view per level plus callouts; there is no Duplicate. Add Duplicate on plans, ceiling plans, sections, elevations and callouts with a choice: Own copy (drafting, dimensions, crop, hidden elements and pen overrides copied; editing or deleting them changes only that view — the default) or Linked (one set shared by both views). The working style (D8.12) sets which one is offered first. Older views on issued sheets must never change because a later copy was edited (the requester's point: revisions are not a straight line). Stored in the IFC as now (CadCraft_PlanView / CadCraft_Drafting View key). Part of D8.12. **Implementation started 2026-11-02** (0.9 top-5 pick #2, hardest first; session `bim-views-09`, log docs/0.9-sessions/bim-views-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
BimCraft | App code | Built · Live | – | – From: Discord community (Discord) Discord 2026-10-28 | |
FeatureD8.12-B
Link to D8.12-BComment on D8.12-B |
BimCraft: print as shown — pen overrides saved in the file and on sheets and PDF Pen overrides (SU.1055, pens.js) live in the browser only (localStorage bimcraft.pens), cover walls, doors and windows, and are not on the printed plan yet. Do: keep them in the IFC with the view, cover every category (and drafting), and draw sheets and the PDF exactly as the screen shows (default). The other working style prints through a pen table (colour → weight and ink), reusing CadCraft's plot-style work (DC.14) rather than a second format. Closes SU.1055's pen-override rest. Part of D8.12. **Implementation started 2026-11-02** (0.9 top-5 pick #2, hardest first; session `bim-views-09`, log docs/0.9-sessions/bim-views-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
BimCraft | App code | Built · Live | – | – From: Discord community (Discord) Discord 2026-10-28 | |
FeatureD8.12-C
Link to D8.12-CComment on D8.12-C |
BimCraft: use an element as something else — a wall as a panel, a slab as a road or shelf, a roof as a ramp Keep the drawing tool's geometry and editing but report the element as another IFC class (and predefined type), so schedules, takeoff, Problems and the IFC export count a slab drawn as a road as a road, not a floor. A "Report as" field in Properties (search of IFC classes that fit the shape), one undo step, round-trips through IFC2X3 and IFC4; schedules group by the reported class. The requester's point: the other program files these as generic models and its schedules stay wrong. Part of D8.12. **Implementation started 2026-11-02** (0.9 top-5 pick #2, hardest first; session `bim-views-09`, log docs/0.9-sessions/bim-views-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
BimCraft | App code | Built · Live | – | – From: Discord community (Discord) Discord 2026-10-28 | |
FeatureD8.13
Link to D8.13Comment on D8.13 |
Add-on: factory floor — from CAM to the machines, cell control and SCADA monitoring Discord (a Discord member, Oct 29): "CAMCraft", CAM + factory control + SCADA in the suite. Owner 2026-10-30: an add-on, not an app (eight apps). Pieces already in 0.8: CAM with editable posts in PartCraft (LC.15), send G-code to a machine on the network (EG.40, partly), the flow add-on for layout and simulation (SU.858), soft PLC with ladder / structured text (XE.13, partly), live data over OPC UA, MQTT, Modbus, BACnet (XE.9, IND.12, partly), plant historian (CH.27). The add-on ties them into one place: a machine and cell list (from the flow layout), a job queue that posts and sends programs to each machine, machine state read live (OPC UA, MQTT, MTConnect), an operator screen drawn over the layout with values, alarms and trends, history and simple OEE. Reading first; writing to a running machine or PLC stays off by default, behind a per-device switch and a confirm. Not a safety system and never in a safety chain — help says so. |
ModelCraftPartCraftStudio | App codeOur enginesDesktop host | built | – | – From: Discord community (Discord) Discord 2026-10-29 | |
| Hardware design: HDL to silicon (Track HD) 4 | |||||||
FeatureHD.1
Link to HD.1Comment on HD.1 |
Chip design: Verilog and VHDL source, checks, hierarchy Edit hardware description files with syntax checks and a module hierarchy view. Plan docs/0.8-PART8.md. |
CadCraftSuperCad Studio | App code | Built · Live | 4 | Tried on our own sample only From: Discord community (Discord) Discord (a Discord member) 2026-10-30; owner: add this to 0.8, probably an add-on | |
FeatureHD.2
Link to HD.2Comment on HD.2 |
Chip design: netlist graph and schematic view Read structural Verilog into a netlist graph and show it as a schematic using the shared schematic engine. Plan docs/0.8-PART8.md. |
CadCraftSuperCad Studio | App code | Built · Live | 3 | Tried on our own sample only From: Discord community (Discord) Discord (a Discord member) 2026-10-30; owner: add this to 0.8, probably an add-on | |
FeatureHD.3
Link to HD.3Comment on HD.3 |
Chip design: Liberty, LEF, DEF and SDC files Our own readers and writers for cell timing and power libraries, floorplans and timing constraints, written from the public format descriptions. Plan docs/0.8-PART8.md. |
CadCraftSuperCad Studio | App code | Built · Live | 4 | Own samples only; no vendor/PDK files tried yet From: Discord community (Discord) Discord (a Discord member) 2026-10-30; owner: add this to 0.8, probably an add-on | |
FeatureHD.7
Link to HD.7Comment on HD.7 |
Chip design: GDSII and OASIS layouts Read and write GDSII and OASIS with layer maps, hierarchy and a fast view of large layouts. Plan docs/0.8-PART8.md. |
CadCraftSuperCad Studio | App code | Built · Live | 4 | No third-party OASIS file tried yet From: Discord community (Discord) Discord (a Discord member) 2026-10-30; owner: add this to 0.8, probably an add-on | |
| Add-on Library 3 | |||||||
FeatureBot obtainedOF.1
Link to OF.1Comment on OF.1 |
Offline on this device: one package of all my add-ons On /account/addons, one button makes every add-on on the account list (and the engines they need) available offline in this browser, with a readiness check and a size, so a registered user can fly with no Wi-Fi. Remove is one button too. Owner 2026-10-31. Spec docs/0.9-OFFLINE-ADDONS.md. **Implementation started 2026-11-02** (0.9 top-5 pick #5, hardest first; session `offline-09`, log docs/0.9-sessions/offline-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
– | Built · Live | – | Lab testers now (in the Library); everyone when ADDON_LIBRARY_PUBLIC=1. Owner, 2026-10-31 | ||
FeatureBot obtainedOF.2
Link to OF.2Comment on OF.2 |
"Use offline" on the add-on listing On the "Use this add-on:" frame of a free add-on: signed in goes to the account's offline section; no account adds it to this browser's list and fetches it now. Paid add-ons show none until OF.5. Owner 2026-10-31. Spec docs/0.9-OFFLINE-ADDONS.md. **Implementation started 2026-11-02** (0.9 top-5 pick #5, hardest first; session `offline-09`, log docs/0.9-sessions/offline-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
– | Built · Live | – | Lab testers now (in the Library); everyone when ADDON_LIBRARY_PUBLIC=1. Owner, 2026-10-31 | ||
FeatureBot obtainedOF.3
Link to OF.3Comment on OF.3 |
No account: your add-ons in this browser, offline A panel in the Library for a visitor with no account: the free add-ons they added to this browser, with the same one-button offline action. The list merges into an account if they sign up. Owner 2026-10-31. Spec docs/0.9-OFFLINE-ADDONS.md. **Implementation started 2026-11-02** (0.9 top-5 pick #5, hardest first; session `offline-09`, log docs/0.9-sessions/offline-09.md). Status moves to Partly built or Built only when the code is reachable and tested (rule 49). |
– | Built · Live | – | Lab testers now (in the Library); visitors see it when ADDON_LIBRARY_PUBLIC=1. Owner, 2026-10-31 | ||
| Platforms and stores 2 | |||||||
FeatureRL.1
Link to RL.1Comment on RL.1 |
/download: "Where we release" with current and planned release streams A tabbed section on /download (#release-streams): Current release streams (this page, the browser at /use, updates inside Studio, GitHub releases) built from Downloads, so a channel shows only with real files; Upcoming and planned streams (Microsoft Store, winget, the signed Windows package, npm/npx, Apple App Store, Homebrew, Google Play, Flathub), no dates. Source: Catalog::releaseStreams() + RELEASE_STREAMS_PLANNED; component core/components/release-streams.inc. TestFlight is not a release stream (owner). Tests: bin/test-product.php. |
Studio | Site and services | Built · Live | – | – From: owner (Owner) owner 2026-11-01 | |
FixRL.2
Link to RL.2Comment on RL.2 |
/download notices brought up to date for 0.8 The Windows notice and the requirements table no longer say automatic updates are off: the Windows installer, .deb and AppImage check for updates (from the release's updates.json). The WebView2 notice says fixes arrive with each Studio version. The Spanish and Indonesian notices became one: every app offers the machine-made draft languages (count read from the CadCraft build), getting-started help only. Mac and Android still say updates are off (not in the feed). |
Studio | Site and services | Built · Live | – | – From: owner (Owner) owner 2026-11-01 | |
| Fixes 104 | |||||||
FixFX.23
Link to FX.23Comment on FX.23 |
CadCraft: moving a hatch left its pattern behind MOVE, ROTATE and SCALE moved a hatch's outline but its pattern stayed anchored where it was, so the lines shifted inside the shape. geom.js txEntity now takes the origin along, and for built-in patterns the angle and scale on a turn or scale. Mirror keeps the pattern angle. Found while building PLAN2D.1. Test tools/cadcraft-test/plan2d.mjs. Not tested: patterns from a file (custom lines) under rotation, which keep their angle. |
CadCraft | Built · Live | – | – From: Discord community (Discord) Discord, a Discord member, 2026-11-02 | ||
FixFX.47
Link to FX.47Comment on FX.47 |
Hatch pattern files (.pat) in CadCraft Asked on Discord by a Discord member: does hatching work, and can .pat files be used? Hatching already worked (16 built-in patterns, scale, angle, origin, islands, associative, and a DXF/DWG file's own patterns). New: the HATCH command has a Pattern file option (F) that reads a .pat file (one or many patterns, comments, dashes and dots), and the patterns can be used by name (P, ? lists them). The hatch keeps its pattern with it, so it still draws on another computer and still takes scale and angle in Properties; DWG save writes its lines. A .pat file has no unit: sizes are taken as drawing units. New file: a Discord member/patfile.js; hatch.js patternFamilies; test: 'Hatch pattern files' (6 checks). Not done / untested: no pattern picker with previews; a patterns library that stays between sessions (the file is read again next time); a real .pat file from another program (tested with files written to the format only); DXF export still writes the outline only (as for every hatch). |
CadCraft | Built · Live | 1 | – From: Discord community (Discord) Discord, a Discord member, 2026-11-05 | ||
FixFX.49
Link to FX.49Comment on FX.49 |
BimCraft: Add levels takes heights below the lowest level Asked on Discord by a Discord member: is there a way to create a level below the lowest level made so far? The Levels panel already had Add a level below (DC.119). The Add levels dialog (At these heights) still refused anything under 0; it now takes negative heights (for example -10'-0", -20'-0"): the new level reaches up to the next level above it and is named Level -1 (nearest the ground), Level -2, and so on. One undo step. Test: draw06 'Add levels at -6000 and -3000' (225/0). Not tested: a real project with walls or a slab at the lowest level (the levels are added, nothing else moves), a desktop build. |
BimCraft | Built · Live | 1 | – From: Discord community (Discord) Discord, a Discord member, 2026-11-04 | ||
FixFX.1
Link to FX.1Comment on FX.1 |
BimCraft: Move works on stairs (and ramps, railings, roof planes, free-standing devices, pictures, paths) Reported from the browser edition of BimCraft 0.8.1: with an L-shaped stair with winders selected, Build > Move did nothing and a drag panned the plan. Move, Align and Distribute only knew walls, floors, columns and placed library items. Now a stair moves by a vector (its steps, rails and stairwell are made again; one undo step; selecting any of its parts counts as the stair). The same fix covers ramps, railings, roof planes, free-standing electrical devices, pictures and paths / driveways / patios. Devices on a wall, foundations, floors, ceilings, rooms, countertops, framing, dormers and doors / windows follow their parent and are not moved on their own. Copy is refused for these (as for placed items). No grips on a selected stair: Move is the way. Tests: bin/test-bimcraft.mjs --modify (stair, ramp, railing, roof plane, device); pictures and paths wired but not yet exercised by a test. Site masses and terrain are not movable. |
BimCraft | Built · Live | – | – From: site feedback (Site) feedback email 2026-11-03, BimCraft 0.8.1 browser | ||
FixFX.2
Link to FX.2Comment on FX.2 |
Render falls back to WebGL when the GPU cannot start (Windows dxcompiler.dll error 87) Reported by email: 'Failed to execute requestDevice on GPUAdapter: DynamicLib.Open: dxcompiler.dll Windows Error: 87' and the render stopped. The WebGPU path tracer already fell back to WebGL when GPU setup failed, but a requestDevice rejection carried no code, so the fallback never ran. pt-gpu.js and pt-denoise-gpu.js (BimCraft and ModelCraft) now tag that failure gpu_setup, so the still render drops to the WebGL engine instead of failing. The live view (ipr.js) calls the tracer without that fallback and may still show the error; not checked. Not tried on a Windows machine with the broken driver. Advice to the reporter: update the graphics driver and the browser, send chrome://gpu. |
BimCraftModelCraft | Built · Live | – | – From: site feedback (Site) feedback email 2026-11-03, Windows WebGPU | ||
FixFX.3
Link to FX.3Comment on FX.3 |
CadCraft: Thai text prints in a PDF plot (was "?") Reported on CadCraft 0.7.1 in the browser: PLOT to PDF printed every Thai character as a question mark (command line: '219 characters the PDF font has no glyph for'). Cause: plot.js embedded Liberation Sans (Latin, Greek, Cyrillic) and fell back only to the CJK font, which has no Thai. Fixed in the a Discord member build: a Thai font (Noto Sans Thai, OFL 1.1, Thai + Latin + digits, ~220 KB, assets/vendor/thai-sans, current symlink) is fetched only when a plot has Thai text, subset to the glyphs used and embedded with a ToUnicode map. Thai tone marks are placed by pdf-font.js (the font has no layout engine here): centred over upper vowels, over sara am's ring (น้ำ), left of tall consonants (ป่ ฝ่ ฟ้), lower vowels under ญ ฐ. Checked by rendering a PDF (ที่ นี้ ผู้ ก็ ป่า น้ำ ห้องน้ำ พื้น ชั้น) and by 6 new tests in bin/test-cadcraft.mjs (2772 pass). Not covered: characters the Thai font lacks (± and ⌀ print "?" in a Thai plot and are counted in the report); one font per file, so a drawing with Thai and Chinese together keeps whichever leaves fewer "?"; Arabic, Hebrew and Indic scripts still have no font; SVG / PNG plots use the browser's fonts and were not changed. LIVE in the browser edition since 2026-11-03 as CadCraft 0.8.2 (0.8.1 plus only these files; docs/releases/0.8.2.md). Studio and the desktop apps get it with the next Studio build. |
CadCraft | Built · Live | – | – From: site feedback (Site) support email 2026-11-03, CadCraft 0.7.1 browser | ||
FixFX.4
Link to FX.4Comment on FX.4 |
/studio facts list no longer says "Live: Local code (invite links not open yet)" The Studio page's facts list had a Live row reading "Local code (invite links not open yet)" while invite links are off. The row now shows only when invite links are open (LIVE_PUBLIC), as "Local code, or invite link". The Live section lower on the page and the FAQ still say invite links are not open yet; bin/test-product.php updated, not re-run. |
– | Site and services | Built · Live | – | – Owner, 2026-11-03 | |
FixFX.5
Link to FX.5Comment on FX.5 |
Privacy notice: "Placeholder document" box removed /legal/privacy no longer carries the dashed Placeholder document box saying it was not reviewed by the owner or a lawyer. The terms page still has its own. test-resources.php updated and passing (274). The wording itself has not had a legal review. |
– | Site and services | Built · Live | – | – Owner, 2026-11-03 | |
FixFX.6
Link to FX.6Comment on FX.6 |
Tutorials: each app's What's new said 0.7; now 0.8 and 0.8.1 The eight apps' What's new help topics still described 0.7, including in the frozen 0.8.1 builds. New "What's new in 0.8 and 0.8.1" topics written from the release notes (a Discord member help, compiled); the 0.7 text stays as whats-new-0-7. The site shows the a Discord member copy of the release-note topics only when its title names the shown build (Help::withReleaseNotes); the 0.8.1 builds' in-app help still has the 0.7 text. Translations of the topic are stale. The eight pages were written by background agents; only TakeoffCraft's was read through by hand. |
– | Help and wordsSite and services | Built · Live | – | – Owner, 2026-11-03 | |
FeatureFX.7
Link to FX.7Comment on FX.7 |
Tutorials: search bar on /tutorials, each app's help and the basics A server-side search (no JavaScript) over the compiled help: every word must match, title and keyword hits rank first, highlighted snippets, result pages noindex (Help::search, help-search.inc). Not added to single topic pages. Checked over HTTP on live pages; no automated test written. |
– | Site and servicesHelp and words | Built · Live | – | – Owner, 2026-11-03 | |
FixFX.8
Link to FX.8Comment on FX.8 |
Studio Live invite links opened to everyone (LIVE_PUBLIC on) The invite link (Studio Live from anywhere, through the relay at wss://getcadcraft.com/live/relay) was built and tested since 0.5 but held behind .env LIVE_PUBLIC=0, so /studio, the pricing/FAQ copy and the apps' help said "not open yet". Owner said do it now: LIVE_PUBLIC=1. The site copy follows the switch by itself (/studio Live row, Invite link card, FAQ). a Discord member help for the eight apps (work-live) and MarkupCraft's not-built-yet list updated and compiled. Rules unchanged: the host needs a Team Cloud Plan seat, guests join free, 5 open rooms per host. Checked: relay test 26/26, paid-live gate 10/10, live-rooms 98 of 99 (the one failure, 'no Join in the browser while no public build takes live sessions', was failing before the switch and looks stale because 0.8.1 builds accept live). NOT checked: an invite link run end to end between two real Studios on different networks; the frozen 0.8.1 in-app help and Tutorials pages still say invite links are not open yet until the next release. |
– | Site and servicesDesktop host | Built · Live | – | – Owner, 2026-11-03 | |
FixFX.9
Link to FX.9Comment on FX.9 |
EnergyPlus check and address lookup add-ons could not be switched on The add-on loader refuses a description over 400 characters. BimCraft's EnergyPlus add-on (451) and CivilCraft's site-geocode-osm add-on (488) were over it, so neither could be switched on. Both descriptions shortened (388 and 369), same facts. test-addons-apps 112/0. Untested: switching each one on by hand in /lab. |
BimCraftCivilCraft | Built · Live | – | – Found by session climate-futures-09, 2026-11-03 | ||
FixFX.10
Link to FX.10Comment on FX.10 |
SRK bubble point lands on a wrong root near the critical region lib/process: SRK methane/propane 40/60 at 30 bar flashes two-phase at 230 K, yet the bubble point at 30 bar is 269.8 K; the vapour-fraction flash inherits it. Likely wrong root near the critical region. Not fixed yet (docs/0.9-sessions/cape-open-09.md). engineer-09 2026-11-05: Reproduced (SRK methane/propane 40/60, 30 bar): bubbleT 269.77 K while flashPT was already two-phase from about 215 K. Cause found: not the cubic's root choice. The saturation scan starts at 30 K, where the incipient vapour collapses onto the feed (the trivial solution); that collapsed composition was carried as the warm start to every later grid point, so the residual stayed the 'no second phase' flag (-1) up to 269.8 K, where the flag flipped to a real residual and the bisection took the flip as the root. Fixed in lib/process/thermo.js: a trivial warm start is thrown away and the Wilson seed tried; every sign change on the grid is a candidate and the first one that passes the stability condition (Michelsen tangent-plane test: stable just on the liquid side, unstable on the other) is returned (result.stable). Now 214.43 K; flashPVF(30 bar, V of the 230 K flash) gives back 230.000 K (was 269.77). Reference (measured, not typed from memory): May et al., J. Chem. Eng. Data 60 (2015) 3606-3620, doi 10.1021/acs.jced.5b00610, via NIST TRC ThermoML data sets 3-4, 243.62 K isotherm: x(C1) 0.3442 at 3909 kPa -> SRK (kij 0) 3943 kPa (+0.86 %); x 0.071 at 891 kPa -> 908 (+1.96 %). Tests: node tools/process-test/test.mjs 132/0 (10 new FX.10 checks), all 13 other process-engine suites one at a time, real page: node tools/process-test/browser-fx10.mjs 4/0 (/lab/cadcraft, the Flash and saturation calculator) and tools/capeopen-test/browser.mjs 13/0. Copies synced to cadcraft and bimcraft a Discord member/process. |
CadCraft | Built · Live | – | – Found by session cape-open-09, 2026-11-03 | ||
FixFX.11
Link to FX.11Comment on FX.11 |
Studio add-on consent dialog no longer says "to draw your picture" Studio's dialog before an add-on runs a program said it was "to draw your picture" (written for render engines), which is wrong for the Chip design add-on and any other. Sentence now ends "with a script that comes with the add-on." in desktop-shell src-tauri/src/engines.rs, the site copy tools/render/studio-bridge/engines.rs and docs/ADDONS-SPEC.md. Untested: no Studio build was made (not compiled on the VPS). |
Studio | Built · Live | – | – Owner 2026-11-03 (found by chip-runners-09) | ||
FixFX.12
Link to FX.12Comment on FX.12 |
Library item page: shows whether X, Y and Z are scalable; "Scale: Fitted" removed Reported by the owner: the title strip under the drawing said 'Scale: Fitted', which only meant the plan was drawn to fit the frame and told nothing about the object. That cell is now 'Scalable' (No, or the axes, such as X, Y), the caption says the drawing is drawn to fit, not to a scale, and the Data table has one row per axis (Scalable: width (X), depth (Y), height (Z): Yes or No) under the sizes. The 'Stretching' row in the facts list is gone, since it said the same thing. Values come from library_versions.stretch; shown for equipment, furniture, fixtures, doors, windows, symbols and details. Checked on the live page on a none item and an x,y item. |
– | Built · Live | – | – From: owner (Site) owner 2026-11-03, library item page | ||
FixFX.13
Link to FX.13Comment on FX.13 |
MarkupCraft: removed markups stayed readable inside the saved PDF Found while building NOTES.1. Saving took a deleted or rewritten annotation off its page but left the object in the file, with its text and appearance, so anyone reading the PDF's bytes could still recover it. Save now deletes those objects, their appearance streams and photo attachments. Checked by opening every object and stream of saved files in bin/test-markupcraft-notes.mjs and tools/markupcraft-test/browser-notes.mjs. In /lab, not released. Copies saved by earlier builds still hold them until saved again. |
MarkupCraft | Built · Live | – | – From: owner (Site) found building NOTES.1, 2026-11-03 | ||
FixFX.14
Link to FX.14Comment on FX.14 |
Student Program: applications stay out of the inbox; every program email shows its Brevo status When the verify step was added, StudentProgram::apply still created a normal Contact message, so each application landed in /admin/messages, mailed staff and sent an acknowledgement next to the verify email. Now the form's words are kept as an archived message (Contact::submit ctx quiet), with no staff note and no acknowledgement. /admin/students has a Last email column and a notice for verify emails that did not get through; /admin/student has an Emails section (status, opened, clicked, the refusal reason), from email_log. The resend message says the email was handed to Brevo, not that it was sent. Found through a school (itcgalilei.edu.it) whose mail server refuses our mail with 550 5.7.1; that applicant cannot verify at that address. Tested with bin/test-student-program.php (91 pass) and by rendering the pages on real rows; no new application has gone through the live form since. |
– | Site and services | Built · Live | – | – Owner, 2026-11-03 | |
FixFX.15
Link to FX.15Comment on FX.15 |
SuperCad: reopening a project could overwrite a marked-up PDF Found building NOTES.1. A saved project holds name.pdf and name (marked up).pdf, and reopening opened both. Both save as name (marked up).pdf, so saving the original's sheets could overwrite the marked-up copy and its markups. A PDF with a marked-up copy now stays in the project but does not open. Checked in tools/super-test/private-notes.mjs, in /lab. Not released. |
MarkupCraftSuperCad Studio | Built · Live | – | – From: owner (Site) found building NOTES.1, 2026-11-03 | ||
FixFX.16
Link to FX.16Comment on FX.16 |
TakeoffCraft: areas in m² on the drawing, wall area in the tables, currency symbol Reported on lab pass 18 (TK.1) by a Greek tester: (1) an area measured with a metric item showed m² in the table but 'SF' in the drawing label and the mark panel. Now one areaShow() writes m² when the item is priced in metric or lengths show metric (m/cm/mm), else SF; used for the drawing tag, the mark panel (area, back-outs, plan area, outline, cut-outs, wall area). (2) A linear item with a height only showed its wall area in the item editor; the Items list now ends 'wall 12.34 m²' and the by-item quantities table gets a note row under it (length × height). Tiling a bathroom: floor = an area item in m², walls = a linear item with the wall height (or an assembly component with formula A priced per m²). Not built: one combined floor + walls total, or pricing a linear item per m² directly. (3) New Settings › TakeoffCraft › Currency symbol ($ € £ CHF kr zł R A$ C$): prices, bid PDF, CSV/XLSX number formats. Display only, nothing converted, per viewer (not saved in the project file). Existing suite 1196 pass; no new test, not tried in a browser; other languages show English for the new strings. |
TakeoffCraft | Built · Live | – | – From: site feedback (Site) lab pass 18 feedback 2026-11-03 | ||
FixFX.17
Link to FX.17Comment on FX.17 |
Account pages: side panel redesigned Owner 2026-11-04 on /account/developers: 'left panel design it better'. The panel was a flat list of up to 12 links floating on the page grid, and on a short window its sticky list could leave the last links out of reach. Now it is a ruled box like the settings sections, with the account's address at the top and links grouped as Account, Cloud, Library and add-ons, Programs and Bidding, in the same order as before; a group with nothing to show is not drawn. The current page has a tint and a blue bar, and the panel scrolls by itself when it is taller than the window. Phones keep the wrapping tabs. Checked on the account pages at desktop and phone sizes, in Paper and Model. Not checked with SuperCad Studio and Your students showing together (12 links). |
– | Built · Live | – | – From: owner (Site) owner 2026-11-04 | ||
FixFX.18
Link to FX.18Comment on FX.18 |
Developers page: Make a key redesigned, form errors now show Owner 2026-11-04 sent a screenshot of /account/developers. The form was a narrow column with a long flat list of permissions. Now it fills the section, permissions are a table of areas by See and Change with the scope name in small text, Data choices sit side by side, and Workspace, Expires and Allowed addresses are grouped as Limits. The API keys section gets a docs button and a link to the first key. Bug fixed: after the Name field the form lost its form id, so a missing permission or a bad address said 'Check the highlighted fields' with nothing highlighted, and Workspace, Expires and Allowed addresses were lost. Checked with a real live key on a test account: bad input, make, show once, revoke; desktop and phone, Paper and Model. Sandbox keys could not be checked: the sandbox is not open. |
– | Built · Live | – | – From: owner (Site) owner 2026-11-04 | ||
FixFX.19
Link to FX.19Comment on FX.19 |
Developers page: new key panel and key list redesigned, Roll and Revoke ask first Owner 2026-11-04: 'redesign the keys table and new key panel too', on the new key panel 'ugly'. The new key now sits in its own box with Copy key, above a Try it command with Copy command. The old command was cut off and could not run; the new one runs as pasted (/v1/account when the key may read it, else /v1/endpoints). The table became one block per key: name, mode, Expired or Paused, what it can do in the form's words, workspace, expiry, allowed addresses, last used, and the last calls as a small table. Roll and Revoke used to act on one click; both now ask first (needs JavaScript; without it they act at once as before). Checked with real live keys on a test account: copy, both commands answered 200, cancel and accept on the questions, roll, revoke; desktop in Paper and Model, phone in Paper. Not seen: Expired and Paused tags, Sandbox keys. |
– | Built · Live | – | – From: owner (Site) owner 2026-11-04 | ||
FixFX.20
Link to FX.20Comment on FX.20 |
Account: license certificates open in the MeCentral vault, not on this site Owner 2026-11-04 on /account: the View links in the MeCentral vault card should go to the vault; 'there really should never be a link to view on getcadcraft'. View opened CadCraft's stored PDF unless a setting was on. Now a filed certificate links to its document in MeCentral, and one not yet filed has no link. The old /account/license-certificate page no longer shows the PDF: a kept link goes to that member's document in MeCentral, anything else is a 404. Staff keep 'CadCraft's copy' on /admin/accounts/view. A person has to be signed in to MeCentral with the vault opened to see the document. |
– | Built · Live | – | – From: owner (Site) owner 2026-11-04 | ||
FixFX.21
Link to FX.21Comment on FX.21 |
Account: a certificate whose MeCentral link fails opens a support ticket Owner 2026-11-04: if the MeCentral link can't be obtained, open a support ticket, never show the local version. The broker cron now opens one ticket in /admin/messages (topic Licensing, with the member's address) for a filing that is held, rejected, filed with no document id, or unanswered after a day. Expected refusals (address not verified, not permitted, test fixture, account gone) open none. The member gets no acknowledgement mail; the /account card says 'We opened a support ticket for this' with no link, until the filing succeeds. No filing was failing when this went live, so no ticket has been opened on a real account yet. |
– | Built · Live | – | – From: owner (Site) owner 2026-11-04 | ||
FixFX.22
Link to FX.22Comment on FX.22 |
BimCraft: dragging a wall no longer skews the room, and Square up brings 90 degrees back Discord report with screenshots: dragging a wall's centre grip slightly off square tilted both joined walls, and nothing brought the room back to 90 degrees. The grip moved the wall by the whole drag and carried the joined corners with it; Length did the same. Changed in the lab build. The centre grip moves the wall square to itself; its corners slide along the joined walls, so they keep their angle at any angle, and partitions butting into it come along. Ctrl (Cmd) gives the old free move. An end grip catches square to the wall joined at its other end within 3 degrees (Shift stays on the plan's axes, as before). Properties for a straight wall adds: Measure from (centre line, inside face, outside face), which Length and the new Room size read and set from; Move square (typed, + out, - in); Angle to joined wall (or Direction for a wall on its own); and Square up, which turns the connected walls within 10 degrees of a right angle to their main direction. A distance can be typed while a grip is held (Enter or letting go uses it, Esc drops the move). Each change is one undo step. Geometry in wall-square.js. Tested: tools/bimcraft-test/wall-square-test.mjs 56, browser-wallsquare.mjs 28 (the report's steps), browser-model, browser-comforts and --model pass. Not tested: a real project with many walls, doors in a wall whose corners slide at a non-right angle, or a desktop build. |
BimCraft | Built · Live | – | – | ||
FixFX.24
Link to FX.24Comment on FX.24 |
Student Program: verifying the email issues the license, no approval step Only .edu / .ac.xx addresses were issued on the verify click; any other school address (cvut.cz) waited in Waiting for a staff Approve. Now every verified address is issued at once (active, welcome email, certificate). The Approve button is gone. New column student_licenses.upgrades_until (migration 121): set to a year on issue, moved on a year by each yearly check (confirm) on the SAME license, never a new one. Test bin/test-student-program.php (94). Not changed: an active student still has every version; the date is recorded, shown nowhere yet, and not yet read by the entitlement. |
– | Built · Live | – | – Owner, 2026-11-04 | ||
FixFX.25
Link to FX.25Comment on FX.25 |
Website: show/hide eye on password fields (sign in, create account) Password fields had no way to check what was typed. /login, /signup and /admin/login now have an eye button inside the field that shows or hides the password. Because it lives in the shared account/field.inc, the reset-password page, the password fields on the profile page and the app sign-in confirm page get it too. The button appears only once site.js runs (no dead button without JavaScript); the field goes back to masked on submit so browsers still offer to save it as a password; Edge's own eye is hidden so there are not two. Tested in headless Chromium on /login, /signup and /admin/login (reveal, re-mask, masked on submit, no JavaScript). Not tried on the other pages, in Edge or Safari, or with a screen reader. Not added to the cloud encryption passphrase, own-storage secret or SSO secret fields, which do not use field.inc. |
– | Built · Live | – | – From: owner (Site) owner request 2026-11-04 | ||
FixFX.44
Link to FX.44Comment on FX.44 |
Student Program: tell applicants what to do when the verify email never arrives Some school mail servers refuse outside mail (seen: itcgalilei.edu.it, 550 5.7.1), so an applicant at such a school waits for a link that never comes and we cannot email them to explain. The notice after applying and a new "No email from us?" item beside the form on /education now say to check spam, then apply again with another address. Since FX.24 another address gets the license on the click, with no approval. The staff alert discussed with this fix was not built: no application waits for approval any more. Tested with bin/test-student-program.php and the live page; no one has yet applied after seeing the new words. |
– | Site and services | Built · Live | – | – Owner, 2026-11-05 | |
FeatureFX.51
Link to FX.51Comment on FX.51 |
CivilCraft: Render view in 3D, and Apply / Close on the Sun menu Owner request 2026-11-05. A Render button in the 3D bar draws the land as land: natural terrain colours (grass on the flat, earth and rock on the steep, lighter with height), sky and haze, filmic tone mapping, soft shadows from a default north-west sun (the Sun menu still wins when set). Does not change the model; remembered in the browser. The Sun menu gets Apply and Close buttons. Also: a Bootstrap tooltip shows the whole value of a number box too narrow for it. site-view3d.js, drive-ui.js, civilcraft.js; 3D suite 155/0. No visual check yet. |
CivilCraft | App code | Built · Live | – | – From: owner (Owner) owner request 2026-11-05 | |
FixFX.52
Link to FX.52Comment on FX.52 |
Student Program: school address at the door, and applicants see what happened to our email Owner 2026-11-05: a verified address alone does not show someone is a student, and an applicant could not tell that our email never reached them. Personal mail providers (Gmail and the like) are now refused at the form, for students and teachers. Any other host passes, because real schools often have no .edu in the address (cvut.cz, ualg.pt). After applying, the person lands on /education-status, which shows whether our email is on its way, was delivered, was refused or found no mailbox; applying again with the same address brings them back there. Only a refusal by their school's server (like the 550 5.7.1 we saw from itcgalilei.edu.it and aglousa.com) unlocks using another address; a mailbox that does not exist does not, or a made-up address would open the door. Staff see the refused address on the row. Quarantined mail reports as delivered: those people are told to write to us from the school address, and staff use "Issue without the click". Migration 123. Tests in bin/test-student-program.php (140 pass). Not done / untested: no real outside applicant has used the page yet, and no real refusal has been seen through it (the states were set by hand on a fixture, against the live site). The personal-provider list cannot be complete and does not cover throwaway mail services. A person who knows a school that refuses mail could still name it to reach the other-address form. Nicolas and the aglousa.com applicant can only find this by coming back: we have no way to reach them. |
– | Built · Live | 1 | – Owner, 2026-11-05 | ||
FixFX.53
Link to FX.53Comment on FX.53 |
Student Program: 3-year term, with proof of enrollment to go longer Owner 2026-11-05: a student license now runs 3 years from issue: a check after year one and after year two, then it stops by itself with no third check. Neither a new check, an old link nor a staff check brings it back; staff extend it a year at a time after seeing proof, with a required note (/admin/student "Extend by a year"). Proof arrives by email to the inbox, so no documents are stored on the site. The installed program keeps working and keeps the versions it covered, as before. Teachers have no term. Licenses issued before this rule keep the old terms (term_ends_at empty). Copy updated on /education, /supercad, the join page, emails, the license certificate and the educator kit; the four kit PDFs were rebuilt. Not done / untested: the term was tested with a fake clock, and the first real term ends in 2029. A 4-year degree will need the proof step in its last year. The Developer API docs do not mention the term; teachers' systems see the end of a term as student.stale. |
– | Built · Live | 1 | – Owner, 2026-11-05 | ||
FixFX.54
Link to FX.54Comment on FX.54 |
Student Program: leftovers from when staff approved applications /admin/students opened on an always-empty Waiting tab: it now opens on Active, and Waiting hides when empty. The form's note hint promised a proof-by-reply check that no longer existed. The welcome email's preview said "Sign in with your school email" even for other addresses. The verify email still said a person would check non-school addresses. The kit said a .edu address was needed for an instant license. All corrected. Also: t= links are now hidden in the analytics log, because the status link is private. |
– | Built · Live | 1 | – Owner, 2026-11-05 | ||
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 | |
FeatureFX.56
Link to FX.56Comment on FX.56 |
Auto-focus panel (Settings › Global) and split tool tiles Owner 2026-11-05. (1) Auto-focus panel: one engine in the shell (window.ccAutoFocus in assets/js/app-settings.js, CSS in app-shell.css, strings in lang/shell): a panel with several sections opens one and closes the others, a lock beside the caret keeps a section open, remembered per panel; a menu command opens the section it works with; a Settings switch (cc-autofocus, default on) lets people choose how the apps work best. CivilCraft: the left panel (Landscape on) and the Properties panel (groups by heading). The other seven apps adopt it by registering their panels. (2) CivilCraft Landscape ribbon tiles that hold several tools (Grade, Hardscape, Areas, Levels, Irrigation) are split buttons: the icon runs the tool used last, the edge with the arrow opens the menu (civilcraft/a Discord member/split-menu.js); the same pattern is wanted in the other apps. Tested headless: panels, setting on/off, split clicks; Landscape 533/0. Added 2026-11-05: Hardscape, Areas and Levels have their own sections in the Landscape panel (tools + what is drawn); the toolbox (layouts with a tool list) joins the auto-focus panel: its groups close each other, and the toolbox group and the panel section follow each other (shell: ccAutoFocus mode details, app-workspace.js tbxAf; civil link in landscape-ui.js). 2026-11-05 all eight apps: window.ccAutoFocus.auto() folds every app side panel with two or more sections (a section heading or its *-sec-head bar; MarkupCraft details sections; toolbox groups in the toolbox layouts), no per-app code; Settings › Global › Auto-focus panels switches it off. Split tool tiles stay CivilCraft-only until the other apps ask. Command links 2026-11-05: a tool that works with a panel section opens it (app-settings.js LINKS table, one line per rule): CadCraft constraint and parameter commands to Parameters; TakeoffCraft measuring tools to Items and note/cloud/highlight to Markups; ModelCraft Paint to Colors. The other apps have no tool with a section of its own yet; add a rule when one does. Command links 2026-11-05: a tool that works with a panel section opens it (app-settings.js LINKS table, one line per rule): CadCraft constraint and parameter commands to Parameters; TakeoffCraft measuring tools to Items and note/cloud/highlight to Markups; ModelCraft Paint to Colors. The other apps have no tool with a section of its own yet; add a rule when one does. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | App code | Built · Live | – | in /lab; owner to try From: owner (Owner) owner request 2026-11-05 | |
FixFX.58
Link to FX.58Comment on FX.58 |
BimCraft wall Length in Properties (5000) differs from the plan dimension (5092) with no stated reference Reported 2026-11-05 in Duncan's wall tool specification (page 1). In the Room 1 test the Properties panel showed Length 5000 while the plan dimension on the same wall read 5092; nothing says which reference each figure uses (location line, finish face, core, centreline, or end-to-end after joins). Wanted: both figures name their reference, and they agree or the difference is explained. Cause not investigated yet. Status: not started. Tracked as a document with status notes: /roadmap-internal, 'BimCraft wall tool specification' (docs/team-roadmap/bimcraft-wall-tool-specification.md). Source PDF: dropai.zone/d/vRSxnoBw. wall-fix 2026-11-05: CORRECTION: FX.22 already added Measure from (centre | inside | outside) to the Length field (wall-square.js lengthFrom) so 5000 vs 5092 can be explained; whether the plan dimension and the Properties field now agree by default, and name their reference, is not checked (spec test 9, decision D3). walls-09 2026-11-06: Length and the plan's wall dimension now read the same reference, named on the model bar (Measure from: centre line by default, decision D3; inside or outside face) and in Properties; spec test 9 Pass (node: both 5000 on centre line, both 5114.3 on the outside face). Cause of Room 1's 5000 vs 5092, from reading: Length read the centre line while the plan dimension read the outside face; NOT reproduced on Duncan's own file (we do not have it). The hand check is part of WT.3-HAND. |
BimCraft | Built · Live | 1 | – From: Duncan (Session) Duncan, wall tool specification 2026-11-05 | ||
FixFX.59
Link to FX.59Comment on FX.59 |
CadCraft 2D plan walls: joins are found by position at each edit, not stored; same edit rules as BimCraft wanted Wall tool spec (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Assessed 2026-11-05 as part of FX.57. CadCraft's plan walls (lib/plan2d/walls.js, used by app/walls-cmd.js) have their own engine. followMoves already carries a wall joined end to end and slides a T end along its own line, which is more than BimCraft's Move does. But joins are still guessed from end positions each time (no join record), there is no Disallow join or Split that keeps joins, and a typed length or a thickness change has not been checked against the five rules (joined walls follow and stay joined, selected wall moves and the reference holds, location line holds, one undo step, Length and dimension name their reference). Wanted: run the spec's nine tests (they are plan-view, they apply as written) against CadCraft, fix what fails, and share the join record with FX.60. Not tried yet; nothing changed. Page 3 check (2026-11-05): followMoves puts a shared end at the moved end and leaves the far end, so a neighbour turns when a wall is moved sideways (finding 2 applies here too: FX.63); T ends already slide (finding 3 does not apply). Move already follows joins (finding 1 does not apply). walls-plan-09 2026-11-06 (done): Built in /lab: CadCraft plan walls store their joins. Each wall has its own id and the join records (end meets start, end meets mid for a T, mid meets mid for a crossing: the same record as BimCraft, rules in lib/walls/joins.js, checked equal to BimCraft's wall-joins.js); both walls carry it, in the... see docs/0.9-sessions/walls-plan-09.md. |
CadCraft | Built · Live | 1 | Hand check is community test WTPLAN-HAND (not blocking) From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (page 2) | ||
FixFX.61
Link to FX.61Comment on FX.61 |
Apps that read or draw walls (DetailCraft, TakeoffCraft, CivilCraft hardscape): check what stored joins change Wall tool spec (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Assessed 2026-11-05, no change yet. DetailCraft: wallPanel frames one wall at a time (lib: framing.js); corner and T framing (extra studs, backers) would follow a join record once it exists. TakeoffCraft: scene3d wall strips and wallOutline use mitred joints for takeoff; counts should not change, but check them against BimCraft's net-of-joins quantities after FX.57. CivilCraft landscape: hardscape walls (retaining / freestanding polylines) have no join model; two garden walls meeting at a T are drawn as separate runs. Wanted: after FX.57 lands, re-run each app's wall quantities and drawings on a joined-wall file and file a row for each real difference; do not add join code to these apps by hand. ModelCraft (print-walls is wall thickness for printing), MarkupCraft and PartCraft have no joined walls. walls-plan-09 2026-11-06: Checked 2026-11-06 (read the code and measured): DetailCraft, TakeoffCraft and CivilCraft hardscape read neither the join record, nor a wall's thickness, nor CADCRAFT_WALL. DetailCraft wallPanel takes a spec (length, height, openings, stud sizes); TakeoffCraft's wallOutline is its own mitred run with a thickness it is given; CivilCraft hardscape walls are open polylines with their own thickness. Measured: a CadCraft DXF of a four-wall room opened with TakeoffCraft's and CivilCraft's readers gives 4 INSERTs and 8 LINEs in 4 anonymous blocks, extended data kept, nothing else read; so a stored join changes none of their quantities. What would change: nothing breaks. Corner and T framing in DetailCraft and joined hardscape runs in CivilCraft would be NEW features that could read the record (no row made: nothing differs today). Not run on a BimCraft IFC with join records through DetailCraft's IFC export (that it keeps the unknown relationship lines is untested). |
TakeoffCraftCivilCraftDetailCraft | Built · Live | 1 | – From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (page 2) | ||
FixFX.65
Link to FX.65Comment on FX.65 |
BimCraft thickness / type change: the corner follows only when exactly one straight wall meets the end Wall tool spec page 3 (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Code checked in the a Discord member source 2026-11-05 (the spec read commit a538e43). Found while checking the 'Already right, keep it' list on page 3: updateWall, the location-line shift (changes.justification not centre): neighbours are looked up and then skipped unless nbs.length === 1 and the neighbour is not curved. So a thicker wall at a three-wall node, at a T, or next to a curved wall keeps its old corner and the junction is left open or overlapped, while the two-wall straight corner case Duncan tested works. Wanted: spec test 5 (set the location line to the exterior face, thicken the wall: exterior face does not move, wall grows inward, joins clean up) at L, T, X and curved neighbours. Not reproduced yet; nothing fixed. Other apps: the same question applies to CadCraft's plan walls (thickness change) and goes into FX.59's test run. walls-09 2026-11-06: Fixed in /lab: a location line that holds now moves the centre line square with the join solver (squareMove), so the corner follows at an L, at a node of three walls, at a T (the partition comes with it) and next to a curved wall. Spec test 5 Pass: node (--walltools) and the real page (outside face held at -92.1 with 300 thickness, both corners follow). |
CadCraftBimCraft | Built · Live | 1 | – From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (page 3) | ||
FixFX.66
Link to FX.66Comment on FX.66 |
Wall + Move / Copy: a moved or copied group of rooms does not stretch the joined walls outside the group Wall tool spec page 9, 'How other tools combine with the wall' (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Code checked in the a Discord member source 2026-11-05. Spec: move or copy a group of rooms and every joined wall outside the group stretches to stay joined (Place in space -> Join solver -> Follow; today Partly). Cause, from reading: Move is carryJoined: false (FX.62), and a copy goes through addWall (model-modify.js), so the copied walls are new walls that are not joined to anything outside the group, and nothing stretches. Wanted: Move stretches the outside neighbours (their ends slide along their own line, FX.63 / FX.60); Copy leaves the originals alone and makes the copies joined among themselves. Acceptance: spec test 1 style on a two-room plan, one undo step. OTHER APPS: CadCraft plan walls Move already follows joins (FX.59 notes the turning problem); Copy there is not checked. Not started. walls-09 2026-11-06: Checked, no code change needed after FX.62: a Move of a group of walls (one room of two) keeps the group's corners and the walls outside stay joined; Copy leaves the originals and the copies are joined among themselves (two corners). One undo step. Test: node bin/test-bimcraft.mjs --walltools (FX.66 block). Real page: the Move tool's group move was not driven in a browser by this session. |
CadCraftBimCraft | Built · Live | 1 | – From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (page 9) | ||
FixFX.67
Link to FX.67Comment on FX.67 |
Wall Length and typed dimension: no choice of fixed end, no marker for the fixed side, no modifier-key drag to break a join Wall tool spec pages 11-12 (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Checked in the a Discord member source 2026-11-05. Page 11 'BimCraft must' column, three things the code does not do: (1) Changing length: 'start end fixed by default; toggle to grow from the other end or the centre'. setLength (wall-square.js) always keeps the start end and moves the end; there is no toggle. (2) Typing a dimension value: 'a marker shows the fixed side before Enter'. No marker exists; the fixed side is not shown. (3) Breaking a join: 'only by Split, Disallow join, delete, or a modifier-key drag'. No modifier-key drag breaks a join (Split and Disallow join are WT.4 and WT.5). Wanted: a Grow from control on the Length field (start | end | centre) with the fixed side drawn on the plan while the field is focused, and a modifier-key drag (Revit's Move with Disjoin) that moves a wall without carrying its joins and keeps the wall's id. Spec tests 3 and 9. OTHER APPS: CadCraft plan walls have no Length field or toggle either (FX.59). Not started. walls-09 2026-11-06: Built in /lab: Properties › Grow from (Start holds | End holds | Centre holds) next to Length; the side that holds is marked on the plan while the Length field is in use; Alt + drag of the middle grip moves the wall free of its joins (they break, the id stays). Tests: --walltools (grow from end and centre, marker point), browser-walltools (grow from end, marker, Alt-drag). |
CadCraftBimCraftSuperCad Studio | Built · Live | 1 | – From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (page 11) | ||
FixFX.68
Link to FX.68Comment on FX.68 |
BimCraft lab: picking a wall with Draw off threw in the Properties panel (FX.22 read the drawing data that only exists while Draw is on) Found 2026-11-05 by suggestions-followup-09 while fixing tools/ids/browser-bimcraft.mjs: with an IFC open and Draw off, picking a wall (for example from Problems) logged "TypeError: Cannot read properties of null (reading 'walls') at propsBlock" (model-ui.js). Cause: FX.22 (wall grips, Measure from) read S.data.walls, which is null unless Draw is on; propsBlock's own data (S.data when drawing, else a snapshot of the model) is the right source. The error was caught, so the panel just lacked the wall's Measure from and Length fields. Fix: one word in model-ui.js (all = data.walls). Lab only (FX.22 is 0.9 /lab); released 0.8.1 does not have the code. Checked 2026-11-05: in the real page (lab BimCraft, house fixture, Draw off) a picked wall shows Measure from + Length and no console error; tools/ids/browser-bimcraft.mjs 30/0 (its 'no page errors' check), tools/bimcraft-test/wall-square-test.mjs 67/0, browser-wallsquare.mjs 28/0. |
BimCraft | Built · Live | 0.1 | – From: session (Session) docs/0.9-sessions/suggestions-sweep-09.md § Follow-up | ||
FixFX.69
Link to FX.69Comment on FX.69 |
Two stale tests: TakeoffCraft learn.mjs expected the released build to ignore learn data; the BimCraft IDS browser test clicked a folded Undo Found by suggestions-sweep-09 (2026-11-05), fixed by suggestions-followup-09 the same day; tests only, no app change (the app fix found on the way is the row above). (1) tools/takeoffcraft-test/learn.mjs loaded `current` as "the frozen release before learn"; current is 0.8.1 since 2026-11-02 and ships learn.js (identical to 0.8 and a Discord member). Now: the newest frozen folder WITHOUT learn.js (0.7) must ignore the section, and current (0.8.1) must read it back identical. Before 104/1, after 107/0. (2) tools/ids/browser-bimcraft.mjs clicked [data-undo] / [data-save] in the left panel's Changes section, which the shell's Auto-focus panel (app-settings.js, on by default) folds while the IDS section is open: by design, not a regression. It now asserts that fold, undoes with the toolbar Undo and with Ctrl+Z (both proven to remove the IDS reference and its 13 problems; Ctrl+Y brings them back), saves with Ctrl+S, and waits for 'Saved' before reopening (sooner is refused with 'Still working on the last one…', correct). Before 13/1 (the run stopped at undo), after 30/0. |
BimCraftTakeoffCraft | Built · Live | 0.1 | – From: session (Session) docs/0.9-sessions/suggestions-sweep-09.md § Follow-up | ||
FixFX.71
Link to FX.71Comment on FX.71 |
BimCraft test "dimensions retain IDs across redo, type swaps, flips, curves and rebinds" fails (tools/bimcraft-test/wall-precision.test.mjs) Found 2026-11-05 while running the BimCraft suites for the join record (FX.60). node bin/test-bimcraft.mjs --walls: 6 of 7 pass; this one fails at wall-precision.test.mjs:65, after Undo then Redo of a saved wall dimension its GlobalId is a different one (readWallDimensions(...)[0].guid !== d.guid). It fails the same with the join sync switched off, so it is not from the join work; cause not looked into (a redo that runs the op again and makes a new GlobalId for the dimension is the likely shape). Wanted: Redo of a dimension keeps its id, like Redo of a wall type does (the test's first redo passes). Not started. walls-09 2026-11-06: Cause found: the CODE was wrong, not the test. saveWallDimension's op (wall-dimensions.js operation) drew a fresh GlobalId each time it ran, so Redo made the dimension again under a new id. It now hands out the same GlobalIds again on Redo, as model-ops.js op() does. node bin/test-bimcraft.mjs --walls: 15/0 (was 14/1). |
BimCraft | Built · Live | 1 | – test run 2026-11-05 | ||
FixFX.72
Link to FX.72Comment on FX.72 |
CadCraft: the object snap menu cannot be reached (status bar Snap, OSNAP command) Emailed report 2026-11-05 (desktop build): clicking or right-clicking the Snap button in the status bar opened nothing, and OSNAP, DDOSNAP, SHORTCUTMENU and CMDDIA answered Unknown command; only OSMODE (numeric) worked. The snap kinds list existed but only behind a small chevron at the end of the status bar. Changed (a Discord member): a right-click on Snap opens the snap menu (closes on an outside click); OSNAP, DDOSNAP, OSNAPSETTINGS and SHORTCUTMENU open it too (commands.js, cadcraft.js, lang/en.json, English only for now). CMDDIA stays a system variable, not a command. Untested in a browser or the desktop app. Reporter has no account yet: invite mailed 2026-11-05 to create one for a lab pass. |
CadCraft | Built · Live | 1 | – email 2026-11-05 | ||
FixBot obtainedFX.73
Link to FX.73Comment on FX.73 |
Internal Roadmaps editor: the Markdown preview is white in Model view, so the light text cannot be read In /roadmap-internal/edit the Markdown preview panel (.md-pv) had a fixed white background, while Model view turns the text light, so headings and paragraphs vanished (tables kept their own background). The panel now uses the theme sheet colour, so it follows Paper and Model. |
– | Built · Live | 1 | – owner screenshots 2026-11-05 | ||
FixFX.74
Link to FX.74Comment on FX.74 |
Suggestions and roadmap items link both ways in /admin Staff can now link a /suggest ask to the roadmap item that builds it, from either page: /admin/suggestions shows each suggestion's linked items (key, title, release) with Unlink and a Link to roadmap box (item key like FX.26, release:key, or #id); the item's edit page has a Suggestions panel (linked asks with status and votes, Link a suggestion by number, Unlink). Staff only; linking tells nobody. RoadmapSuggestions + migration 125 (roadmap_item_suggestions, nothing deleted). Checked 2026-11-06 in code: link, duplicate refusal, both-way reads and unlink against the live database. Pages linted; not yet viewed in a browser. |
– | Built · Live | – | – From: session (Session) owner request 2026-11-06 | ||
FixFX.75
Link to FX.75Comment on FX.75 |
Vector layout: palette icon highlight no longer spans neighbouring tools In the Vector layout the Basic palette's icons overlapped: the pressed Select cell was highlighted across Select and Hand together, and the Tool Sets rows were squeezed. The ribbon rule for compact tools (min width 5.2rem, dense height 1.25rem) outranked the palette's own sizing, so each cell rendered 83 x 20 px. The palette rules in assets/css/app-workspace.css now sit under .vw-toolpalette and win over it: every Basic cell is a 40 x 40 square lit on its own, and Tool Sets rows keep their height. One stylesheet, so all eight apps. Checked by measuring the cells in ModelCraft in a headless browser; the screenshot showed one lit cell. |
– | Built · Live | – | – From: session (Session) owner screenshot 2026-11-06 | ||
FixFX.76
Link to FX.76Comment on FX.76 |
Documents opens as a centered dialog, not a box in the corner Owner 2026-11-06: Documents seemed to do nothing, and on large screens the placement was wrong. It opened as a small box pinned to the top right of the drawing area, far from the button. It is now a modal dialog centered on the window with the page dimmed, in BimCraft, PartCraft and CadCraft through lib/vault. Esc, the X or a press on the dimmed page closes it. Opening a file or a copy closes it so the file can be seen. Tested at 1280 to 3840 wide in the standard, Vector and Duncan layouts on SwiftShader; not on a real large monitor or in a Studio build. |
CadCraftBimCraftPartCraft | Built · Live | – | – | ||
FixFX.77
Link to FX.77Comment on FX.77 |
Studio and browser-edition packers: stale file lists (suite stubs, hub files, docinfo and About modules) Found by mounts-09 2026-11-06 while building the Studio suite for the undo test. (1) studio/pack/suite-stubs.php WORKSPACE_MODULES lacked app-workspace-icons.js and app-workspace-vector.js, so node pack/suite.mjs stopped with "a plain re-render differs from the edition's index.html" for every app: a Studio rebuild could not have been made. (2) pack/suite.mjs HUB_FILES did not copy the new hub/undo-journal.js. (3) tools/shell-test/test-packed-imports.mjs failed 6 checks: devshell/edition.php and devshell/pack.php lacked docinfo.js, app-docinfo.js and app-about.js (DI.1, ABT.1), so packaged editions would have asked for files that are not there. All three lists fixed; the suite packs for cadcraft, detailcraft and takeoffcraft and the test reports "all packers list every imported shell file". The full eight-app suite was not rebuilt here. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 0.5 | – docs/0.9-sessions/mounts-09.md | ||
FixFX.78
Link to FX.78Comment on FX.78 |
Tests: the team button sits in a folded panel section; add-on buttons are not registry commands mounts-09 2026-11-06: tools/bimcraft-test/browser-r5.mjs clicked [data-model-team] while the shell's panel accordion had its section folded (a person opens the section first; the test now does too). tools/shell-test/browser-input-apps.mjs's "every toolbar button is a registry command" no longer lists add-on buttons (data-addon-tool), as print-09 asked; ModelCraft's 3D Print button passes. Still failing there, not from this session: "Move the Tools toolbar" (the toolbar tear grip) and the Settings style-card radio that is not visible; and tools/civil-mount-test/browser.mjs la4 clicks the first of two "Ground modifiers" menu items, which is hidden. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 0.5 | – docs/0.9-sessions/mounts-09.md | ||
FixFX.79
Link to FX.79Comment on FX.79 |
ModelCraft Surfaces solids test opens the folded Surfaces section first tools/modelcraft-test/browser-solids.mjs failed before any change of 2026-11-06: the right panel now folds its sections (app-settings.js, one open at a time), so the Surfaces button was not visible. The test now clicks the Surfaces heading when the section is folded (as a person does), and expects 9 Solids commands (+ Fillet between faces, Thicken into a solid, SU.747c); PartCraft's browser-solids.mjs the same count. Both pass (14/0, 18/0). Not fixed here: ModelCraft's browser-trim.mjs, browser-scanfit.mjs and tools/nurbs/browser-scanfit-09.mjs open the panel the same old way (listed in docs/0.9-sessions/nurbs-s3-09.md § Found). |
ModelCraftPartCraft | Built · Live | 0.1 | – docs/0.9-sessions/nurbs-s3-09.md | ||
FixFX.83
Link to FX.83Comment on FX.83 |
Settings > Layout: the layouts are a drop-down of two-line choices, not a long radio list The layout list (built-ins plus add-on and imported layouts) grew into a long radio column. Now a button shows the chosen layout (icon, name, hint) and opens a pop-up list of two-line choices, scrolling past 24rem. The radios stay inside the pop-up, so picking, the extras list, Remove and the keyboard (arrows between layouts) work as before; Esc, a pick or a click elsewhere closes it; without JS the list just shows. Files: app-settings.inc, app-settings.js (wsCur, wsOpen), app-shell.css. Checked: syntax and php -l; not yet tried in a browser. Owner tried it in /lab 2026-11-06: works. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftSuperCad Studio | App shell | Built · Live | – | – From: owner (Owner) owner request 2026-11-06 | |
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) | |
FixBot obtainedFX.94
Link to FX.94Comment on FX.94 |
Material flow Real mode: connect again after the link ended on PLC exceptions When a Real link ended after several exception answers, Studio's socket stayed open (only the page stopped), so pressing Connect again was refused with "already connected". RealLink.connect now closes the old socket first. Found by tools/plc-sim/test.mjs against a software Modbus slave. Also plc.rs: the below-1024 port rule is a plain function with a test. |
ModelCraft | Built · Live | – | – twin-plc-09 2026-11-06 | ||
FixFX.96
Link to FX.96Comment on FX.96 |
CadCraft GRIDMOVE carried a whole plan wall that only starts on the grid line Found by walls-plan-09 while locking walls to grid lines (WT.7): GRIDMOVE treats a block reference whose insert point lies on the line as a column and moves it whole, and a plan wall is a block reference, so a wall that merely STARTS on the grid line (the room's north wall at its east end) travelled away whole instead of being stretched. Fixed in gridmove.js: a plan wall is judged by its ends: an end on the line goes with it, both ends on the line move the wall whole, otherwise the wall stays. Test: node tools/cadcraft-test/walls-plan.mjs (WALLGRID then GRIDMOVE: east wall follows, south and north walls shorten, west wall stays). In /lab, not hand-tried: part of WTPLAN-HAND. |
CadCraft | Built · Live | – | – walls-plan-09 2026-11-06 | ||
FixFX.97
Link to FX.97Comment on FX.97 |
Settings > Plugins list in SuperCad stayed empty once the module waited for the routing table The list was filled by a window load listener; the module now finishes after load, so the listener never ran. It fills at once when the page is already loaded. Found by the older browser suites (notes-tasks, timer). |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.98
Link to FX.98Comment on FX.98 |
Sync merge endpoint did not return the "future" count, so a device could not tell a row was refused for its clock api/v1/team/teams.php returned a fixed list of fields without future. Found by running the real client against the real server. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.99
Link to FX.99Comment on FX.99 |
Account database update stamps never moved forward: SQLite MAX() compared the bound stamp as text PDO binds numbers as text, and in SQLite any text sorts above any integer, so MAX(?, updated_at + 1) always chose "now". Fixed with CAST(? AS INTEGER). Found by the last-writer tests. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.100
Link to FX.100Comment on FX.100 |
Synced rows with an exact timestamp tie never converged: each copy kept its own Ties are now decided by a fingerprint of the row's content in both JS and PHP (shared vectors), so every copy picks the same row. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.101
Link to FX.101Comment on FX.101 |
SuperCad said "not signed in" for Teams sync although the person was signed in to the site A SuperCad tab is signed in to the site by a cookie, but the account API takes a key, and nothing in the page fetched one (the add-ons client that does is mounted only for the eight apps and refuses SuperCad). New: POST /api/account/super-connect (same origin, guarded) mints a 30-day sync-scope key for the tab; super-account.js keeps it in the tab, reconnects once on a 401, retries when the tab regains focus, and tells the plug-in at once. Found when the person said they were signed in; my tests had injected a signed-in account object and never exercised this. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.102
Link to FX.102Comment on FX.102 |
SuperCad showed no "Starting up…" while it opened an app in a panel The indicator in the bar ran only at page load. app-boot.js now has window.ccBoot.begin(name) / end(): SuperCad calls it while a panel opens an app, so the bar shows "Opening Building…" and then the files really being fetched, and hides it when the app is ready (new string shell.boot.mount). Single apps behave as before. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.103
Link to FX.103Comment on FX.103 |
SuperCad: an app's Open a folder / Documents buttons were tiny and unframed when docked, and tall frames in a view The layout engine resets every button in its palettes to plain text (transparent border, 3px padding) and SuperCad's .sc button reset hit the app's panel once it was moved into the Properties panel, while the site's touch-size .btn-line (3 rem minimum, 17px bold) made frames in a view much taller than their label. Real buttons (btn-line, btn-plot) now keep a frame sized to the label in the layout's own text size, in both places (app-workspace.css, supercadcraft.css). Test tools/super-test/mount-ui.mjs. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.104
Link to FX.104Comment on FX.104 |
Layout ribbon: large tool buttons had a fixed 75px frame with about 30px empty under the label app-workspace.css gave .ws-tool a fixed height of 4.6875rem (the "labels" mode already knew a frame should be its label's size). The frame now hugs its icon and label (about 50px). Shared by every app's ribbon. Test tools/super-test/mount-ui.mjs. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.105
Link to FX.105Comment on FX.105 |
SuperCad docked layout had no button to get back to the Home / welcome page The docked title bar showed Open and Save only. An app that offers a home action (SuperCad Studio) now gets Home first in the layout's title-bar quick buttons (app-workspace.js quickIds); other apps are unchanged. Test tools/super-test/mount-ui.mjs. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.106
Link to FX.106Comment on FX.106 |
SuperCad panel tabs: the pop-out icon is replaced by the apps' "…" menu (move, show on its own, float, new window, hide) Each panel tab, docked or floating, had a small pop-out icon that only tore the panel off. It now has the same "…" button the apps' panel grips have (app-workspace-popout.js menuButton), with Move to the left / middle / right / bottom (not the side it is on), Show on its own, Float in this window, Open in a new window (a real OS window), Hide this panel, and Put it back in the window for a floating one. Test tools/super-test/tab-menu.mjs. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.107
Link to FX.107Comment on FX.107 |
SuperCad: Teams and Team members are pages of the welcome area, not modal dialogs A plugin can now register a PAGE (api.page / api.openPage; host.pages()) that the welcome screen shows with its own left-menu entry. Teams (menu entry) and Team members (reached from a team) are pages: no dialog, adding a team no longer drops you into the drawing space, and the Workflow buttons on the welcome page no longer leave it. The commands Teams, Team members and New team open the pages (New team puts the cursor in the name field). Tests tools/super-test/home-teams.mjs, bin/test-super-teams.mjs. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.108
Link to FX.108Comment on FX.108 |
SuperCad: the primary button on the welcome page (Continue SuperCad project) and other primary buttons had dark text on blue .sc button { color: inherit } (and .sc-home button) outranked the button colours. Primary buttons now use the on-action colour (white) and the sheet colour on hover; outline buttons the action colour (supercadcraft.css). Checked by contrast in tools/super-test/home-teams.mjs. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FixFX.109
Link to FX.109Comment on FX.109 |
Accuracy: exact-equality comparisons reviewed, 7 given a tolerance, the rest tagged (new Changes tab) Prompted by a community comment that floating-point == / === comparisons in the apps look suspect. All 367 candidates on /accuracy/comparisons were read. 7 now compare within a tolerance (1e-9 relative): electrical add-on (2 places), process dispersion, process vessel, PartCraft lattice, PDF rectangle corners (isAxisRect), window cut-list part merge. The other 277 were left exact on purpose (whole numbers, copied values, zero guards, typed codes, triangulation and ordering tie-breaks) and tagged with the reason in plain words. Every change is on /accuracy/changes with before, after, UTC time and a revert command (node tools/accuracy-equality/fix.mjs revert EQ-n). a Discord member (/lab) only. Not done: live shared shell (engines/risk/weibull.js, calc.js:240) waits for a release go; 6 needs-review items (EQ-0094, 0209, 0215, 0248, 0273, 0279) still to decide; app suites not re-run, edited files only checked to parse; reviewers' reasons come from reading code, not running it. |
CadCraftPartCraft | Built · Live | – | – From: community (Site) community comment, accuracy review 2026-11-07 | ||
FixBot obtainedFX.110
Link to FX.110Comment on FX.110 |
CivilCraft help: "Not built yet" said LAS and LAZ cannot be written The Point clouds add-on writes a cleaned cloud as LAS 1.4 or LAZ (PC.14), but the "Not built yet" row and the elevation-grids topic still said "Writing LAS or LAZ". Both now say what is true: no LAS/LAZ from a surface or the elevation-grid and LiDAR tools; the add-on writes a cloud. Help rebuilt. Checked by reading; no test. |
CivilCraft | Built · Live | – | – closing 2026-11-07 | ||
FixBot obtainedFX.111
Link to FX.111Comment on FX.111 |
CadCraft help: "Not built yet" said a hatch cannot follow its boundary; .pat files had no help PLAN2D.1 links a hatch to its boundary and FX.47 loads .pat files, but "Not built yet" still listed both as missing and hatch.md did not mention .pat. Rows corrected (gradient fills stay listed; a link made in another program is not read), a Pattern files paragraph added to the Hatch topic (only files written to the usual format were tried). Help rebuilt. Checked by reading; no test. |
CadCraft | Built · Live | – | – closing 2026-11-07 | ||
FixFX.112
Link to FX.112Comment on FX.112 |
CadCraft: the grid was drawn only inside the drawing limits even with the limits OFF Drawing limits set (LIMITS) held the grid inside the rectangle whether the limits were on or off. Now the grid is held inside only while the limits are ON; OFF shows the full grid, and the limits outline stays, dashed. view.js drawGrid + limits.js note. Checked in the browser (tools/cadcraft-test/browser-aids.mjs, grid pixels outside the rectangle with limits off). Not checked: a drawing opened from a DWG that carries $LIMCHECK. |
CadCraft | Built · Live | – | – From: Mohammad Imtaar (Site) email 2026-11-07 | ||
FixFX.113
Link to FX.113Comment on FX.113 |
CadCraft: no Snap to grid (F9) The status bar had only Object snap (called Snap, F3) and Grid (F7, display only). Added Grid snap (F9): picked points go to the nearest grid point of the UCS (the grid step on screen) when no object snap took the point; button in the status bar and every layout, F9, the keys registry (aids.gsnap), saved with the settings. Checked in the browser (browser-aids.mjs). Not built: a separate snap spacing apart from the grid (SNAPUNIT) and an isometric snap. |
CadCraft | Built · Live | – | – From: Mohammad Imtaar (Site) email 2026-11-07 | ||
FixFX.114
Link to FX.114Comment on FX.114 |
CadCraft: the object snap list could not be opened in the ribbon, toolbox and other layouts The Object snaps list (chevron beside Snap) opened upward inside a block that clips its content (ribbon, status bar), so only Classic showed it. The list is now placed on the screen itself, up or down as there is room, and kept inside the window. Checked in the browser in all seven layouts (standard, docked, toolbox, autorev, duncan, vector, sketch): list fully visible and clickable. Not checked: a pop-out window of the aids. |
CadCraft | Built · Live | – | – From: Mohammad Imtaar (Site) email 2026-11-07 | ||
FixFX.115
Link to FX.115Comment on FX.115 |
CadCraft: long block list ran off the screen; INSERT gave no near names; FILLET radius prompt did not say clicks measure it From four asks in one message. The block list in the side panel now scrolls inside its panel (max 24 rem / 45% of the window). INSERT: a name that is no block lists the blocks that start with or hold what was typed ("Did you mean"), and a name that is a block while others start the same way ("1" and "10", "12") says so. FILLET: the radius prompt says a value is typed or two clicks measure it (it already did). Already there and answered: UCS (UCS command), STRETCH by crossing window (select with C or drag right to left). Not built: a dropdown of candidates under the command line. Checked by reading + syntax; browser-aids.mjs covers the other fixes only. |
CadCraft | Built · Live | – | – From: young Ryu (Site) support message #1300 2026-11-07 | ||
FixFX.116
Link to FX.116Comment on FX.116 |
TakeoffCraft: no 1:150 or 1:75 metric scale presets Asked in support message #1301 (drawings at 1:150): the metric presets went 1:100 to 1:200. Added 1:75 and 1:150 (now 32 presets, 14 metric) in units.js; the Scale presets help topic lists them and the count is corrected, help rebuilt. bin/test-takeoffcraft.mjs 1197 of 1197 (count updated, new check that both are metric). Not checked: the preset list on screen in a browser. |
TakeoffCraft | Built · Live | – | – From: Tom (Site) support message #1301 2026-11-07 | ||
FixFX.117
Link to FX.117Comment on FX.117 |
Accuracy Changes tab: search, filters, and a before/after check on each fix (1,000,000 inputs) Owner 2026-11-07. /accuracy/changes now has a search box, tag chips and App / What happened / Before and after filters (server-side, 50 a page). Each of the 7 fixes was run before and after on 1,000,000 generated inputs (tools/accuracy-equality/verify.mjs, one recipe per change in checks/): all 7 show 'Corrected' (the old text was wrong on 13 to 45 percent of inputs, the new text on none) and link to /accuracy/changes/EQ-n with counts, samples and the seed; the raw file is /accuracy/changes/EQ-n.json and lives in core/data/equality-results/ so it can be copied to a CDN (.env NUMERICS_RESULTS_CDN makes the links point there). Limits: it runs the changed comparison text with generated inputs, not the whole app; the 'right answer' is within 1e-12 relative, which is my definition; 277 tag-only entries have nothing to compare. Not done: no revert button on the page; app suites not re-run. |
CadCraftPartCraft | Built · Live | – | – From: owner (Site) owner request 2026-11-07 | ||
FixFX.118
Link to FX.118Comment on FX.118 |
SuperCad dialogs and pages: dropdowns, text fields and notes boxes had no styling; a stray "null" showed in the Timer and the event form Wrong: selects in the Timer, Calendar, Teams and Settings dialogs were the browser's small native control, text/date fields and notes boxes were plain white boxes (the time zone field stayed narrow), and the Timer and the calendar event form printed the word "null" where an optional field was left out (empty placeholders were passed straight to replaceChildren). Changed: one rule gives selects, text/date/number fields and textareas the same border, height, colours and focus outline; the empty placeholders are dropped before drawing; the event form's ten reminder ticks lay out in columns. Tests: home-calendar checks no stray null/undefined text in the form. Untested: browsers other than headless Chromium. |
SuperCad Studio | Built · Live | – | – SuperCad Studio, owner session 2026-11-07 | ||
FixFX.119
Link to FX.119Comment on FX.119 |
SuperCad Calendar: a full-page calendar in the welcome area (day, week, month, year; tasks panel; events list; .ics; search; colour and owner) New page, left menu entry Calendar, built over the Calendar plugin's own data and editor. Day, Week, Month and Year views with Today and back/forward; calendars box (project calendar plus one per team, colour, tick to hide, scrolls); tasks panel (tasks with a due day, shown on the grid, Make event); events list for the range with a one-click .ics each; Export .ics for the ticked calendars (repeats included); search; click a day or an hour slot to add an event; events carry an optional owner (project or a team) and colour (new optional fields, older files open unchanged). Not built: drag or resize in the week view, a mini month navigator. Tests: tools/super-test/home-calendar.mjs (28). Untested: .ics in a real calendar app, phone widths on a real device. New strings are English only. |
SuperCad Studio | Built · Live | – | – SuperCad Studio, owner session 2026-11-07 | ||
FixFX.120
Link to FX.120Comment on FX.120 |
SuperCad Teams redesign: teams left, members right, Add people, a member's page with roles, status and activity; website Members tab to match From the owner's design boards (dropai.zone/d/znEiRaXp). SuperCad Teams page: team cards (people, projects, invited count, project access, edit, delete) beside the picked team's members as rows (person, title and company, role, status Active/Invited/Disabled); filters, search, role filter, bulk disable/remove; Add people (people you already work with, or type an email, one card each with a role and what that role can do); a member's page (details, their teams, activity, a role and permissions table, the projects they reach); the empty state. Data and server: roles are owner/admin/member (an older Lead is read as admin); members gain joined_at, invited_by and disabled_at, people gain last_active; whoever makes a team is its owner; the last owner cannot step down, be removed or be disabled; account database schema 3 rebuilds team_members with the new check and keeps every row; new endpoint ops set_member_access, touch_active and GET ?me. Status is derived: disabled, active (has an account or is the person using this copy) or invited. Website: the team Members tab (/teams/{slug}/members) gets status pills, search and filters (progressive) and a what-each-role-can-do table; no member page or disable on the website yet (accounts have no such model). Tests: test-super-teams 291, test-user-teams 93, test-teams 145, home-teams 29. Not done: the file-format spec page (supercad-file-format-0.1.html) still lists the old team_members columns; last active is only recorded for the person using the copy; not run against the live account database or a signed-in device. |
SuperCad Studio | Built · Live | – | – SuperCad Studio, owner session 2026-11-07 | ||
FixFX.121
Link to FX.121Comment on FX.121 |
Admin dashboard shows SuperCad Studio revenue The /admin dashboard counted SuperCad owners and seats but no dollars: revenue figures read only owned licenses and Team Cloud Plan. Added a "SuperCad Studio revenue, all time" tile, SuperCad rows in the License payments table, and SuperCad in the one daily chart: blue bars = licenses, green bars = SuperCad seats, line = grand total revenue to date (all sales). Test emails left out. Billing::revenue(), payments(), dailyLicenses(). Not in the Licensed users count. Checked against live data (4 purchases, 6 seats, $175; Handybear $150 listed); page not looked at in a browser. |
– | Built · Live | – | – | ||
FixFX.122
Link to FX.122Comment on FX.122 |
CadCraft: MTEXT OK button and part-text height, Text style in Annotate, command drop-down list, Multiline tool Lab pass 37 feedback (Mohammad Imtaar, 2026-11-07) listed what still failed. Fixed in a Discord member: (1) the MTEXT box had no OK or Cancel button (they were made but never added to the box); (2) a new size typed for a selected part of the text was lost because the size box took the focus and the selection with it, so the whole text changed or nothing did; the selection is now kept the moment the box takes focus, and Enter leaves the box once; (3) the Text style tool was missing from the Draw toolbar's buttons, so the ribbon's Annotate tab had nothing to press, and the Ribbon style's Annotate tab had no text group; both added (Text, Paragraph, Text style); (4) typing in the command line now shows a drop-down list of every command that starts with the letters (arrows + Enter, or a click); (5) MLINE did not exist: new multiline (parallel polylines, Scale, Lines 2-8, Justification, Close, Undo) with a Multiline button in Draw. Test: tools/cadcraft-test/browser-fx94.mjs (9). |
CadCraft | Built · Live | – | – From: Mohammad Imtaar (Site) lab pass 37 feedback 2026-11-07 | ||
FixFX.123
Link to FX.123Comment on FX.123 |
SuperCad Teams: Resend invite, a join code for when email fails, Join with a code (app and /join-team), role changes behind an Apply button Wrong: the Add people screen said an invited person 'gets an email invite' but nothing was sent, there was no way to resend, and no way to join if the email failed. Changed: TeamJoin (service) makes a 12-character code per invited member (only its sha256 is stored, table team_join_codes, migration 128, 14 days), emails it (Mailer::teamJoinCode, branded) and shows it once on the inviter's screen with Copy, so it can be handed over when email misbehaves; Resend invite makes a new code and the old one stops working. The invited person joins by entering the code AND their email address at /join-team or with Join with a code on the Teams page; they must be signed in with that verified address; the member's row then links to their account and shows Active. Wrong tries are throttled per person (8 / 10 min); a wrong guess never says which part was wrong. Send invite needs a signed-in account and syncs first. Also: a member page's role changes wait for Apply (on only when the pick differs, Undo to go back); the Sync status headings have air above them. Tests: test-user-teams 110, test-super-teams 304, home-teams 31. Untested: a real email through Brevo to a real address, the page with a real signed-in browser session. Not done: the table's role select still changes at once; the migration runner stops at an older migration (country column) so 128 was created from schema.sql; other-language strings. |
SuperCad Studio | Built · Live | – | – SuperCad Studio, owner session 2026-11-07 | ||
FixFX.124
Link to FX.124Comment on FX.124 |
SuperCad Home: New project is a setup page, not a confirm and prompt; cancelling Open file no longer closes Home Wrong: New on Home used the browser's confirm and prompt (an alert saying the open project has files), Open file left Home the moment it was clicked so a cancelled pick dropped you into the drawing space, and the 'No projects opened or saved' line was squeezed into one card column. Changed: New opens a New project page on Home (super-newproject.js): name, description, what it is for (design, documentation, estimate, review, study, other), client, team (from the Teams plugin), start and due dates (a due before the start is refused), length unit and keep-earlier-versions, with a notice and Save first when the open project has files. The details are stored in the project (new optional info block in Data/manifest.json; older files open with empty details; cleanInfo validates days and intent). Open any file, open folder and open project file leave Home only after something really opened. The empty-projects line spans the row. Tests: home-actions 19, test-super-core 137, test-super-home 22. Untested: the page on a phone, a real file pick on every browser. Not done: the chosen team is recorded on the project but not given project access (that is still done on the Teams page); the intent and dates are not shown on the Home project card yet; strings English only; the file-format spec page does not list info. |
SuperCad Studio | Built · Live | – | – SuperCad Studio, owner session 2026-11-07 | ||
FixFX.125
Link to FX.125Comment on FX.125 |
Studio and browser editions: the chosen language now reaches every word the page prints (New, Open, Save, Draw, About <app>…) Wrong (Discord, a Discord member, 2026-11-07, still after 0.8.1): in CadCraft Studio and the browser editions the choice was saved and reached every app window, but the most used words stayed English: New, Open, Save, Draw, Modify, Edit, Select, a Discord member, "About CadCraft", the app's tagline. Cause: a packed page is printed once in English and app-lang-boot.js swapped words by matching the English across the whole catalog; any English several keys share with different translations, and any text with fills, was left alone. Fix: render.php --edition records every key it prints (Lang::record, #cc-lang-printed) and app-lang-boot.js swaps by that key, fills and plurals included, pieces around markup fills too; Paper/Model in the edition bar now use the shell's keys. Checked in real Studio 0.8.1 on Windows (portable build, own data folder): choice kept across hub, app windows, app Settings and a restart. Leftover English in French on screen: CadCraft 34 → 0, MarkupCraft 11 → 0, the same as the website. Needs a Studio and editions rebuild to ship. |
– | Built · Live | – | – Discord #general, a Discord member, 2026-11-07; lab session 2026-11-07 | ||
FixFX.126
Link to FX.126Comment on FX.126 |
Website: a language picker in the footer that sets the language the apps open in (lab only) Asked on Discord (a Discord member, 2026-11-07): getcadcraft.com has no display-language option. Built: core/components/site-lang.inc in the footer, POST api/site-lang (CSRF, can_lab() else 404) → Lang::rememberChoice writes the same cc_lang cookie the apps read; choices = every shell language file (Lang::siteChoices, 74). Says plainly that the site's own pages stay English for now and that Studio keeps its own choice. Lab and staff only until the owner's go. Translating the site's pages themselves is a separate, larger decision (docs/LANG.md: the site stays English). |
– | Built · Live | – | – Discord #general, a Discord member, 2026-11-07 | ||
FixFX.127
Link to FX.127Comment on FX.127 |
Website footer: the language picker sits in the Community column under a rule; Save is a small button that shows once the pick changes Owner 2026-11-07 (screenshot): the footer language picker moved from the notes strip into the Community column, under a rule like the one above SuperCad Studio in Apps. The Lab tag sits beside the heading. Save is a small button that appears only after the pick changes (site.js; without JavaScript it always shows). Files: core/components/footer.inc, core/components/site-lang.inc, assets/css/site.css, assets/js/site.js. Still lab only (can_lab). Then (same day): pinned to the bottom of the Community column (.tb-community flex column, margin-top auto). Community column gets the spare width from 1100px (columns .75/1/1/1.25; equal below). |
– | Built · Live | – | – Discord #general, a Discord member, 2026-11-07 | ||
FixFX.128
Link to FX.128Comment on FX.128 |
Team member pictures: built-in defaults, upload, change SuperCad Teams member page showed only a letter in a circle. A person now has a picture: the default is their initials on a colour, or one of 12 built-in pictures in 8 colours, or an uploaded image (cut to a 128 px square in the page, kept under 24 KB). Change it under Details > Edit. Stored on the person row (people.avatar, account DB schema 4), synced like title and company; the server and the plug-in both refuse anything that is not a built-in or a small png/jpeg/webp. Tests added (teams 310, user-teams 116). Not done: the account's own profile picture is not used as the default; no website member page picture; other-language strings still English; never opened in a real browser window. |
SuperCad Studio | Built · Live | 0.2 | – | ||
FixFX.129
Link to FX.129Comment on FX.129 |
Teams page flashed an empty list for about 1.5 s before the members appeared On a fresh load the Teams page drew its empty states until the account connected and the first sync brought the rows in. Now the page says 'Loading your teams (N teams, N people)' with a spinner while the first sync of the visit is pending. Where the count comes from, in order: (1) the account itself: app-shell.inc prints #cc-account-hints {teams:{teams,people}} for the signed-in person on /lab/supercadcraft (UserTeams::hint: two counts, never creates a database), so it works in a browser that has never synced; (2) otherwise a marker this browser kept at its last good sync. A hint of none wins over an older marker. It gives up after 15 s and tells the truth (empty, or the sync error); an account with no teams sees the empty state at once. Tests: teams 321, user-teams 118. Not done: the rows themselves are not cached locally; the hint is only printed for signed-in site sessions (a device-token-only window falls back to the browser marker); never opened in a real browser window. |
SuperCad Studio | Built · Live | 0.1 | – | ||
FixBot obtainedFX.130
Link to FX.130Comment on FX.130 |
CadCraft: DXF R12 export was refused by AutoCAD (dimension styles) Reported on the Discord: a CadCraft R12 DXF would not open in AutoCAD, which said 'Unknown group 1001 for table' and then 'Omitted group 4'. Cause, in dxf.js: each DIMSTYLE record carried CadCraft's own settings as xdata (1001 CADCRAFT), which R12 tables do not allow, and the record left out groups R12 requires (DIMAPOST, group 4, when the style had no alternate text; also 46, 145, 175, plus a 270 R12 does not have). Now every record lists all the groups R12 lists, once each, in its order (dwg-props.js r12DimstyleItems), and the settings R12 has no variable for travel in a CADCRAFT_DIMSTYLES block the way the classes and Laser panel data do; files written before 0.9 still read. Tested: bin/test-cadcraft.mjs (record layout, round trip, old files). Not opened in AutoCAD here (none on the server): the reporter's AutoCAD is the check. |
CadCraft | Built · Live | – | – Discord #bug-reports, 2026-11-08 | ||
FixBot obtainedFX.131
Link to FX.131Comment on FX.131 |
Add-ons publish with the release: one command, held until the apps carry what they need Owner 2026-11-08: add-ons that are ready must not wait for someone to remember them. bin/addon-package.php --release=0.9 checks every add-on against the add-on API 1.4 the 0.9 apps report and publishes it only when every app it targets has 0.9 (or newer) as current AND that build holds every engine:/host: file the package imports; until then it is listed as HELD with the reason (pid, lighting and harness are held now: CadCraft current is 0.8.2). After the release moves current: sudo -u www-data php bin/addon-package.php --release=0.9 --apply. Also: add-on help compiles per language (help/help.<locale>.js, build-help.php --addon) and the add-on loader picks the page's language (hvac and piping 0.9.0, 11 languages, machine drafts). Run sheet: docs/0.9-sessions/first-builds-09.md § Add-ons at release. |
CadCraft | Built · Live | – | – Owner, 2026-11-08 | ||
FixFX.133
Link to FX.133Comment on FX.133 |
TakeoffCraft: item list quantity label broke the page (itq0 not defined) Found while testing TKW.1 in the real page: qtyLabel in takeoffcraft.js (a Discord member) read itq0.conds and t.conds, a half-finished rename of the quantity map (it.conds and tq0.conds are right), so the page threw on load and no browser test could open. Corrected the two names. Separate, not fixed: tools/takeoffcraft-test/browser-propgrid.mjs fails in a fresh profile because the shell Auto-focus panel folds the item grid; browser-weights-temps.mjs switches it off first. |
TakeoffCraft | Built · Live | – | – found testing TKW.1 2026-11-08 | ||
FixFX.134
Link to FX.134Comment on FX.134 |
Website: /admin dashboard took 5 to 6 seconds to load after every new signup What was wrong: the dashboard's metrics cache (a day) was dropped by every new account, email verification and license event, 100 to 230 times a day, and the recount ran in the page request: 4 seconds of it were three COUNT queries over a million session_activity rows (pageviews, visitors, app opens over 30 days). Largest Contentful Paint 5.72 s in the owner's measurement (2026-11-08). What changed: AdminDashboard now keeps two caches. Accounts, signups, licenses and revenue (~25 ms to count) stay on the day cache dropped by audit events. Traffic is read from the stored /admin/analytics 30-day report (counted nightly by bin/warm-analytics.php), never counted while a page waits; when that report is missing or past its time the page shows what it has and starts the count in the background (bin/warm-analytics.php --days=30, one at a time, lock tmp/cache/.analytics-warm-30.lock), and says so. A fresh analytics count now replaces the stored report only when done (Cache::put) instead of deleting it first. Count again now (?fresh=1) recounts the account figures at once and starts a traffic count. Admin bar counts stopped fetching 500 library versions and 200 SuperCad inquiries to count them (LibraryVersions::countPending, SuperCadLicenses::counts). Also found: 2.45 million session files (PHP's collector is off for the custom path, 521,000 of them empty from crawlers): bin/session-gc.php + /etc/cron.d/cadcraft-sessions remove expired and empty ones daily. Measured with the new shim bin/admin-perf.php (in-process render with every query timed, or --http against the live vhost as the test admin): cold cache 4,233 ms to 75 ms; warm 50 ms either way. Not done: MySQL innodb_buffer_pool_size is 128 MB on a 32 GB server (session_activity alone is 646 MB), a server-wide setting for the owner; crawlers still start a session on every visit. |
– | Built · Live | – | – | ||
FixFX.135
Link to FX.135Comment on FX.135 |
Website: /admin/library (3.8 s) and /admin/analytics (1.7 s) staff pages were slow Found with bin/admin-perf.php while fixing the dashboard (FX.134), 2026-11-08. /admin/library: LibraryVersions::possibleDuplicates joined every version to every other version with the same source hash. The Library's generated collections share one source file across 250 items of one maker, so the self-join compared about 6 million pairs to find nothing (3.8 s). The source branch now starts from source hashes held by versions of two or more owners (a pair with different owners needs one), which is the same answer: 365 ms. /admin/analytics: the browser-language list (Analytics::languages) was the one figure counted live on every load, 1.7 s over session_activity; it is now part of the stored report (Analytics::report carries languages), counted nightly by bin/warm-analytics.php like the rest. Loads in ~60 ms. Tests: bin/test-library-admin.php, bin/test-admin.php (one failure in the message search is other sessions' uncommitted work on Contact.php, not this). |
– | Built · Live | – | – | ||
FixFX.136
Link to FX.136Comment on FX.136 |
Website: 2.45 million session files; sessions now collected (21 days, empty after a day, CSRF-only after 48 h), none for crawlers What was wrong (2026-11-08): PHP's session collector is off for the site's own sessions folder (session.gc_probability 0; the system timer only cleans /var/lib/php/sessions), so nothing ever removed a session file. After one month: 2.45 million files, 521,000 empty. A sample showed 99 % of the rest hold only an 83-byte CSRF token: a first visit that rendered a form and never came back. Most come from cookie-less crawls with plain browser user agents (one walks every /roadmap-issues filter permutation, about 4,000 requests an hour in bursts, from Huawei Cloud Singapore), which start a fresh session on every request. In 7 days bots made 103,244 sessions against 73,607 from people. What changed (owner's choices): SESSION_LIFETIME 21 days; bin/session-gc.php from /etc/cron.d/cadcraft-sessions every 6 hours removes expired sessions, empty ones older than a day, and sessions whose whole content is the CSRF token line after 48 hours (1.47 million removed on the first run); core/bootstrap.php starts no session and sets no visitor cookie for named crawlers, link previewers and scripted HTTP clients arriving without our cookie (curl, wget, headless browsers, the smoke test and empty user agents still get one: the test suites need CSRF and sign-in). Also: MySQL innodb_buffer_pool_size 128 MB to 1 GB (SET PERSIST, online). Cost accepted: a person who leaves a form open for two days and then submits gets the CSRF 403 and submits again. Not done: stateless CSRF (no session for anonymous visitors) and throttling the roadmap crawl; the owner judged both too likely to break things. |
– | Built · Live | – | – | ||
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.139
Link to FX.139Comment on FX.139 |
Screenshot mode for /lab: ?shot=1 hides the Lab badge, stamp and staff panel; capture tools shoot from /lab Why: 0.9 media (store shots, tutorial pictures, About/README screenshots, videos) should not wait for the real 0.9 builds, and the lab badge, build stamp, staff panel and 'a Discord member' must never show in them. Changed: shot_mode()/shot_version() in core/functions/helpers.php (lab testers only, /lab/ pages only, per request: no cookie or session, so it cannot reach /use). With ?shot=1 the app bar drops the Lab badge, build stamp and version list; Settings > Version and the About dialog show the release number (0.9, or ?shotv=); header.inc drops the staff panel. New tools/shot-target.mjs (LAB_SHOT=1 points tools/help-walkthrough-shots.mjs, tools/help-shots.mjs and videos/kit/shoot.mjs at /lab/<app>?shot=1 as the shell test admin); stores/kit/lab-shots.mjs now uses the param (its visible-text guard stays); tools/shot-freeze.php record|check lists apps whose lab build moved since the shots (docs/0.9-shots-freeze.json). Tried: lab-shots (CadCraft, BimCraft) and help-shots (MarkupCraft) on the VPS, badge and staff panel gone, guard passed. Untested: the tutorial walkthrough and video tools with LAB_SHOT=1 end to end, native window chrome per OS (needs a real Studio build), no freeze recorded yet. |
– | Built · Live | – | – From: owner (Site) owner 2026-11-08 (screenshots from /lab) | ||
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.141
Link to FX.141Comment on FX.141 |
Apps: every app page decoded 130 language files (43 MB) to list the languages in Settings Built: app-settings.inc called json_decode on every language file under assets/lang on every /use and /lab app page to show each language's own name in Settings, 156 ms of PHP per page view. Lang::nameOf() now reads the first 1 KB of a file and takes "@name" from it (every file tools/lang writes puts @locale and @name first; a head without it falls back to a full decode). app-settings.inc and Lang::siteChoices use it. Measured: app-settings.inc 156 ms to 2 ms, time to first byte of /use/cadcraft on localhost 230 to 290 ms to 95 to 110 ms, the same 84 language options. Tests bin/test-lang-packs.php 21/21. Log docs/0.9-sessions/perf-09.md. (Filed as FX.137 in that log at first; the key was taken by the arc methods the same day, so this row is FX.141.) |
– | App shell | Built · Live | – | – docs/0.9-sessions/perf-wave3/ | |
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.146
Link to FX.146Comment on FX.146 |
DetailCraft: My profiles, custom profiles kept for every new model A custom profile lived only in the model file, so a new model started without it. Now the Custom profile form has Keep in My profiles (ticked), and a My profiles list under it, kept in this browser (localStorage detailcraft.myprofiles, at most 200, cleaned on read by profiles.js cleanLibrary). Every new model (start-up and New) begins with them in model.state.profiles, so they save with the file. Keep button on a model's own profiles, Use here for a model that lacks one, Remove (models keep their copy), a taken name with other dimensions is refused. Per browser, not per account. Help: plates-and-profiles.md. Test tools/detailcraft-test/browser-myprofiles.mjs (15 checks). The same report also met 'only I-shape': shear tabs already take a channel BEAM but need an I-shape COLUMN, end plates need an I-shape beam; which one the person hit is unknown, no change made. |
DetailCraft | Built · Live | – | Owner to clear in 0.9, then reply to a Discord member. Account sync and channel columns / end plates are not built. From: Discord community (Discord) Discord 2026-11-09 | ||
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 | |
| Requests for 0.9 8 | |||||||
FeatureD9.1
Link to D9.1Comment on D9.1 |
BimCraft: change several columns at once (height, top, size) Ask: "select multiple columns and edit their height in one go; the height options only show when one column is selected." Several columns picked together already shared Shape, Size, Top and Height, but a pick that also caught a wall or another element (columns stand in walls on grid lines; a box catches both) showed only "N elements picked" with no fields. Built: a pick of several kinds lists each kind with "Keep only these", one click keeps the columns and their shared fields show. Fields where the columns differ are empty ("Mixed"), never the first column's value; Height typed once makes every picked column that tall (a column following the level above gets the offset that makes it so); Top keeps each column's own level above. Files: bimcraft.js showMany, model-grids-ui.js props. Tests: browser-draw06 --only d9. |
BimCraft | App code | Built · Live | – | Built in /lab 2026-11-03; the requester tests it on a lab pass. From: Discord community (Discord) Discord 2026-11-03 (owner: build it in the lab now) | |
FeatureD9.2
Link to D9.2Comment on D9.2 |
BimCraft: grid dimensions on the plan Ask: "a way to show the grid dimensions". Built: Build › Grid has a Dimensions box: the spacing between neighbouring grid lines and the overall size, for the numbered and the lettered lines, drawn past the bubbles on every level's plan and the sheets made from it. Saved in the IFC (CadCraft_Grid Dims), one undo step, follows the grid when lines move, are renamed or added; a turned grid measures across its lines. Files: model-grids.js gridDims, model-grids-ui.js. Tests: test-bimcraft --draw06 (D9.2), browser-draw06 --only d9. |
BimCraft | App code | Built · Live | – | Built in /lab 2026-11-03; the requester tests it on a lab pass. From: Discord community (Discord) Discord 2026-11-03 (owner: build it in the lab now) | |
FeatureD9.3
Link to D9.3Comment on D9.3 |
BimCraft: Measure on the plan (temporary dimensions) Ask: "a measure tool to add temporary dimensions in the Plan view / 3D view". The 3D view already had Measure (M: distance, faces, areas). Built: Draw › Measure on the plan: click two points for a dimension with the distance and ΔX / ΔY; points snap to wall ends, grid lines and crossings, columns; Shift keeps a leg straight; more clicks chain on with a running total; Esc clears it. Nothing is written to the model. With only the plan shown, M opens it (with the 3D view on screen M stays the 3D Measure). Files: model-measure-ui.js (new), model-ui.js planOnly/useTool, bimcraft.js key M, ui.inc. Tests: browser-draw06 --only d9. |
BimCraft | App code | Built · Live | – | Built in /lab 2026-11-03; the requester tests it on a lab pass. From: Discord community (Discord) Discord 2026-11-03 (owner: build it in the lab now) | |
FeatureD8.14
Link to D8.14Comment on D8.14 |
BimCraft: sheet sizes A4 to A0, custom sizes, landscape or portrait Asked (pasted 2026-11-06). The sizes A4, A3, A2, A1, A0 (and Letter to Arch E) and a custom size (Formats… > New sheet size) were already built under SU.1123 on 2026-11-04; this row added the missing part: a Landscape / Portrait switch on every sheet, for the standard sizes and for the model's own. A sheet keeps its orientation, a turned sheet keeps each view at the same relative place, print and PDF use it. Test: node bin/test-bimcraft.mjs --views09 --only t; browser-views09.mjs --only t. In /lab, not released. |
BimCraft | Built · Live | – | – From: BimCraft user (pasted) (Owner) Pasted by the owner | ||
FeatureD8.15
Link to D8.15Comment on D8.15 |
BimCraft: type the drawing scale on a sheet (1:64, 1:256, any ratio) Asked (pasted 2026-11-06). Built: a "Type a scale" box next to the scale list on every placed view (plans, ceiling plans, callouts, elevations, sections, interior elevations). Accepts 1:64, 1:256, 1:2.5, 2:1, a bare 64, and architectural 1/4" = 1', 3/16 in = 1 ft; Fit stays as the list's first choice; a word that is not a scale says so and changes nothing. A typed ratio is kept to 3 decimals in the file and is the label under the view. 12 typed forms + refusals tested; a view at 1:256 measures a quarter of its 1:64 size. |
BimCraft | Built · Live | – | – From: BimCraft user (pasted) (Owner) Pasted by the owner | ||
FeatureD8.16
Link to D8.16Comment on D8.16 |
BimCraft: move a placed drawing around inside the sheet Asked (pasted 2026-11-06). Dragging a view in the sheet editor was already built (EG.56); added now: arrow keys move the picked view 1 mm (Shift 10 mm, Alt 0.1 mm), an exact place can be typed (Across / Up from the lower left corner, in the display unit), and a dragged view snaps to the border and to the edges and middles of the other views within 2.5 mm (Alt while dragging = free). Saved with the sheet. Checked in the browser. |
BimCraft | Built · Live | – | – From: BimCraft user (pasted) (Owner) Pasted by the owner | ||
FeatureD8.17
Link to D8.17Comment on D8.17 |
BimCraft: use your own sheet design with writeable fields (draw it, or import an SVG) Asked (pasted 2026-11-06). Built: Formats… > Import SVG… reads a drawing from any program (rect, line, polyline, polygon, circle, ellipse, path with curves and arcs, text, groups, transforms) into lines and words; a word written {{company}}, {{drawing-name}}, {{number}}, {{project}}, {{date}} or any word of your own becomes a field typed per sheet ({{drawing-name}} / {{number}} are the sheet's own); a rectangle with id="drawing-area" says where the views go (Arrange for me uses it). Formats… > Draw one… is a small editor (rectangle, line, words / fields, drawing area, border, undo) that makes the same kind of SVG. The design is fitted to the sheet (never stretched), kept in the model as a title block, carried by the library file, and printed to PDF. Scripts and images in an SVG are ignored (read as shapes, never put on the page). Limits: a design drawn here is not re-opened for editing (delete and draw again, or edit the exported SVG); fills are grey, colours are not kept; fonts are the sheet's own. Not yet shared with the other apps' sheets (the parser is a DOM-free file, ready to sync). Tests in views09 --only t (30) and browser-views09 --only t (13). |
BimCraft | Built · Live | – | – From: BimCraft user (pasted) (Owner) Pasted by the owner | ||
FeatureD9.9
Link to D9.9Comment on D9.9 |
Zoom in and out of the drawing to see details (request in German) Asked on /suggest (#1236, Nov 6 2026, in German, “Zeichnung vergrößern, verkleinern”): “Details should be zoomable; often the drawing in the edit window is too small and it is hard to see details.” The submitter did not say which app. Checked 2026-11-07: CadCraft has a ZOOM command and view zoom already; the report reads as someone not finding it, or a drawing that opens small (page or sheet view, a small window, a large paper size), or a touch screen where pinch/scroll do not work. Do: find which app and device (reply in German if there is an email), then check: zoom buttons visible on the canvas for mouse-less use, zoom to a window, zoom to the drawing on open, and the German labels (Vergrößern, Verkleinern, Alles zoomen). Not built yet. Built 2026-11-07 (lab, CadCraft): toolbar View group has Zoom in (2×) and Zoom out (½) beside Extents, Window and Previous, centred on the view (ZOOM 2x / ZOOM 0.5x, which already worked typed); tooltips say the wheel zooms at the pointer. bin/test-cadcraft.mjs 2815/0. Untested: German labels are a draft (en, es-MX, id only), the touch pinch, and on which app the requester looked (CadCraft done; BimCraft not changed). |
CadCraftBimCraft | Built · Live | – | – From: site suggestion (Site) Suggestion #1236, Nov 6 2026 | ||
| Education (Track ED) 2 | |||||||
FeatureED.1
Link to ED.1Comment on ED.1 |
Live TeamWork: follow the teacher (follow the presenter) Owner 2026-11-03 (educator kit): "allow students to follow the teacher". Built in a Live TeamWork session (assets/js/live-follow.js, shared by every app that uses the live presence layer; CadCraft and MarkupCraft mount it from their own live UI). A person can choose Follow on another person's name and their view moves with the presenter's: 2D camera centre and zoom (a smaller window zooms out to show all of the leader's view), 3D eye, target, field of view and parallel height, and the sheet, storey or space when the app can open it. The host can press "Ask everyone to follow me"; each joiner can still step away. Following stops by itself when the follower pans, zooms or orbits on their own, and a chip names who they were following and offers to rejoin. The view travels in the existing presence message, newest only, and nothing about it is saved in the file. Not tried in a live session with real students; the educator kit copy can now mention it. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftStudio | Built · Live | – | – From: Owner (Owner) | ||
FeatureED.2
Link to ED.2Comment on ED.2 |
Live TeamWork: class view, the teacher looks in on each student's work Owner 2026-11-03 (educator kit): "allow instructor to look at student progress". Built as the people list in Live TeamWork (same module, assets/js/live-follow.js): everyone in the session with their colour and name, the tool they are running, the sheet they are on, how many edits this window saw from them and when the last one was, and a Follow button on each, so the teacher can go to a student's view. Names from other people reach the page as text only. NOT built from the first plan: students each working in their own drawing inside a class room, a live thumbnail of each student's work, and "Look in" read-only or "Help" with a separate viewer role. Today the class works in one shared drawing and the teacher sees the class at a glance in the list. Not tried in a live session with real students. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftStudio | Built · Live | – | – From: Owner (Owner) | ||
| Library 8 | |||||||
FeatureATTR.1
Link to ATTR.1Comment on ATTR.1 |
SuperCad Studio: project report binder with an automatic credits page Owner 2026-11-03: 'a project report binder, where all the documents go, calculations, notes, etc., and add a credits page.' Built in the lab as the report-binder plugin (Workflow menu, Ctrl+K, Report and price strip): one PDF with a cover and contents, calculations, notes, tasks, optional time and calendar, documents, and always a Credits page, stamped with page numbers, saved in Documentation and downloaded. Credits come from saved IFC and DXF files and from open CadCraft panels (lib/report/credits.js); a closed DWG is listed as not checked. Engineer calculation reports file themselves in the project. Other files are named as not included. Not built: the binder in the Finalize and export zip, other apps' calc sheets filing themselves, bookmarks, a credits table on a sheet in CadCraft and BimCraft. Other scripts print as ? in typeset pages. Tests: bin/test-super-binder.mjs, tools/super-test/binder.mjs. Not released. |
SuperCad Studio | Built · Live | – | – From: owner (Site) owner 2026-11-03, library item page | ||
FeatureATTR.2
Link to ATTR.2Comment on ATTR.2 |
SuperCad Studio: tick what goes in the Finalize and export zip Owner 2026-11-03. The export dialog has a 'Project documents in the zip' list under the formats: Project file, Notes, Tasks, Time log, Calendar events, Project report binder, Credits page, Documentation folder. Plugins offer items through api.exportItem. The binder is ticked the first time, the rest are not; ticks are remembered in this browser. They go in documents/ and contents.txt names anything that had nothing to add. CC0 items stay on the credits page. Tests: bin/test-super-binder.mjs, tools/super-test/binder.mjs. In /lab, not released. |
SuperCad Studio | Built · Live | – | – From: owner (Site) owner 2026-11-03 | ||
FeatureATTR.3
Link to ATTR.3Comment on ATTR.3 |
Report binder: choose the section for each document Owner 2026-11-03. Each document in the binder dialog has a section picker (Calculations or Documents), kept in the project. Until someone picks, the guess uses who made it (Engineer), the name (calc, calculation, data sheet, analysis, sizing) and the text (an engineer-of-record line). Only those two document sections exist; no sections of your own. Tests: bin/test-super-binder.mjs, tools/super-test/binder.mjs. In /lab, not released. |
SuperCad Studio | Built · Live | – | – From: owner (Site) owner 2026-11-03 | ||
FeatureATTR.4
Link to ATTR.4Comment on ATTR.4 |
Report binder: Unicode text, Arabic and Hebrew right to left Owner 2026-11-03. Typed pages now embed a subset font only when the text needs one: Latin extended, Greek and Cyrillic (Liberation Sans), Arabic, Hebrew, Armenian and Georgian (DejaVu Sans, newly vendored in assets/vendor/rtl-sans), Thai, and Chinese, Japanese and Korean (10 MB, fetched on first need). Arabic letters join and right-to-left lines are ordered with numbers and Latin kept in order (lib/report/bidi.js, a simplified bidi, no bidi control characters). Limits: Devanagari and other Indic scripts have no font or shaper, so they still print as ? and are counted; those stretches print regular, never bold or italic; text copied from Arabic pages comes out as presentation forms in visual order; the page stamp leaves off a project name it cannot print. A font that fails to load prints ? and the dialog says so. Checked by eye on one rendered page, not by a native reader. In /lab, not released. |
SuperCad Studio | Built · Live | – | – From: owner (Site) owner 2026-11-03 | ||
FeatureATTR.5
Link to ATTR.5Comment on ATTR.5 |
Report binder: clickable contents and PDF bookmarks Owner 2026-11-03. Each contents row on the cover links to its page, and the PDF has bookmarks by section with the documents under them. Read back with pdf.js. A merged PDF's own bookmarks are not kept. MarkupCraft's writeOutline moved to lib/report/outline.js. In /lab, not released. |
MarkupCraftSuperCad Studio | Built · Live | – | – From: owner (Site) owner 2026-11-03 | ||
FeatureATTR.6
Link to ATTR.6Comment on ATTR.6 |
One shared PDF text kit: BimCraft and CadCraft use lib/report Owner 2026-11-03. lib/report is now the only copy: BimCraft's a Discord member-pdf.js and Markdown parser and CadCraft's pdf-font.js are thin wrappers over synced a Discord member/report copies (tools/report/sync.mjs; tools/engineer/sync.mjs for PartCraft and SuperCad Studio). BimCraft's PDFs still print with the built-in fonts only; passing fonts would give it Unicode too, not done. Tests pass: bin/test-bimcraft.mjs --sx-tags --only docs (48), --regs (151), bin/test-cadcraft.mjs (2773), bin/test-markupcraft.mjs (564). In /lab, not released. |
CadCraftBimCraftMarkupCraftSuperCad Studio | Built · Live | – | – From: owner (Site) owner 2026-11-03 | ||
FeatureATTR.7
Link to ATTR.7Comment on ATTR.7 |
Library credits table on a sheet in CadCraft and BimCraft Owner 2026-11-03. BimCraft: every drawing set with Library items gets a Library credits schedule, including doors and windows, made again from the model each time and placeable on any sheet. CadCraft: the CREDITS command (ribbon, and a button in the Library credits view) draws the credits as one block of lines and text, at a point and text height you choose; it saves to DXF; running it again updates the table in place and adds no second copy. Both use lib/report/credits.js, required credits first, CC0 after. Limits: CadCraft's table updates only when CREDITS is run; BimCraft sheets print with Helvetica, so non-Latin credits show as ?. Tests: bin/test-cadcraft.mjs, bin/test-bimcraft.mjs --lib-openings and --res, tools/super-test/binder.mjs (real CadCraft panel). The BimCraft schedule was not clicked through in the app's Sheets dialog. In /lab, not released. |
CadCraftBimCraft | Built · Live | – | – From: owner (Site) owner 2026-11-03 | ||
FeatureLIB.C1
Link to LIB.C1Comment on LIB.C1 |
Library collections: the Library is the one home of every object; each app starts from a default collection Owner 2026-11-05: library as the primary source of all object information; CivilCraft gets a default collection from the Library (its plants and items), usable in every app. Spec docs/0.9-LIBRARY-COLLECTIONS.md. Built: collections tables (migration 124), LibraryCollections, GET /api/v1/library/collections[/<slug>|/app/<app>], bin/library-collection-make.php, test bin/test-library-collections.php (17/0). Next: publish the 421 seed plants (bin/library-import-plants.php, dry run clean), make civilcraft-landscape the CivilCraft default, then CivilCraft Landscape loads it (C.3), places any Library item (C.4), other apps add it (C.5). Parametric Library objects (params + generator) are a separate track. C.2 done 2026-11-05: 421 seed plants published as Library plant items (system author), collection civilcraft-landscape published and set as CivilCraft default; served at /api/v1/library/collections/app/civilcraft. C.3 started 2026-11-05 (in /lab): the Plants section says where its list came from (the civilcraft-landscape collection, count, revision, or the built-in list when the Library is unreachable); Landscape panel sections fold shut and a menu command opens the one it works with (landscape/fold.js). The app still reads plants.csv for the data; reading the collection manifest itself comes next. C.3 done 2026-11-05 (in /lab): CivilCraft Landscape now reads its plants from its default collection (GET /api/v1/library/collections/app/civilcraft/plants.csv; every published plant when no collection is set; the built-in list when the Library cannot be reached). Panel sections: opening one shuts the others unless locked (lock icon by the caret). Landscape tests 533/0, collections 17/0. C.4 (place any Library item) and C.5 (other apps) still planned. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | App code | Built · Live | – | – From: owner (Owner) owner direction 2026-11-05 | |
| MarkupCraft 1 | |||||||
FeatureNOTES.1
Link to NOTES.1Comment on NOTES.1 |
Pasteboard, show/hide notes and private notes From a Discord member on Discord (keeps scratch notes and snapshots beside the sheet so they never reach the client). Built in /lab 2026-11-03, not released. Pasteboard: the area around each sheet holds notes and picture snapshots at paper size; nothing on it prints. Notes: any markup can be a note, shown or hidden with Shift+H or the bar switch, kept out of print, flattened copies, exports and other PDF readers. Private notes: encrypted with the writer's own passphrase (no recovery), not sent to Live, assistants or the clipboard; colleagues' saves carry them untouched and nothing tells them one exists. Save a clean copy removes all of it. **SuperCad Studio:** private notes are encrypted files in the project's Documentation/Private notes, never in the PDF, not even sealed, and are left out of the report binder, document exports, Finalize and export and Email this. **Untested:** a real large vector set, a desktop build, a real two-person Live session. Tests: 70, 38 and 27 passed. Log docs/0.9-sessions/notes-pasteboard-09.md. |
MarkupCraftSuperCad Studio | Built · Live | – | – From: Discord community (Discord) Discord 2026-11-03 | ||
| Print stage 15 | |||||||
FeaturePS.1
Link to PS.1Comment on PS.1 |
Print stage: put things on the bed in the app and send them, with no export Spec: docs/0.9-PRINT-STAGE.md. ModelCraft's Print stage button: add Library items, position them in the view with the usual tools, Arrange or Fit on the bed, Send to 3D printer. Shared lib/printstage with ModelCraft as first host. Tested in Chromium in /lab against stand-in printers only; nothing has been printed (PS.5). |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.2
Link to PS.2Comment on PS.2 |
Our own FDM slicer (walls, skins, infill, supports, skirt) Spec: docs/0.9-PRINT-STAGE.md. lib/printstage/ps-slice.js, Apache-2.0, polygon work by manifold-3d. Answers EG.8's own-slicer question for now. A cube read back move by move matches; 62 of a spread of 62 Library items slice with every move on the bed, 18 of them missing some pieces (the dialog says so). No real print yet; no bridges, seam choice or layer preview. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.3
Link to PS.3Comment on PS.3 |
Send to a printer: USB, Klipper (Moonraker), OctoPrint, PrusaLink Spec: docs/0.9-PRINT-STAGE.md. Nothing connects or sends without a click, and sending asks first. Tested only against a fake USB printer and a stand-in Moonraker, following the vendors' docs. Network printers must allow the site (CORS). PrusaLink's sign-in may need more than the API key on some firmware. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.4
Link to PS.4Comment on PS.4 |
Print this on a Library item page Spec: docs/0.9-PRINT-STAGE.md. Opens the print stage with the item on the bed. Shown to staff and lab testers while the stage is in the lab. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.6
Link to PS.6Comment on PS.6 |
Download for 3D printing on a Library item page Spec: docs/0.9-PRINT-STAGE.md. For people who keep their own slicer: a size or bed choice on the item page gives a 3MF or STL, with an honest print-ready line per item. Server side beside tools/library/variant-export.mjs. Secondary to the print stage. Export tool tools/printstage/print-export.mjs (STL and 3MF scaled to the bed, with an honest print-ready line) and the item-page form are built and tested (test-export 6/0); the handler is not installed. mounts-09 2026-11-06: print-file.php installed (public_html/library/print-file.php + the rewrite line in .htaccess). Lab testers and staff only; anonymous gets 404. Real item page (Griddle, 48 in): the form shows and the STL downloads; curl as a lab session: STL 684 bytes, 3MF a valid zip; nothing is kept. |
– | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
SpikePS.8
Link to PS.8Comment on PS.8 |
Bambu Lab P2S through Bambu Connect Spec: docs/0.9-PRINT-STAGE.md. Owner, 2026-11-04: Bambu Connect, with installing it in the add-on's instructions. Add-on printer-bambu: slices with the person's own OrcaSlicer and its P2S presets to a sliced .gcode.3mf, then opens it in Bambu Connect, where they start the print. Setup steps on the card and in the Library listing. The file was made by the real OrcaSlicer 2.4.2 on Windows. Not yet run: a Studio build, Bambu Connect itself, a P2S. Other Bambu models and direct sending not built. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
DecisionPS.9
Link to PS.9Comment on PS.9 |
Print stage: stay in the app or become an add-on Spec: docs/0.9-PRINT-STAGE.md. Loaded on first use from ModelCraft today, so the code is in the build. Moving it means a Library listing and the add-on API reaching the view and the model. Recommended: decide after a real print works. Owner, 2026-11-03: an add-on. Built as print3d (PS.15). |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.10
Link to PS.10Comment on PS.10 |
Slicer: worker thread, layer preview, bridges, seams, printer profiles Spec: docs/0.9-PRINT-STAGE.md. The slicer runs on the page's main thread in small steps; supports are slow on a big plate. Add a worker, a layer preview before sending, better surfaces, and real start G-code per printer as data. Worker thread, layer preview, bridges, seams and printer profiles (Ender-3, MK4, Klipper start G-code as data) built 2026-11-05; test-slice 37/0, browser-preview 11/0, browser 35/0. Start G-code of the new profiles has not run on those machines; nothing printed on a real printer. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.12
Link to PS.12Comment on PS.12 |
Choose your slicer: the print stage takes any engine Spec: docs/0.9-PRINT-STAGE.md. One job in, G-code out. A picker on the card with Kiri:Moto, PrusaSlicer, OrcaSlicer and CadCraft basic; the choice is remembered. Every engine's output is read and refused if it leaves the bed or prints nothing. Tested in Chromium; real-print test is PS.5. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.13
Link to PS.13Comment on PS.13 |
Kiri:Moto as the default slicer (MIT, in the page) Spec: docs/0.9-PRINT-STAGE.md. Built from its 4.7.3 tag, vendored at assets/vendor/kiri-moto (9.4 MB, loaded on first use). Slices a 20 mm cube correctly and in the right place on the bed; compared with CadCraft basic on Library items. Not tried in a packed Studio or offline edition. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.14
Link to PS.14Comment on PS.14 |
PrusaSlicer and OrcaSlicer through Studio (the person's own install) Spec: docs/0.9-PRINT-STAGE.md. engines.rs Kind::Slicer: finds the program or lets the person pick it, writes the settings from checked fields, a crash gives no G-code. Built: Rust tests pass compiled alone; the files it writes slice correctly in the real PrusaSlicer 2.9.7 and OrcaSlicer 2.4.2 on Windows. Waits: a Studio build carrying it and a test through the real card; macOS and Linux paths untried. Owner, 2026-11-04: consider built; bugs come as fixes. Needs a Studio build to reach people. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.15
Link to PS.15Comment on PS.15 |
3D Print add-on Spec: docs/0.9-PRINT-STAGE.md. modelcraft/a Discord member/addons/print3d, Apache-2.0, on by default: the Print stage button and the Print this link. ModelCraft's own code has no print stage in it. Answers PS.9. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
DecisionPS.16
Link to PS.16Comment on PS.16 |
Bundle PrusaSlicer and OrcaSlicer, or use the person's own copy Spec: docs/0.9-PRINT-STAGE.md. Built as their own install with a download link. Really bundling them changes ADDONS-SPEC named-GPL condition 4 and means about 110 MB and 140 MB per platform, passing on AGPL source offers, and following their releases. Recommended: keep their own install. Owner, 2026-11-04: not bundled; each slicer is its own add-on (PS.19). |
ModelCraft | App code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.18
Link to PS.18Comment on PS.18 |
3D Print in the Add-on Library Spec: docs/0.9-PRINT-STAGE.md. A listing with the required sections, so it can be added from the account and unbundled like the other add-ons. Listed 2026-11-04: print3d and the three slicer add-ons, behind the Library switch; required listing sections still to write. |
ModelCraft | Our enginesApp code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-03 | |
FeaturePS.19
Link to PS.19Comment on PS.19 |
Each slicer is its own add-on Spec: docs/0.9-PRINT-STAGE.md. Owner, 2026-11-04. print3d carries the stage, the sending and CadCraft basic. slicer-kiri, slicer-prusaslicer and slicer-orcaslicer are off by default, offered with an Add button on the card and listed in the Library. Kiri is fetched only the first time it slices. Tested in Chromium in /lab. |
ModelCraft | App code | Built · Live | – | – docs/0.9-PRINT-STAGE.md; owner, 2026-11-04 | |
| Point clouds add-on (PC) 11 | |||||||
FeaturePC.1
Link to PC.1Comment on PC.1 |
Point clouds engine: tiled octree store, streaming build, resume Built in the lab: lib/pointcloud store + tiler + octree. 150 k points land exactly once, resume is byte-identical, about 3 M points/s on the VPS. 50 M run waits for workstation11a. |
CivilCraft | Built · Live | – | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.2
Link to PC.2Comment on PC.2 |
Point clouds viewer in CivilCraft 3D and plan First pass in the lab: streaming nodes within a point budget, colour by RGB/height/class/intensity/residual. Headless software GL only, so the 55 fps target is not measured. civil-points-09 2026-11-05: Eye-dome lighting (own shader, whole scene through a depth target), size attenuation (a point shader), a phone default (500 k, EDL off), and a plan raster that refines when you zoom in (a window raster after the zoom settles) are built and tested in the real page (tools/pointcloud-engine/browser.mjs 27/0). Real GPU on workstation11a (RTX 5070, Chrome): 2 M points drawn at about 100 fps with EDL and shrinking points, no frame gap over 17 ms (tools/pointcloud-engine/gpu-fps.mjs). A made-up site, not a real survey; 50 M points are the PC.1 scale run. |
CivilCraft | Built · Live | 3 | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.3
Link to PC.3Comment on PC.3 |
Point clouds cleaning: select, delete, reclassify, crop, undo Built in the lab: non-destructive edit log, lasso/box/polygon with a count before applying, undo and redo to the byte. Lasso in 3D is a vertical prism. |
CivilCraft | Built · Live | – | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.4
Link to PC.4Comment on PC.4 |
Point clouds noise filters Built in the lab: isolated-point filter finds 200 of 200 planted strays, 0.09 % false positives. The statistical filter is over the 0.2 % limit and is not the default. |
CivilCraft | Built · Live | – | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.5
Link to PC.5Comment on PC.5 |
Point clouds ground classification by tile Built in the lab on the made-up drone scene: RMS 0.017 m to the true terrain, no roof or canopy kept, seams within tolerance. Real drone data not yet tested. |
CivilCraft | Built · Live | – | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.6
Link to PC.6Comment on PC.6 |
Point clouds geometric classes (vegetation, buildings) Built in the lab on the made-up scene: 97 % of roof points class 6, 100 % of tree points 3/4/5. No machine learning. Real data not yet tested. |
CivilCraft | Built · Live | – | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.7
Link to PC.7Comment on PC.7 |
Point clouds residuals, fix the ground, breaklines on the cloud Built in the lab: residual map and stats, ten worst places, Build ground through the same path as the LAS import, contours. civil-points-09 2026-11-05: Breaklines can now be picked in the plan as well as in 3D (each click takes the nearest cloud point, ground first) and the contours have a preview canvas over the plan raster; both tested in the real page (browser-ui.mjs). The engine can rebuild only the affected area (region + base) but that is not wired to a button. |
CivilCraft | Built · Live | 2 | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.8
Link to PC.8Comment on PC.8 |
Point clouds volumes: flight to flight, stockpile Built in the lab: gaussian hill 0.02 % error, cone 0.12 % in engine tests. The browser stockpile on the 360 k scene is 6 % low and must be understood before it is called done. civil-points-09 2026-11-05: Found why the browser stockpile read 6 % low: not the cell size, edges or resampling. The 8 m boundary crossed tree canopy; its samples raised the TIN base by 0.2 m on average. The base now leaves boundary samples above a robust fit out, and a smooth curved base is offered. The 6,000 m3 drone block now reads 1 % to 3 % off depending on the base (engine and browser cases added). |
CivilCraft | Built · Live | 1 | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.11
Link to PC.11Comment on PC.11 |
Point clouds adapter for BimCraft Same engine, thin adapter (build for Super); E57/PLY/PCD inputs through pointcloud.js. adapters-09 2026-11-06: The Point clouds add-on now runs in BimCraft over the same lib/pointcloud engine (byte-identical copy) and the same panels as CivilCraft, with a thin host adapter: the cloud is drawn in the IFC 3D view with levels of detail and a point budget, clean with undo, section strip, ground classification, and E57, PLY, PCD, PTX and XYZ through the app's own readers (thinned to 3 million points). window.ccPointCloud.cloud is the open cloud for scan to BIM. Tested in the real page on the 360,200-point made-up site (tools/pointcloud-adapters/browser.mjs --app bim, 20/0). Not tried on a real scan, in Studio or on a GPU; ground building, contours, stockpile volumes and orthomosaics stay in CivilCraft. |
CivilCraft | Built · Live | 5 | – From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.12
Link to PC.12Comment on PC.12 |
Point clouds adapters for CadCraft and SuperCad Studio Same engine, thin adapters. adapters-09 2026-11-06: CadCraft has the Point clouds add-on over the same engine (3D tab camera, build, clean with undo, section strip, E57/PLY/PCD/PTX/XYZ inputs); tested in the real page (tools/pointcloud-adapters/browser.mjs --app cad, 19/0). CadCraft has no TIN module, so no ground classification there. SuperCad Studio's adapter is not built. |
CivilCraft | Built · Live | 5 | Hand check is community test PC.12-HAND (not blocking) From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
FeaturePC.14
Link to PC.14Comment on PC.14 |
Point clouds LAZ export LAZ export of the cleaned cloud, next to LAS 1.4. laz-09 2026-11-06: Built: our own LAZ compressor (lib/pointcloud/laz.js, Apache-2.0, written from the public LAZ specification 1.4 R1 of rapidlasso GmbH; no third-party code: laz-perf ships a decoder only, laz-rs and LASzip would need a WebAssembly build we cannot run here). Point formats 0 to 3 with extra bytes, chunked (compressor 2), in a LAS 1.4 header. CivilCraft Point clouds add-on: Export, File type LAZ (format 0, or 2 with colour; classes above 31 refused). Tested: our reader, laz-perf 0.0.7 and laspy 2.7.0 + lazrs 0.8.2 read every field bit for bit (formats 0-3, several chunks, GPS jumps, grey and coloured RGB); three LAZ files made by laspy re-encode to the same bytes and chunk table; the 300 m made-up site (353,766 points) is 2.17 MB LAZ against 10.61 MB LAS 1.4 (20.4 %); in the real page (/lab) download and streamed save byte-identical (bin/test-pointcloud-laz.mjs 65/0, tools/pointcloud-engine/browser-laz.mjs 10/0). Not built: LAZ formats 6 to 10 (layered). Not tried: other LiDAR programs (community test PC.14-HAND). |
CivilCraft | Built · Live | 3 | Other LiDAR programs: community test PC.14-HAND (not blocking) From: site suggestion #935 (Suggestion) docs/0.9-POINTCLOUD-ADDON.md | ||
| Site 1 | |||||||
FeatureSTATUS.1
Link to STATUS.1Comment on STATUS.1 |
Public status page and API: /status and /v1/status, with uptime tracking A public /status page shows "All systems operational" when that is true, each system's state, 90 days of daily uptime bars, 7/30/90 day uptime and recent incidents. The same data is public JSON at /api/v1/status and api.getcadcraft.com/v1/status (in the Developer API docs). Seven systems: hosting and web, data, API services, MeCentral, cloud, payment and messaging connectivity. A check runs every 5 minutes against the real service: public URLs, a database read and rolled-back write, MeCentral and storage lookups, a read of the payment account and a sign-in to the mail relay (no mail sent, no money touched). Late checks show as late rather than as an old all-clear; while the database is down the page still renders and results wait in a spool. Tested with bin/test-status.php (36 pass), against the live services, and on screen in both themes and at phone width; a real outage has only been simulated. The checks run on the server they watch, so a full server or network outage shows only afterwards, as a gap counted against hosting; an outside monitor is not built. |
– | Built · Live | – | – From: owner (Site) owner request 2026-11-04 | ||
| Interior lighting design add-on (IL) 5 | |||||||
FeatureIL.2
Link to IL.2Comment on IL.2 |
Lighting design in CadCraft: rooms from the drawing, plan for a target, results, map, draw on layers Built in the lab: add-on lightdesign (off by default). Room from a closed shape or typed outline, generic luminaires or a maker file, plan for a target lux (fewest even grid), grid or rows, requirement checks, false-colour map, report (HTML) and CSV, luminaires and lux drawn on LD-LUMINAIRE / LD-LUX, commands LDESIGN and LDDRAW. Browser test 19/0. |
CadCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-sessions/lightdesign-09.md | ||
FeatureIL.4
Link to IL.4Comment on IL.4 |
Lighting design glare (UGR) estimate CIE 117 formula with Einhorn position index, four observers at 1.2 m, initial flux. An estimate from the file, not the maker table. Not checked against a published UGR table yet. |
CadCraftBimCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-sessions/lightdesign-09.md | ||
FeatureIL.6
Link to IL.6Comment on IL.6 |
Lighting design report: printable page with map, results, checks HTML page (print to PDF), SVG illuminance map with scale, summary, checks, the notes on what the numbers are. Not in the Studio report binder yet. |
CadCraftBimCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-sessions/lightdesign-09.md | ||
FeatureIL.9
Link to IL.9Comment on IL.9 |
Lighting design in BimCraft: IfcLightFixture placement and lux on the model Place real IFC light fixtures, schedule them, and show the calculated lux on the model rooms. adapters-09 2026-11-06: In BimCraft the add-on reads the model's rooms with their windows and the walls' height, places the luminaires as IfcLightFixture (BimCraft's own ceiling luminaire with plan symbol, tag and watts as Load, plus CadCraft_LightDesign with lumens, watts and the room's mean lux) in the room's level, and writes the lux as numbers into that level's plan view; drawing again replaces, Erase removes, undo restores. Tested on the showcase house in the real page (tools/bimcraft-test/browser-lightdesign-bim.mjs 22/0). Window height is assumed 1.2 m; the plan view was checked through the model data, not by eye in Studio. |
BimCraft | Built · Live | 4 | – From: Discord community (Discord) docs/0.9-sessions/lightdesign-09.md | ||
FeatureIL.1
Link to IL.1Comment on IL.1 |
Lighting design engine: room, photometry, inter-reflection (radiosity) Built in the lab: lib/lightdesign. Direct light from .ies/.ldt plus the light bounced off floor, walls and ceiling as diffuse patches. Checks: energy conserved to 1.8 %, and a Monte Carlo photon trace of a 6 x 4 m office agrees to 1.4 %. No furniture, columns, windows or daylight. |
CadCraftBimCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-sessions/lightdesign-09.md | ||
| CadCraft plan drafting 4 | |||||||
FeaturePLAN2D.1
Link to PLAN2D.1Comment on PLAN2D.1 |
Hatch that stays with its boundary, and a hatch editor Asked: a hatch editor that works, "when moving the boundary box the hatch will move with it. Similar to illustrator". The assoc flag existed but did nothing. Built in the lab: HATCH links to what bounds it (closed objects, or the objects round a picked area). Move, turn or scale the boundary: the hatch and pattern follow. Reshape it: the hatch is worked out again. Move the hatch alone: the boundary comes too. Link ends with a note when the shape no longer closes. Copies get their own link. HATCHEDIT (HE). The link is saved in DWG and DXF 2000. Also fixed: MOVE left a hatch's pattern behind on any hatch. Not done: links made in other programs are not read (HATCHEDIT Link does it by hand); DXF R12 has no hatch object. |
CadCraft | Built · Live | – | – From: Discord community (Discord) Discord, a Discord member, 2026-11-02 | ||
FeaturePLAN2D.2
Link to PLAN2D.2Comment on PLAN2D.2 |
Layer groups: folders in the Layers panel Asked: a layer manager to group layers for walls, existing, services "instead of it all being in one long list", and to set up layers for drafting new. Built in the lab: folders that fold, group switches for on, freeze and lock, Find a layer, a ready-made set (Existing, Proposed, Demolition, Services, Annotation), Group by name, drag a layer onto a folder, LAYGROUP. Saved in the file; the layer table stays flat for other programs. Not done: AutoCAD's own layer group filters are not written, so AutoCAD shows a flat list. |
CadCraft | Built · Live | – | – From: Discord community (Discord) Discord, a Discord member, 2026-11-02 | ||
FeaturePLAN2D.3
Link to PLAN2D.3Comment on PLAN2D.3 |
Stacked floors in one model space Asked: draw the first floor on top of the ground floor and turn each off, "stacking model spaces, not layers", without Xrefs. Goes further than SU.912's design layers (a layer with a scale and an elevation). Built in the lab: FLOORS panel, FLOOR, one active floor; other floors show faded, snap but can't be edited; a viewport can show one floor; move or copy the selection to a floor; FLOORLAYERS for a file going to someone without floors. Layers run across floors. Saved in the file. Not done: other programs show all floors together unless FLOORLAYERS is run. Floor elevation is stored only, nothing uses it yet. Stairs and anything that spans floors. |
CadCraft | Built · Live | – | – From: Discord community (Discord) Discord, a Discord member, 2026-11-02 | ||
FeaturePLAN2D.4
Link to PLAN2D.4Comment on PLAN2D.4 |
2D smart walls, doors and windows in CadCraft Asked: "a smart wall tool in cad craft, like a polyline ... choose the thickness ... basic doors and windows that can be inserted into those walls ... it is all 2d, and generates no 3d ... if you move a wall it moves the doors and windows with it ... connects into other walls". Built in the lab: WALL (thickness, justify, fill, close), DOOR (single, double, sliding, open doorway), WINDOW (fixed, casement, sliding), DELOPENING; mitred corners, T joins, crossings; joined walls follow a move; grips for ends, middle, sliding an opening, flipping hinge and swing; Properties for each opening. A wall is a block carrying its settings, so DWG/DXF, plotting and Move need nothing new; shared engine lib/plan2d (tools/plan2d/sync.mjs). Not done: wall build-ups (asked as "possibly later"), curved walls, Library doors in these walls, elevations from the plan, not opened in AutoCAD. Dimensions don't attach to walls. |
CadCraft | Built · Live | – | – From: Discord community (Discord) Discord, a Discord member, 2026-11-02 | ||
| Developer API 8 | |||||||
FeatureAPI.1
Link to API.1Comment on API.1 |
Developer API: keys for licensed accounts, api.getcadcraft.com/v1, categories The CadCraft API for people's own systems, on its own host. Licensed accounts make keys on /account/developers: scopes per category, one-workspace limit, expiry, allowed addresses, roll and revoke; the key is shown once. Categories: account, licenses, education, library, storage, projects, meta. Rate limits per key, Idempotency-Key on writes, cursor paging, and a log of each key's calls. Thin wrappers over the same services the website uses, so a key can never do more than its account. Test bin/test-a Discord member-api.php --http. |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-03: "the cadcraft api" | |
FeatureAPI.2
Link to API.2Comment on API.2 |
Developer area: /developers overview, guides, generated reference, console, changelog Public docs at /developers, in the footer, sitemap and llms.txt. The reference is generated from the one endpoint catalogue the server routes by, with curl, PHP, Python and Node samples. The console makes real calls with your own key, run on our server so the browser never calls the API; a live key needs a tick before it changes anything. |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-03: "the cadcraft api" | |
FeatureAPI.3
Link to API.3Comment on API.3 |
API: seats and license counts (Team Cloud Plan + SuperCad Studio) License counts per workspace; list Team Cloud Plan seats; assign, unassign, or give a seat to an email address (invited with the seat held). SuperCad Studio: list seats and move one under the website's waiting-time rule. Buying or removing seats stays on the website. |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-03: "the cadcraft api" | |
FeatureAPI.4
Link to API.4Comment on API.4 |
API: cloud storage use and project lists A workspace's space and use plus the account's own folder; projects, one project with members, and its drawings (names, apps, versions and sizes, never the files). |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-03: "the cadcraft api" | |
FeatureAPI.5
Link to API.5Comment on API.5 |
Teachers enroll a class: invite, active on the click (API + /account/students) An active teacher in the Student Program enrolls a list, on /account/students or POST /v1/education/students (the same service): up to 200 a call, 500 invites a day, 300 students unless staff raise it. Each student gets one email; /education-join needs a real click, then the license is active with no staff review, prices locked as at apply. Invites expire after 30 days. List, edit, resend, CSV; a student can say "This isn't for me" and is not invited again. Taking a student off the list: an unanswered invite ends; someone who joined keeps the versions covered until then and new versions stop, and they can answer a new check if they are still a student. Real mail to a student has not been sent yet (tests only log it). |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-03: "the cadcraft api" | |
FeatureAPI.6
Link to API.6Comment on API.6 |
API: upload library blocks, choose what to add, see where they stand POST /v1/library/uploads takes a DWG, DXF or library .json (50 MB, 20 an hour, as on the website) and answers with the blocks found; commit the ones to add with a category, license, source and the rights confirmation, or abandon. Public items wait in the same staff review as website uploads; team library items need a seat in force. Also lists the account's items with their versions and review state. Tested over HTTPS with the DXF fixture; a real DWG has not been sent through the API. |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-03: "the cadcraft api" | |
FeatureAPI.7
Link to API.7Comment on API.7 |
API: a sandbox of your own for cck_test_ keys Sandbox keys run every call against a practice team, class, SuperCad Studio license and projects in a second database: real writes, but no mail is sent, nothing is charged and uploads never reach the real Library. Each developer's sandbox is apart from everyone else's. Helpers read its mail, play a student or the reviewer, and start over; page /account/developers/sandbox. |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-05: "yes v1, build the sandbox next then webhooks" | |
FeatureAPI.8
Link to API.8Comment on API.8 |
API: webhooks, so we call your server when something happens Add an endpoint on /account/developers or with POST /v1/webhooks and hear students join, seats move, SuperCad Studio seats change and library reviews finish. Signed, retried for about 2.7 days, paused with one email when an endpoint keeps failing. Sandbox endpoints hear the sandbox, so you can build against it first. Private addresses and our own server are refused. |
– | Site and services | Built · Live | – | – From: owner (Owner) Owner, 2026-11-05: "yes v1, build the sandbox next then webhooks" | |
| Discord, last sweep before 0.9 (2026-11-05) 5 | |||||||
FixFX.31
Link to FX.31Comment on FX.31 |
ModelCraft: Play turns into Pause while an animation plays, and Space toggles it Reported 2026-10-20: the Play button stays a triangle while the animation runs (it acts as stop); the reporter asks for a Pause state, matching the timeline, and for Space to play and pause while the timeline is open. Untested. Built 2026-11-05 (model-fix-09), in /lab. The timeline's own Play button already turned into Pause while playing (since 0.6); what stayed a triangle was the Animate workspace's toolbar Play (a second button, and Stop beside it). Now it shows Pause (icon, word, pressed) while the animation plays and a second click pauses; Space plays and pauses while the timeline is open (not when a button has the focus, not while a tool runs; with the timeline closed Space is still Select); the new command Play or pause the animation (camera.play) can be given any key in a style of your own. Tests: browser-fix09.mjs 'FX.31' (real keys and clicks) and test-fix09.mjs. Help: animation topic. |
ModelCraft | Built · Live | 1 | – docs/0.9-sessions/final-sweep-2026-11-05.md | ||
FixFX.32
Link to FX.32Comment on FX.32 |
ModelCraft: the Render view pop-up stays over the toolbar, and the Render panel shows "null" under Detail Reported 2026-10-25 on macOS Studio: switching to Render shows a "The path tracer renders the view..." pop-up that does not go away and passes clicks to the toolbar underneath; the Render in the view panel has the word null below the Detail drop-down. Untested; not yet looked for in the code. Checked 2026-11-05 (model-fix-09): already fixed in 0.7.1 (71.1: the long note became a plain paragraph in the Render panel instead of the floating stage hint; 71.2: the empty slot that printed "null" is gone), and the code is the same in 0.8.1. The reporter was on 0.7. Reproduced in /lab with a browser test (tools/modelcraft-test/browser-fix09.mjs, 'FX.32'): the note sits inside the side panel, does not cover the toolbar, a click on it lands on it, it has a Close control (and "What is this?" brings it back), and the word null is nowhere in the panel. Not tested on macOS Studio itself. |
ModelCraft | Built · Live | 1 | – docs/0.9-sessions/final-sweep-2026-11-05.md | ||
FixFX.38
Link to FX.38Comment on FX.38 |
MarkupCraft: copy and paste a selection of markups, and save it as a stamp or tool Reported 2026-10-26 (0.7): selecting markup content has no way to copy and paste the selection, or turn it into a stamp or tool-chest tool. Check against the current build first (D8.15 Copy area copies a page region, a different thing). Untested. Checked 2026-11-05 by markup-fix-09: already built in 0.7.1 (71.6 copy/paste, 71.9 Save as a stamp) and in the released 0.8.1. The reporter wrote on 0.7. Copy/paste of markups and of page content works on the same page, other page and other open file (and other tab); Save selection as a stamp puts markups, pictures included, into the tool chest. Tested: tools/markupcraft-test/browser-071.mjs 39/0 in a real browser, bin/test-markupcraft.mjs 565/0 (new check: a picture stamp survives the chest file). Help: stamps-and-notes, tool-chest. Reporter's own build and wording not confirmed. |
MarkupCraft | Built · Live | 2 | – docs/0.9-sessions/final-sweep-2026-11-05.md | ||
FixFX.39
Link to FX.39Comment on FX.39 |
MarkupCraft: add a stamp or signature from an image file, not only by paste Reported 2026-10-25 (0.7): there is a way to paste a stamp or signature image but not to pick one from a folder, and no flatten option; also asked how to use a scanned code book. Untested. Checked 2026-11-05 by markup-fix-09: already built in 0.7.1 (71.7 Insert a picture from a file, 71.8 signature from a file) and in the released 0.8.1. Stamp tool > Picture or My signature (file picker, scan made see-through, list of saved signatures in this browser), Edit > More > Insert a picture from a file, Flatten into the page when saved in Properties; a picture can also be saved as a stamp in the tool chest. Tested browser-071.mjs 39/0 and test-markupcraft 565/0. Help: stamps-and-notes. Scanned code book: not asked of the reporter; a scanned page opens as a PDF page like any other. |
MarkupCraft | Built · Live | 1 | – docs/0.9-sessions/final-sweep-2026-11-05.md | ||
FeatureDC.119
Link to DC.119Comment on DC.119 |
BimCraft: add a level below the lowest level Asked 2026-11-04: is there a way to create a level below the lowest one made so far. Not checked in the code. Do: check whether a negative-elevation level can be added (basement, footings); if not, add Level below to the level controls with undo. bim-fix-09 2026-11-05: Checked first: no way existed (Add a level on top only; Add levels... takes heights from 0 up; typing a negative elevation moves every level above with it). Built: Levels panel > Add a level below (model-ops newLevelBelow): a level under the lowest, as tall as it, at a negative elevation, named Level -1, Level -2; nothing else moves; one Undo step; redo keeps the same GlobalId; walls can be drawn on it. Tests: node bin/test-bimcraft.mjs --levelbelow, tools/bimcraft-test/browser-model.mjs --only bm2. Help: draw-walls, site-building-and-levels. |
BimCraft | Built · Live | 1 | – docs/0.9-sessions/final-sweep-2026-11-05.md | ||
| Wall tool 4 | |||||||
FeatureWT.2
Link to WT.2Comment on WT.2 |
Wall tool, Draw: rectangle, rotated rectangle, polygon, arc by centre, tangent arc, pick one line, trace outline Wall tool spec pages 4-8 (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Icons: the DU.1 family (assets/js/app-workspace-icons.js: 32 grid, 1.5 round stroke, two-tone fills, Full Color or Outline). Not built (page 5): Rectangle (four walls, four corner joins, one action), Rotated rectangle, Polygon (inscribed / circumscribed), Arc by centre (centre, radius, sweep), Tangent arc (continues from the last segment), Pick lines (one line or edge at a time; Tab picks the chain; today only a whole DWG / DXF / PDF scan), Trace outline (click inside a closed area; today only 'Develop this mass'). Each is a recipe on the Place block (addWall, Wall tool, model-trace.js) ending in the join solver (FX.60); the Shape list on the Wall button holds the shapes. Icons: wallrect, wallrectrot, wallpoly, wallarcc, walltan, wallpick, walltrace. OTHER APPS: CadCraft already has rectangle and polygon as drawing tools but not as walls with joined corners: its plan walls (FX.59) should get the same recipes from one shared place. Not started. walls-09 2026-11-06 (done): Built in /lab: Wall › Shape list and the new Shapes menu (DU.1 icons wallrect, wallrectrot, wallpoly, wallarcc, walltan, wallpick, walltrace; commands wall.rect ... wall.trace): rectangle (four walls, four L joins, one undo step), rotated rectangle, polygon inscribed / circumscribed (3-64 sides), ar... see docs/0.9-sessions/walls-09.md. walls-plan-09 2026-11-06 (done): CadCraft plan walls: rectangle, rotated rectangle, polygon, arc (as 15 degree chords: plan walls are straight), tangent arc, pick lines, trace outline as WALLRECT, WALLROT, WALLPOLY, WALLARC, WALLTAN, WALLPICK, WALLTRACE, same gestures as RECTANG and POLYGON, one undo step each, corners joined. One ... see docs/0.9-sessions/walls-plan-09.md. |
CadCraftBimCraftSuperCad Studio | Built · Live | 1 | Hand check is community test WT.2-HAND (not blocking) From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (pages 4-8) | ||
FeatureWT.3
Link to WT.3Comment on WT.3 |
Wall tool, Set and Modify: placement offset, join on/off, edit by dimension, offset wall, box stretch, align and lock, lock dimension Wall tool spec pages 4-8 (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Icons: the DU.1 family (assets/js/app-workspace-icons.js: 32 grid, 1.5 round stroke, two-tone fills, Full Color or Outline). Pages 5-6. Partly or not built: Placement offset (a free distance off the picked line; today half a thickness), Join on / off (free-standing wall; today joins are always automatic), Edit by dimension (type a value: the selected wall moves, the reference holds; today typing does not move a wall: FX.58 / spec test 4), Offset wall (neighbours stretch), Box stretch (ends inside a marquee move, walls crossing it stretch), Align and lock (padlock holds the alignment), Lock dimension (a locked dimension holds through later edits). The last two are the new Hold block (wall-dimensions.js is the base: dimensions already know which face they measure). Icons: wallplace, walljoinsw, walleditdim, walloffset, wallbox, wallalignlock, walllockdim. OTHER APPS: CadCraft plan walls and dimensions want Hold too (it is the Revit padlock); build it once for both. Not started. walls-09 2026-11-06 (done): Built in /lab: placement offset and Join on/off in the Wall row (Wall tool and shapes); edit by dimension (type the value in a reference dimension's Properties: the second reference's wall moves square, the first holds; spec test 4 Pass); Offset (move or Copy); Box stretch; the Hold block (lib/walls... see docs/0.9-sessions/walls-09.md. walls-plan-09 2026-11-06 (done): CadCraft plan walls: placement offset and Join off in WALL (O, D), edit by dimension (WALLDIM), Offset (WALLOFFSET, Copy), box stretch (WALLSTRETCH), and the Hold block (WALLHOLD align and lock, WALLHOLDDIM, WALLUNHOLD, WALLHOLDS): stored on the wall, kept by moving the other side, refused with the ... see docs/0.9-sessions/walls-plan-09.md. |
CadCraftBimCraftSuperCad Studio | Built · Live | 1 | Hand check is community test WT.3-HAND (not blocking) From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (pages 4-8) | ||
FeatureWT.4
Link to WT.4Comment on WT.4 |
Wall tool, Cut: split, split with gap, delete segment Wall tool spec pages 4-8 (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Icons: the DU.1 family (assets/js/app-workspace-icons.js: 32 grid, 1.5 round stroke, two-tone fills, Full Color or Outline). Page 6-7. Not built (BimCraft's own help lists Split as not built): Split at a point or crossing wall (the two parts stay joined end to end, same type; decision D2 is whether they stay joined in line or become free ends), Split with gap (a set gap; rejoin restores one wall), Delete segment (remove the piece between two clicks). Spec test 6. Cut block today is model-trim.js (trim, extend, corner: Built). Icons: wallsplit, wallsplitgap, walldelseg. OTHER APPS: CadCraft plan walls have no Split either (FX.59 assessment); shared recipe. Not started. walls-09 2026-11-06: Built in /lab: Edit › Walls › Split (at the click or a crossing wall; Gap; Free ends), Delete segment, Rejoin (one wall again, the first keeps its id). Doors and windows go with their part, a cut through one is refused, reference dimensions follow their point. D2 default: the parts stay joined in line (Settings › BimCraft › Walls › When a wall is split: joined | free ends). Spec test 6 Pass (node and real page). Recipes in lib/walls (host-free; copied to bimcraft/a Discord member/walls by tools/walls/sync.mjs), BimCraft adapter wall-tools.js + wall-tools-ui.js. Tests: node lib/walls/test/test.mjs (59/0, known answers worked out in the file), node bin/test-bimcraft.mjs --walltools (all ok, incl. the spec's nine tests: all Pass), real page tools/bimcraft-test/browser-walltools.mjs 33/0. Help: wall-tools (en). NOT done: CadCraft, SuperCad adapter, hand check (WT.4-HAND). walls-plan-09 2026-11-06 (done): see docs/0.9-sessions/walls-plan-09.md. |
CadCraftBimCraftSuperCad Studio | Built · Live | 1 | Hand check is community test WT.4-HAND (not blocking) From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (pages 4-8) | ||
FeatureWT.7
Link to WT.7Comment on WT.7 |
Wall + Grid: lock walls to grid lines so they move with the grid Wall tool spec page 9, 'How other tools combine with the wall' (Duncan, 2026-11-05), tracked at /roadmap-internal 'BimCraft wall tool specification'. Code checked in the a Discord member source 2026-11-05. Spec: snap walls to grid lines and lock them; move a grid line and its walls move with it (Hold -> Place in space -> Join solver; today Partly). Today (model-grids.js): grids are drawn, IfcGrid lines from other programs are read for display and snapping only; walls snap to them while drawing but nothing remembers the link, so moving a grid line moves no wall. Wanted: a wall end or location line can be locked to a grid line (the Hold block, with WT.3 Lock), moving the grid runs the join solver. OTHER APPS: CadCraft has grids too; build the lock once. Not started. walls-09 2026-11-06: Built in /lab: Properties › Lock to grid (a wall along a grid line, or an end on one), stored with the Hold block; Grid tool › pick a line › Move by (new: the UI could not move a grid line before) moves the line and the locked walls follow with their joined walls, one undo step; renaming keeps the lock, deleting the line drops it; moving a locked wall off its line is refused; a turned line that cannot keep the lock is refused. Recipes in lib/walls (host-free; copied to bimcraft/a Discord member/walls by tools/walls/sync.mjs), BimCraft adapter wall-tools.js + wall-tools-ui.js. Tests: node lib/walls/test/test.mjs (59/0, known answers worked out in the file), node bin/test-bimcraft.mjs --walltools (all ok, incl. the spec's nine tests: all Pass), real page tools/bimcraft-test/browser-walltools.mjs 33/0. Help: wall-tools (en). NOT done: CadCraft grids, SuperCad adapter, hand check (WT.7-HAND). walls-plan-09 2026-11-06 (done): see docs/0.9-sessions/walls-plan-09.md. |
CadCraftBimCraftSuperCad Studio | Built · Live | 1 | Hand check is community test WT.7-HAND (not blocking) From: Duncan (Session) Duncan, wall tool specification 2026-11-05 (page 9) | ||
| Digital twin add-on (TW) 9 | |||||||
FeatureTW.1
Link to TW.1Comment on TW.1 |
Digital twin: soft PLC runs on the flow model Built in the lab: lib/plc in lock step with the flow simulation, IEC 61131-3 ST or PLCopen XML, starter program from the layout. Same program and seed repeat to the byte. No real PLC involved. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.2
Link to TW.2Comment on TW.2 |
Digital twin: forces, faults, stock tests, report Built in the lab: force any signal; stuck eye, stuck gate, belt stop, station down, emergency stop; stall watchdog; tests every layout gets; CSV report. A program that ignores the stop fails on the right check. Not a safety validation. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.3
Link to TW.3Comment on TW.3 |
Digital twin: rigid-body physics on loads Built in the lab: our own XPBD with moving belt surfaces, boxes only, up to 8 loads along one line. Checked against closed forms: slip tan θ = μ, tip tan θ = L/H, belt pick-up v/(μg). Formula screen per belt agrees with the run. Not against a measured line yet (TW.12). |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.4
Link to TW.4Comment on TW.4 |
Digital twin: compare layouts, bottleneck ranking Built in the lab: repeat runs on common random numbers, 95 % intervals on paired differences, "no clear difference" when the interval holds zero. Ranks what is limiting; found a planted slow station. A ranking, not a proof. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.5
Link to TW.5Comment on TW.5 |
Digital twin: equipment view Built in the lab: frames, rollers, legs, machines, robots with moving arms, people, cartons and vehicles in place of plain marks. Generic shapes for the picture. Arm motion is for the picture, not a robot program. Not checked for frame rate on large layouts. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.6
Link to TW.6Comment on TW.6 |
Digital twin: run into the model for the path tracer Built in the lab: equipment as real geometry, loads on the animation timeline, up to 150 loads. Path-traced frame at a timeline time rendered on workstation11a (RTX 5070). A full path-traced clip has not been run. Arms do not move in the baked clip. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.8
Link to TW.8Comment on TW.8 |
Digital twin: ready cells as data Built in the lab: PLC stop gate, robot palletizing, two-lane sorter, incline and curve. One data entry per cell. Numbers are starting points. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.9
Link to TW.9Comment on TW.9 |
Digital twin: bill of materials Built in the lab: quantities from the layout, CSV with price and supplier columns for the person to fill in. |
ModelCraft | Built · Live | – | – docs/0.9-DIGITAL-TWIN.md | ||
FeatureTW.15
Link to TW.15Comment on TW.15 |
Digital twin: order files from a warehouse system Built in the lab (Material flow add-on, ModelCraft): a source can take its arrivals from a CSV orders file instead of random times (columns time_s / time_min / time_h / time / clock, type, length_m / length_mm, qty, source, order; the time unit and base are stated in the help). The same file gives the same run for any seed (no random draw is used). A row that cannot be read stops the whole read and the panel names the first bad row (line, column, what the cell said); nothing is skipped. Tables are saved in the model file; Save as CSV writes one back. Sample orders (about 130 invented rows) are in the add-on's data folder and the flow listing's Data section. Tested: lib/flow orders tests in the flow suite, and in the real /lab page (browser-orders.mjs 10/0). Does not read any warehouse system's own format. |
ModelCraft | Built · Live | 4 | – docs/0.9-DIGITAL-TWIN.md | ||
| Planned suggestions, built in 0.9 (2026-11-06) 4 | |||||||
FeatureSU.747c
Link to SU.747cComment on SU.747c |
NURBS surfaces, step S3: fillets and blends between faces, thickening, a solid written to STEP as one closed shell Asked (#747, #748, #749, #750, Oct 16): concept-to-prototype NURBS and production-quality surfacing. S1 (curves, untrimmed surfaces, measured G0 to G2) is Built in 0.8; trimmed surfaces, solids from them with union, subtract and intersect, and PartCraft Bake are Built in /lab 0.9 (docs/0.9-sessions/nurbs-09.md). That log lists what is left and says 'Fillets between faces come next'. Plan (lib/nurbs): (1) fillets and blends between two faces, constant then variable radius, deviation from the rolling ball measured; (2) thickening a surface into a solid, self-intersection refused and named; (3) a solid written to STEP as one closed shell, read back; (4) Booleans as nodes. Each result measured against a closed form. Not claimed: class-A surfacing, the other programs' file formats, a result equal to Alias or ICEM Surf. Class-A and equality with Alias/ICEM are never claimed. Completed 2026-11-06: in /lab (ModelCraft, PartCraft, SuperCad Studio's panel through the shared libs): fillet between two faces (constant/variable radius, convex/concave, closed edge; deviation from the rolling ball measured), several edges at once (mitred corners; one sphere patch where three flat square faces meet, radius equal), thicken into a solid, STEP and IGES (186 over closed shell 514) with a solid as one closed shell, read back as a solid, Booleans as nodes in the node editor, help lines. Measured against closed forms (removed volume within 2 % at tol 0.05, goes with the tolerance). Not built: vertex blend for curved faces or unequal radii, fillet between faces that do not meet, inside fillet ending on a slanted or curved face, several inside edges that reliably close (the result line says if not), Booleans/fillets on the surfaces without triangles, IGES not tried in another program. Tests: docs/0.9-sessions/nurbs-s3-09.md. |
ModelCraftPartCraft | Built · Live | 8 | A real surface model from the reporters (#747 to #750) opened in another program would be the best test docs/0.9-sessions/planned-suggestions-09.md | ||
FeatureSU.749
Link to SU.749Comment on SU.749 |
PartCraft: large assemblies, measured first at 1,000, 5,000 and 20,000 parts, then fixed where it is slow Asked (#749, Oct 16): managing large, complex assemblies, with Catia named as the reference. PartCraft's stress tests so far are 750 features in one part (D7.51) and closed-loop mates (D7.40); no row measures an assembly of thousands of parts. Do: (1) generate the test assemblies ONCE under testfiles/generated/ (registry testfiles/LARGE-FILES.md, memory 'large-test-files'), from repeated instances of a few parts, not from files typed by hand; (2) measure open, rotate, select, mate-solve and save at each size in the real page, one browser test at a time with nice and timeout; (3) fix what the numbers show, in this order of likelihood: instancing (one mesh, many transforms), level of detail and a lightweight display mode, hiding by visibility sets, mate solving only for what moved, saving without rewriting unchanged parts. Record every before and after number in the log and in the release notes (memory 'test-results-in-release-notes'). Not claimed: Catia's feature set, any size without a measurement. Untested: everything, including the sizes above. assembly-09 2026-11-06: Measured at 1,000, 5,000 and 20,000 copies of three small parts in the real page (headless Chromium on a CPU renderer, never a GPU), before and after; fixed: one draw group per part (40,000 draw calls to 3 at 20,000), a joint turned places only the parts behind it (5.0 s to 65 ms at 20,000), the part list shows its first rows (a click 11 s to 26 ms), boxes while the view moves (Views > Lightweight display keeps them on; a frame 15.7 s to 0.9 s on the CPU renderer), and assemblies open up to 50,000 copies (500 before). A frame in full detail is not faster on the CPU renderer; assemblies of heavy parts and a real GPU are not measured. No claim about any other program. Table and tests: docs/0.9-sessions/assembly-09.md. |
PartCraft | Built · Live | 6 | Hand check is community test SU.749-HAND (not blocking) docs/0.9-sessions/planned-suggestions-09.md | ||
FeatureSU.908
Link to SU.908Comment on SU.908 |
Finite elements for plates, shells and solids (linear static and modal), the engine behind slabs, shear walls and a solid stress check Asked (#908: Abaqus, Ansys, SAP2000, STAAD.Pro, ETABS and others; #890 RFEM; #1057 SPACE GASS; #1141 SAP2000): finite elements beyond beams. Built (lib/fem, own code, Apache-2.0): four-node shell (MITC4 or DKQ), ten-node tetrahedron, modal analysis, sparse IC(0)-PCG solver, slabs and shear walls through the frame mesher; known-answer tests with cited derivations (Navier, Lame, Timoshenko, Leissa, Blevins; 60 + 10 + 15 checks). Reachable: the Analysis panel of BimCraft and DetailCraft, block 'Finite elements: natural frequencies': modes, period, effective modal mass, mode drawn on the model, member end releases and rigid floors carried, settings saved with the model, the report carries the table, help written. Deflections, reactions and plate moments of slabs and walls are shown by the frame solver in the same panel (lib/frame plates; lib/fem agrees with it to 1 % in tests). Solid FEM: lib/fem's tet10 solid is the PartCraft add-on 'Solid FEM' with its own panel (SU.908c); PartCraft keeps its own solver (owner 2026-11-06). DKQ is a panel choice; the static solve in the panel stays lib/frame's (one engine, no second copy). Not built: nonlinear, contact, damping, response spectrum, soil models. No claim of equality with any other program. Hand check: SU.908-HAND (big meshes and a real building on a workstation or by the community; not a blocker). fem-complete 2026-11-06: docs/0.9-sessions/fem-09.md |
BimCraftModelCraftDetailCraftPartCraft | Built · Live | 12 | Hand check is community test SU.908-HAND (not blocking) docs/0.9-sessions/planned-suggestions-09.md | ||
FeatureBot obtainedSU.908c
Link to SU.908cComment on SU.908c |
Solid FEM add-on (PartCraft) Owner 2026-11-06: PartCraft is not moved onto lib/fem inside the app. lib/fem's solid element (ten-node tetrahedron) is an ADD-ON with its own panel, off by default, loaded on demand: Settings > Add-ons > Solid FEM, tab 'Solid FEM' in PartCraft's right panel. Built (lab): mesh the part with PartCraft's own mesher; material presets or custom; fixed faces, forces, pressures and gravity picked by clicking faces in the 3D view (undo, settings saved in the part file, read back with the add-on off); linear static and natural frequencies on a Web Worker; displacement, von Mises, reactions beside the load, mode shapes drawn on the model in colour bands (on or beside the part, deformation scale); warning list also in Problems; liability line. Shared lib: lib/fem solid-study.js, solid-setup.js, solid-panel.js (synced by tools/fem/sync.mjs) with a thin host adapter. Tests: tools/fem/test-solid.mjs (cantilever vs Timoshenko, patch test, Lame, convergence, modal vs Euler-Bernoulli), test-solid-partcraft.mjs (same mesh vs PartCraft's solver: displacement to 5e-3 %, von Mises to 0.2 %), the add-on's panel test, browser-fem-solid.mjs in /lab/partcraft. Not built: ModelCraft and CadCraft 3D hosts (no mesher in the lib for general solids), SuperCad Studio's own check beyond a mounted PartCraft, contact, yielding, several materials, meshes over 5,000 elements in the page (SU.908c-HAND). Not a code check; no claim of equality with any other program. solid-fem-addon 2026-11-06: docs/0.9-sessions/fem-09.md |
PartCraft | Built · Live | 3 | Hand check is community test SU.908c-HAND (not blocking) Owner, 2026-11-06 (do not move PartCraft onto lib/fem; make it an add-on); docs/0.9-sessions/fem-09.md | ||
| SuperCad Studio 2 | |||||||
FeatureSCF.4
Link to SCF.4Comment on SCF.4 |
Last-writer rules for synced rows: newest wins, a content tie-break, a clock guard, three-way merge and kept replaced edits super-merge.js and RowMerge.php share test vectors. Newest wins including deletions; an exact tie is decided by content so every copy agrees; a row more than five minutes ahead is refused; a device keeps the last synced row and merges different fields of one row; an unsynced edit that lost is kept with Restore. Server merges stay whole-row; the client merges before it pushes. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
FeatureSCF.5
Link to SCF.5Comment on SCF.5 |
Sync status in the SuperCad window and the Lab: status line, Sync status dialog, /lab/sync Status line item (works in Desktop, same page), the dialog comparing this device with the account per table plus queue, refusals and a log, automatic sync, GET /api/v1/team/teams?stats=1, and /lab/sync for lab testers. Seen working in a real browser against the real server. |
SuperCad Studio | Built · Live | – | – teams-sync 2026-11-07 | ||
| Units 1 | |||||||
FeatureTKW.1
Link to TKW.1Comment on TKW.1 |
Weight and temperature units (kg, lb, t, ton; °C, °F, K, °R) Asked in support message #1329 (metric in the quick properties, kilograms, Celsius). Owner 2026-11-08: build weight and temperatures, both F and C, into 0.9. Shared table lib/units gets two kinds: mass (mg, g, kg, tonne, oz, lb, ton, long ton; exact factors from the 1959 pound) and temperature (K, °C, °F, °R; offset scales, converted without a detour through kelvin for C and F, negative values read correctly); Settings › Global › Units lists them (en, es-MX, id words). TakeoffCraft: lb, ton, kg and t as typed-quantity units (priced like CY), an optional Temperature on every item typed and shown in °C or °F (Settings › TakeoffCraft: Follow Global / °C / °F), kept in kelvin. bin/test-units.mjs 261/0, bin/test-takeoffcraft.mjs 1210/0. Seen in the real /lab page: browser-weights-temps.mjs 12/12 (unit lists, temperature typed in C and F, display setting, undo). Temperatures are absolute (a difference is not converted). Reports/exports do not carry the item temperature yet. Reply sent 2026-11-08 (support #1329, answered). No account for abdulrahman.mahmoud@almada-eg.com yet: the reply invites him to sign up; grant the lab pass (TakeoffCraft, a Discord member) when the account appears. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | – | requester account for the lab pass From: Abdulrahman Mahmoud (Site) support message #1329 2026-11-08 | ||
| Resin printing add-ons (RSN) 9 | |||||||
FeatureRSN.1
Link to RSN.1Comment on RSN.1 |
Resin slicer core: layers at the printer screen, hollowing, island check, layer preview (add-on slicer-resin) Built in the lab: add-on slicer-resin over lib/printresin, in the 3D Print card under "Printing with: Resin". Layer pictures at the printer's screen resolution with smooth edges, hollowing with vent holes, floating pieces ringed on the layer preview, time, resin and cost. Free, nothing locked. Printer sizes are the makers' published numbers and the exposure numbers are starting points. Tests: slice 35/0, browser 24/0. Never run on a printer. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.2
Link to RSN.2Comment on RSN.2 |
Resin file: Elegoo GOO (add-on printer-resin-goo) Built in the lab, from Elegoo's published Goo Format Spec V1.2 with no third-party source read. What the spec leaves open is now switchable on the card: byte order (big or little endian; big by default from an unverified secondary report) and checksum (negated sum or plain sum). The spec's own example offset cannot be reached by its field table (the table gives 195,477 bytes, the example 195,255), so the example is read as illustrative. Other gaps are marked SPEC-GAP in rs-goo.js. Read back by our own reader only (86/0). A real Elegoo printer is the check. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.3
Link to RSN.3Comment on RSN.3 |
Resin file: SL1 layered-image archive (add-on printer-resin-sl1) Built in the lab, from public descriptions (Prusa publishes no specification): config.ini and numbered 8-bit PNG layers in a zip. Several keys are marked UNVERIFIED in rs-sl1.js. Read back by our own reader only (38/0). NanoDLP's different layout is not built. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.4
Link to RSN.4Comment on RSN.4 |
Resin exposure test: test part and a ladder of exposures (add-on resin-calibration) Built in the lab: a 46 x 30 mm test part (square pillars 0.3 to 1.5 mm, round holes 0.4 to 1.5 mm, two bridges) and the same print at five exposures from 70 to 130 percent, one file each, in a zip. Test 10/0 and in the browser test. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.5
Link to RSN.5Comment on RSN.5 |
Resin supports and raft: pillars from islands, overhangs and the first layer Built in the lab inside slicer-resin: the part is lifted on a raft; unsupported areas are sampled on a grid and each gets a pillar to the raft or the part below, fine tip and wider shaft; density light, medium, heavy. New and unproven: pillars do not brace each other, no suction-cup detection. Tests in test-slice.mjs. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.6
Link to RSN.6Comment on RSN.6 |
Resin files from Chitubox: CBDDLP and CTB (add-on printer-resin-chitu) Built in the lab (owner 2026-11-08), clean room: both written from ONE prose document (cbiffle/catibo a Discord member/cbddlp-ctb.adoc, BSD-2-Clause repository; whether that file carries its own licence is for legal to confirm), no GPL code read. CBDDLP in full; CTB for the layout that document describes (version 2, 7-bit pixels), with the document's cipher as an option. Options on the card: edge smoothing levels, projection flag, resolution field type, encryption. The document says it was tested on the Creality LD-002R and files for the older Elegoo Mars; no other printer is named. Later CTB versions are NOT written (see RSN.10). Tests cbddlp 28/0, ctb 25/0, browser 31/0. Never loaded on a printer. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.8
Link to RSN.8Comment on RSN.8 |
Resin slicing on a worker thread Built in the lab (2026-11-08). The resin slicer runs on a module worker (lib/printresin/rs-worker.js, started by rs-run.js) so the page stays alive while a big plate is sliced; the worker borrows the print stage's manifold file and ps-slice.js through the URLs the host already gives the filament slicer. The layers come back as run-length data, moved not copied. Cancel ends the worker. A page that cannot start a worker slices on the page as before. Same layers byte for byte as slicing directly (test-worker 14/0; the real-browser run confirms rs-worker.js starts). With FX.140 the drawing is also about 6 times faster. Not tried on a real printer. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.10
Link to RSN.10Comment on RSN.10 |
Resin files: Chitubox CTB versions 3, 4 and 5 (in add-on printer-resin-chitu) Built in the lab (owner 2026-11-08: "build to version 3+"), our own Apache-2.0 code from a written specification (docs/resin-formats/ctb-v3-v5-SPEC.md), by a builder who saw nothing else. Two layouts under one name: plain tables (version 3, 4, 5) and encrypted settings (version 4, 5; AES and SHA-256 through the platform's WebCrypto). Options on the card: layout, version, edge smoothing, projection, layer scrambling. The vendor's disclaimer text is not reproduced (our own 320 bytes: a printer might check it). Which printer needs which layout is not established. The v2 writer's cipher constant is now an option too. Tests ctb3 170/0, incl. the spec's test vectors. Never loaded on a printer. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
FeatureRSN.11
Link to RSN.11Comment on RSN.11 |
Resin files: Anycubic Photon Workshop PWMX and PWS (add-on printer-resin-anycubic) Built in the lab (owner 2026-11-08), our own Apache-2.0 code from a written specification (docs/resin-formats/anycubic-pwmx-SPEC.md), by a builder who saw nothing else. .pwmx (file version 1, optionally 516) and .pws. Options: mirror the picture, file version, edge smoothing, per-layer flag. Not written: versions 517 and 518 (the newer M5 and M7 families). The spec writer measured two public sample files (a .pws and a .pwmx) and found the real files differ from the reference code in three places; the spec records them. Tests pwmx 91/0, browser 38/0. Never loaded on a printer. |
BimCraftModelCraftPartCraft | Built · Live | – | Hand check is community test RSN.1-HAND (not blocking) From: Discord community (Discord) docs/0.9-RESIN-STAGE.md | ||
| WaterCraft add-on (WN) 5 | |||||||
FeatureWN.1
Link to WN.1Comment on WN.1 |
WaterCraft engine: shared lib/waternet on CivilCraft's water solver Built in the lab: lib/waternet (quality, fire flow, criticality, demand, report), DOM-free, handed CivilCraft's Water mains solver through configure() so there is one solver. Synced byte-identically into the add-on by tools/waternet-engine/sync.mjs. bin/test-waternet.mjs 69/0 on made-up networks against hand answers. |
CivilCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-WATERCRAFT.md | ||
FeatureWN.2
Link to WN.2Comment on WN.2 |
WaterCraft water age, chlorine decay and source trace Built in the lab: plug-flow segments through pipes, mixed junctions and tanks, bulk and wall first-order decay. Age = V/Q within 1.5 %, chlorine exp(-kt) within 1 %, two equal feeds trace 50 %, a filling tank matches (L-L0)/L within 3 %. No booster stations, no second-order decay; not tried on a real utility model. |
CivilCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-WATERCRAFT.md | ||
FeatureWN.3
Link to WN.3Comment on WN.3 |
WaterCraft fire flow at every hydrant Built in the lab: available flow at each hydrant (or every junction) holding the residual at the node or everywhere in the system, worst first, meets/short. Matches an independent bisection within 0.3 %. Needed flow default is a starting value; the person sets the real one. |
CivilCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-WATERCRAFT.md | ||
FeatureWN.4
Link to WN.4Comment on WN.4 |
WaterCraft criticality and valve isolation segments Built in the lab: every pipe, or every valved section, taken out in turn; demand cut off, junctions newly under minimum, lowest pressure left. A pipe cut partly by a valve is closed whole (the outage shown is slightly worse than real). Valves at nodes are not used. |
CivilCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-WATERCRAFT.md | ||
FeatureWN.6
Link to WN.6Comment on WN.6 |
WaterCraft CSV tables (demands, fire flow, outages, quality) Built in the lab: one CSV writer with RFC 4180 quoting and a guard so a name starting = + - @ is never a live formula. |
CivilCraft | Built · Live | – | – From: Discord community (Discord) docs/0.9-WATERCRAFT.md | ||
| Owner-reported, 2026-11-09 10 | |||||||
FeatureDC.120
Link to DC.120Comment on DC.120 |
BimCraft: Library "Place in plan | Place in model" split button; the default follows the current view Owner, 2026-11-09, from a Split-view screenshot: the Library detail shows one 'Place in the model' button. Corrected twice the same day. Final rule: Plan view shows a plain 'Place in plan' button; Model (3D) view shows a plain 'Place in model' button; ONLY Split view shows the split button [Place in plan | Place in model] with Place in plan as the default; it switches as the view changes. Critical: both ways follow the existing Library place-object process (storey, ghost, R, wall snap, mount, item number question, one IFC result). The label is never clipped. Built in apps/bimcraft/a Discord member (library-view.js); the 0.9 folder gets it by a patch. |
BimCraft | Built · Live | 2 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FeatureDC.121
Link to DC.121Comment on DC.121 |
BimCraft: drag a Library item onto the plan to place it Owner, 2026-11-09: 'the drag and drop onto plan feature request STILL isn't implemented - this needs to be in 0.9'. The original request was not found in the roadmap, suggestions, docs or memory, so it is built as the owner described it: a Library card dragged onto the plan (Plan view, or the plan half of Split) places the item there through the same place-object process, the drop point being the start position. Dropped files still open as files. Keyboard route: the split Place button. |
BimCraft | Built · Live | 2 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.147
Link to FX.147Comment on FX.147 |
All apps: a panel tab strip that does not fit scrolls (visible chevrons) instead of cutting tabs off Owner, 2026-11-09 (MarkupCraft right panel): the tab row (Properties, Markups, Punch list, Tasks, Notes, Field, Tool chest) was cut off with no way to scroll; only widening the panel reached the last tab. Tab labels never wrap. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.148
Link to FX.148Comment on FX.148 |
All apps: every panel and sub-section header is title, lock, caret at the far right (open down, closed up); lock at 50% opacity Owner, 2026-11-09 (MarkupCraft, DetailCraft, CivilCraft, CadCraft panels): carets were on the left, lock icons hung off the title, CivilCraft's sections had neither, carets did not line up. One shared header; the direction is one CSS variable (--af-caret-open / --af-caret-closed); --cc-lock-opacity .5. A lint reads the DOM of every app. Sections that were open stay open by default. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 2 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.149
Link to FX.149Comment on FX.149 |
All apps: every tooltip is a Bootstrap tooltip Owner, 2026-11-09: the top-bar icon buttons showed the browser's native title tooltip. Rule: all tooltips are Bootstrap (local 5.3). One delegated initialiser upgrades every title in the shell; no double tooltip; keyboard focus shows it. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.150
Link to FX.150Comment on FX.150 |
All apps: the row-remove x is small and shared; the start/help card has a close x Owner, 2026-11-09 (DetailCraft Levels rows; the 'Start a model' card): the x buttons were too large, and the start card could not be dismissed. One compact .shell-x style; the start card closes, is remembered per app, and comes back from the palette. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.151
Link to FX.151Comment on FX.151 |
All apps: add-on toolbar buttons look and behave like core ribbon buttons (PartCraft Print stage) Owner, 2026-11-09: the Print stage button had no gap between icon and label and a non-standard grey fill and white border. The add-on loader mistook the right panel's pin tab for the toolbar; the button now carries the core tool class (same computed style at rest in PartCraft, BimCraft, ModelCraft). |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.152
Link to FX.152Comment on FX.152 |
DetailCraft and the other apps: the mass readout ("0 kg") belongs in a panel section, not a fixed corner pill Owner, 2026-11-09: the '0 kg' pill sat in a fixed corner and could not move; it should really be in a panel. Moves into a section of the panel (title, lock, caret) so it docks, folds and floats with the panel system; the fixed-corner widgets of the other apps are audited. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.153
Link to FX.153Comment on FX.153 |
All apps: browser tab titles and favicons follow one pattern Owner, 2026-11-09 (tab strip screenshot): DetailCraft read 'Untitled — DetailCraft' while the others read '<App> — Lab | CadCraft'; favicons missing or inconsistent. Pattern: '<App> | CadCraft' on /use, '<App> — Lab | CadCraft' on /lab, '<document> — <App> | CadCraft' with a document, '| CadCraft' always last; each app has its own icon (SVG plus raster fallbacks). |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
FixFX.154
Link to FX.154Comment on FX.154 |
BimCraft: the placing bar uses one compact control size and one button system; the X,Y placeholder is lighter Owner, 2026-11-09 (the bar shown while placing a Library item): dropdowns, the X,Y field and buttons were different heights and weights, three different button styles (Place here, Wall snap, Turn 90, Stop placing), the readout ran under the view toggles, and the example placeholder was too dark. One compact size, one primary (Place here), Wall snap as a toggle, the readout wraps, the placeholder at about 50% of the text colour. |
BimCraft | Built · Live | 1 | Checked 2026-11-09: in /lab and the 0.9 web folders. Desktop installers staged, not published; ship as 0.9.1 on the owner's go (docs/0.9.1.md 91.2). docs/results/0.9/2026-11-09-suites-fix-ui.md | ||
| Layouts 1 | |||||||
FeatureRH.1
Link to RH.1Comment on RH.1 |
Rhino layout, Rhino keys and four views (Top, Perspective, Front, Right) A built-in layout called Rhino (Settings › Global › Layout) and, as a separate setting, a Rhino key set (Settings › <App> › Menus, keys and mouse), for people who model with curves, surfaces and solids from a command line. Asked on Discord by a first-time visitor: the top, right, front and perspective views as an option, plus Rhino shortcuts. Layout (all eight apps): menus File Edit View Curve Surface Solid Mesh Dimension Transform Tools Analyze Render Panels Help (menubar set=rhino, each command under one menu; the verb decides for mixed groups), tool rows, two columns of tools left, panel right, command line in the status strip. New block `viewports` (layout four), filled only by apps that offer it: ModelCraft shows Top, Perspective, Front and Right at once (viewports-mc.js). One view is active and is the real view (picking, tools, keys unchanged); a click activates another; Zoom extents refits all; Ctrl+M maximizes and restores; leaving the layout gives the single view back. Keys (ModelCraft style `rhino`): typed Rhino command names (Line, Box, Extrude, Move, BooleanUnion, Top, Undo, 4View…) run the closest ModelCraft command; Ctrl+G, Ctrl+Shift+G, Ctrl+H, Ctrl+Alt+H, F9, Ctrl+Shift+E, Ctrl+M; right button turns the view, Shift+right pans. The layout's command line tries these words first (ccInput.typed). Not built: Rhino keys and four views in the other seven apps; Enter to repeat; osnap bar; per-view cameras are not saved in the file; other views draw no axes, guides or selection. Ctrl+H, Ctrl+Alt+H and F9 are from memory of Rhino's defaults: a daily user should check. Test: node bin/test-rhino-layout.mjs. |
CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft | Partly built | 1 | owner look in /lab; a daily Rhino user to check the keys; the other seven apps' keys and views Discord request, 2026-11-09 (the owner answers the requester directly; no lab pass) | ||
No item matches these filters.