Mohan and Keavon Chambers
54a02dedd5
Fix thumbnails not being updated for layers when they become empty ( #3624 )
...
* fix: thumbnail render for empty layers
* removed self import
* fix: rename
* Cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-03-03 06:45:19 +00:00
Keavon Chambers
7cc3097acd
Make the Outline render mode draw with consistent stroke thickness at any viewport zoom ( #3848 )
...
* Remove dead code for now-retired SVG implementation
* Implement viewport zoom compensation for thickness
2026-03-02 20:13:05 -08:00
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
e62771845f
Add an in-viewport color picker to the Gradient tool when double-clicking a color stop ( #3834 )
...
* Hide batched blocked debug print messages
* Implement the color picker on double-clicking stops
* Code review
2026-02-25 21:03:12 -08:00
Keavon Chambers
8117ddcdb3
Add Gradient tool control bar buttons, Reverse Stops and Reverse Direction ( #3830 )
...
* Add Gradient tool control bar buttons, Reverse Stops and Reverse Direction
* Consolidate reused gradient line updating code
2026-02-25 00:48:21 -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
Timon
a2d3b3f410
Desktop: Make shutdown more robust and fix panic caused by invalid viewport scale ( #3783 )
...
* Fix panic caused by invalid viewport scale
* Make shutdown more robust
2026-02-22 17:28:35 +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
Timon and Keavon Chambers
3f999bf231
Desktop: Add "Disable UI Acceleration" to preferences ( #3774 )
...
* Deskltop: Add Disable UI Accelaration preference
* Fixup
* Fix typo
* Code review and update strings
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-19 01:54:01 +00: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
Jatin Bharti
e5827f2b81
Fix crash opening File > Export if it previously was set to the bounds of a now-deleted artboard ( #3577 )
...
fix : Crash loading export dialogue
2026-02-17 23:24:13 -08: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
Timon
3571c0d577
Fix Vello canvas on web not being transparent by using premultiplied alpha mode ( #3770 )
...
Fix canvas not being transparent by using Premultiplied alpha mode
2026-02-17 20:48:16 +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
Austin Henlotter and Keavon Chambers
5b92901715
Fix Path tool not displaying its hints during G/R/S modes ( #3222 )
...
* Path tool no longer overrides other hints
* Related cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-16 04:23:47 +00:00
Austin Henlotter and Keavon Chambers
f186465220
Fix Spline tool aborting after placing only 1 point so it removes the incomplete layer ( #3220 )
...
* right click now correctly cancels spline extend
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-16 01:01:11 +00:00
Mohd Mohsin and Keavon Chambers
b697cc8131
Add line numbers to file paths in the website editor structure docs ( #3130 )
...
* added the line number to existing path
* Update JS parser to use line numbers
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-15 23:59:27 +00:00
Vatsal Kumar and Keavon Chambers
82f7dc7062
Improve the Shape tool's arrow drawing controls ( #3650 )
...
* fixed the arrow's parameters
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* shifted the arrow's origin to its tail
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
* modified arrow shapetype fucntion to be like other shapes
* fixed rust formatting
* Remove misleading part of comment referencing the origin
---------
Signed-off-by: krVatsal <kumarvatsal34@gmail.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2026-02-15 21:35:20 +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
Timon
8b67840f0c
Desktop: Fix Eyedropper tool ( #3764 )
2026-02-14 16:44:52 +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
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 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
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 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
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 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