forked from 1b-agent/opencadstudio-upstream
- Add root CHANGELOG.md as master index with executive release summaries - Add dedicated changelogs for last 4 releases (v2026.38, v2026.39, v2026.40/40.1 unified, v2026.41) and unreleased
13 KiB
13 KiB
OpenCADStudio - Release v2026.39 (2026-09-27)
Summary: Milestone release featuring the initial Python Host Model plugin architecture, full dimensional and geometric parametric constraint parity (Linear, Aligned, Angular, Radial, Diameter), interactive Block Definition (
BLOCK/BMAKE) and Write Block (WBLOCK) dialogs, command-line autocomplete execution on Enter, individual block attribute grips, theXCLIPboundary clipping tool, redesigned PDF/XREF underlay integration panels, interactive plugin command previews, trackpad gesture navigation (pan and pinch-to-zoom), major rendering & tessellation performance optimizations, and robust metric drawing template defaults.
🌟 Notable Release Notes
- Python Host Model & Plugin Architecture: Introduced the foundational Python plugin execution model, embedding an isolated Python runtime host with CAD entity data structures, automation APIs, and lifecycle bindings. (Contributed by @felixriestra)
- Block Creation & WBLOCK Dialogs: Implemented interactive Block Definition dialogs (
BLOCK/BMAKE) with on-screen entity sequencing, base point pickers, unit settings, and the standaloneWBLOCKdialog for writing blocks to external files. (Contributed by @KarimJerbi) - Command-Line Autocomplete & Architecture Modularization: Pressing Enter now immediately executes the highlighted autocomplete pre-selection. Completely refactored the 11,500-line monolithic command driver into clean, decoupled domain modules. (Contributed by @KarimJerbi)
- Parametric Constraints Parity: Delivered complete geometric and dimensional constraint toolsets including Linear, Aligned, Angular, Radial, and Diameter constraints, constraint conversion (
DELCONSTRAINT), and dynamic constraint bar display. (Contributed by @ramox81) - Individual Block Attribute Grips & Tracking: Added individual grip markers on each block attribute definition and dual-vector intersection locks during object tracking (
OTRACK). (Contributed by Claude) - Tessellation & Pipeline Performance: Optimized polyline arc tessellation sampling, bypassed wide fills on thin polylines, memoized constraint glyphs behind epochs, capped selection grips at 4096, and eliminated redundant wire distance calculations. (Contributed by @KarimJerbi)
- Boundary Clipping (
XCLIP): Implemented theXCLIPcommand, allowing users to define polygonal and rectangular clipping boundaries for external references and block inserts. (Contributed by @ramox81) - Trackpad Navigation Gestures: Added native trackpad gesture recognition supporting smooth two-finger panning and pinch-to-zoom. (Contributed by @swit33)
- PDF & XREF Attachment Parity: Redesigned the PDF and XREF attachment dialogs with live scale/rotation previews, layer visibility overrides, and context ribbon tabs. (Contributed by @ramox81)
🚀 New Features
Blocks & Definitions
- Block Definition Dialog (
BLOCK/BMAKE): Added the standard Block Definition dialog with on-screen sequencing, base point coordinate pickers, retain/convert/delete actions, and unit settings. (Contributed by @KarimJerbi) - Write Block Dialog (
WBLOCK): Added theWBLOCKdialog allowing users to export objects, entire drawings, or existing blocks to separate files. (Contributed by @KarimJerbi) - Individual Block Attribute Grips: Each visible block attribute now displays its own grip marker for independent position and orientation adjustments. (Contributed by Claude)
- Shared Dialog Button & Form Radio Builders: Migrated dialogs across the application to consistent shared UI builders with theme-aware styling. (Contributed by @KarimJerbi)
- Block Window Localization: Added multi-language localized strings for block creation dialogs and measurement units. (Contributed by @KarimJerbi)
Command Line & Drafting
- Autocomplete Execution on Enter: Pressing Enter with an active autocomplete pre-selection now executes the highlighted command instantly. (Contributed by @KarimJerbi)
- Dual-Vector OTRACK Intersection Locks: Visual object tracking draws both projection vectors simultaneously at ray intersections. (Contributed by Claude)
- XLINE and RAY Direction Grip Stretch: Moving the directional pass-through grip on infinite lines and rays now applies stretch semantics rather than displacing the base origin. (Contributed by @KarimJerbi)
- Metric Drawing Defaults: Initialized new drawings using standardized ISO metric template defaults (meters/millimeters) and proper dimension styles. (Contributed by @ramox81)
- Page Setup Import (
PSETUPIN): Supported importing named page setups across drawings via JSON and drawing database exchanges. (Contributed by @lalomalvi) - Raster Image Pixel Dimensions: Displayed exact pixel width and height metadata for attached raster image references. (Contributed by @ramox81)
Plugin System Extensions
- Interactive Plugin Previews: Plugins can now emit transient graphic preview entities during active user interaction steps. (Contributed by @yztink)
- Command Execution from Plugins: Added
run_commandcapability enabling plugins to invoke built-in CAD commands programmatically. (Contributed by @yztink) - Plugin Layer Property Access: Exposed granular layer table read and write APIs to plugin scripts. (Contributed by @yztink)
- Repeatable Plugin Commands: Enabled repeating the last-executed plugin command upon pressing Enter or Space. (Contributed by @yztink)
Performance & Architecture
- Polyline Arc Tessellation Performance: Optimized polyline arc sampling and eliminated expensive wide fill mesh generation for zero-width/thin polylines. (Contributed by @KarimJerbi)
- Analytical Instancing & Wire Partitioning: Streamlined render environment resolution, skipped wire distance calculations for solid lines, and optimized handle parsing. (Contributed by @KarimJerbi)
- Selection Grip Cap & Epoch Memoization: Capped total displayed selection grips at 4096 and memoized constraint-glyph layout positions behind
constraints_epoch. (Contributed by @KarimJerbi) - Statusbar Epoch Caching: Cached layout and scale derived properties behind change epochs for smooth frame pacing. (Contributed by @KarimJerbi)
- Driver & Kernel Modularization: Decomposed monolithic 11,500-line command driver into domain modules, extracted reusable clipboard and matchprop kernels, and unified table/block merge copies. (Contributed by @KarimJerbi)
🐛 Bug Fixes
Geometry, Snapping & Boundary Detection
- Plan-View Trim Segment Skipping: Skipped zero plan-view polyline segments in
TRIMto prevent clipping failures. (Contributed by Claude) - Attribute Filter Refactoring: Streamlined attribute filter logic in insert entity handlers. (Contributed by @dasmatus)
- Boundary Detection for Infinite Rays/XLINEs: Clipped unbounded sources, rays, and XLINEs to finite view extents during face detection and associative hatch refreshes. (Contributed by @KarimJerbi)
- Units Settings in DIST Output: Enforced user precision and drawing units settings on
DISTcommand readout. (Contributed by @KarimJerbi) - Property Operator Snapshot Leak: Converted
chpropchoices to standardized property ops, eliminating a CTB memory snapshot leak. (Contributed by @KarimJerbi) - Direct Distance Entry without Dynamic Input: Ensured typed direct distances commit accurately along polar tracking angles when dynamic input is disabled. (Contributed by @yztink)
- 3D Shell Command Crash: Resolved an edge-case crash when selecting complex solid shells in the
SHELLcommand. (Contributed by @ramox81)
Viewport & Plotting
- Viewport Wide Polyline Plot Widths: Corrected stroke width scaling for wide polyline segments plotted inside scaled viewports. (Contributed by @Chrisyeh1983)
- Dimension Arrowhead Export: Fixed missing and clipped arrowheads during vector dimension export. (Contributed by @ThaiLe-gt)
- Plot Preview Test Isolation: Isolated plot preview tests from host environment display server dependencies. (Contributed by @lalomalvi)
- Text Fallback Empty Outlines: Prevented empty or missing font outlines from generating zero-area bounding artifacts. (Contributed by @swit33)
- ViewCube Visibility Toggle: Fixed ViewCube rendering states to honor viewport visual style visibility toggles. (Contributed by @yztink)
UI, Automation & Platform
- Command Line Duplicate Paste: Prevented duplicate text insertion when pasting clipboard text into the command-line interface. (Contributed by @yztink)
- Missing Font Prompt Hardening: Prevented recursive dialog prompts when encountering drawings referencing multiple missing SHX fonts. (Contributed by @lalomalvi)
- Automation Task Dispatch: Fixed task dispatching to prevent orphan task registrations in automation pipelines. (Contributed by @helenkwok)
- Batch Line Tail Trimming: Corrected tail trimming issues during batch geometry creation. (Contributed by @buyun14)
- API Documentation & Specs: Documented native and web automation build targets and API endpoints. (Contributed by @helenkwok, @buyun14, and @huaninstratech)
👥 Contributors
Huge thanks to all contributors to v2026.39:
- Hakan Seven (@HakanSeven12) — Upstream geometry kernel and codec synchronization, core application architecture.
- Felix Riestra (@felixriestra) — Python Host Model plugin architecture, Python C-bindings and runtime lifecycle.
- ramox81 (@ramox81) — Parametric constraints (Linear, Aligned, Angular, Radial),
XCLIP, PDF/XREF underlays, metric defaults. - Karim Jerbi (@KarimJerbi) — Block definition dialogs (BLOCK/BMAKE/WBLOCK), Enter autocomplete execution, command driver modularization, polyline arc tessellation & rendering pipeline performance, grip stretch for XLINE/RAY, statusbar & glyph caching.
- Claude (Claude Opus / Sonnet) — Block attribute individual grips, OTRACK dual-vector intersection locks, plan-view trim segment filtering.
- yztink (@yztink) — Plugin interactive previews, plugin command execution, direct distance entry, command line paste fix.
- Chris Yeh (@Chrisyeh1983) — Viewport wide polyline plot stroke width fixes.
- Alexey Bagno (@swit33) — Trackpad pan and pinch gestures, text font fallback outlines.
- Luis Martinez (@lalomalvi) —
PSETUPINpage setup import, missing font prompt hardening, plot preview test isolation. - Matus Mastena (@dasmatus) — Attribute filtering logic refactoring.
- Thai Le (@ThaiLe-gt) — Dimension arrowhead vector export fix.
- Helen Kwok (@helenkwok) — Automation task dispatching and web build documentation.
- buyun14 (@buyun14) — Batch line geometry trimming and automation docs.
- Huan Le (@huaninstratech) — Automation API specification and build scripts.