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
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
81c73d11ff
Clean up duplicated code used for recursively flattening graphic types ( #3836 )
...
* Reduce recusive flattening algorithm duplication
* Generalize further
* Avoid code duplication in the 'Flatten Path' node
* Avoid cloning
* Include intermediate levels of alpha blending composition
2026-02-26 05:36:23 -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
Timon
da7437c023
Reimplement notice file generation for third-party licenses through Rust, now with CEF credits ( #3808 )
2026-02-26 11:12:28 +00:00
Keavon Chambers
4090f6c980
Tweak short-term roadmap details
2026-02-25 21:40:36 -08:00
Keavon Chambers
82cf8eb369
Upgrade Linebender and related dependencies ( #3819 )
...
Co-authored-by: Timon <me@timon.zip>
2026-02-25 19:10:57 +00:00
Keavon Chambers
4a6cdffd84
Add draggable diamond midpoint gizmos to the Gradient tool ( #3826 )
2026-02-24 20:25:15 -08:00
Dennis Kobert
7250b091d5
Fix the UI scaling factor invalidating the render cache ( #3818 )
...
* Fix ui scaling messing up render cache
* Review
---------
Co-authored-by: Timon <me@timon.zip>
2026-02-24 12:41:42 +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
Dennis Kobert
a1c1039ea1
Fix path tool overlays ( #3810 )
...
* Add vector data to merge function
Use destructuring to avoid issues like this in the future
* Remove unnecessary explict copying
2026-02-23 09:17:00 +00:00
Keavon Chambers
71b4c98de7
Fix logarithmic spiral not drawing if Inner Radius is 0
2026-02-22 13:48:19 -08:00
Keavon Chambers
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
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
Keavon Chambers
5a1503fc98
New node: Flatten Raster
2026-02-20 13:35:12 -08:00
Dennis Kobert
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
Keavon Chambers
5d5993bcca
Fix opacity not being included in alpha of Fill type when converted from Table<Color> ( #3785 )
...
* Fix opacity not being included in alpha of Fill type when converted from Table<Color>
* Avoid unwrap, I guess
2026-02-18 09:21:02 +00:00
Kulcode
ed20f4ac9b
Fix outline rendering mode to draw shapes as black or white based on contrast with their artboard's color ( #3724 )
...
* contrast
* Update
* error corrected
* changes
* Fix
* fix-2
* cleanup-2
* Formatting
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-16 23:38:12 +00:00
Oliver Davies
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
Vatsal Kumar
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
MotherBoardMage
87739ff877
Fix solidify stroke node ignoring transforms applied before stroke node ( #3683 )
...
* fix: solidify_stroke node now applies transformations before calculating the stroke
* Check for non-invertible transform
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-15 20:32:22 +00:00
Kulcode
84f91eb795
Fix Text node/tool max width/height bounding box calculation ( #3628 )
...
* Fix: correctly apply max width/height in text bounding box
* bug fix
* Code cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-14 21:27:29 +00:00
Keavon Chambers
8738e59c21
Improve the QR Code node ( #3765 )
2026-02-14 20:53:29 +00:00
Sahil Gupta
6c10364c8c
Introduce QR Code node ( #3565 )
...
Co-authored-by: Timon <me@timon.zip>
2026-02-14 17:50:43 +00:00
Timon
8b67840f0c
Desktop: Fix Eyedropper tool ( #3764 )
2026-02-14 16:44:52 +00: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
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
Dennis Kobert
5efa81df85
Store click targets in Arc ( #3726 )
2026-02-06 12:35:32 +00:00
Dennis Kobert
1a9f0a543c
Fix pointer position node ( #3725 )
...
Fix PointerPosition traits
2026-02-05 23:43:58 +01:00
Dennis Kobert
3f97ae4c57
Add JSON get node ( #3708 )
...
* Add JSON get node
* Return "" on error and print to console
2026-02-03 22:07:46 +00:00
Timon
d04def886d
Ensure non-negative lengths for stroke dash pattern ( #3710 )
...
Caused Vello rendering to fail
2026-02-03 17:19:31 +00:00
Vishnu Tejas
7e436f48f9
Expose the secondary input for Logical And and Or nodes ( #3711 )
2026-02-03 14:19:23 +00:00
Dennis Kobert
8e8428a572
Add headers input to http nodes ( #3709 )
2026-02-03 11:47:53 +00:00
Timon
910fb54c15
Add quantize time nodes ( #3703 )
...
add quantize time nodes
2026-02-02 12:55:53 +00: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
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
19e9af3d43
Fix 'Apply Transform' node applying only to anchors but not also handles ( #3687 )
2026-01-26 12:32:17 -08:00
Timon
b4e9d7b9eb
Desktop: Fix bitmap file export not preserving alpha ( #3673 )
...
Fix Export not preserving alpha
2026-01-26 13:51:48 +00:00
Mohammed Afreed baig
c07124332b
Fix GPU out-of-memory crash by reusing overlay textures ( #3614 )
...
* Refactor TargetTexture into proper abstraction with ensure_size() method
* Remove redundant overlays_texture field, use view() directly
* Use if-let syntax in render_vello_scene_to_target_texture to avoid explicit unwrap
* Implement TargetTexture::new() constructor to avoid dummy textures
* fix compile error
* cleanup
* Avoid cloning texture view
---------
Co-authored-by: Timon <me@timon.zip>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2026-01-26 12:44:41 +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
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
Keavon Chambers
5543afd44b
Clean up old website code and files ( #3658 )
2026-01-19 22:09:51 -08: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