Commit Graph
4849 Commits
Author SHA1 Message Date
Hakan SevenandClaude Opus 5.5 e357b02cd4 Merge pull request #1783 from ramox81/codex/xref-layer-zero
XREF: keep layer 0 and Defpoints as the host's own

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 23:52:09 +03:00
Hakan SevenandClaude Opus 5.5 a5c875f1f3 Merge pull request #1784 from ramox81/codex/refedit-dwf-fade
REFEDIT: keep a DWF underlay's page unfaded outside the working set

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 23:50:26 +03:00
Hakan SevenandClaude Opus 5.5 4d66a58374 plugin: announce DocumentOpened once per load, not per tab switch
The guard remembered only the last announced (tab, generation), so
switching A -> B -> A announced A's load again. Each tab now carries
its own pending flag, set when a document is installed and cleared by
the boundary dispatch.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 23:49:17 +03:00
Hakan SevenandClaude Opus 5.5 68330ce39e Merge pull request #1747 from schoeller/reference_only_entities
Reference-only entities (plugin API v9): a scene-scoped, in-memory
designation for plugin-owned display geometry, plus HostNotification
dispatch to native plugins so they can re-mark on DocumentOpened.

Resolves the new DeltaSnapshot site in block_editor.rs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 23:46:42 +03:00
Sebastian 2cdc1df021 feat(app): dispatch HostNotifications to native plugins (API v9)
Close the no-load-callback gap: on_notification was a dead dispatch sink —
a plugin had no way to learn that the active document changed, the selection
changed, or that a document opened, so runtime designations could not be
re-seeded after a load.

Dispatch the existing plain variants at the fingerprint-guarded boundaries
the v4 bridge already uses: DocumentChanged (the active tab's settled
geometry epoch) and SelectionChanged (the selection set) leave through
BuiltinPlugin::on_notification at the post-message boundary — after the
mutation settles and pending history scopes closed, never mid-undo or
mid-pick — and at the automation post-op boundary. Plugin-initiated writes
publish immediately after settling, like the drawing-changed event; the
boundary fingerprint guard deduplicates.

Add the additive HostNotification::DocumentOpened { tab_id } variant
(discriminant 10, the counterpart of DocumentTabClosed): fired exactly once
per whole-document install — file open, template new, system open — keyed on
a new per-tab document generation, so an edit can never repeat it and a
reload fires it once. The API version stays v9 (the bump is unreleased).

Write semantics for handlers, tested and documented: a handler may call
HostApi write methods through the same session (set_reference_only at
minimum); its write bumps the epoch, the next boundary notifies once more,
and because re-marking already-designated geometry is a documented no-op —
no epoch bump, no undo step, no publish — the loop terminates. History
(undo/redo) replay itself emits nothing; the boundary is the only channel.
No Python mapping, like the rest of this increment.
2026-10-14 21:15:42 +02:00
Sebastian 50db12b169 refactor(scene): reference-only designation becomes a scene-scoped set (API v9)
Per the upstream review of the XDATA-based storage: the host no longer writes
its own state into the saved file. The marker record under the host-owned OCS
APPID, the on-first-use APPID registration and the verbatim-EED rewrite
handling are removed; the single source of truth is a scene-scoped in-memory
set of entity handles (Scene::reference_only) that dies with the drawing tab,
so a reopened file starts undesignated and the owning plugin re-marks on the
document-opened notification.

All behaviour sites are unchanged, driven by the set: the wire stamp moves
from an XDATA read to a set lookup threaded through the tessellation
pipelines (tessellate_entity and the dimension text path take the handle set
as a plain parameter), and the pick filters, selection retains and
update/erase refusals read Scene::is_reference_only.

Undo keeps the entity-write contract: set mutations are recorded as explicit
first-touch before/after values on each history delta (the parametric-
constraints channel pattern). A designation inside a plugin push_undo scope
joins it, a scope-less change is one step of its own, an idempotent re-mark
records nothing, erasing a designated entity drops the set entry with the
entity, and undo/redo restores entity and designation together.

