Commit Graph
5032 Commits
Author SHA1 Message Date
Karim Jerbi 677ff0e08c feat(block-editor): select and edit native parameter and action grips
Parameters and Move/Scale action markers were drawn as overlays with no selectable authoring objects. Pick their points, labels or graphics in BEDIT to display editable definition, endpoint, reference and label grips using the existing selection overlay and point-input commands. Show the selected object's coordinates in the Properties panel.

Write edits to the native parameter/grip/action records while preserving graph identities and target bindings. Maintain Rotation radii and oriented grip directions, synchronize visibility lookup data, and retain Basepoint attribute relocation with recorded entity history. Escape cancels edits or clears selection; editor undo/redo and save/discard preserve the native changes.

Validate with self-contained viewport-input and native DWG/DXF persistence regressions, all ten parameter types, action bindings, cancellation and Basepoint attribute undo. Checks: 3 focused, 323 block (6 existing opt-in ignored), 39 dock and 23 viewport tests passed; counts overlap.

Ordinary drawing-reference grips and per-instance saved action evaluation follow in the next milestone.
2026-10-16 17:44:09 +01:00
Karim Jerbi f69aefc3df feat(block-editor): author Move and Scale actions with Test Block evaluation
Add BACTION/BACTIONTOOL workflows for compatible parameter endpoints, selected geometry and native action markers. Persist Move/Scale records, target handles and evaluation graph bindings; reuse shared adjacency editing with Lookup and the existing palette, tooltips and selection UI.

Evaluate endpoint changes in the disposable Test Block document from immutable starting geometry, with geometry/grip undo, source isolation and transformed-reference support. Preserve visibility representations and their native Basepoint anchor. Refuse unsupported options, value constraints and shared test references.

This milestone supports default Move and uniform Scale on basic drawing entities. Other actions, custom options, live preview and ordinary drawing-reference evaluation remain pending.

Validation: self-contained synthetic DWG/DXF roundtrips, graph adjacency, command cancellation/history, Test Block isolation/undo, transformed references, visibility/Basepoint and real-view palette/viewport input checks; broader block and dock suites.

Keep action object selection active across mouse picks/removals and advance only on Enter. Cover empty selection, multiple targets, Shift removal, marker placement and Move/Scale Test Block evaluation using viewport mouse events. Verified 10 focused, 320 block and 39 dock tests (6 existing opt-in block checks ignored).
2026-10-16 17:05:18 +01:00
Karim Jerbi 10c5a9d382 feat(block-editor): author Lookup tables and wire Basepoint insertion
Add native Basepoint placement and relocation, shared insertion and Test Block anchor behavior, and attribute-safe coordinate reframing. Wire native Lookup parameter placement and the Property Lookup Table editor through the existing palettes and BLOOKUPTABLE.

Stage input columns, rows, reverse lookup and audit across multiple tables; apply all drafts atomically as one undo entry. Persist native Lookup actions and graph dependencies while preserving unrelated objects and IDs. New inputs cover Linear and Polar distances; reference Lookup evaluation and geometry actions remain separate work.

Pin codec c418d92, kernel 0f6f225 and graph dcb9eda for correct R2010 inline constraint-group decoding. The codec regression uses a checked-in synthetic DWG and reproducible generator, with normal self-contained loading and edited DWG/DXF tests. Keep dock control tests independent of scene adapter warning dialogs in software snapshots.

Validation covers native round trips, all 17 research fixtures, graph preservation, insertion and attributes, staged editing, undo/cancel, and real palette/dialog controls.
2026-10-16 15:29:08 +01:00
Hakan SevenandClaude Opus 5.5 04b2c07a38 Use the codec audit and repair in place of OCS's corruption guard
Opening a drawing no longer drops entities with its own sanity checks or
rewrites knotless splines; recovery runs the codec's repair and records
its actions and unresolved issues in the drawing's notifications. Xref
merges keep every entity. The dropped-entity counts, their command-line
warnings, recovery report rows and the automation "purged" field go with
the guard.

AUDIT now reports the codec's audit (counts plus the first 50 issues) and
asks whether to fix; Yes applies the codec repair as one undo step.

