Commit graph

2,160 commits

Author SHA1 Message Date
Karim Jerbi
9afb634557 chore(git): enforce LF line endings via .gitattributes 2026-08-15 13:12:34 +01:00
Karim Jerbi
41223f09d7 feat(plot): read-only rows use the shared selectable read-only field 2026-08-15 11:59:45 +01:00
Karim Jerbi
8e6b60910c feat(style): align mleader read-only field width with editable fields 2026-08-15 11:59:45 +01:00
Karim Jerbi
d5b5f0781f feat(style): dim style read-only fields use the shared read-only field 2026-08-15 11:59:45 +01:00
Karim Jerbi
71d4eb96e5 feat(style): mleader style read-only rows use the shared read-only field 2026-08-15 11:59:45 +01:00
Karim Jerbi
61c3497d7f feat(text-style): read-only rows use the shared selectable read-only field 2026-08-15 11:59:45 +01:00
Karim Jerbi
f2c4d389db feat(props): read-only rows use the shared selectable read-only field 2026-08-15 11:59:44 +01:00
Karim Jerbi
f2b375ab24 feat(read-only): add shared selectable read-only field helper 2026-08-15 11:59:44 +01:00
Hakan Seven
93748f5788
Merge pull request #770 from NgoQuocViet2001/fix-layer-rename-state
fix(layers): handle case-only and current layer renames
2026-08-15 13:31:10 +03:00
Hakan Seven
37325f4d63 fix(layers): keep rename state consistent
Keep table keys, entity references, dependency caches, and current
layer handles aligned across case-only and mixed-case renames.

Refs #764
Refs #765
2026-08-15 13:22:06 +03:00
NgoQuocViet2001
9c6adedc44 fix: keep layer rename state in sync 2026-08-15 15:56:15 +07:00
Karim Jerbi
fbab4c4934 feat(ribbon): Block Palette button reflects panel open state
The Insert tab's Block Palette button now behaves like the View tab toggles
(UCS Icon, View Cube, Ortho, Properties, File Tabs, Layout Tabs): it stays
highlighted while the block palette panel is open and clears when closed.

The Ribbon gains a show_block_palette flag with a set_block_palette setter,
fed into ToggleState and mapped in is_active_tool for the BLOCKPALETTE tool
id. show_block_palette on the app remains the single source of truth; both
mutation paths now mirror it onto the ribbon:

- BLOCKPALETTE / BLOCKSPALETTE command toggles ribbon state alongside the
  panel (src/app/commands/blocks.rs).
- Closing the panel via the dock rail close button clears the ribbon state,
  matching how Close(Properties) already syncs (src/app/update/dialog.rs).
2026-08-14 23:33:45 +01:00
Karim Jerbi
28e5deb222 fix(dock): don't panic clamping panel width when window is minimized 2026-08-14 23:06:53 +01:00
Karim Jerbi
df940ad58e fix(dock): size drag preview by visible panels, not stack size
The drag preview divided the edge height by the raw panel count on the target
side. Closed panels keep their stack slot, so a hidden panel (e.g. the block
palette tucked away while Properties stays open) split the ghost and the drop
index as if it were rendering — leaving a half-height preview on that edge.
Size slots from the panels actually rendered on the edge instead, via a shared
visibility helper used by both the drop-index math and the ghost/edge-tint
geometry.
2026-08-14 22:24:57 +01:00
Karim Jerbi
2a0b7805c0 fix(dock): size drag preview slots by the edge viewport height
The dock drag preview computed slot heights and drop indices from the full
window height, but docked panel columns only span the model viewport, so the
preview overlay and insertion point drifted below the actual dock edge. Use the
current viewport height so the ghost and drop index line up with the panels.
2026-08-14 21:21:40 +01:00
Karim Jerbi
9f68034a60 feat(props): select whole value when a property field is clicked
Clicking an editable property value field now selects its entire value instead
of only placing the caret, so typing immediately replaces it. The click is
observed through a global left-press subscription (PropPointerPressed); a focus
sweep reports which widget took focus and PropSyncActive maps it back to the
active property row, then issues a select-all operation only when focus landed
on a different field.

