Commit Graph
672 Commits
Author SHA1 Message Date
Hakan SevenandClaude Opus 5.5 d67fd101b4 Cargo: kernel 9d7ff46, graph 77d511e
The kernel fills hatch rings whose holes touch (a column against a beam)
by the even-odd rule instead of dropping the whole hatch. A pick-point
hatch with 222 such loops was saved but never drawn. (#1813)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 23:51:38 +03:00
Hakan SevenandClaude Opus 5.5 423b28c6b1 Cargo: codec 278c49a, kernel 46e5bf8, graph 3b3a03d
The codec now decodes version-0 (2010 release) constraint groups, so the
parametric constraints of such drawings load and their dynamic
dimensions show (#992). Constraint groups also keep their next node id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:55:05 +03:00
Hakan SevenandClaude Opus 5.5 ee2898095e fix(plugins): Python plugins see the host document again
Plugins read the host's document through a shared reference across the
dynamic-library boundary, and the entity index hashed with foldhash's
per-process seed, so every handle lookup from the plugin missed. The
codec now uses a fixed hasher (opencadcodec f385f75; kernel 9841749,
graph e9c23ad).

The Python IPC suite also caught up with intended changes: ATTDEF
renders its tag, DXF now keeps the lock-position flag, and the modify
audit turns associative arrays off since it checks loose copies.
The rate-limiter test waits for the host's check instead of a fixed
sleep that raced on macOS, and ENV_LOCK no longer cascades a poisoned
lock into every later test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:54:03 +03:00
Hakan SevenandClaude Opus 5.5 74df9ff84a plot styles: the CTB/STB model and codec come from the codec crate
Cargo: codec d36331d, kernel 60f086b, graph 74aac56.

The table model and its file codec now live in `codec::plot_style`
(opencadcodec#53) and are re-exported here. What stays is where tables
come from: the plot styles folder, the session registry, the shipped
tables, and saving to disk, as the `PlotStyleTableExt` trait.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:58:26 +03:00
Hakan SevenandClaude Opus 5.5 1070361c0a Cargo: codec eaa6d79, kernel bb355ca, graph 9c17779
- Gradient stops keep their DWG color book name and book; RGB wins over
  ACI in a DXF gradient block in either tag order.
- MTEXT decimal tab stops keep their alignment character.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:22:44 +03:00
Hakan SevenandClaude Opus 5.5 f7dd9b403d Cargo: codec 2c2a3fb, kernel 2dc2fca, graph 14275ea
DXF values read into exactly sized strings (codec #114): reading a
DXF in the web worker no longer spends most of its time in malloc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 04:36:38 +03:00
Hakan SevenandClaude Opus 5.5 cf763dcd49 Cargo: codec fddcbae, kernel 82686d7, graph 49b248d
Rotating a dimension keeps its default text and oblique angles (#1761).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:00:53 +03:00
Hakan SevenandClaude Opus 5.5 843cbcd607 Merge pull request #1795 from MarcelP102/Select-Color-Redesign
[UX] Select Color redesign and feature parity

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:21:10 +03:00
Hakan SevenandClaude Opus 5.5 990730721e Cargo: kernel 0c08bbb, graph 90a6d85
Faster ear clipping for hatch fills with many islands (kernel #88).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:05:58 +03:00
Claude 451b0f5d78 Merge main into Select-Color-Redesign
Keep both sides: main's ViewBackground colour target and PREVIEW icon
next to this branch's Interface target and LIST/SEARCH icons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rGmDUNr1hUf4zo1X3dak8
2026-10-14 19:10:33 +00:00
Hakan SevenandClaude Opus 5.5 fa557f0261 Cargo: kernel 01ba0bf, graph 4ab7dcb
Booleans of cones, tori and cylinders with planar solids (#1762).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:46:19 +03:00
Hakan SevenandClaude Opus 5.5 0a29be07f7 Cargo: codec e83247d, kernel 2c6224b, graph 12063e1
Viewport stacking rank kept apart from its ID in DXF; a layer's method-0
transparency reads as opaque.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:48:57 +03:00
Hakan SevenandClaude Opus 5.5 2c329b2889 Layouts reopen in the viewport they were saved in (#1670)
A save records the entered model viewport (or the sheet) as the layout's
last active viewport, and opening the layout enters it again with its
UCS. Picks up the codec fix that kept a last-active link from being read
as the sheet viewport (codec d57097c, kernel b40fa59, graph 2360341).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:24:12 +03:00
Hakan SevenandClaude Opus 5.5 720039bfe1 Cargo: codec f48d673, kernel d8f9b7e, graph a9ca185
Picks up the DXF fix for MTEXT without group 41, which wrapped at a
default width of 10 (#1739).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:01:55 +03:00
Hakan SevenandClaude Opus 5.5 353c1b0d0f Cargo: codec 3bdc002, kernel a496394, graph 04ca67c
DXF references find their dynamic block; block classes can be given the
reference's flags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:02:34 +03:00
Hakan SevenandClaude Opus 5.5 92bbafccd0 Cargo: codec 347c32a, kernel bbd1054, graph 1d2e3b5
Block records keep their own XDATA through DXF and DWG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:25:31 +03:00
Hakan SevenandClaude Opus 5.5 25990e3713 Cargo: codec d1ebd21, kernel 0423154, graph 79570a2
Brings in the merged codec PRs (XCLIP transforms in the reference order,
table entries added after load get handles in DXF, default APPID handle
collision, viewport ShadePlot and grid flags) and the kernel's sweep and
off-plane revolve work.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 08:33:20 +03:00
Hakan SevenandClaude Opus 5.5 b371a0a59e Cargo: codec c6f5d51, kernel 3d77c6b, graph c4a341f
codec reads the line curve of edge action parameters, which carries the
row axis of associative rectangular arrays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:32:51 +03:00
Karim Jerbi 8d287decd8 fix(explode): use codec block explosion for attributes and arrays
Delegate INSERT and MINSERT explosion to the document-aware codec implementation, removing duplicate attribute and base-point handling. Update workspace, kernel and graph pins together and cover rotated arrays with a nonzero base.
2026-10-13 11:10:11 +01:00
Karim Jerbi 97afb57333 feat(mcp): expose entity creation schemas on demand
Expose creation fields, constraints and examples for the 11 supported types without expanding startup tool schemas. Share the creation contract and constructor with execution to keep accepted inputs consistent.

Validation: MCP, contract/factory and entity creation regression tests.
2026-10-13 09:33:49 +01:00
Hakan SevenandClaude Opus 5.5 468d1e4f43 fix(plot): honour the requested plot style over the layout's own
A headless plot with plot_style loaded the layout's stored page setup,
which put the layout's CTB back in place and, when that file was not in
the plot styles folder, failed the plot with "not loaded". The
requested table now stays active for every page.

Bump codec ddf0fd2 (viewport on state from DXF group 68, so viewports
written without bit 0x8000 show their contents), kernel b80079a,
graph 45c9649.

Refs #1739

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 08:18:37 +03:00
Hakan SevenandClaude Opus 5.5 710a837a9b fix(layout): place a window-plot sheet around its plot window
A layout plotted by window drew its sheet at the paper-space origin, so
the title block sat on the grey background away from the paper. The
sheet now centres on the plot window, or sits at the plot offset from it
when the plot is not centred.

Bump codec 8aa574a (polyline vertices in owned-handle order, which fixes
self-crossing viewport clip boundaries), kernel d79bb30, graph 4810ee0.

Fixes #1678

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 06:50:19 +03:00
Hakan SevenandClaude Opus 5.5 390e12169a fix(dwg): keep OCS-saved drawings readable by strict readers
Re-authored constraint-group geometry dependencies carried an empty
persistent subentity id, which crashed strict readers loading the file;
they now name the whole curve with a single-edge id.

Bump codec bc350f2 (declare classes of objects added to pre-R2004
drawings), kernel e692b97, graph 37d38eb.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 23:24:22 +03:00
Claude 0904661192 Merge main into Select-Color-Redesign
Resolve conflicts with the new gradient and graphic-attributes colour
targets: keep main's targets and menu handling, routed through the new
ColorPicker state; adapt dock/view.rs to `color_picker`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rGmDUNr1hUf4zo1X3dak8
2026-10-12 19:29:37 +00:00
Hakan SevenandClaude Opus 5.5 ae56fab62a Cargo: codec 3ec70a2, kernel e710727, graph 338a973
The codec keeps dynamic-block, associative and material records intact on
DWG save (strict readers rejected re-saved drawings at BLOCKSCALEACTION,
associative action bodies and MATERIAL records). A checker material
texture no longer rewrites the native map source, so a map with a
procedural texture counts as content whatever its source says.

Valuable parts of #1671 (with opencadcodec#100): measured on 235 sample
drawings re-saved after an edit, a strict reader now rejects 4 instead
of 7; the remaining 4 are R14/R2000 tables, which the PR codec also
fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:22:13 +03:00
Afonsop 61c32c7f74 web: XREFs, data links & extraction, ARCHIVE transmittals, worker-side saves
The last four big web-vs-desktop gaps.

XREFs: XATTACH reads the picked drawing's bytes and registers them
name-keyed (the image/PDF-underlay pattern), pre-parses on the web
worker, and the commit merge produces the same xref block flow as
native. Opened drawings resolve xrefs from the registry (trailing-name
match) before cache build; unresolved references produce ONE warning
listing the names and the fix — drop the referenced files on the page
(drops and picker opens now register their bytes) and reopen or
XRELOAD. XRELOAD works off the registry on unsaved drawings too.

Data Link & Extraction: spreadsheet links read picked xlsx/csv bytes
(calamine from slices / CSV from string) through a session registry,
so preview, refresh, and table-insert work on web; extraction takes
external drawings via a multi-file picker parsed on the worker, and
outputs CSV/TXT/.dxex via download_bytes. The disabled 'Add folder'
button explains why.

ARCHIVE/ETRANSMIT: assembles the drawing plus registered images, PDF
underlays, and session plot tables into a ZIP delivered as
{stem}_transmit.zip; skipped dependencies are reported by name.

Save/autosave off the UI thread: the parse worker gains a serialize
action (protocol v5) — the document is prepared once on the main
thread (clone, styles, dimension bake), then the DWG/DXF writer pass,
the dominant cost, runs on the worker; any worker failure falls back
to inline serialization with the identical shared implementation.
The save path also clears the dirty flag only when the tab didn't
change mid-write, and the runtime-fields sidecar now carries
graphic_data, fixing a pre-existing loss of raw DWG round-trip bytes
on web-opened documents.

(cherry picked from commit 2e100634)

Ported onto main (#1717 review): the new ocs_save crate builds on the
pinned codec; the hand-written ZIP writer is replaced by the zip crate
already in the tree; ARCHIVE packs registered xref bytes too and
serializes document_for_save() like a web Save; the web save prepares
document_for_save() (prepare_document_for_save now takes the copy by
value, so no second clone); the wasm resolve_path consults the xref
registry, so every reference lookup — not just resolve — finds dropped
files; XRELOAD keeps main's undo, unload and stale-baseline handling;
native data extraction streams the source drawings one at a time.
2026-10-12 12:02:04 +03:00
Claude 00830f8714 Redesign Select Color panel: index and true color tabs
Replace the old index page and the iced_aw ColorPicker popup with one
Select Color panel:

- Index Color tab: standard colors, ACI 10-249 grid, grays; arrow keys
  move through the palette.
- True Color tab: HSB, RGB and gradient-field modes built on two new
  widgets (GradientSlider, ColorArea) and iced_aw NumberInput boxes,
  an editable hex field and a nearest/exact index color button.
- Current/New swatch: clicking Current reverts. A mixed selection opens
  on the color of the most recently drawn object with *VARIES* on top.
- Color field accepts an index, a color name, r,g,b or hex.
- Enter confirms, Esc cancels, other keys stay in the panel.
- New labels translated in all 22 locales.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rGmDUNr1hUf4zo1X3dak8
2026-10-11 20:29:46 +00:00
Hakan SevenandClaude Opus 5.5 656f0cead6 fix(extrude): store the fallback profile in place under group 295; kernel f051138, graph fbee68b
#1666 sets group 295 on extrusion history records, which makes the kernel
read the embedded profile and path where they stand and ignore the
matrices. The planar fallback profile (a region-derived LWPOLYLINE) was
stored in its plane's local frame with the frame as matrix, so with the
flag it rebuilt at the origin. Re-express it in its own OCS (normal and
elevation) when the record is built.

Pins the kernel and graph at upstream (opencadkernel#84 merged as f051138)
instead of the ramox81/cadkernel [patch].

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 23:22:55 +03:00
github-actions[bot] cff240ef71 Release v2026.41 2026-10-11 17:33:07 +00:00
Hakan SevenandClaude Opus 5.5 6cde0e02d8 Cargo: kernel 71770e1, graph f4fdb80
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:12:04 +03:00
Hakan SevenandClaude Opus 5.5 e08aa68bb7 Cargo: kernel 0b023a8, graph 1bb8b06
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 12:26:26 +03:00
Hakan SevenandClaude Opus 5.5 ae7fe3d4aa Cargo: kernel 5c9ca9a, graph 20f493c
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 11:30:42 +03:00
Hakan SevenandClaude Opus 5.5 51eda9ff85 Cargo: kernel 24fb370, graph fcc70b0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 10:23:24 +03:00
Hakan SevenandClaude Opus 5.5 003bc39886 Cargo: kernel 1d81f9e, graph d6964e3
Kernel: fillets and chamfers along plane-cylinder rulings; blend
booleans refused when they change the solid by more than their tool.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 06:52:24 +03:00
Hakan SevenandClaude Opus 5.5 4b6ced9b8c Cargo: kernel 35fb24d, graph cb18f6e
Kernel: spline normals and tangents kept while a body is meshed —
solid display of spline-heavy drawings up to 2.7 times faster.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 05:56:26 +03:00
Hakan SevenandClaude Opus 5.5 ad9403e03d Cargo: kernel 69ffca4, graph e988ea3
Kernel: spline surface search grid kept, ray/control-net box test,
sampled proximity-mesh deviation — booleans on spline solids several
times faster.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 05:24:33 +03:00
Hakan SevenandClaude Opus 5.5 85710e5454 Cargo: kernel c65a1f0, graph 3b9426a
Kernel: shell for solids run straight between two caps (plates with
holes, walls bent round arcs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 04:26:07 +03:00
Hakan SevenandClaude Opus 5.5 9f9c621871 Cargo: kernel b8b5b9e, graph f9f7e27
Kernel: fillets and chamfers round plane-cylinder/cone circles (hole and
boss rims, countersinks), shell for any planar solid, NURBS projection
onto the right pass of a looping curve, straight rational profile
pieces, slice section precision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 04:15:33 +03:00
Hakan SevenandClaude Opus 5.5 68646f5616 Cargo: kernel 8dafa23, graph eb7afee
Kernel: closed-curve seam projection, offset push by slicing, exact
planar spline pcurves, imprint perf (no hairline ping-pong, box-culled
periodic containment).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:54:21 +03:00
Hakan SevenandClaude Opus 5.5 ea7e79bfab Cargo: kernel edef407, graph 96359a4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 21:26:03 +03:00
Hakan SevenandClaude Opus 5.5 309810803e Cargo: kernel af749de, graph 39ef337; region area by chain shares
A region's loop area sums its pieces with Curve::chain_area, the
composable share: enclosed_area closes an open polyline by its chord.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 20:31:56 +03:00
Hakan SevenandClaude Opus 5.5 689cd71d9e Cargo: kernel b234308, graph 3baa891
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:21:19 +03:00
Hakan SevenandClaude Opus 5.5 6ad3183b3d Cargo: kernel 0e87fac, graph 5c02e2b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:49:24 +03:00
Hakan SevenandClaude Opus 5.5 48ecaa0ee2 Cargo: kernel b6f85b4, graph e008a24
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:37:02 +03:00
Hakan SevenandClaude Opus 5.5 bdc3d8d7c7 Cargo: kernel 71f46ff, graph ffbf3ca
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 15:19:15 +03:00
Hakan SevenandClaude Opus 5.5 4708283382 Cargo: kernel 7ae9c6c, graph 8296ebf
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:55:58 +03:00
Hakan SevenandClaude Opus 5.5 4ae2722aad Cargo: kernel 749ed0b, graph 33637fc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:24:58 +03:00
Hakan SevenandClaude Opus 5.5 3d488c1dcd Cargo: kernel 01562a8, graph 4b7cde5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 04:18:29 +03:00
Hakan SevenandClaude Opus 5.5 fbf2694d56 Cargo: kernel 8dbcaa7, graph 65880eb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 01:12:34 +03:00
Hakan SevenandClaude Opus 5.5 2d3077e29d Cargo: kernel 305a89e, graph 46ce9cc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:12:38 +03:00