Cargo: codec 325fa98, kernel dfca391, graph 5d4e713.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 12:02:39 +03:00
Hakan SevenandClaude Opus 5.5 3c9404510f Cargo: codec cb3ce6a (acadrust through 3a3098a), kernel 40f59ca, graph a4bd351
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 10:06:14 +03:00
Hakan SevenandClaude Opus 5.5 e4d04ef132 Cargo: codec e023bc3 (acadrust sync), kernel abca4e8, graph c63556f
The codec now holds wide EntityType variants boxed (MText, Helix,
Dimension, Hatch, Viewport, MultiLeader, Surface, Table, Ole2Frame,
Light, Extended). Constructors box their entity; nested patterns reach
a dimension through entities::dimension::as_dimension(_mut). Also
follows BlockAction::action_ids, LineTypeComplexData::source_flags and
the decimal tab stop with an explicit character.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 09:17:01 +03:00
Hakan SevenandClaude Opus 5.5 218150c76a fix(clipboard): copied XDATA keeps its application in another drawing
EED names its application by APPID handle. Copying between drawings
(paste, COPYTO, block palette insert, REFEDIT) kept the source
drawing's handles, so the saved DWG named APPIDs it did not have and
the reference program refused to open it (xdata.cpp eInvalidInput).
The copy now carries the APPID records its XDATA names, registers the
missing ones, and re-points the EED at them.

