Commit Graph
4906 Commits
Author SHA1 Message Date
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
Claude b039e3dc48 Select Color: bottom-aligned field, list view, name sorting, book names
- True Color opens in RGB; the gradient field, hex and nearest index sit
  at the bottom so CMYK's fourth slider doesn't move them; slider rows
  closer together.
- Document tab: grid or list view (list drawn like the colour-book bars),
  and Name A–Z / Z–A sorting (translated in all locales). Swatches of
  colour-book colours show the colour's name.
- A colour-book colour picked as the current colour (nothing selected)
  keeps its BOOK$NAME on the objects drawn with it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013rGmDUNr1hUf4zo1X3dak8
2026-10-14 13:13:00 +00:00
ramox81andClaude Opus 5.5 c2c34e45fa Key tips: reference command for shared codes, no code over labels
A code the reference shows on two buttons runs the button whose command
the reference runs for it (VC runs Viewport Configuration), decided by
the code table's order. Labels, combo values and panel titles report
their bounds while key tips are open, and each code takes the first
spot nearest the reference place that covers none of them nor another
code; a collapsed panel's title is measured to place its code beside
the words.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 15:17:38 +03:00
Claude ecdead20c7 Select Color: CMYK sliders, field below the sliders, Document first
- Editor modes RGB, HSB and CMYK; the saturation/brightness field and hue
  strip now sit below the sliders in every mode instead of being a mode.
- The panel opens on the Document tab.
- Built-in colour books: RAL CLASSIC and SIKKENS 4041 (Open Colour
  Systems Collection 2.0, CC BY-ND 4.0); CSS COLORS removed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013rGmDUNr1hUf4zo1X3dak8
2026-10-14 11:57:53 +00:00
ramox81andClaude Opus 5.5 b9fd0a066c Selection: count duplicates and removals from the step's own picks
The count line now uses the objects the selection step itself picked
(a click, a window or crossing, a lasso, a fence, Last / Previous /
All): "N found (D duplicate), M total" when some were chosen already,
"N found, R removed, M total" in remove mode, "N found, M total" when a
removal picks objects that were not chosen.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 14:49:27 +03:00
ramox81andClaude Opus 5.5 b5ce285386 Key tips: reference quick-access numbers, shared codes, placement
Quick-access buttons take the numbers the reference toolbar gives the
same buttons (Print 6, Undo 7, Redo 8). Codes the reference shows on two
buttons appear on both, the first in ribbon order running. Codes sit
where the reference puts them: under tab and large-button labels, on a
large dropdown's arrow strip, with their corner at the icon's centre on
icon buttons, and centred on panel titles and the corner launcher; a
button code a panel code would cover rises clear of it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 14:08:59 +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
ramox81andClaude Opus 5.5 1e93b16911 Selection: report what each pick found while a command gathers objects
Every pick during object selection prints the reference's count line:
"N found" for the first pick or a pick that adds nothing, "N found,
M total" after it, "N found, N removed, M total" when objects leave the
set. It is printed before a command's own filtering, so "N were filtered
out" follows it. COUNT reports through it and the ad hoc
"object(s) found." / "object(s) added to selection." lines are gone.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:27:44 +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
ramox81andClaude Opus 5.5 df7f81a07d REFEDIT: nested pick messages and the session note
Picking nested objects reports what each pick added ("1 entity added",
"0 entities added" for an object already in the set), a pick on empty
space starts a window ("Specify opposite corner:"; a window dragged to
the right takes the objects inside it, to the left those it touches),
and a typed point picks the object it lies on. From the Reference Edit
dialog the item count is printed when the session opens, followed by
"Use REFCLOSE or the Refedit toolbar to end reference editing session."

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:57:42 +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
Karim Jerbi 78bdfa3c74 feat(block-editor): add Save Block As
Create a new named definition from current session edits, restore the source checkpoint, and continue editing the copy with fresh local history. Add the name dialog and Save dropdown, clone supported owned metadata onto independent handles, and refuse unsupported relationships atomically.
2026-10-14 09:11:55 +01:00
ramox81andClaude Opus 5.5 74d65c26be REFEDIT session toolbar: definition name, working set count, REFSET
The right-edge toolbar of a REFEDIT session now shows the definition
being edited (REFEDITNAME) as an accent pill with the number of objects
in the working set, Add to / Remove from Working Set buttons with their
own icons (REFSET Add / Remove, straight to object selection), and
Save / Discard in a separate group below a rule.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:51:22 +03:00
ramox81andClaude Opus 5.5 92a3a8ee4d REFEDIT: Edit Reference dialog and unique names for xref objects
REFEDIT opens a dialog after the pick: the nesting chain as chips with a
preview of the chosen definition, all objects or picking them in the
drawing, attribute definitions (offered only when the definition has
them), locking objects outside the working set and unique names for an
external reference's named objects. The settings are remembered.

With unique names an xref's dependent layers, linetypes, text styles and
blocks are checked out as $N$NAME records of their own; without, under
the plain name, sharing a host record of that name. Save writes them back
under the reference's names, and the records made for the session are
removed when it closes. -REFEDIT uses the remembered settings.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:39:28 +03:00
ramox81andClaude Opus 5.5 2f55c73457 IMAGEADJUST: Image Adjust dialog for raster images
IMAGEADJUST (alias IAD) takes the selected raster images or asks
"Select image(s):", then opens a dialog with a before/after preview of
the first image and brightness, contrast and fade rows (bar plus
stepper, whole numbers 0-100). Apply writes the values to every chosen
image as one undo step; restore defaults sets 50/50/0. Adds the
image_adjust automation action and the image-adjust locale group.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:11:36 +03:00
Hakan SevenandClaude Opus 5.5 da8e976a60 feat(bedit): author visibility states of dynamic blocks
In the Block Editor, BVSTATE makes a new visibility state, makes one
current, renames or deletes one; BVHIDE and BVSHOW hide or show the
picked objects in the current state (BVSHOW shows every object of the
block while they are picked). The first use makes the block dynamic.

The states are stored as the format keeps them: a
BLOCKVISIBILITYPARAMETER in the block's ACAD_ENHANCEDBLOCK evaluation
graph with its visibility grip and the grip's two location expressions,
the round-trip purge preventer, AcDbDynamicBlockTrueName /
AcDbDynamicBlockGUID / AcDbBlockRepETag on the definition and element
tags on each of its objects. The definition shows its first state; a
reference given another state gets its own evaluated *U copy, tagged
AcDbBlockRepBTag and linked back through AcDbBlockRepresentation /
AcDbRepData, so it shows that state and the other references do not
change. Saving the block drops erased objects from the states.

Checked: a block authored this way reads back with its states and
reference link from DWG and DXF, and the ODA converter accepts the DWG.

Closes #1566

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:02:34 +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 <[email protected]>
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 <[email protected]>
2026-10-14 09:25:31 +03:00
Hakan Seven 592289f4fd Merge pull request #1774 from megabrain-agent/feat/font-register
feat(web): font_register control op for host-supplied font files
2026-10-14 09:11:06 +03:00
Hakan SevenandClaude Opus 5.5 527e38839a style(overlay): describe the MATCHPROP brush without product names
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 09:10:58 +03:00
Hakan Seven c3cf45d859 Merge pull request #1773 from Ch4rlos/feat/matchprop-brush-cursor
feat(ui): paintbrush cursor while MATCHPROP is armed
2026-10-14 09:10:35 +03:00