The active row stays highlighted while its text input holds keyboard focus and
clears when focus moves elsewhere.
2026-08-14 21:21:40 +01:00
Karim Jerbi
dceb9626ae fix(dock): block palette reflects new blocks without reopening
Creating a block from selected entities now bumps the geometry epoch, so the
block palette's per-update stale check notices the new definition and refreshes
its list in place instead of requiring the user to close and reopen the panel.
2026-08-14 21:21:40 +01:00
Karim Jerbi
bd33600ee7 fix(dock): single-panel drag preview is one full-height slot
drop_index previously mapped a pointer position inside a lone full-height panel
to a top/bottom insertion split, offering an impossible drop. Clamp to the
single slot when the edge holds one panel, and cover the multi-slot mapping with
tests.
2026-08-14 21:21:40 +01:00
Karim Jerbi
94667f9512 feat(dock): active and dragging rail tab styling
Style the dock rail tab by its panel state: the expanded (active) panel's tab
gets a primary-colored highlight and border, and a tab whose panel is being
dragged gets a lighter primary tint, so the user can see which panel owns the
edge at a glance.
2026-08-14 21:21:40 +01:00
gianlucafiore
577530d2e8
Merge pull request #768 from gianlucafiore/fix/annotative-text-units
Fix annotative text scaling for drawing units
2026-08-14 15:39:26 -03:00
gianlucafiore
f47ab7e891 fix: respect drawing units for annotative text 2026-08-14 15:38:54 -03:00
Hakan Seven
2c08b92267 docs(readme): add localized guides 2026-08-14 12:00:33 +03:00
Hakan Seven
8dec848afb docs(readme): redesign project overview 2026-08-14 11:22:12 +03:00
Hakan Seven
26fd9a3c02 feat(i18n): add seven UI locales 2026-08-14 11:06:53 +03:00
Hakan Seven
844ae227ec
Change OCS Web link to www.opencadstudio.com
Updated the OCS Web URL for browser access.
2026-08-14 01:09:47 +03:00
Hakan Seven
5a6ba9dd94 fix(web): use custom domain root 2026-08-14 00:58:53 +03:00
Hakan Seven
e58bef39dc fix(web): use browser-safe render timing 2026-08-13 23:57:51 +03:00
gianlucafiore
0ea5a10570
Merge pull request #759 from gianlucafiore/fix/text-double-click-edit
Fix text editing on double click
2026-08-13 17:55:44 -03:00
gianlucafiore
4aa317f413 fix: restore text editing on double click 2026-08-13 17:53:24 -03:00
Hakan Seven
1d2f0a09c1 feat(hatch): add associative boundaries 2026-08-13 23:47:50 +03:00
Hakan Seven
3d2848021f feat(readme): combine growth metrics 2026-08-13 21:48:47 +03:00
gianlucafiore
18ef42db82
Merge pull request #756 from gianlucafiore/fix/leader-behavior
Fix classic leader behavior and annotation linkage
2026-08-13 11:59:46 -03:00
gianlucafiore
2d1ee0d936 fix: improve classic leader behavior and annotation linkage 2026-08-13 11:58:54 -03:00
Hakan Seven
2088372672 fix(hatch): preserve preview pattern origin
Refs #532
2026-08-13 17:25:46 +03:00
Hakan Seven
7a8da58d55 feat(hatch): add multi-region selection
Refs #532
2026-08-13 17:16:29 +03:00
gianlucafiore
0038e386f7
Merge pull request #755 from gianlucafiore/fix/dimension-text-relative-position
Fix dimension text grip behavior during stretch
2026-08-13 09:48:09 -03:00
gianlucafiore
2da520de80 fix: keep dimension text grips aligned during stretch 2026-08-13 09:46:56 -03:00
gianlucafiore
2ae8da543f
Merge pull request #752 from gianlucafiore/fix/dimension-style-behavior
Fix annotation scale sizing for non-paper drawing units
2026-08-13 00:08:33 -03:00
gianlucafiore
e21d4954a3 fix: respect drawing units in annotation scales 2026-08-12 23:41:22 -03:00
Hakan Seven
5b9fffdfba fix(hatch): clip fill with kernel mesh
Resolve boundary topology before rendering so corner-aligned pattern rows cannot flip shader parity. Chunk indexed geometry to device buffer limits and retain the texture compatibility transport.

Refs #489
2026-08-13 00:29:03 +03:00
Hakan Seven
448869ac35 perf(view): share viewport render caches 2026-08-12 20:38:18 +03:00
Hakan Seven
0df2356243 fix(view): correct 3D mesh interaction
Sync projection controls from the active camera, preserve the UCS icon in perspective views, and use visible or selected 3D geometry for orbit pivots. Dense mesh vertex grips remain hidden.
2026-08-12 19:49:52 +03:00
Hakan Seven
1045283082 build: update geometry dependencies 2026-08-12 19:49:47 +03:00
Hakan Seven
5e8221f8f1 perf(render): keep solid meshes resident
Keep all solid geometry GPU-resident during navigation. Use vertex-rate instancing, compact untextured vertices, vertex-cache ordering, and cached silhouette sources without culling geometry.
2026-08-12 16:02:10 +03:00
Hakan Seven
15ab027d70 fix(scene): preserve viewport settings
Reuse full VPort records during camera and tile synchronization so
navigation cannot replace file-defined display state with defaults.

Honor image, ground, IBL, and sun-backed sky parameters in
background rendering.
2026-08-12 13:11:12 +03:00
Hakan Seven
0be9c41773 fix(layers): protect locked entities
Keep locked-layer objects selectable for inspection while suppressing grips, property edits, command mutations, and stale editor writes.
2026-08-12 12:46:41 +03:00
Hakan Seven
ca331fff48 fix(render): scale solid tessellation
Derive one drawing-space chordal tolerance so large curves stay smooth while small solids avoid excessive detail.
2026-08-12 12:46:17 +03:00
Hakan Seven
7b4af0aa75 fix(render): share repeated block meshes
Keep placement transforms and bounds separate from immutable mesh data to prevent large drawings from exhausting memory or stalling selection.
2026-08-12 11:01:53 +03:00
gianlucafiore
5e773fbcce
Merge pull request #746 from gianlucafiore/fix/issues-742-743
Fix current layer handling for HATCH and DWG files
2026-08-12 00:35:43 -03:00
gianlucafiore
ff61164d8b fix: preserve current layer for hatches and DWG loading 2026-08-12 00:30:21 -03:00