The round-trip test is inverted: reference_only_designation_is_not_written_
to_dwg_or_dxf now asserts the marker appears in neither format's bytes, that
no OCS APPID or marker record survives a reload, and that the designation
stays live in memory.
2026-10-14 21:12:17 +02: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 <[email protected]>
2026-10-14 20:46:19 +03:00
gianlucafiore 8e7612c0c9 Merge pull request #1792 from gianlucafiore/fix/otrack-live-distance-click-precision
Improve precise picking, OSNAP/OTRACK feedback and selection cursor
2026-10-14 11:33:07 -03:00
gianlucafiore aa6f88937d Update OSNAP aperture placeholder to 25 px 2026-10-14 11:12:08 -03:00
gianlucafiore f47e4649c3 Set default OSNAP capture radius to 25 screen pixels 2026-10-14 11:12:05 -03:00
gianlucafiore 0b041e4c86 feat: apply validated configurable OSNAP capture radius 2026-10-14 10:55:15 -03:00
gianlucafiore 8669631dd9 ui: route OSNAP capture aperture setting 2026-10-14 10:55:11 -03:00
gianlucafiore 5108e74163 ui: add OSNAP aperture input message 2026-10-14 10:55:06 -03:00
gianlucafiore 85959c770c ui: expose editable OSNAP capture aperture in drafting settings 2026-10-14 10:55:02 -03:00
gianlucafiore daf4ccdde8 fix(ui): keep hollow pickbox idle; dot crosshair only during selection window 2026-10-14 10:53:25 -03:00
Karim Jerbi abad1b9045 feat(bedit): add Edit Block Definition dialog and new block authoring
Open the Edit Block Definition dialog when BEDIT is invoked without an active selection, listing candidate block definitions alphabetically while filtering layout records, anonymous blocks, and external references. Allow typing a new valid block name to start an empty block editor session that only commits to the drawing block table upon explicit save.
2026-10-14 14:46:48 +01:00
gianlucafiore d4879c5a51 fix: preserve acquired object snap over OTRACK at preview and click 2026-10-14 10:45:01 -03:00
Karim Jerbi 9632979d09 feat(block-editor): add Test Block preview
Preview the current unsaved block in a disposable drawing with independent history. Keep normal Draw tools available, append Close Test Block, and return to the original editor without saving. Guard persistence paths and handle refresh and parent-close lifecycle by stable document identity.
2026-10-14 14:44:58 +01:00
gianlucafiore b6c4e0a81d ui: reuse precise point crosshair for selection without enabling snaps 2026-10-14 10:37:42 -03:00
gianlucafiore d4b7e4bfb8 fix: resolve precise snap at button-down before committing viewport pick 2026-10-14 10:29:31 -03:00
gianlucafiore 9954888d1d fix: carry click-time pointer position in viewport input message 2026-10-14 10:29:07 -03:00
gianlucafiore 86eb7a744c fix: capture viewport click coordinates in same mouse event 2026-10-14 10:28:51 -03:00
gianlucafiore 5de7637a69 fix: measure live OTRACK distance from acquired snap origin 2026-10-14 10:24: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 <[email protected]>
2026-10-14 13:48:57 +03:00
Hakan SevenandClaude Opus 5.5 c70a217e3f SHX: fractional arcs span their octants (#1638)
The end angle subtracted a whole octant less the end offset, so the arc
in the ISOCP 9 stopped about 45 degrees short and the glyph shrank to
0.68 of the cap height; clockwise arcs and n = 0 (a full circle) drew
nothing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:30:05 +03:00
Hakan SevenandClaude Opus 5.5 ec603f1c8f Command line: hovered history lines stay until the pointer leaves
Lines still showing when the pointer reaches the overlay history no
longer fade under it; leaving restarts their COMMANDLINEFADETIME.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:27: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 <[email protected]>
2026-10-14 13:24:12 +03:00
ramox81andClaude Opus 5.5 4840bd70ac REFEDIT: a DWF underlay's page is not faded outside the working set
During in-place reference editing everything outside the working set
fades by XFADECTL. A DWF underlay's page now stays as it is, like a
raster image or a PDF page, and only its frame fades; a DGN underlay's
content keeps fading with the rest.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:16:03 +03:00
ramox81andClaude Opus 5.5 0b877cbffc XREF: keep layer 0 and Defpoints as the host's own
A reference's layer 0 and Defpoints are not dependent symbols: its
objects on them use the host's layers of those names, which are made
from the reference's only when the host has none. Before, they became
XREF|0 / XREF|Defpoints on load and XREF$0$0 on bind.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:13:48 +03:00
Hakan SevenandClaude Opus 5.5 072aeb9dbf PDF: cut sub-point dash patterns into their dashes (#1739)
PDF dash entries are whole points in the plot's user space; on an inch
sheet a 0.1 in dash rounded to the 1-unit floor, so every short pattern
plotted as 1 in on, 1 in off.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:01:55 +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 <[email protected]>
2026-10-14 13:01:55 +03:00
Hakan SevenandClaude Opus 5.5 2ba2d1c0a7 Plot: thin lineweights keep their true width (#1749)
Every weight under 0.26 mm was clamped to the screen's 1 px floor before
the PDF and SVG exporters saw it, so 0.00, 0.09, 0.13 and 0.25 mm all
plotted alike. The floor now applies on the GPU only.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:47:26 +03:00
Hakan SevenandClaude Opus 5.5 2c062daa03 Colour names: show a palette colour by its index (#1748)
Unnamed ACI colours printed their RGB, which read the same as a true
colour of that value.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:42:43 +03:00
Hakan SevenandClaude Opus 5.5 7b4c13c6ca JOIN: separate chains join one by one (#1765)
A selection of several unconnected chains, or one holding a closed
polyline, failed as a whole; each chain now joins on its own and the
rest stays.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:37:20 +03:00
Hakan SevenandClaude Opus 5.5 a156a63edd Properties: open a dropdown only on the surface that asked (#1766)
The docked panel and Quick Properties render the same rows from one
state, so a picked colour opened both dropdowns and each swallowed the
other's click.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:34:16 +03:00
Hakan SevenandClaude Opus 5.5 1037be2d53 Text: an installed font beats its LFF stand-in (#1764)
ISOCPEUR, ISOCTEUR and the other aliased names are real fonts; with one
installed, its face draws the text instead of the stroke substitute,
which has no Cyrillic.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:32:09 +03:00
Hakan SevenandClaude Opus 5.5 93d92b2a51 Snap: a computed tangent point outranks the rim-hover Center (#1768)
With TAN and CEN on, hovering a circle offered its centre everywhere on
the rim, so the tangent point from the base was never reachable.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:27:58 +03:00
Hakan SevenandClaude Opus 5.5 d5de798f8a Options: snap marker size (#1770)
The object-snap glyphs were fixed at 5 px; a Drafting slider now scales
them from 1 to 20 px.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:24:32 +03:00
Hakan SevenandClaude Opus 5.5 d915489a67 Web: check the autosave deadline from the font-poll tick (#1775)
A ten-minute time::every on wasm piles up long setTimeouts in the shared
wasmtimer driver until it stops waking every timer, which silenced the
automation channel and drop-open about 8 s after load.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:21:11 +03:00
Hakan SevenandClaude Opus 5.5 814dd2e3d6 Key tips: translate the hints, drop a held Alt on focus loss
Alt+Tab away left the lone-Alt flag set, so the release on return
opened the key tips.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:15:51 +03:00
Hakan Seven be6dbfdd78 Merge pull request #1780 from ramox81/codex/ribbon-keytips
Ribbon key tips (Alt): codes on tabs, buttons and menu items

# Conflicts:
#	locales/ar-SA/opencadstudio.ftl
#	locales/bg-BG/opencadstudio.ftl
#	locales/cs-CZ/opencadstudio.ftl
#	locales/de-DE/opencadstudio.ftl
#	locales/el-GR/opencadstudio.ftl
#	locales/en-US/opencadstudio.ftl
#	locales/es-ES/opencadstudio.ftl
#	locales/fi-FI/opencadstudio.ftl
#	locales/fr-FR/opencadstudio.ftl
#	locales/hi-IN/opencadstudio.ftl
#	locales/hu-HU/opencadstudio.ftl
#	locales/it-IT/opencadstudio.ftl
#	locales/ja-JP/opencadstudio.ftl
#	locales/ko-KR/opencadstudio.ftl
#	locales/lo-LA/opencadstudio.ftl
#	locales/nl-NL/opencadstudio.ftl
#	locales/pl-PL/opencadstudio.ftl
#	locales/pt-BR/opencadstudio.ftl
#	locales/ru-RU/opencadstudio.ftl
#	locales/tr-TR/opencadstudio.ftl
#	locales/zh-CN/opencadstudio.ftl
#	locales/zh-TW/opencadstudio.ftl
#	src/app/control/actions.rs
2026-10-14 12:14:23 +03:00
Hakan SevenandClaude Opus 5.5 104218d24e i18n: translate the Reference Edit dialog
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:11:14 +03:00
Hakan Seven 21f33e933e Merge pull request #1777 from ramox81/codex/refedit-dialog
REFEDIT: Reference Edit dialog and unique names for xref objects

# Conflicts:
#	locales/ar-SA/opencadstudio.ftl
#	locales/bg-BG/opencadstudio.ftl
#	locales/cs-CZ/opencadstudio.ftl
#	locales/de-DE/opencadstudio.ftl
#	locales/el-GR/opencadstudio.ftl
#	locales/en-US/opencadstudio.ftl
#	locales/es-ES/opencadstudio.ftl
#	locales/fi-FI/opencadstudio.ftl
#	locales/fr-FR/opencadstudio.ftl
#	locales/hi-IN/opencadstudio.ftl
#	locales/hu-HU/opencadstudio.ftl
#	locales/it-IT/opencadstudio.ftl
#	locales/ja-JP/opencadstudio.ftl
#	locales/ko-KR/opencadstudio.ftl
#	locales/lo-LA/opencadstudio.ftl
#	locales/nl-NL/opencadstudio.ftl
#	locales/pl-PL/opencadstudio.ftl
#	locales/pt-BR/opencadstudio.ftl
#	locales/ru-RU/opencadstudio.ftl
#	locales/tr-TR/opencadstudio.ftl
#	locales/zh-CN/opencadstudio.ftl
#	locales/zh-TW/opencadstudio.ftl
#	src/app/control/actions.rs
#	src/app/mod.rs
#	src/app/view/modal.rs
2026-10-14 12:10:40 +03:00
Hakan SevenandClaude Opus 5.5 006d85c362 i18n: translate the REFEDIT working-set buttons
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:06:32 +03:00
Hakan Seven dec3ba2743 Merge pull request #1778 from ramox81/codex/refedit-toolbar
REFEDIT session toolbar: definition name, working set count and REFSET buttons
2026-10-14 12:05:19 +03:00
Hakan SevenandClaude Opus 5.5 06e3a6976c i18n, mcp: translate Image Adjust; pin the schema with image_adjust
#1776 left its dialog in English outside tr-TR and added the
image_adjust automation action without re-pinning the MCP tool schema
digest, which failed tool_schema_digest_is_pinned.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:05:00 +03:00
Hakan Seven ff5833c35e Merge pull request #1776 from ramox81/codex/imageadjust-dialog
IMAGEADJUST: Image Adjust dialog for raster images
2026-10-14 12:01:13 +03:00
ramox81andClaude Opus 5.5 86429bf439 Ribbon key tips: Alt shows codes on tabs, buttons and menu items
A lone Alt shows a code on every ribbon tab and quick-access button.
Typing a tab code opens the tab and shows the codes of its buttons,
dropdowns, slide-outs and collapsed panels; a button code runs it, a
dropdown or slide-out code opens it and shows its item codes, Esc goes
back one level. Codes follow the reference ribbon; buttons without a
reference counterpart get none and unnamed menu items are numbered.

Codes are drawn as accent pills over the widgets that reported their
bounds in the current frame, with a hint bar under the ribbon. While
the tips are open keys go to them only. The automation gets a keytips
action and read operation.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 11:18:58 +03:00
JuCeIbMo 278163bb22 i18n(es): translate the Sheet Set Manager
Translate the 159 Sheet Set Manager strings still in English, using the
terms already in the file: Conjunto de planos, plano, Presentación,
espacio modelo / papel. Variables, NEWSHEETSET and file masks are untouched.
2026-10-14 04:17:46 -04:00
Karim Jerbi 07fd162bd6 fix(history): preserve native networks during unrelated undo
Synchronize the native parametric graph only when replay changes constraints or named parameters. Geometry and visibility history preserve existing imported network identities and ownership. Add a regression for a rejected block copy followed by local undo and redo.
2026-10-14 09:11:55 +01:00