Commit Graph

1405 Commits

Author SHA1 Message Date
Adam Gerhant 011bd724bc
Fix node shaking not working correctly when connected to graph imports (#3678)
Fix shaking node
2026-02-14 00:49:54 +00:00
Kulcode b5b896f89f
Add SVG import support for gradients with gradientUnits="userSpaceOnUse" (#3741)
* fix

* error corrected

* Cleanup

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-13 15:28:17 -08:00
Ayush Amawate 119a554260
Fix the Path tool adding a Path node but not applying the change until a second attempt due to wrong segment IDs (#3727)
* Fix SegmentIds lost when no Path node exists

* fix import order

* Use Arc<Vector> in vector_data for regression
2026-02-13 14:40:38 -08:00
Kulcode e606efd008
Improve the Gradient tool by visualizing color stops (#3698)
* Gradient

* improvement

* removed unnecessary code

* corrected error

* Partical changes

* Improveded

* remove from advertised actions

* Mousedown

* Partial code review

* changes as per recommendation

* corrected error

* corrected error -2

* changes as per recommendation

* error corrected

* changes as suggested

* Bug Fix

* Fix hints

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-13 00:25:15 +00:00
0SlowPoke0 ea68d62ec4
Add gizmos for interacting with the Spiral node (#2851)
* 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

* impl turns handle gizmo

* chore : Refactoring PR #2851 for current code base with some fixes

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Annonnymmousss <jatin02012006@gmail.com>
2026-02-12 22:33:40 +00:00
Ayush Amawate cd241095a2
Fix history steps not being given to Line tool endpoint movements (#3739)
start transaction when dragging line endpoints to enable abort
2026-02-12 20:33:19 +00:00
Ayush Amawate 9ae13634d0
Simplify the Layers panel tree structure Rust -> JS encoding (#3744)
* replace custom layer structure encoding with simple JSON tree

* add leftover files

* Renames

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-12 20:06:58 +00:00
Jatin Bharti bb6fea95e4
Fix regression preventing the selection of other pivot modes (#3751)
fix : custom pivot's origin selection not updating
2026-02-12 19:10:49 +00:00
Jatin Bharti a1a9abd6a2
Fix the Gradient tool's linear/radial type toggle resetting the gradient color stops (#3499)
* fix : sync the linear/radial option in menu bar and property panal

* fix : fmt

* Promote vector meshes from experimental by removing it from preferences

* fix : change reverting bug

* chore : refactor

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-11 13:49:23 -08:00
Timon 4cdfbb22e8 Desktop: Fix new document offset on first startup (#3738)
Desktop: Fix new document offset
2026-02-11 13:08:17 -08:00
Dennis Kobert 5efa81df85
Store click targets in Arc (#3726) 2026-02-06 12:35:32 +00:00
Timon 9c56c852ca
Desktop: Snap overlays to physical instead of logical pixels (#3493)
WIP
2026-02-04 07:24:16 +00:00
Timon c7e3d01e2b
Improve font loading (#3705)
Fix fonts not loading
2026-02-04 07:23:50 +00:00
Kulcode ba361cdd6a
Add "Exclude Layers" Ctrl modifier when dragging to box select in the node graph (#3665)
* Added Ctrl modifier that filters selection to include only child nodes

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-02 14:19:43 -08:00
Jatin Bharti da518857ad
Fix selection jumping back to previously selected node after its drag abort, upon clicking to select a new node (#3696)
* fix : Selection jumps back to previously selected node after its drag abort, upon clicking to select new node

* fix : Selection jumps back to previously selected node after its drag abort via esc key, upon clicking to select new node
2026-01-28 14:36:17 -08:00
Keavon Chambers 390004897b
Add "Loop Level" to the Position context reader node (#3679)
* Add "Loop Level" to the Position context reader node

* Remove InjectPosition
2026-01-28 10:52:39 +00:00
Keavon Chambers 84e9d8c192 Prep for the RC3 release of the desktop app 2026-01-26 17:32:58 -08:00
Timon 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
Keavon Chambers a88342b8da
Add the "Rate" multiplier parameter to the Animation Time node (#3685) 2026-01-26 00:37:15 -08:00
Keavon Chambers 568831bd2f
Fix regression breaking Into/Convert node type coercion (#3681) 2026-01-25 16:26:05 -08:00
Timon 7a5790744f
Add focus document toggle (#3672) 2026-01-23 15:28:02 +00:00
Timon 2be7790d4d
Improve UX of importing vs. opening files (#3661)
* wip

* fix drag and drop

* fix

* fix tests

* fix tests

* fix warning

* Partial code review

* add dialog

* fix web

* fix web

* push back release candidate expiry

* Code review

* Reduce code duplication for pasting files in frontend

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-01-22 01:37:49 -08:00
Keavon Chambers 781fa7ae95
Move contributor docs editor message structure tree generator from test to tools directory (#3663) 2026-01-20 23:53:15 -08:00
Keavon Chambers 7af60e02a3
Add the auto-generated node catalog to the website's user manual (#3662)
* Generate the MVP node catalog in the manual (with some placeholders)

* Implement nearly the rest of everything

* Move to the tools directory and make it generate nicer default values

* Add category descriptions

* Organize file structure and improve type naming

* Improve book table of contents code

* Add collapsing chapter navigation to the book template

* Add to build workflow

* Clean up site structure
2026-01-20 22:52:03 -08:00
Timon 95d3556204
Replace globals with editor environment (#3656)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-01-19 17:06:02 +00:00
Timon 07fbcd489c
Desktop: Add fullscreen window mode (#3625) 2026-01-19 16:32:03 +00:00
Keavon Chambers 3b55064f44
Add tooltip documentation to the Text node and tidy up node catalog categorization (#3645)
* Add more node doc comments

* Tidy up node categories
2026-01-16 01:27:56 -08:00
Adam Gerhant c13647aef4
Fix regression where tooltip node descriptions in the graph stopped showing (#3639)
* Fix tooltips

* Convert DefinitionIdentifier to string in JavaScript

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-01-15 23:30:16 -08:00
Adam Gerhant 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
Timon 73682b482b
Desktop: Implement pointer lock for NumberInput (#3638)
* Desktop: Implement pointer lock for NumberInput

* add shift and ctrl modifiers

* fixup
2026-01-15 11:27:31 +00:00
Timon 6616d1bfb1
Desktop: Add commit info to binaries build with Nix (#3635) 2026-01-15 10:34:01 +00:00
James Lindsay 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 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 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 5dd11bf138
Ignore out-of-range mouse button values using from_bits_truncate (#3541)
* fix: ignore out-of-range mouse button values using from_bits_truncate

* Apply suggestion from @TrueDoctor

* Fix formatting

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2026-01-11 22:31:15 +00:00
Ayush Amawate 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
Ayush Amawate d98f19bf4a
Add artboard name to the export when exporting a single artboard (#3613)
* add artboard name to the export

* change file name to {docname}-{artboard} for more than 1 arboard

* add switch statement instead of if else
2026-01-11 13:28:19 +01: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
Ayush Amawate f808e6d37c
Fix freehand tool showing all anchors in overlay (#3585)
Use anchor_endpoints() instead of anchor_points() in path_endpoint_overlays() to only show overlays at true path endpoints, not intermediate points
2026-01-06 20:04:38 +01:00
Ayush Amawate fcf32b3cff
Fix PNG exports being off by 1 pixel (#3582)
use round() instead of as_uvec2() while exporting
2026-01-06 13:50:32 +00:00
Keavon Chambers 02e3293e72 Prep for the RC2 release of the desktop app 2026-01-06 04:38:52 +01:00
Keavon Chambers 2fa958aa79 Remove generics from the user-facing name for the Vector data type 2026-01-01 21:26:02 -08:00
Keavon Chambers fa45efa9e2
New node: Pointer Position (#3535)
* New node: Pointer Position

* Fix test
2025-12-27 16:02:23 -08:00
Jatin Bharti 0b38beb79b
Fix Pen tool anchor point overlays disappearing forever after viewing the node graph (#3523)
* Promote vector meshes from experimental by removing it from preferences

* fix : pen tool anchor point issue with node graph open/close

* fix : Memory allocation by removing .collct()

* fix : remove the reduntant if condition

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Adesh Gupta <148623820+4adex@users.noreply.github.com>
2025-12-25 05:43:26 -08:00
Keavon Chambers 9f25c50ca1 Prep for the RC1 release of the desktop app 2025-12-24 22:45:08 -08:00
Keavon Chambers 63217feac6 Organize the categories of widget component props 2025-12-23 21:23:13 -08:00
Keavon Chambers 2f880fa035 Fix missing artboard layer icon 2025-12-23 14:43:13 -08:00
Keavon Chambers 9d26c040e9
Box the `widget: Widget` field of `WidgetInstance` (#3506)
Box the `pub widget: Box<Widget>` field of `WidgetInstance`
2025-12-22 04:18:33 -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