COPYTO also skipped every layer the target lacked (the check tested
the source) and filled the target with the whole linetype catalog; it
now copies the missing layers and loads only the linetypes used.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:37:19 +03:00
Hakan SevenandClaude Opus 5.5 d909bd0787 Cargo: codec 102f04c, kernel 5811296, graph 88cdae0
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:37:19 +03:00
gianlucafiore 88ffe21636 Merge pull request #1832 from gianlucafiore/fix/extension-otrack-polar-intersection
Fix Extension–OTRACK crossing picks and reduce accidental lasso drags
2026-10-15 23:19:24 -03:00
gianlucafiore ec44bcdd71 cleanup: remove unused generic drag threshold import 2026-10-15 20:31:16 -03:00
gianlucafiore 8ebe3fc89f fix(selection): prevent incidental mouse motion from starting lasso 2026-10-15 20:31:04 -03:00
Karim Jerbi abb84751a2 chore: pin the plugin template to the host's codec 85bb5a2
codec 85bb5a2 fixes the BLOCKVISIBILITYPARAMETER DXF defect: AcDbEvalExpr
ends after 90/98/99 when the eval has no value instead of emitting a stray
70 -9999. Readers rejected that group 70 ('Unexpected DXF group code: 70')
and discarded every visibility-bearing drawing on open.
2026-10-16 00:22:43 +01:00
gianlucafiore 0004113e0a refine(selection): allow 250ms before a small pointer drag starts 2026-10-15 20:22:09 -03:00
Karim Jerbi 1b5f7a19d8 Cargo: codec 85bb5a2, kernel c038693, graph d518926 2026-10-16 00:20:49 +01:00
Hakan SevenandClaude Opus 5.5 09ec41a5e9 packaging(homebrew): cask on v2026.41, install through a local tap (#1825)
Homebrew dropped --no-quarantine and installs casks only from a tap, so
the README's direct-URL install no longer worked, and the cask still
pointed at v0.4.8.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 02:12:26 +03:00
Hakan SevenandClaude Opus 5.5 f6455b22eb fix(view): Zoom Extents and All frame a drawing placed at survey coordinates (#1829)
A block whose content is only 3D solids leaves a marker wire carrying
its insertion snap, and that point counted as drawing extent: a
georeferenced block inserted at the origin made ZOOM E frame the
origin and the model together, 860 km wide. Extents now skip those
markers; the solids count through their meshes. The marker's snap also
took the insertion point straight from the OCS, so a mirrored insert's
snap sat on the far side of the origin.

ZOOM All fitted the limits alone. In a 3D view it is now Zoom
Extents, and in plan it frames the limits together with the extents.

Instanced solids summed their rotated point and translation in f32
before meeting the eye, which cost up to half a metre at survey
coordinates; the large terms now cancel first.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 02:11:16 +03:00
gianlucafiore 52e8cd1002 fix(otrack): commit Extension intersection at tracked crossing on click 2026-10-15 20:10:08 -03:00
gianlucafiore dd3b18e550 docs: clarify extension exception in OTRACK priority guards 2026-10-15 20:02:39 -03:00
gianlucafiore 6a767390dd fix(otrack): allow Extension tracking intersections while preserving point snap priority 2026-10-15 20:02:21 -03:00
Hakan SevenandClaude Opus 5.5 9a567d4f44 fix(linetype): an opened drawing keeps exactly its own linetypes (#1826)
Opening a drawing added all 50 catalog linetypes to it, so PURGE found
and removed them again after every save and reopen. Opening now only
repairs the catalog linetypes a drawing already has. The linetype
pickers (layers, properties, ribbon, attribute editor, layer states)
offer the missing catalog ones after the drawing's own, and the one
picked, or named in LINETYPE SET, is loaded on first use.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 01:27:50 +03:00
Hakan SevenandClaude Opus 5.5 c499ce97d4 docs(plugin-template): pin the template to the host's codec 357cfed
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 01:18:47 +03:00
Hakan Seven a62598cd63 Merge pull request #1828 from schoeller/xdata_entity_type_labels 2026-10-16 01:12:36 +03:00
Hakan Seven 012ccc7b65 Merge pull request #1831 from manuvarkey/system-ui-font-face 2026-10-16 01:11:11 +03:00
Hakan Seven 57d80654be Merge pull request #1827 from MarcelP102/auto-hide-fixes 2026-10-16 01:09:10 +03:00
Hakan SevenandClaude Opus 5.5 0126ea212f feat(layout): copy a layout from its tab menu (#1822)
The layout tab's right-click menu gains New Layout, Copy, Page Setup
and Plot beside Rename and Delete. Copy makes "<name> (2)" with the
source's page setup, sheet view and every paper-space object,
viewports included, and opens it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 01:08:07 +03:00
Hakan SevenandClaude Opus 5.5 38d81bf838 feat(selection): highlight opacity and extra width (#1823)
Options > Selection gains "Selection highlight opacity" and "Selection
highlight extra width". Below full opacity the object's own colour
shows through the highlight. The selection overlay draws with its own
copy of the frame uniforms: transparency on, and every line widened by
the extra width. Drawings opened at startup now get the selection
colour settings too; they used to keep the defaults until a setting
changed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 01:07:23 +03:00
Hakan SevenandClaude Opus 5.5 977135fbbd feat(grid): the coloured grid axis lines can be turned off (#1815)
Drafting Settings > Snap and Grid gains "Display grid axis lines",
kept with the other grid settings; the grid itself stays as it is.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 00:42:03 +03:00
Hakan SevenandClaude Opus 5.5 091331f3bd fix(blocks): a dynamic block copied to another drawing stays dynamic (#1816)
Only the definition's entities crossed drawings: its record's object
graph (parameters, visibility states, grips) stayed behind, and a
reference showing an evaluated copy lost the link to its definition.
The clipboard now captures the graph and the dynamic definition of an
evaluated reference, and paste and the block palette's insert-from-file
recreate them on the new records, re-pointing members and element tags.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 00:36:59 +03:00
Hakan SevenandClaude Opus 5.5 ca408f4329 Cargo: codec 357cfed, kernel 3642105, graph c7ce31d
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 00:36:59 +03:00
Hakan SevenandClaude Opus 5.5 c8f67ad35b fix(blocks): block previews leave out members of other visibility states (#1819)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 00:11:56 +03:00
Hakan SevenandClaude Opus 5.5 98cce048c7 fix(blocks): a copied dynamic reference changes state on its own (#1818)
COPY cloned the reference's AcDbRepData without its handle, owner or
representation index, and both references kept sharing one evaluated *U
block, so a state picked on either changed both. The clone now names
itself and is indexed; a state change gives a reference whose *U other
references share its own copy first.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 00:11:56 +03:00
Karim Jerbi b947f99a87 Cargo: codec 91b0cfd, kernel f45e472, graph 7e1d46e 2026-10-15 22:04:33 +01:00
Hakan SevenandClaude Opus 5.5 d2995ecee1 fix(hatch): pick points stay fast in large drawings, and see off layers
Each picked region matched every edge of its rings against every
boundary source of the drawing, twice: with 65,000 sources a click took
over 30 seconds. Sources are now narrowed to those reaching the rings'
box first, once per hatch and once per ring: the same click takes 9 ms.

Objects on layers that are turned off (not frozen) now bound a hatch, as
in the reference. Drawings switch off the layers that close the regions
to be hatched; without them a click between columns found the outer
frame instead. (#1813)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 23:51:38 +03:00
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 <[email protected]>
2026-10-15 23:51:38 +03:00
Sebastian be675f2824 docs(plugins): entity-class label convention; demo in template v2
- plugin-architecture.md: new "Entity class display labels (API v10)"
  section documenting the split (stable identity keys in XDATA, display
  labels in the plugin declaration), the live-loaded-plugin gating (missing,
  disabled, cap-excluded, failed, removed, or dead → bare native type), the
  "<Label> (<Native>)" display rule, that raw schema fields (`type`,
  `dxf_name`, `record_type`) and LIST are unchanged, and that the label is
  display-only. `plugin.toml` deliberately does not carry the table: it is
  the pre-load discovery file and labels must activate on live manifests.
- Template v2 demonstrates the whole convention: declares
  `SURVEY-CLASS:POINT -> "Survey Point"` and stamps the identity key in
  MARK_FIRST_SURVEY_POINT, so marked points show as "Survey Point (Point)"
  while the plugin is loaded. plugin.toml's api_version is bumped to 10 (keep
  in sync with ApiVersion::CURRENT) with a NOTE on where the class table
  lives. DESIGN.md documents the flow.
- Template v2's stale `acadrust` pin (8a28c21, predating the host's codec
  bump to 278c49a) is realigned with the host's pin: without it the template
  no longer compiles on main — its `acadrust::EntityType` and the host
  re-exports are distinct types when the revisions disagree (verified the
  same four type errors occur before and after this feature's template edit).
- changelogs/unreleased.md entry (Plugins section).
2026-10-15 22:39:09 +02:00
Sebastian ab3e0723fd feat(display): plugin entity-class labels in the panel, records, and automation
Resolve entities' XDATA class-identity keys through the live plugin manager
(new `src/plugin/entity_labels.rs`) and qualify display types as
"<Label> (<Native>)" wherever the bare native type is shown today.

- The single-entity Properties panel title (and the node graph, which shares
  the same computation) becomes e.g. "Linear Element (Line)". Host-owned
  classifications (xref, dynamic constraints, underlays, surfaces) keep the
  native parenthesized part, so nothing they tell the user is lost.
- The records API's `entities` collection: `display_type` carries the
  qualified label; the raw `type` / `record_type` fields stay native so
  existing scripts, type filters, and by-type grouping keep working.
- The automation entity summary gains a `display_type` field with the same
  semantics; `type` stays raw. Exposed by `query`, `user_select` sessions,
  and `get_selection`.

Semantics: the identity (a stable class KEY like "CVIFC-CLASS:LINE") lives
in the entity's XDATA and round-trips the drawing; the display LABELS live
in the declaring plugin's manifest. Keys only — no display text is ever
written to the file, and the label never governs behavior (display-only: it
does not affect snapping, selection, filtering, or grouping). Gating rides
live manager state at query time, so without a loaded declaring plugin every
surface here is byte-identical to today, immediately after any reopen, with
no re-assert pass. The command-line LIST output deliberately stays on the raw
dxf name. An app id claimed by more than one loaded plugin resolves through
the first-loaded declaration and debug-logs the ignored duplicate; a
prefix-only value, an unknown key, or an empty label mapping fall back to
the native type.

Tests: resolver core (known key, foreign app ignored, record without an
identity value ignored, prefix-only / unknown key / empty label fallback,
duplicate app id first-wins), the empty-manager gating end-to-end through
`with_manager`, the "<Label> (<Native>)" form, and the byte-identical
fallbacks asserted at the panel, records, and query layers for entities
stamped with a perfect identity record.
2026-10-15 22:39:09 +02:00
Sebastian 60eb7b086e feat(plugin-api): entity-class display declarations on the manifest (API v10)
Plugins can now declare the entity classes they identify via XDATA, and the
host resolves them to display-only type labels while the declaring plugin is
loaded.

- Append `BuiltinPlugin::entity_classes()` (a guarded trailing vtable slot,
  the same additive pattern as `on_load` in v5) returning a &'static
  `EntityClasses { app_id, class_prefix, labels }`. The static
  `PluginManifest` struct is deliberately untouched: older cdylibs share it
  by pointer and its layout is frozen ABI since v1, so adding a field would
  read past their allocation.
- `OwnedEntityClasses` travels on the registered manifest as
  `OwnedPluginManifest.entity_classes` with `#[serde(default)]`, so manifests
  serialized before the field keep decoding (older runners tolerate it
  both ways).
- The runner folds the declaration into the GetManifest registration only
  when the loaded cdylib's exported `ocs_plugin_api_version` symbol reports
  >= 10 — an older binary's vtable predates the slot, so it is never called;
  its entities simply keep their native type names.
- `PluginManager::entity_class_declarations` exposes the live set, filtered
  to alive, non-disabled plugins in load order. The registered manifests are
  the only source and nothing is cached: not installed, disabled,
  cap-excluded (`OCS_PLUGIN_MAX_API_VERSION`), failed at load, removed, or a
  dead process all contribute nothing.
- Embedded version info `api_version` follows the bump to 10;
  `API_VERSION_MIN_SUPPORTED` stays 3.

Tests: runner fold (v10 folds, pre-v10 skipped, `entity_classes()` panic is
contained and reported), manager filtering (disabled / dead / undeclaring
skipped; declarations disappear once the process dies — verified with a real
killed child), bincode registration round-trip, and older-manifest serde
default.
2026-10-15 22:39:09 +02:00
Manu VarkeyandClaude Opus 5.5 62175f4ed5 Follow the system UI font face
Detect the desktop's configured interface font and use its family for all
application UI text, instead of iced's generic sans-serif.

- sys::ui_font reads the setting per platform: GNOME/Cinnamon/MATE
  gsettings, KDE kdeglobals, Xfce xfconf, the XDG Settings portal, GTK
  settings.ini and a Fontconfig fallback on Linux; the non-client message
  font (SystemParametersInfoForDpi at 96 DPI) on Windows; the AppKit system
  font on macOS.
- ui_font::apply remaps generic sans-serif in iced's shared font database
  to that family. iced's Font::DEFAULT is sans-serif, so every widget,
  canvas text, bold/italic variant and ribbon measurement follows it with
  no call-site changes. A family that is not installed (or a generic alias)
  keeps iced's own choice. The font's weight and style are ignored.
- Live updates: portal SettingChanged on Linux, a 2 s poll on Windows. A
  change bumps the font-system version so laid-out text reshapes, and
  iced::font::set_defaults relays out every window; ribbon large-button
  widths re-measure. Without a portal, Linux needs a restart; macOS has no
  user-adjustable UI font.
- Monospaced text, drawing text (own cosmic-text font systems) and the web
  build's font loading are unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 01:59:17 +05:30
Hakan SevenandClaude Opus 5.5 bec9e63679 feat(dimension): the standard arrowheads in every arrowhead picker
The dimension style, multileader style and Properties pickers listed
every block of the drawing as an arrowhead, and nothing else. They now
list the 19 standard arrowheads (Closed filled, Open, Dot, Architectural
tick, Oblique, Right angle, Datum triangle, …), followed by any user
arrow block the dimension or style already uses. Picking one creates
its block (`_Open`, `_ArchTick`, …) with the geometry the reference
program writes, so other programs draw the same arrow; ODA reads the
saved file cleanly.

`_Small` now draws as the reference's "Dot small blank", a hollow circle
half the arrow size, instead of a small filled triangle.

Also drops a duplicated "DGN Import" catalog entry left by #1810/#1812.
(#1820, #1821)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 22:18:35 +03:00
Claude 2ff93f479b fix(ui): open drop_down_below lists right under their field in pallets
iced_aw's DropDown keeps its list on screen by testing it against the
viewport's width and height only, as if the viewport started at the
window corner. Inside a scrollable the viewport is the visible area in
window coordinates, so a field in a dock pallet saw its list overflow
and the list jumped left by its own width (or up over the field); the
Properties Transparency dropdown showed it. Hand the drop-down a
viewport reaching from the corner to the visible area's far edges.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014ihuqzxdUhd9UbioPn5MGu
2026-10-15 19:09:51 +00:00
Karim Jerbi 4143a01ff4 fix(commands): deny list during BEDIT
Refuse LAYOUT, VPORTS, MVIEW, WBLOCK, PURGE, RENAME, REFEDIT,
REFEDIT_BEGIN and PLOT from the command line while a block editor
session is open, matching the reference product's
"<CMD> command not allowed in block editor" behaviour (spec section 8,
based on the V7 hands-on check). XREF, NEW, OPEN and SAVEAS stay
allowed. The service-level RENAME guard stays as defense in depth.
2026-10-15 20:06:41 +01:00
Hakan SevenandClaude Opus 5.5 43cca2094b fix(plot): the new page setup name has room to be read
The name field shared the 160 px sidebar row with Save and the close
button, so it was squeezed until no text showed. It now takes the full
width with the buttons below it, and the close button is the SVG icon
instead of a "×" glyph. (#1817)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 21:59:18 +03:00
Claude 412c14a393 style(dock): rustfmt the dropdown hover test
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014ihuqzxdUhd9UbioPn5MGu
2026-10-15 18:54:59 +00:00
Claude f17dc11e33 fix(dock): hold the hover state while the pointer is on a dropdown
At this iced revision the layer under an overlay that wants the pointer
gets an unavailable cursor, not a levitating one, so hover_zone still
read a pointer on an open linetype list as leaving the edge. Keep the
last state on an unavailable cursor and exit only on a position outside
the bounds or the pointer leaving the window. A test drives a real open
dropdown through iced's UserInterface for both mouse_area and the zone.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014ihuqzxdUhd9UbioPn5MGu
2026-10-15 18:54:40 +00:00
Hakan SevenandClaude Opus 5.5 d9849e35ab Follow-ups to #1814
- `SelectObjectsCommand::with_settings` exists once: #1811 and #1814
  each added one; PDFSHXTEXT now passes its settings step as the
  callback #1811's takes.
- The `pdf-shx` locale group in every language (English until
  translated), so the catalog test passes.
- MCP tool schema digest for the `pdf_shx_settings` action.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 21:48:25 +03:00
Claude e69b1bc207 fix(dock): drop hover_zone's children method, gone from iced's Widget trait
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014ihuqzxdUhd9UbioPn5MGu
2026-10-15 18:40:58 +00:00
Hakan Seven 1efc82bad2 Merge pull request #1814 from ramox81/codex/pdf-shx-text
PDFSHXTEXT: recognise SHX text geometry as MText

# Conflicts:
#	locales/en-US/opencadstudio.ftl
#	locales/tr-TR/opencadstudio.ftl
#	src/app/commands/blocks.rs
#	src/app/control/actions.rs
#	src/modules/draw/select.rs
2026-10-15 21:39:53 +03:00
Claude c74dca4f32 fix(dock): keep auto-hiding panels shown while the pointer is on their dropdowns
iced gives the layer under an overlay a levitating cursor, so the dock
edge's mouse_area read the pointer on any dropdown or combo list in a
pallet as leaving, and auto-hide collapsed the panel mid-pick. Track
enter/leave with a small hover_zone wrapper that lands the cursor before
its bounds test, on docked edges and floating pallets alike.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014ihuqzxdUhd9UbioPn5MGu
2026-10-15 18:30:37 +00:00
Hakan Seven 1716414f4f Merge pull request #1824 from AAD001-Dwg/registry/add-construction-plugin
registry: add Construction Layers & Guides plugin (API v9)
2026-10-15 21:29:59 +03:00
Hakan SevenandClaude Opus 5.5 5139e04c2c test: UI snapshot tests render with tiny-skia
iced_test renders headless through wgpu by default. Several test threads
opening GPU devices at once crashed the driver: about every other
parallel `cargo test --lib` run died with SIGSEGV, always with the
color picker, ribbon, overlay and dock UI tests running together. With
ICED_TEST_BACKEND=tiny-skia the suite passes run after run.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 21:29:48 +03:00