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.

ProjectCadCraft
Sheet0.9 impact
Items273
Date2026-11-09
115Fix
147Feature
4Spike
0Platform
0Site ops
0Sanity check
7Decision
≈ 0days in the written 0.9 plans
  • 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 areaFixFeatureSpikePlatformSite opsSanity checkDecisionAll
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.

Add an item Fork map (Rust and C++ forks) The roadmap

Issues sync every 10 minutes; last sync Nov 9, 2026 7:00 pm.

ItemWhatAppsLayersStatusDaysWaits onIssues
Decision Time 5
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)
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)
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.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.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.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.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
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.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
Requests for 0.9 8
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
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
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
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
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"
Suggest an item

Anyone can send one; no account and no name needed. The team reads each idea, and the ones we take on appear on this page. Please leave out web addresses.