Keavon Chambers
a8b5203d6c
Clean up code for drawing overlays to accept sRGB hex codes instead of Color structs ( #3839 )
...
* Clean up code for drawing overlays to accept sRGB hex codes instead of Color structs
* Consolidate hex code parsing functions
2026-02-27 14:08:58 -08:00
Keavon Chambers
9ecbfb7110
New nodes: RGBA to Color, HSVA to Color, Hex to Color, and Read Gradient ( #3838 )
...
* New nodes: RGBA to Color, HSVA to Color, Hex to Color, and Read Gradient
* Simplify
2026-02-26 18:22:04 -08:00
Keavon Chambers and gemini-code-assist[bot]
f1cbc4b396
Make the node graph use Table<GradientStops> instead of GradientStops ( #3837 )
...
* Switch from GradientStops to Table<GradientStops> in all nodes
* Remove TaggedValue::ColorNotInTable
* Fix bug
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Add migrations
* Fix default gradient on empty table
* Update demo artwork
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-26 14:07:31 -08:00
Keavon Chambers
cde7d5f951
New nodes: Colors to Gradient, Flatten Color, and Flatten Gradient ( #3835 )
...
* New nodes: Colors to Gradient, Flatten Color, and Flatten Gradient
* Fix Data panel not showing GradientStops
* Fix wrong category
2026-02-26 03:44:12 -08:00
Keavon Chambers
b4679b0675
Improve Gradient tool dragging behavior and make hints reactive to current interaction state ( #3828 )
...
* Improve Gradient tool dragging behavior and make hints reactive to current interaction state
* Reduce code duplication for drawing stops
* Fix coordinate system issue when PTZ'ing document during drag or autopan
2026-02-24 22:17:29 -08:00
Keavon Chambers
4a6cdffd84
Add draggable diamond midpoint gizmos to the Gradient tool ( #3826 )
2026-02-24 20:25:15 -08:00
Kulcode and Keavon Chambers
3b91d02fff
Add snapping to endpoints and stops in the Gradient tool ( #3732 )
...
* snapping
* Cleanup
* fix
* Fix snapping failing sometimes on newly drawn gradient lines
* Code cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-24 04:48:28 +00:00
Keavon Chambers
691d965bcf
Add support for gradients with midpoints and add draggable diamonds to the color picker dialog ( #3813 )
...
* Refactor GradientStops to use struct-of-arrays and include midpoint
* Implement interaction and rendering
* Make color picker saturation-value color picking snap to original position and show both axis lines
Make color picker saturation-value color picking snap to original position and show both axis lines
* Add graphite:midpoint attribute to SVG exports
* Add graphite:midpoint parsing to SVG importer
2026-02-23 19:21:51 -08:00
Keavon Chambers and Dennis Kobert
9f2c8713ff
Add the SVG Preview render mode in place of the Vello option in the preferences ( #3797 )
...
* Remove Vello from preferences
* Add the Render Mode: SVG Preview radio button
* Remove SVG outline renderer
* Add a tooltip explaination when disabled in unsupported browsers
* Fix Eyedropper tool to support Outline render mode
* Use #[allow(clippy::too_many_arguments)] instead of tuple
* Rerun nodegraph when max render area is changed
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2026-02-22 20:27:26 +00:00
Dennis Kobert and Keavon Chambers
0531769c41
Cache Vello render output as stitchable textures ( #3722 )
...
* WIP render caching
* Hook up render cache to render pipeline
* Fixed offsets
* Initial cleanup
* Integrate cache with context invalidation
* Cleanup
* Improve rounding and reduce tile size to fix vello not rendering
* Include pointer position in cache key
* Avoid unwraps and zero sized textures
* Destroy textures after blitting to surface
* Fix context dependencies
* Exclude footprint from render params
* Batch animation frame messages
* Add vello max render size to preference dialogue
* Remove unused import
* Reorder vello preference
* Clean up preferences dialog
* Apply review suggestions
* Cap max render region size
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-22 10:12:50 +00:00
Keavon Chambers
7ca6470656
Rename the repeat nodes to replace "Instance" terminology with "Repeat" ( #3794 )
...
* WIP
* Move the Mirror node from the module 'vector' to 'graphic'
* Update demo art
* Fix failing tests
Fix tests
2026-02-20 22:10:59 -08:00
Dennis Kobert and Keavon Chambers
ba177c4c5d
Generalize the 'Map Vector' node as 'Map' with support for all graphical types ( #3793 )
...
* Rename Map Vector to Map
* Fix compilation errors
* Move to the Graphic module and add Read {Graphic, Raster, Color} nodes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-20 21:33:02 +00:00
Keavon Chambers
bd1c54907d
Rename nodes from "Instance ___" -> "Read ___" and "Instance Map" -> "Map Vector" ( #3792 )
...
* Rename nodes from "Instance ___" -> "Read ___" and "Instance Map" -> "Map Vector"
* Update leftover references and demo artwork
* Simplify logic
* Fix test
2026-02-20 08:52:36 +00:00
Keavon Chambers
da278e0264
New node: Map Points
...
Also resolves #3217
2026-02-19 14:37:35 -08:00
Keavon Chambers
258748ec51
Swap the default placement order of Fill and Stroke nodes in layers ( #3789 )
2026-02-19 13:15:11 -08:00
Kulcode and Keavon Chambers
b433ddd007
Add button in Properties panel to select the node connected to an exposed parameter ( #3720 )
...
* Navigation-Shortcut
* Fix as rec
* cleanup
* Update labels
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-18 10:25:02 +00:00
Aniket giri
f801ed72bb
Clean up DocumentMessageHandler by breaking out several lengthy handlers into helper functions ( #3568 )
...
refactor(document): extract large match arms into helper methods
Part of #2740 - Code quality refactors.
This commit addresses the 'Match statements' section of the tracking
issue by extracting three large match arms from process_message() into
dedicated helper methods:
- handle_group_selected_layers: Handles layer grouping in both artboard
and non-artboard workflows (~50 lines extracted)
- handle_move_selected_layers_to: Handles layer movement with proper
transform preservation (~85 lines extracted)
- handle_nudge_selected_layers: Handles keyboard nudging with optional
resize mode (~75 lines extracted)
The main match statement in DocumentMessageHandler is now ~210 lines
shorter and more readable. Logic and behavior remain unchanged.
2026-02-17 22:01:32 +00:00
Kulcode and Keavon Chambers
2fe0cf7a4c
Fix holding Ctrl in the graph not allowing for selecting nodes unless some are in a layer ( #3778 )
...
* Fix
* Fix-2
* Formatting
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-17 20:20:57 +00:00
Ashish Mohapatra
723f7b14ea
Respect artboard clipping when computing canvas scrollbars ( #3387 )
2026-02-17 00:32:33 +00:00
Oliver Davies and Keavon Chambers
20e12edd45
New node: Pack Strips ( #3246 )
...
* Added basic pack by bounds node
Apply suggestion from @Keavon
Co-authored-by: Keavon Chambers <keavon@keavon.com >
* Add support for choosing rows/columns strip direction
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-16 09:07:03 +00:00
Keavon Chambers
c574f58ecd
Fix debug assert failure from selecting zero-sized objects
2026-02-15 00:01:09 -08:00
Keavon Chambers
8738e59c21
Improve the QR Code node ( #3765 )
2026-02-14 20:53:29 +00:00
Adam Gerhant
1b1400b989
Fix insertion or creation of layers at top of a stack with multiple top output wires ( #3680 )
...
Fix layer insertion
2026-02-13 20:45:36 -08:00
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 and Keavon Chambers
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 and Keavon Chambers
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
Ayush Amawate and Keavon Chambers
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 and Keavon Chambers
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
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 and Keavon Chambers
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
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
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 and Keavon Chambers
95d3556204
Replace globals with editor environment ( #3656 )
...
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-01-19 17:06:02 +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 and Keavon Chambers
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 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
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
Keavon Chambers
2fa958aa79
Remove generics from the user-facing name for the Vector data type
2026-01-01 21:26:02 -08:00
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
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
64ed21f694
Clean up code with better naming
2025-12-21 23:35:00 -08:00