875 Commits

Author SHA1 Message Date
github-actions[bot] 57d789c0aa Regenerate generated files and fold pending files [skip ci] 2026-10-31 22:34:32 +00:00
github-actions[bot] 4e9656ea9a Regenerate generated files and fold pending files [skip ci] 2026-10-31 22:25:42 +00:00
Nathan Dane 07160d9366 Preferences redesign 3/11: page structure, aliases and profile card (#9875) (#9907)
* claim: #9875

* Preferences: split pages and preserve aliases and profiles

* Preferences: preserve moved-page regressions and complete translations

* Preferences: retain newly added settings in profiles

* Preferences: target Tools in tool-cursor persistence tests
2026-10-31 22:05:20 +00:00
Dahak Builds c111b5f2fb ViewCube: option to invert directional rotation arrows (#10254) (#10286)
* claim: #10254

* ViewCube: an option to invert the directional rotation arrows (#10254)

A new Navigation preference, "Invert the view cube rotation arrows"
(invert_navigator_arrows, off by default): with it on, an arrow around the
cube orbits the camera the way the arrow points, as in Fusion and Inventor,
instead of rotating the cube toward the side the arrow sits on. Left and
right, and up and down, trade places, and each tooltip names the action
actually performed. The curved roll arrows are not inverted: they name the
rotation they perform, not a direction.

---------

Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
2026-10-31 22:00:16 +00:00
Nathan Dane 4594d81f7a Gruvbox: light and dark themes with three contrast choices (#10292)
* claim: consolidate Gruvbox contrast variants

* Consolidate Gruvbox variants into light and dark contrast choices

* Check both original Gruvbox viewport gradient endpoints

* Reset Gruvbox scenario state before independent theme checks
2026-10-31 21:58:30 +00:00
raykholo 2e3448f348 Sketch: an option to make the part active when sketching on its face (#10215) (#10216)
* claim: #10215

* Sketch: an option to make the part active when sketching on its face (#10215)

Preferences › Sketch › "Sketching on a part's face makes that part active", off by default.
When it is on, a sketch started on a face of another component's body activates that component
at the picked placement first and is made there, as after an explicit activate. The part stays
active, so what is built from the sketch lands in the same part.

For scripts the same is `sketch.create` `activate_part: true`; the reply's `activated` names the
component and placement. On an error the active component goes back to what it was.

* Tests: a free part, no edge projection, the sketch on the face plane
2026-10-31 21:52:09 +00:00
github-actions[bot] e5c6e3ef1e Regenerate generated files and fold pending files [skip ci] 2026-10-31 21:57:31 +00:00
rugbymauri 57df47b763 Sketch: clicking the running tool's button ends it, so clicks select again (#10151) (#10263)
* claim: #10151

Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>

* Sketch: clicking the running tool's button ends it, so clicks select again (#10151)

The lit ribbon button of the running sketch tool started the tool over
when clicked again, so it gave no way out: every click in the view kept
drawing or measuring, and Ctrl+click never reached selection. Esc and
right-click already end a tool, but the pressed button looks like the
natural switch.

A second click on the running tool's button (large ribbon buttons and
the constraint grid) now ends the tool. Persistent analysis toggles keep
their own on/off. The old behaviour stays behind the Sketch preference
"Clicking the running tool's button ends it" (ribbon_click_ends_tool).

Fixes #10151

Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>

---------

Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
2026-10-31 21:32:48 +00:00
ABDULLAH 711e41233f Arabic: orbit/pan/zoom verbs in the NX navigation help, System language choice, measuring bodies progress (#10272) 2026-10-31 21:19:33 +00:00
Dahak Builds bace1a1228 Assistant: set the reasoning effort per API agent (#10241) (#10259)
* claim: #10241

* Assistant: send a per-API-agent reasoning effort on /chat/completions (#10241)

---------

Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
2026-10-31 20:48:42 +00:00
ABDULLAH 3b3d93f333 Arabic: selection wording for the freehand lasso option, clearer view cube fit note, tanween spelling (#10249) 2026-10-31 20:05:41 +00:00
Dahak Builds 538d7fcb43 Language: follow the system language by default (#10138) (#10183)
* claim: #10138

* Follow the system language on a first start (#10138)

The language preference defaults to a new 'system' value: the OS locale
(sys-locale) is matched against the catalog list - exact tag, base
language, then English - and a System choice sits at the top of the
Preferences language list. A saved language still wins.

* Drop the explicit deref clippy flagged; regenerate THIRD-PARTY-LICENSES.txt for sys-locale

---------

Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
2026-10-31 19:50:08 +00:00
github-actions[bot] eda51873aa Regenerate generated files and fold pending files [skip ci] 2026-10-31 19:33:49 +00:00
clark19990 5b8d8416e9 Navigation: an NX mouse mapping (#10156)
* Navigation: an NX mouse mapping

NX's CAD1 scheme drags the middle button to rotate, middle + left to zoom and
middle + right to pan. The mouse mappings here hold one button at a time, so
the preset takes the middle drag with Shift (pan) and Ctrl (zoom) for those two
drags, leaves the right button to the context menu, and fits on a middle
double-click as NX does.

The help text says which NX drags the modifiers stand for.

* Navigation NX note: translations for the complete catalogs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Navigation NX note: use the message id nav.nx.help in the pending file

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: clarkliu <277482660@qq.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 18:44:45 +00:00
github-actions[bot] 1f2356fa7b Regenerate generated files and fold pending files [skip ci] 2026-10-31 19:06:16 +00:00
github-actions[bot] e29e32f197 Regenerate generated files and fold pending files [skip ci] 2026-10-31 19:00:09 +00:00
froglemonade2 441d67f9ff View cube and axis gizmo: a standard view centres and fits the model (#10091) (#10092)
* claim: #10091

* View cube and axis gizmo: a standard view centres and fits the model (#10091)

A new Navigation preference, "Fit the model after a navigator view change"
(`navigator_fit`, off by default): with it on, a face, corner or arrow of
the view cube and an axis tip of the gizmo look at the middle of the model
from the one distance that fits its bounding sphere, so Home, an opened
design and every view chosen on a navigator share one zoom and one centre
and only the direction changes. Off, both navigators turn in place as
before.

"Home and Fit size" (`home_fit_size`, 10–100 %, default 100 %) is how much
of the view between the panels and the controls the model fills when Home,
Fit, an opened design or a navigator view change frames it; 100 % is the
framing as before.

`view.navigate` takes an optional `fit: true` with a direction or a turn,
so programmatic callers get the same framing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-31 18:34:13 +00:00
thocsmith 85197c1224 Selection: a freehand lasso that takes what is fully inside it (#4376) (#10185)
* claim: #4376

* Selection: a freehand lasso that takes what is wholly inside it (#4376)

The SELECT panel gets a Lasso checkbox (UiState::lasso_select, ui.set
lassoSelect). With it on, a primary drag from empty space draws a
freehand loop; the release selects through the same path as the window
box: items whose points are all inside the loop and no segment crosses
it, so a concave loop leaves out a curve that bulges out of it. Shift
and Ctrl add as with the box. ui.drag takes via waypoints (and scenario
drag steps take more than two points) so agents and tests can draw it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: thocsmith <193096300+thocsmith@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 18:31:21 +00:00
ABDULLAH e88295ceba Arabic: isometric view wording in the Extrude view preference, equation curve range unit option and note, quoted menu names in the graphics card note, tanween spelling (#10189)
* Arabic: isometric view wording in the Extrude view preference

* Arabic: equation curve range unit option and note read naturally

* Arabic: tanween spelling in the new bold-font and delete-first messages, menu and option names quoted in the graphics card note
2026-10-31 18:15:34 +00:00
github-actions[bot] a9e9f8b82b Regenerate generated files and fold pending files [skip ci] 2026-10-31 17:36:03 +00:00
PaddleStroke eaf3acc297 Colour popover: step buttons, HSV fields and recent colours (#9234) (#9398)
* claim: #9234

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Colour popover: step buttons, H/S/V fields and recent colours (#9234)

Every colour field of the app opens the same ui_kit popover. It gains:
- step buttons beside each number (R, G, B and the new H, S, V): a press
  steps once, holding repeats, for live fine-tuning;
- H (degrees), S and V (percent) fields on the same gamma HSV as the square;
- a row of the last 12 colours picked in any colour field. A colour joins
  when an edit is finished; fine-tuning in one opening replaces its entry.
  The list is saved with the app's settings (`recent_colors`), hostile
  saved entries dropped and the list capped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Recent colours: keep the shared list outside ui_kit, crate-visible only (#9234)

The store and the per-frame sync with the saved settings move to
crate::recent_colors; the ui_kit colour popover only shows the list and
adds finished picks. No plain pub escape from the gallery's ui_kit rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:51:56 +00:00
github-actions[bot] c8a9159ac5 Regenerate generated files and fold pending files [skip ci] 2026-10-31 16:47:49 +00:00
github-actions[bot] fca86a414e Regenerate generated files and fold pending files [skip ci] 2026-10-31 16:39:00 +00:00
phanoob e64202417f Pattern and Mirror dialogs: explain Object Type, and say why a sketch is not taken (#10057) (#10097)
* claim: #10057

* Pattern and Mirror dialogs: explain Object Type, and say why a sketch is not taken (#10057)

The Object Type row of the Rectangular, Circular and Path Pattern and Mirror
dialogs gets a tooltip saying what Bodies and Features are and that a sketch
is neither. A sketch clicked for their objects, in the view, the Browser or
the History, now shows a hint naming what to pick and what to do with a
sketch instead of being ignored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:10:09 +00:00
PaddleStroke 6a4b5c90c8 Properties: measure faster, show progress, and stop when closed (#8706) (#8730)
* claim: #8706

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Properties: measure faster, show progress, and stop when closed (#8706)

Properties on a large assembly measured every placed copy of every body
afresh (transform plus three fine tessellations each), so it took minutes.
#5203 (in #8103) already moved the measurement beside the window; this
builds on it.

- A rigid placement reuses the body's own cached measurement: volume, area
  and counts unchanged, centre placed, box from the placed corners (quarter
  turns) or from the body's shared mesh placed (other turns). Scaled or
  mirrored placements are still measured as placed.
- Bodies are grouped by component once and the subtree traversal groups
  occurrences by parent once (both were quadratic).
- The measurement beside the window is watched by a Progress: the card
  says "Measuring... n of N bodies" with a bar, and closing it (or
  switching designs) cancels the worker at its next body instead of
  leaving it running.
- component.properties and occurrence.properties are answered on a copy for
  control-channel requests too, as inspect.measure is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Properties: count the measuring work instead of timing it in the reuse test (#8706)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:04:38 +00:00
PaddleStroke ef0914ff94 Design tabs: optionally keep each design's dialog, tool and toolbar tab (#9360) (#9656)
A switch between design tabs cancels the open dialog and tool of the design
left and shows MODEL. With the new Interface preference "Keep dialogs and
tools open when switching designs" (keep_work_on_tab_switch, off by default)
each tab keeps its dialog (with its picks and values), its editing state, its
tool and its toolbar tab, and has them back when it is shown again. A feature
still computing after OK is cancelled as before. A feature edit's saved source
revision follows the view refresh of the switch, so its Cancel still restores
the history.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:04:22 +00:00
github-actions[bot] f30fce0fc1 Regenerate generated files and fold pending files [skip ci] 2026-10-31 14:25:05 +00:00
github-actions[bot] f4b74fcb1b Regenerate generated files and fold pending files [skip ci] 2026-10-31 14:17:58 +00:00
leValdemar19 24ce89e0fc Modify ▸ Delete with nothing selected asks for a pick instead of a parameter error (#9079) (#9114)
* claim: #9079

* Modify ▸ Delete with nothing selected asks for a pick instead of a parameter error (#9079)

Starting `timeline.delete` from the ribbon, the command palette or the
control channel ran it with no parameters, so the notice showed the
engine's check ("`features` must list features, or `groups` timeline
folders"). It now deletes what is selected, as the Delete key does, and
with nothing selected shows a hint saying what to pick, changing nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:35:33 +00:00
leValdemar19 3385d1c570 Viewport: dark parts keep their shape: linear-light shading and a sky fill (#7974) (#9028)
* claim: #7974

* Viewport: dark parts keep their shape: linear-light shading and a sky fill (#7974)

Preferences > Graphics "Keep the shape of dark parts" (off by default)
shades the viewport in linear light: the key light and eye fill over a
sky fill that grows as a face turns up, plus the 4% of that sky every
dielectric reflects (a little more toward grazing), encoded to sRGB
once. Near-black faces keep a gradient; light and mid-grey faces stay
within a few levels of the sRGB shading. The world's up direction and
the switch ride in a new `sky` vec4 at the end of the viewport uniform,
and the frame key, so turning it on redraws. Off, the shader takes the
old path unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:30:07 +00:00
github-actions[bot] dc6e25250c Regenerate generated files and fold pending files [skip ci] 2026-10-31 13:48:06 +00:00
ashxddaga 2e22ff8035 fix(ui): disable bold in Edit Text when font has no bold face (#9940) (#9958)
* fix(ui): disable bold in Edit Text when font has no bold face (#9940)

- Check whether font has bold face via font_data_styled() before enabling bold toggle
- Automatically uncheck bold and disable bold button with explanatory tooltip for built-in font
- Prevent sending bold: true in sketch.edit_text when font lacks bold face
- Add unit regression test in sketch_text::tests

Fixes #9940

* style: format choice.rs in ui_kit

* i18n: move sketch_text.no_bold to pending locale catalog with complete translations

* test(sketch_text): assert disabled bold on built-in font without error (#9940)
2026-10-31 12:57:46 +00:00
github-actions[bot] a22aeaaf93 Regenerate generated files and fold pending files [skip ci] 2026-10-31 13:19:38 +00:00
SilentWolf75 1bcc1125f0 Graphics: apply the chosen card, or say when it could not (#8341) (#9252)
* claim: #8341

Co-authored-by: Cursor <cursoragent@cursor.com>

* Graphics: keep a preferred card when surface marks it incompatible (#8341)

Prefer the saved adapter by exact then case-insensitive name, including when only listed as surface-incompatible, and explain in Preferences when another card is still in use.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Format and clippy

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:00:52 +00:00
github-actions[bot] bd0f0f3471 Regenerate generated files and fold pending files [skip ci] 2026-10-31 12:39:18 +00:00
github-actions[bot] e39d741862 Regenerate generated files and fold pending files [skip ci] 2026-10-31 12:30:11 +00:00
semmelrinde 2a51f42495 Serbian: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#10001)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:25:34 +00:00
HiroKenEz 8f259d5b83 Sketch: the Line tool can switch to a tangent arc and back without changing tool (#9489) (#9553)
* claim: #9489

* Sketch: the Line tool can switch to a tangent arc and back without changing tool (#9489)

With Preferences > Sketch > "Rest on a line's last point to switch to a
tangent arc" on (off by default), leaving the chain's last point and resting
back on it for 0.35 s makes the next click a tangent arc, by the existing
sketch.arc.tangent command, and the same gesture goes back to lines. A label
at the cursor says which. sketch.arc.tangent's end can now name an existing
point, so an outline drawn this way closes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Sketch: the cursor label names the command in words (#9489)

The label asked the catalog for a message id that doesn't exist, so it showed
the id. It now takes the command's translated label, and the test checks the
words it paints. Moved clear of the pointer's own badge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:21:59 +00:00
semmelrinde 18e4b9ea9f Bosnian: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#9999)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:19:27 +00:00
semmelrinde 7cccb2b52e Croatian: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#10000)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:19:21 +00:00
semmelrinde 7d7a1ecfa5 Russian: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#10002)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:19:04 +00:00
semmelrinde 1202a79e25 Danish: translate the 349 messages main gained after batch 9, the toolbar's command help included (batch 10) (#10003)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:18:58 +00:00
semmelrinde fbafdfdcb6 Ukrainian: translate the 349 messages main gained after batch 9, the toolbar's command help included (batch 10) (#10004)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:18:52 +00:00
semmelrinde 2744063631 Norwegian Bokmål: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#9998)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:17:23 +00:00
github-actions[bot] fde56d3c8b Regenerate generated files and fold pending files [skip ci] 2026-10-31 12:05:01 +00:00
github-actions[bot] 81a6a3dcde Regenerate generated files and fold pending files [skip ci] 2026-10-31 11:55:25 +00:00
semmelrinde 60de59d5a9 Czech: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#9984)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:11:54 +00:00
semmelrinde ad0b5c9d05 Hungarian: translate the 373 messages main gained after batch 9, the toolbar's command help included (batch 10) (#9986)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:11:48 +00:00
semmelrinde ff08eb0043 Italian: translate the 371 messages main gained after batch 9, the toolbar's command help included (batch 10) (#9987)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:11:41 +00:00
semmelrinde 6bfd53a55a Dutch: translate the 371 messages main gained after batch 9, the toolbar's command help included (batch 10) (#9988)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:11:35 +00:00