Release planning

CadCraft 1.0 impact map

Every fix and feature lined up for 1.0, and what each one touches: which apps, and which layers of the stack.

ProjectCadCraft
Sheet0.10 impact
Items110
Date2026-11-09
51Fix
22Feature
0Spike
28Platform
0Site ops
8Sanity check
1Decision
≈ 319days in the written 0.10 plans
  • Planned 101 on the plan for the release it is filed under
  • Built 0 built and working in /lab (the dev builds). Whether the public has it is its reach: "in the lab", "Live" (the last gate) or "switched off"; see docs/REACH-LIVE.md
  • Partly built 1 part of it is built in /lab; the rest waits (see "Waits on")
  • Promised 0 the live site already says it is coming
  • Moved 0 moved here from an earlier release or wishlist
  • Found 0 bug found after a release shipped; fixed in a point release or the next one
  • Candidate 3 recommended in a spike or session log; owner to choose
  • Community please test 0 built and in /use; a Discord post gives the steps and the expected result and asks people to try it on their own devices, files or know-how
  • Decision Time 5 a decision, check, file, key, flag or go only you can give; folds into the list once answered

Built means built and working in the lab. Live means the public can use it, and is the last gate: 0 Built · Live, 0 Built · in the lab.

Sheet 1 · impact areas

Where 0.10 lands

How many items touch each app and each layer, by kind. One item can touch several areas, so the rows add up to more than the item count. Pick a row to filter the schedule below.

Impact areaFixFeatureSpikePlatformSite opsSanity checkDecisionAll
Apps
CadCraft 20 17 – 10 – 3 1 51
BimCraft 18 20 – 9 – 4 1 52
ModelCraft 19 20 – 10 – 3 1 53
MarkupCraft 12 16 – 9 – 3 1 41
TakeoffCraft 14 16 – 9 – 3 1 43
CivilCraft 21 18 – 10 – 4 1 54
DetailCraft 15 17 – 9 – 4 1 46
PartCraft 15 17 – 9 – 3 1 45
Studio – 1 – – – – – 1
SuperCad Studio – 6 – 6 – 1 1 14
Layers
Site and services 13 3 – 8 – 1 – 25
Desktop host – 1 – 1 – – – 2
App shell 5 15 – 8 – 2 1 31
App code 23 4 – 3 – – – 30
Our engines 8 – – 1 – 1 – 10
Vendor engines – – – – – – – 0
Drawing surface 3 – – – – – – 3
Help and words 2 1 – – – 1 – 4
Tests and tooling 2 1 – 2 – 3 – 8

Sheet 2 · schedule

Every fix and feature

Grouped by track. App chips carry each app’s layer colour; Studio is in ink. "Waits on" names what has to happen first; the small lines under it say who asked and where the item is written up.

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

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

ItemWhatAppsLayersStatusDaysWaits onIssues
Interface roadmap — wave 1 26
FeatureUI.9 Link to UI.9Comment on UI.9 Command line anywhere: docked in the status strip, floating over the drawing, in its own window, or hidden

