- Delete .github/workflows/ci.yml and not.md. - Drop the now-inaccurate "GitHub Actions CI" claims from README/CHANGELOG so the v1.1.0 docs match reality (the ezdxf-in-your-CI capability notes remain).
5.5 KiB
5.5 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Next: 1.2 — closed-loop validation moat (scalar drawing-score, pre-plan clarification, iterative refiner + transaction-stack isolation).
[1.1.0] — 2026-06-19
Correctness, cross-backend parity, and an enforced quality gate, landed across four audited
sprints (see docs/analysis/). 318 tests, ruff-clean.
Added
- Premium drafting workflow (shared across both backends):
drawing_plan,drawing_critique(ISO-128 focuses),point_from_snap,drawing_apply_iso_layers,dimension_auto,entity_select_smart,construction_xline/construction_clear. - Deterministic geometry for exact OSNAP coordinates:
point_intersection(line/line, line/circle, circle/circle) andpoint_tangent(external point → circle). - Engineering / deterministic CAD layer: involute gear front view + section A-A,
DIN 6885 keyed bore, ISO A3 title block, and the 8-step
drawing_finalizevalidator. - HTTP bearer-token auth:
StaticTokenVerifierwired into FastMCP whenMCP_AUTH_TOKENis set. - Mocked-COM test harness (
tests/test_com_backend.py+ Sprint-3/4 suites) — COM logic is now regression-tested on Linux CI without a live AutoCAD. entity_create_mtextrotation parameter;dimension_autolayer override;bounding_box/ ARClength/ TEXT-MTEXTrotation+char_heighton both backends;BlockInfo.description.- Security module (
security.py), centralized config (config.py),.env.example, path validation, command/LISP sanitization, ruff config, pre-commit hooks, pytest-cov.
Changed
drawing_finalizenow enforces the premium critique in addition to the structural validator: leftover construction geometry, non-ISO-128 lineweights, untrimmed corners, duplicate entities, and dimension overlap block the gate (was advisory-only).strict_critique=Truefails on warnings too.drawing_save_asderives the on-disk format from the file extension —part.dxfwrites DXF, not DWG. ezdxf refuses to mislabel a.dwgfile.- Dimension and construction layers resolve from the active layer set (iso13567 →
M-DIMEN-T-N/M-CONST-E-N, not the hardcodedDIM/CONSTRUCTION). - Premium meta-tools lifted into the shared
AutoCADBackendbase class (single source of truth). - Dead code removed (
section.py,generate_tooth_profile,CommandResult,set_layer_active, …).
Fixed
- ezdxf
dimension_aligned/dimension_angularraisedTypeError(wrong ezdxf 1.4 args) — fixed. - Full-circle polar array placed a duplicate copy over the original — fixed (divisor = count).
entity_offsetignoredside_x/side_yon both backends — now honored (and COM no longer leaks extras).- COM
entity_create_hatchbuilt an associative hatch then deleted its boundary — now non-associative. - Lineweight mm-vs-hundredths truncation wiped ISO-128 weights — fixed via
normalize_lineweight. view_screenshot/drawing_export_pdfcould SIGSEGV (matplotlib GUI backend in a worker thread) — now render headless viaAgg(Figure+FigureCanvasAgg).entity_select_smartlength_rangesilently rejected all ARCs (nolength) — fixed.- Gear tooth profile self-overlapped for high tooth counts (z ≥ ~42); section view drew duplicate bore lines; validator keyway heuristic was a permanent false-negative — all fixed.
- COM
system_run_lispalways reported"nil";system_set_variabledidn't coerce numeric sysvars — fixed.system_abouttool groups /_registered_tool_countno longer drift or surface-1. drawing_newbootstrap failures now surface asdegradedinstead of reporting success.
Security
- HTTP remote-bind guard now fires on every launch path (including
fastmcp run server.py:mcp), not only the__main__block — closing an anonymous-remote-bind gap. - AutoLISP allowlist bypass-vector regression tests (newline injection, symbol aliasing,
vla*/acet-*,c:custom commands). - COM apartment leak bounded (
CoUninitializeon teardown); transaction commit/rollback andsystem_run_lispnow respect the CMDACTIVE guard.
[1.0.0] — 2026-03-01
Added
- Initial release with 67 tools, 6 resources, 5 prompt templates
- Dual-engine architecture: COM backend (live AutoCAD) + ezdxf backend (headless)
- FastMCP 3.0 server with middleware stack (error handling, audit, timing, logging)
- Drawing management: new, open, save, save-as, export DXF/PDF, purge, audit, undo/redo
- Entity creation: line, circle, arc, polyline, rectangle, text, mtext, hatch, spline, ellipse, point, block reference
- Dimensions: linear, aligned, angular, radius, diameter
- Entity modification: move, copy, rotate, scale, mirror, offset, delete, rectangular/polar array
- Layer management: create, delete, set current, modify, freeze/thaw, lock/unlock, hide/show, isolate
- Block operations: list, insert, explode, attributes, create from entities, find references
- Analysis: entity stats, region search, distance/area measurement, bounding box, select by layer/type
- View control: zoom extents/window, screenshot
- Transaction support: begin, commit, rollback
- System tools: status, variables, command execution, AutoLISP evaluation
- 5 prompt templates: floor plan, P&ID, electrical schematic, mechanical drawing, quick drawing