Files
e773d93164 HATCHEDIT: refuse an explicit bad scale or angle before editing anything (#724) (#777)
* HATCHEDIT: refuse an explicit bad scale or angle before editing anything (#724)

run_hatchedit read `scale` and `angle` leniently (a non-positive scale or a
non-numeric value was skipped), so such a request reported success, added an
undo step and cleared the redo history, applied its valid companion property
or recreated the boundary. HATCH already refuses a non-positive scale. The
numbers are now checked first with the same size_param rule; `angle` must be
a number; absent and null still mean "leave it".

* Docs: update the progress docs for this change

---------

Co-authored-by: Brandon Thomas <echelon@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:37:45 -04:00

12 KiB
Raw Permalink Blame History

CADCraft roadmap

Stage: pre-alpha · next: alpha, ~2 points (38% → 40% ready for real work) and ~125–190 Opus 5.5 hours away (the four failing core workflows of the alpha gate)

Last reviewed: 2026-10-10 · Last updated: 2026-10-10 · Change: minor (hours to ~95% for each readiness number) · Target: Autodesk AutoCAD 2027

CADCraft targets full parity with AutoCAD (2D drafting first, then annotation, layouts and plotting, DWG, parametrics and 3D), plus what AutoCAD doesn't have: agent control over MCP, a scriptable CLI, a web build, Linux and FreeBSD builds, and a free licence.

Why pre-alpha: four of AutoCAD's five core workflows fail the alpha gate. Precise drafting lacks object snap tracking and has stubbed TRIM/EXTEND/OFFSET options; blocks can't be edited in a block editor (REFEDIT edits them in place, xrefs not yet); plots ignore plot styles; and a DWG saved by CADCraft drops everything it doesn't model and has never been checked in AutoCAD. Dimensioning passes. Ready for real work (≈ 38%) is also under the ~40% alpha bar. Beta is ≈ 600–930 h away.

Headline numbers

Number Value Kind
Feature breadth (AutoCAD for Mac menu items with a live command) 50% (245 / 491; 2D menus only ≈ 65%) measured (parity-checklist.md + UI-only commands)
Ready for real work ≈ 38% estimated (target-app-parity.md)
Mainstream practitioner (2D drafter) ≈ 28% (lower than the full number: file exchange, stability and interaction discounts multiply) estimated (target-app-parity.md)
Essentials user ≈ 46% estimated (target-app-parity.md)
Remaining to alpha ≈ 125–190 h (the gate rows) estimated
Remaining to beta ≈ 600–930 h (≈ 150–250 h elapsed with 4–6 agents) estimated
Remaining to full parity ≈ 1,300–2,100 h (≈ 330–550 h elapsed) estimated

Readiness by audience

Audience Ready % Opus 5.5 agent wall-clock hours to ~95% Work that dominates
Full target (ready for real work) ≈ 38% ≈ 1,150–1,850 h (≈ 70% parallelises across 4–6 agents: ≈ 300–480 h elapsed) 3D kernel (300–450 h), DWG/DXF and other formats, AutoLISP and ecosystem, blocks/xrefs/dynamic blocks, localization
Mainstream practitioner (2D drafter) ≈ 28% ≈ 570–880 h (≈ 70% parallelises: ≈ 150–240 h elapsed) lossless DWG exchange and a real-file corpus, precision input (tracking, dynamic input), 2D geometry precision, blocks/xrefs, annotation depth, stability backlog
Essentials user ≈ 46% ≈ 140–225 h (≈ 50% parallelises across 3 agents: ≈ 60–110 h elapsed) stubbed options in basic draw/modify commands, opening DWGs people send, launch/stability fixes, plot dialog, context menus and dynamic input

Hours are subsets (essentials ⊂ mainstream ⊂ full) and use the calibration in target-app-parity.md: ≈ 25 commands per agent-hour at presence quality in the first build (≈ 11.5 agent-hours), 0.3–0.7 h per option or bug fix (≈ 60 such fixes on 2026-10-10), 2–5 h per moderate feature, 15–100 h per subsystem.

Hours are Opus 5.5 agent wall-clock hours, calibrated on this repo's own build: the first version (51k lines, 290 commands) took ≈ 11.5 agent-hours at presence quality, while depth work runs at 0.3–0.7 h per option or bug fix (≈ 60 such fixes landed on 2026-10-10). Details: target-app-parity.md.

By dimension

Dimension Parity Remaining (h) Doc
Features (depth, weighted by use) 41% 735–1,115 target-app-parity.md
UI/UX fidelity 43% 100–160 ui-parity.md
File formats 30% 170–280 file-format-parity.md
Hardware 45% 15–25 hardware-parity.md
Localization 5% 60–100 localization-parity.md
Performance 60% 20–40 hardware-parity.md
Stability 35% 30–50 gaps.md
Platforms 75% 15–25 gaps.md
Ecosystem and automation 10% 120–200 gaps.md
AI features 20% 40–80 gaps.md

Features

Area Parity Remaining (h) Doc
Draw (2D) 60% 15–25 gaps.md
Modify 50% 40–60 gaps.md
Geometry precision 40% 70–110 geometry-parity.md
Layers and properties 70% 10–15 gaps.md
Dimensions 45% 25–35 gaps.md
Text and MTEXT 35% 30–45 gaps.md
Leaders, tables, fields 25% 25–35 gaps.md
Hatch and gradients 35% 15–25 gaps.md
Blocks, attributes, xrefs, groups 25% 80–120 gaps.md
Layouts, viewports, plotting 35% 35–50 gaps.md
Inquiry and utilities 30% 30–45 gaps.md
Parametric constraints 50% 20–30 geometry-parity.md
3D modelling and rendering 2% 300–450 gaps.md
Collaboration and cloud 5% 40–70 gaps.md

Languages

AutoCAD 2027 for Mac ships 8 interface languages; CADCraft ships English plus partial Ukrainian and German. Detail: localization-parity.md.

Language Status UI translated
English full 100%
Simplified Chinese none 0%
Spanish none 0%
Hindi none 0%
Arabic none 0%
French none 0%
Portuguese none 0%
Indonesian none 0%
Japanese none 0%
German partial ≈ 100% of the catalog (989 rows)
Korean none 0%
Vietnamese none 0%

Other languages shipped: Ukrainian and German (989 catalog rows each; Ukrainian landed with #36), Brazilian Portuguese, Spanish, Czech, Russian, French, Simplified Chinese and Italian (1,227 rows, 2026-10-12); engine messages stay English.

Upcoming

Ranked; detail and the full beta checklist in docs/roadmap.md.

  1. Gate and land: fix fmt on main, run cargo xtask ci on every PR, land the 47 open PRs (15–25 h).
  2. Stop losing data on save; native MULTILEADER; save DWG/DXF at a chosen version (30–45 h).
  3. Real-file DWG/DXF corpus and a black-box check in AutoCAD (10–15 h + owner).
  4. Precision input: object snap tracking, extension/parallel snaps, FROM/M2P/TK, snap overrides, editable dynamic input (25–35 h).
  5. Unstub prompt options in TRIM/EXTEND, OFFSET, ROTATE, PLINE, SPLINE, MTEXT, MLEADER (15–25 h).
  6. Autosave, recovery, AUDIT, RECOVER (10–15 h).
  7. Exact ellipse/spline geometry and correct polyline offsets (30–50 h).
  8. Xrefs, block editor, groups, then dynamic blocks (80–120 h).

Progress log

Date Entry
2026-10-12 TRIM: a pick after a closed polyline's last cut keeps only the complementary run instead of an extra circuit of the outline (#726)
2026-10-12 HATCHEDIT refuses an explicit bad scale or angle before it edits anything, so a rejected request leaves the drawing, undo and redo as they were (#724)
2026-10-10 Merged main: Ukrainian interface (#36, first string catalog), Dynamic Input pointer boxes with Tab and relative entry (#60), press-drag selection windows (#63), WIPEOUT and hatch gradients kept through DXF/DWG save (#147, #162), SETVAR DIM* as style overrides (#129), UNITS dialog (#38), close-window save prompt (#47), DIMANGULAR on circles (#20), cargo fmt fixed on main. UI/UX 40% → 43% (dynamic input 15% → 45%), localization 3% → 5%; ready for real work ≈ 37% → 38% (weighted 37.2% → 37.7%), mainstream 27% → 28%, essentials 45% → 46%. Beta is now ~37 points away; hours unchanged within rounding.
2026-10-10 Added mainstream practitioner (≈ 27%) and essentials user (≈ 45%) numbers; ready for real work unchanged at ≈ 37%. User evidence: 2 praise comments, 0 "switched from AutoCAD" reports, 27 of 37 open issues on the core path.
2026-10-10 Stage re-normalized from alpha to pre-alpha under the craftrules core-workflow gate: drafting with tracking, blocks, plotting and lossless DWG save fail; dimensioning passes. Alpha is ≈ 125–190 h away.
2026-10-10 Full re-measure against AutoCAD 2027 for Mac in the craftrules progress-docs format: menu breadth 245/491 (50%), ready for real work ≈ 37%, stage alpha. Remaining estimates rose (≈ 570 h → 1,300–2,100 h) on new evidence: behaviour audits found tracking/extension/parallel snaps and dynamic input are not real, saves drop unmodelled content, DWG saves as R2000, and the old estimate had no localization, ecosystem, stability, platform or AI rows. New docs: target-app-parity, gaps, roadmap, architecture, localization, file-format, hardware, UI and geometry parity; docs/parity.md became docs/parity-checklist.md.
2026-10-10 About 60 community PRs merged in a day: DXF fidelity (transparency, LWPOLYLINE elevation, frozen VP layers, dimension text rotation, arc-length dims, non-ASCII escapes), CJK font fallback, Save/Don't Save on close, Light/System themes, F2 history, trackpad pan, Linux XWayland drag-and-drop, correctness fixes across draw/modify/constraints. Release v0.4.0.
2026-10-08 Releases v0.1.0–v0.3.0: Flatpak, AppImage updates, signed macOS universal, Windows x64/x86/arm64, Linux, FreeBSD and web builds.
2026-10-07 Old assessment: menu breadth 233/491 (47%), ≈ 29% weighted parity, 2D drafting ≈ 55%, ≈ 570 h remaining; milestones as reported then: M1 ~85%, M2 ~65%, M3 ~75%, M4 ~50%, M5 ~35%, M6 ~55%, M7 ~55%, M8 ~20%, M9 ~60%, M10 ~70%, M11 0%, M12 ~25%, M13 ~10%.
2026-10-07 First version built in one session (≈ 6.9 h elapsed, ≈ 11.5 agent-hours): M0 vertical slice, dimensions, hatch, blocks, DWG bridge, layouts and PDF plotting, GPU canvas, R-tree, constraints, Layer Properties Manager, QSELECT, release pipeline.

Revision history

Date Change Summary
2026-10-12 trivial Progress log: closed-polyline TRIM (#726)
2026-10-12 trivial Progress log: HATCHEDIT numeric validation (#724)
2026-10-10 minor Merged main's changes (Ukrainian catalog, dynamic input pointer boxes, DXF fixes); UI/UX and localization numbers updated
2026-10-10 minor Readiness-by-audience table with hours to ~95% for each number
2026-10-10 minor Mainstream practitioner and essentials user headline numbers
2026-10-10 minor Stage alpha → pre-alpha under the core-workflow gate; banner, why, headline row
2026-10-10 major Restructured to the progress-docs standard (stage, two numbers, dimensions, features, languages, upcoming, log); full re-measure; milestone detail moved to docs/roadmap.md, parity assessment to docs/target-app-parity.md
2026-10-07 major Alpha checklist, milestone table, ≈ 29% weighted parity estimate

Shared UI workspace integration

Tool Sets, Layers and Properties use shared docking with persisted layouts, keyboard focus and compact toolbar overflow. No milestone percentage change.