5fd1a24f16
Desktop: Add Eyedropper tool support with native Vello ( #3684 )
...
* mostly done
* fix
* kinda works but tilt and flip broken
* fix footprint
Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com >
* Code review
* fix cursor hiding
* Remove console.log
---------
Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-27 01:24:09 +00:00
Adam Gerhant and Keavon Chambers
c60ddcf875
Fix the Text node's Max Width/Height parameters with OptionalF64 losing the value when unticked ( #3643 )
...
* WIP
* Fix widget
* Fix migration
* Remove OptionalF64
* Custom attributes for optional f64 widget
* Code review
* Move comments to another PR
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-16 06:13:32 +00:00
James Lindsay and Keavon Chambers
c46060db44
Add a Select tool overlay for the layer origin ( #3471 )
...
* Add blue layer origin cross overlay
* Apply suggestion from @Keavon
* Skip layers without local transforms
* Disable the Custom Pivot by default
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-14 01:50:03 -08:00
Adam Gerhant and Keavon Chambers
a6052c5819
Replace node definition string-based lookups with DefinitionIdentifier instances ( #3451 )
...
* create definition identifier and integrate it
* Bug fixes and code review
* formatting
* Fix migrations
* Fix remove handles migration
* formatting
* Fix test
* Fix tests 2
* fix deserialization
* Code review
* Small fixes
* Consolidate 'Morph' node migrations
* Add old SamplePointsNode name to migrations list
* Fix tests
* Unrelated small fix
* Fix migration crashes
* Fix tests
* Final code review
* fmt
* Add metadata
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-12 23:09:43 -08:00
Vatsal Kumar and Timon
4fea2b0fe7
Add an arrow to the Shape tool ( #3343 )
...
* add arrow shape feature in editor
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* fix the arrow tool to show arrow in viewport space
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* fix the direction of arrow and make the new arrow node
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* updated arrow tool to hae start and end points
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* fixed calculate point bug
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* fixed some bugs of arrow positioning
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* fixed formatting in whole codebase and added fill to arrow
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* fix
---------
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
Co-authored-by: Timon <me@timon.zip >
2026-01-12 00:58:28 +00:00
Ayush Amawate and James Lindsay
33e3a88458
Fix joining paths from different layers with Ctrl+J fails ( #3534 )
...
* fix: handle PointId remapping when joining paths from different layers
When using Ctrl+J to join two points from different layers, the operation
failed because PointIds change during merge due to collision resolution.
The fix uses index-based point tracking instead of PointIds:
1. Before merge: Record the index of each selected point in its layer
2. Calculate post-merge indices using the point offset from layer1
3. After merge: Retrieve the actual PointIds at those indices
4. Create the connecting segment using the resolved PointIds
This works because Vector::concat() preserves point ordering during merge,
so we can use exact index arithmetic to find points after remapping.
Fixes #3519
* fix: use position-based lookup when joining paths from different layers
* fix cmd + g group case
* fix check for grouped folder
* add in the single layer inside a group case
* use ApplyPointDelta instead of creating a dummy segment
* Update editor/src/messages/tool/common_functionality/shape_editor.rs
Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com >
* Update editor/src/messages/tool/common_functionality/shape_editor.rs
Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com >
* encapsulate point connection logic in defer_connect_points_by_position
* reduce tolerance to 1e-6
* remove wrong comments
---------
Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com >
2026-01-11 12:56:48 +00:00
Keavon Chambers
1b91198b28
Fix 'Regular Polygon' and 'Star' shapes incorrectly having cubic handles, not linear ( #3606 )
...
Fix shape nodes creating cubic-curved polylines
2026-01-06 20:58:08 -08:00
Keavon Chambers
63217feac6
Organize the categories of widget component props
2025-12-23 21:23:13 -08:00
Keavon Chambers
64ed21f694
Clean up code with better naming
2025-12-21 23:35:00 -08:00
Keavon Chambers
123108c813
Promote vector meshes from experimental by removing it from preferences
2025-12-21 19:33:42 -08:00
Jatin Bharti
d16fd46399
Fix disabled state of Layer > Make Path Editable menu action getting out of sync ( #3497 )
...
* fix : sync the make path editable option
* fix : control the call with state
* fix : fix the call
* fix : redundancy
* fix : fmt
2025-12-20 17:06:34 -08:00
Keavon Chambers
2d6d054359
Make font selection show a live preview on hover; move its code to the backend ( #3487 )
...
* Remove FontInput.svelte
* Move font picking to the backend
* Fix Text tool font choice style turning to "-" on font that doesn't support previous style
2025-12-19 22:17:28 -08:00
Timon
b4fc3d0580
Desktop: Fix pivot and axis constraint overlays ( #3463 )
...
* fix pivot gizmo native dowel_pin overlay
* fix native snapping overlay
2025-12-15 14:53:43 +00:00
Timon
6d852f11af
Desktop: Text clipboard support ( #3461 )
...
* gray background for viewport texture
* cust copy paste support
* connect clipboard read on web
* fix eyedropper bounds
* cleanup
* add missing char events for some named keys like enter
2025-12-12 00:16:35 +00:00
Keavon Chambers
5b472a64b2
Remove the "coming soon" dialog and hide not-yet-ready features/tools
2025-12-05 04:17:44 -08:00
Keavon Chambers
783ea0b437
Unwrap the Layout enum to replace it with the WidgetLayout struct now called Layout ( #3448 )
2025-12-04 15:24:40 -08:00
Keavon Chambers
3c4ad8b720
Refactor the WidgetLayout struct to remove SubLayout and avoid sending LayoutTarget to frontend
2025-12-04 02:44:54 -08:00
Keavon Chambers
4581689d9c
Rename WidgetHolder to WidgetInstance
2025-12-04 01:10:22 -08:00
Keavon Chambers
810ce40e9b
Restyle and refactor shortcut labels to send hints bar and welcome screen layouts from Rust ( #3447 )
...
* Restyle UserInputLabel and refactor its usages to have all input its data sent from Rust
* Replace the welcome screen quick buttons with ones sent by backend
* Add the ShortcutLabel widget to the backend
* Replace hints bar with a backend-controlled layout; show mouse icons in place of mouse labels
2025-12-04 01:04:14 -08:00
Keavon Chambers
e8ebcc2c21
Replace text-only tooltips with custom richly styled tooltips ( #3436 )
...
* Replace the title attribute with custom FloatingMenu tooltips
* Separate tooltip labels and descriptions into two styled blocks
* Move keyboard shortcut tooltips to a separate section at the bottom
* Update shortcut key styling in tooltips and hints bar
* Fix .to_string()
2025-11-30 13:32:58 -08:00
James Lindsay and Keavon Chambers
117ce301b0
Fix regressions with G/R/S ( #3355 )
...
* Better local grab
* Formatting
* Multiply by document_to_viewport.matrix2.y_axis.length()
* Fix logic errors
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-11-25 15:26:19 -08:00
Dennis Kobert
181c30bc0a
Fix assorted Clippy lints ( #3390 )
2025-11-17 07:58:31 +00:00
James Lindsay
4e65887b90
Fix the Artboard tool drawing the first artboard on an infinite canvas with layers present ( #3356 )
...
Improve creating the first artboard
2025-11-10 13:36:30 -08:00
Timon and Dennis Kobert
881ec0b193
Split out viewport handling into its own message handler ( #3331 )
...
* extract viewport handeling
* fix web overlays
* some cleanup
* remove some physical conversions
* fix resize snapping
* fixup
* apply some review feedback
* make viewport api more ergonomic
* fix
* fix web overlay canvas clear size
* clear workaround for canvas
* rename trigger message
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2025-11-08 08:59:38 +00:00
skearya
c4bbb7e880
Reduce editor message size by 67% and fix simple clippy warnings ( #3327 )
...
Reduce message size and fix some clippy issues
2025-11-02 08:50:29 +01:00
James Lindsay
d919dfe757
Fix crash when resizing a deleted artboard ( #3322 )
2025-11-01 09:26:26 +01:00
James Lindsay
40c6c6160b
Fix snapping when drawing an artboard ( #3312 )
...
* Fix snapping when drawing an artboard
* Fix typo in test
2025-10-29 22:41:39 +01:00
Trevor Paley
ca70fd8380
Add quick measurement between objects and artboards ( #3274 )
2025-10-12 18:14:02 +00:00
Dennis Kobert
4e47b5db93
Restructure gcore/text module and fix memory leak ( #3221 )
...
* Restructure gcore/text module and fix memory leak
* Remove unused import
* Fix default font fallback causing wrong caching and rename to TextContext
* Upgrade demo art
2025-09-25 15:29:07 +02:00
Adesh Gupta and Keavon Chambers
09ece9424d
Fix undo/redo history related issues with the Path tool ( #3111 )
...
* Fix transactions
* A little cleanup
* Fix bug in delete
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-11 05:02:45 +00:00
0SlowPoke0 and Keavon Chambers
485152bf8d
Add "Spiral" to the Shape tool and as a new node ( #2803 )
...
* made spiral node
* number of turns in decimal and arc-angle implementation
* logarithmic spiral
* unified log and arc spiral into spiral node
* add spiral shape in shape tool
* fix min value and degree unit
* make it compile
* updated the api
* changed the function_name
* [/] to update the turns widget in shape tool
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-08 14:37:43 -07:00
Priyanshu and Keavon Chambers
84470b6b6d
Fix a regression with duplicating or pasting vector geometry in the Path tool ( #3142 )
...
* fix path tool duplication
* fix copy and paste
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-08 05:11:15 +00:00
0SlowPoke0 and Keavon Chambers
3e50d177b7
Add "Grid" to the Shape tool along with row/column gizmos ( #2921 )
...
* integrated grid shape in shape-tool
* add overlays,detection,transform for gizmo
* fix compile issues
* handle negative correctly,fix undo redo and abort
* fix missed merge conflicts
* fixed mouse cursor,correctly translatiing
* cleanup
* fix click-target area inside rect and spacing
* add 10px closer to gizmo line
* resolved conflicts
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-07 17:53:37 -07:00
Adesh Gupta and Keavon Chambers
57111cff92
Fix undo history getting stuck when the Select tool clicks the background to deselect ( #3143 )
...
Remove unnecessary start transaction messages
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-07 19:55:12 +00:00
Meet Zalavadiya and Keavon Chambers
0a153150f5
Add quick measurement support to the Artboard tool for distances between artboard edges ( #3102 )
...
* logic added for artboard
* fixed measurement logic
* fix linting issues
* removed unused code
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-29 21:27:29 +00:00
Adam Gerhant and Keavon Chambers
f1a1275601
Add support for adding/removing a graph's primary imports/exports separately from the secondary ( #3089 )
...
* Primary Import/Export
* Primary Import/Export
* Complete import exports
* Final changes
* Improve line width
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-29 20:57:15 +00:00
Adesh Gupta and Keavon Chambers
34b52bcc54
Clean up Path tool related code and fix bugs in several cases ( #3070 )
...
* Fix regressions related to path tool
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-27 23:42:04 +00:00
Dennis Kobert
7377871106
Fix clippy warnings ( #3085 )
...
* Run clippy fix
* Clippy v2
* Make const item static
* Cargo fmt
2025-08-23 11:45:47 +02:00
Priyanshu and Keavon Chambers
615c035683
Fix a Path tool regression where selection depends on box winding direction ( #3062 )
...
fix path tool selection
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-19 04:36:18 +00:00
Mohd Mohsin and Keavon Chambers
17d70dc60e
Add struct field visualization to the editor message hierarchy tree visualization on the website ( #2917 )
...
* Fix Message Tree: Enforce Structure and Visibility
* Code review
* fix the erroreous ouputs
* error handling for MessageHandler
* Fix website visualization HTML generation
* error handling for tuple-style message enum variant
* cleanup
* Update messages
* Normalize BroadcastEvent
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-18 21:04:29 -07:00
Vineet Puranik and Keavon Chambers
0a4a822837
Fix Alt-based quick measurement to show document space coordinates instead of viewport space ( #2995 )
...
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-18 06:33:09 +00:00
Adesh Gupta and Keavon Chambers
52174fa4c2
Remap Path tool point sliding to G G ( #2913 )
...
* Feat: Point sliding on G G
* Code cleanup
* Fix gg sliding behaviour
* Fix build after merge conflict resolution
* Fix slide point and add hints
* Fix history in segment insertion
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-17 03:39:38 +00:00
Priyanshu and Keavon Chambers
d22b2ca927
Refactor the Centroid node and Subpath struct and methods to use Kurbo, eliminating all remaining usages of Bezier-rs ( #3036 )
...
* define Subpath struct in gcore and refactor node-graph
* Refactor few methods
* refactoring worked!
* refactor centoid area and length
* remove unused
* cleanup
* fix pathseg_points function
* fix tranforming segments
* fix segment intersection
* refactor to_path_segments fn in gpath-bool crate
* refactor gcraft
* add bezier-rs dep
* Code review the editor directory
* use path-bool for solving roots
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-16 13:39:25 -07:00
Adesh Gupta
99984fc2d6
Fix regression in shallow select ( #3050 )
...
* Add defer message for shallow select
* Fixed infinite loop
2025-08-15 12:55:05 +02:00
Keavon Chambers
bdc029c692
Add Table<Gradient> as a graphical type ( #3051 )
2025-08-13 01:42:51 -07:00
Dennis Kobert
ef2fab32a2
Track which document the deferred executions belong to ( #3010 )
...
* Track which document the deferred executions belong to
* Cleanup
* Fix tests
* Fix freehand tool
* Notify defer handler of graph execution updates asap
2025-08-06 21:16:02 +02:00
Keavon Chambers
0f638314dc
Rename the Group type to Graphic everywhere ( #3009 )
2025-08-05 20:55:15 -07:00
James Lindsay
23eb5998db
Fix pen tool ( #3002 )
2025-08-05 11:41:59 +00:00
Keavon Chambers
2e1396462c
Eliminate bare Graphic and Artboard graph data by making Merge and Artboard nodes internally use tables ( #2996 )
...
* Eliminate bare Graphic and Artboard graph data by making Merge and Artboard nodes internally use tables
* Make the Extend node user-facing
2025-08-05 02:24:12 -07:00
Keavon Chambers
c98477d8ed
Rename graphic subtypes to remove their "data" and "group" suffixes ( #2990 )
...
* Rename VectorData to Vector
* Rename other VectorData* types to Vector*
* Move assorted data types out of vector_data.rs into misc.rs
* Rename vector_data.rs to vector_types.rs and remove the vector_types module folder
* Rename other references to "vector data"
* Remove label widgets for raster/vector/group to use "-" instead
* Rename RasterData to Raster
* Rename GraphicGroup to Group
* Fix migrations and rename graphic_element.rs -> graphic.rs
* Rename TaggedValue::ArtboardGroup -> TaggedValue::Artboard
2025-08-04 04:53:25 -07:00