Duncan docks a command line in the status strip (statusbar.command, 0.9 DU.1), and it only hands its text to the command finder; the reference screenshot floats one over the drawing with history above it and a ▾ to open the log. CadCraft has a real command line of its own (cad-cmdline-09.md) in the classic layout only. Change: a commandline block of its own (places: stage-bottom, bottom, float, window; options history, log, width), filled by the app when it has one (CadCraft's, with its LISP and keyword prompts) and by the finder elsewhere; dragged by its grip to float anywhere over the drawing or to a window (UI.2/UI.3), remembered; Ctrl+9 shows/hides it as people expect; typed input goes to it from anywhere in the drawing when the layout says so (the classic rule). Works in every layout the person adds it to (UI.5), default in Drafting (UI.12) and Duncan.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App shellApp code Planned 3 – docs/0.9-sessions/interface-wave1/SUMMARY.md
FeatureUI.10 Link to UI.10Comment on UI.10 View overlays: view cube and compass, navigation bar, viewport label, axes icon, in the corners of the drawing

The drafting reference shows four things over the drawing itself: a view cube with a compass (N/E/S/W, "TOP", a WCS drop-down) top right, a navigation bar (a Discord member, zoom, zoom window, orbit) at the right edge, a viewport label "[-][Top][2D Wireframe]" top left, and an axes (UCS) icon bottom left. The engine has no corner places: view-top and view-bottom are full-width strips, and each app draws its own view cube (BimCraft's display modes beside the view cube, GH.3-B) or none. Change: four view-corner places (view-tl, view-tr, view-bl, view-br) in the format, each a small stack of overlays that never take pointer events outside their boxes; shared overlay blocks: viewcube (the app's 3D view orientation through the adapter's views API, with the compass and the named views), navbar (a Discord member, zoom extents, zoom window, orbit, walk from the registry), viewlabel (view name, display mode, scale, the [-] menu with the app's view commands), axes (the app's UCS/axes drawing, or the shared one). Each is a block a layout turns on, so Drafting (UI.12) and Sketch have them and Toolbox does not. Apps keep their own where they have more (BimCraft's display modes feed viewlabel). Test: each overlay present and placed in every app that has 3D, with the drawing's pointer events untouched between them.

CadCraftBimCraftModelCraftCivilCraftDetailCraftPartCraft App shellApp code Planned 4 – docs/0.9-sessions/interface-wave1/SUMMARY.md
FeatureUI.12 Link to UI.12Comment on UI.12 Drafting layout: menu bar, quick-access strip, ribbon, file tabs, view cube and navigation bar, command line, Model / Layout tabs, status toggles

The owner's reference screenshot is a 2D drafting workspace of the kind people who come from the long-established drafting program know: a menu bar (File Edit View Insert Format Tools Draw Dimension Modify Window Help), the quick-access strip with the workspace drop-down and search, a ribbon (Home Insert Annotate Parametric View Manage Output Add-ins Collaborate) with Draw / Modify / Annotation / Layers / Block / Properties / Groups / Utilities / Clipboard / View groups, file tabs (Start, Drawing1*, +), the drawing with a viewport label, a view cube with compass, a navigation bar and an axes icon, a floating command line, Model / Layout1 / Layout2 tabs and a status bar of toggles with the scale and a customize gear, in a dark chrome. None of our six built-ins is this one (docked and autorev are BIM ribbons, Vector and Sketch are palette layouts). This row: a seventh built-in, "Drafting" (assets/workspaces/drafting.ccworkspace.json; the name is ours, never the program's: the vendor-names rule), made only of the engine's blocks (menubar set "drafting", titlebar with quick + switcher + search, ribbon with more/slots/contextual, viewtabs open at view-top, the four view overlays, commandline float, viewtabs all at view-bottom, statusbar toggles + scale + customize, look.tone dark), listed in all eight apps and SuperCad Studio; CadCraft's adapter fills every slot, the other apps fill what they have (resolveLayout drops the rest with a note, as today). Every pixel from our tokens and icons: the layout copies where things are, never another program's artwork. Conformance test, help topic common/layout-drafting, es-MX and id words, a screenshot for /download and the release note.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App shellApp code Planned 4 UI.8 to UI.11 (the blocks it is made of); the owner's look at the mockup (UI.1). docs/0.9-sessions/interface-wave1/SUMMARY.md
FeatureUI.14 Link to UI.14Comment on UI.14 One icon family everywhere: the CadCraft set in every layout's ribbon, toolbar, toolbox, menu and palette, and the missing tools drawn

Today the set shows only in Duncan's tool rows and the Vector/Sketch palettes; the ribbon, the classic toolbars, the menu styles, the toolbox, the File menu, the pet palette and the status bar still show Bootstrap Icons or the app's own drawings, and about 270 specialist tools (the 2026-11-05 count: BimCraft MEP and families, CivilCraft alignments and water, DetailCraft connections, PartCraft features, MarkupCraft and TakeoffCraft marks) have no drawing in the set at all. Change: (1) the engine's tool() and the input registry's icon lookup ask the set first for EVERY block and the classic toolbars (iconKey → iconNode; Bootstrap only as the last fallback, logged in the lab so the missing list is real); (2) draw the missing tools in sets per app, each set reviewed on the UI.13 sheet, one agent per app with the rules, about 30 icons a day; (3) the eight apps' own toolbar drawings (CadCraft's 1.6 px line icons, BimCraft's, …) retire where the set covers them, kept under Settings › Icons "Each app's own drawings" for people who prefer them; (4) add-ons name icons from the set by key (api.icons) so an add-on's tools match. Measured at the end: zero Bootstrap fallbacks in the eight apps' default toolbars and ribbons in the lab; the number of set icons in the release note. Owner addition the same day (UI.22): the drawings themselves, the inventory and the icon repo are UI.22, the library; this row is wiring that library into every block, layout and app so one family shows everywhere.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraft App shellApp code Planned 8 UI.13 (the rules) first. docs/0.9-sessions/interface-wave1/SUMMARY.md
PlatformUI.22 Link to UI.22Comment on UI.22 The icon library: one drawing for every command, option and shell function in the eight apps, kept as data, the same in every layout and app

Owner 2026-11-09: "we need to create an entire library of icons (a task) that covers all of the application options, so that our icons are consistent regardless of the layout/app." What exists: app-workspace-icons.js holds 114 drawings on a 32-unit grid; about 270 specialist tools had no drawing by the 2026-11-05 count; the shell bar, More menu, panel tabs, status bar, menus and dialogs still use Bootstrap Icons (bi-*) and each app draws some of its own, so one command looks different from layout to layout and app to app. This row makes the library its own thing: (1) an inventory tool (tools/icons/inventory.mjs) reads every app's command registry, its toolbar, menu and toolbox definitions, the shell's bar buttons and panel tabs, Settings and the layout blocks, and writes docs/icons/INVENTORY.md: every command or option id, its apps, its drawing key or "missing"; nothing is drawn before the list exists; (2) the library in its own public repo (getcadcraft/icons, Apache-2.0, like every shared library): one SVG source per icon on the 32 grid with the five fills and two strokes as classes, names.json (key, name, aliases, the commands that use it), and a build that packs the set into app-workspace-icons.js, a sprite for the site and the add-ons kit, and the gallery data for UI.23; a hand edit of the packed file is refused by a check; (3) the drawings, under the UI.13 rules, in batches by app with the owner's look at each batch on the review sheet; shared verbs (move, copy, rotate, trim, offset, measure, zoom, undo) drawn once for every app; the shell's own set (home, find, help, settings, sun and moon, full screen, offline, problems, team, lessons, the AI and the panel buttons); (4) a lint in the release freeze: a registered command without a drawing, a drawing without a name, or a bi-* class left in shell or app chrome fails it; (5) the count in the release note (UI.18) comes from the inventory, never typed. Each app's own drawings are migrated or retired by its session.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftSuperCad Studio App shellApp codeTests and tooling Planned 10 UI.13 (the owner's drawing rules) first; UI.14 wires the result into every block. docs/0.9-sessions/interface-wave1/SUMMARY.md
PlatformUI.25 Link to UI.25Comment on UI.25 One state language: an action enables or disables menu items, shows and updates panels, and selects on the canvas; every unit follows the same state

Owner 2026-11-09: "remember that actions can enable or disable menu items or make panels show/update as well as selecting objects on the canvas." What exists: every app wires this by hand in its own code: Properties refreshes on the app's selection event, the project tree selects through app code, the command registry (ccInput) knows commands but no enabled or visible condition, menus and toolbars are static until an app toggles classes, contextual ribbon tabs do not exist (UI.11), Problems and the add-ons read their own events. Change: (1) one state in the shell (ccState): selection (ids, kinds, count), mode (model / paper, 2D / 3D), the active view, the current layer and tool, document dirty; the apps publish into it through the host adapter; nothing else writes it; (2) declarations as data: a command, menu item, button, ribbon tab or panel says when it is enabled, visible or shown (enabled: selection.count > 0; visible: selection.kind == wall; show: problems.count > 0) in the registry and the layout file (format v2), never in per-app DOM code; the dock manager applies them: items dim, contextual tabs appear and go (UI.11), panels show or refresh, badges count; (3) the reverse channel: a unit acts on the canvas through the host (select, reveal, highlight), so a Browser row, a Problems line, a schedule row or a search hit selects and zooms to the objects with the same undoable selection the pointer makes; (4) one action path: every button, menu item and shortcut runs the registry command, so one command in a ribbon, a palette, a menu and the status bar has one enabled state and one label; (5) a check (bin/test-shell-state.mjs) opens every app, selects through the host and asserts Modify enabled, Properties updated, the Browser row lit, a declared contextual tab shown, then selects from the panel and asserts the canvas selection. The mockup's demo shows the behaviour (click a wall, or its Browser row). SuperCad Studio's host is the same contract.

CadCraftBimCraftModelCraftMarkupCraftTakeoffCraftCivilCraftDetailCraftPartCraftSuperCad Studio App shellApp code Planned 5 UI.21 (units) and UI.6 (format v2) carry the declarations; each app publishes its state in its own session. docs/0.9-sessions/interface-wave1/SUMMARY.md
Suggest an item

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