Commit Graph

813 Commits

Author SHA1 Message Date
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
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
James Lindsay
aadc989134 Include path endpoints as extrema in the Extrude node (#3469)
* Include single connected points as extrema in the extrude node

* Update styling of loading indicator

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-01-14 02:31:18 -08: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
Keavon Chambers
20a595db39 Fix a bug where Transform nodes would cause a reversal of the 'Instance Index' node's 'Loop Level' counting direction 2026-01-13 23:15:42 -08:00
Jo
e3ad59ad9c Add tooltip documentation to web request and brush related nodes (#3427)
* Add tooltip documentation to web request, text, and brush nodes

  - Add descriptive tooltips to web request nodes (GET/POST, string/image conversion, resource loading, image decoding)
  - Add tooltip to GPU rasterization node explaining footprint usage
  - Improve text node tooltip with clearer per_glyph_instances parameter explanation
  - Add tooltips to brush stamp generator and blit operations explaining their internal roles
  - Fix typos in tooltip and variable names (it's→its, perview→preview, instnace→instance)

* Fixed 2 issues with previous changes. Reversed order of documentation about per_glyph_instances. Can it be 3 lines?

* Improve post_request node documentation

Change doc comment to describe the node's purpose rather than focusing
only on the "Discard Result" parameter. Now clearly states this is an
HTTP POST operation with optional async behavior.

* Fix post_request documentation error

Corrected doc comment to say "HTTP POST" instead of "HTTP GET" since
this function performs POST requests with binary data.

* Review changes

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-01-13 08:35:14 +00: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
Kulcode
479688d86b Fix integer underflow in Index Points node (#3623)
Fix: Prevent integer underflow in Index Points node
2026-01-11 23:51:55 +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
Youssef Ahmed Hassan Elzedy
9cb856eee4 Feature: Add median filter option to blur node (#3196)
* Add median filter option to blur node:

- Add median parameter to blur function for noise reduction
- Implement median_filter_algorithm with efficient quickselect
- Support gamma space calculations for median filtering
- Preserve edges while removing noise, complementing existing blur options

Feature in Issue: #912

* Optimize median filter algorithm by reusing buffers and improving pixel neighborhood collection

* Add median filter option to blur node:

- Add median parameter to blur function for noise reduction
- Implement median_filter_algorithm with efficient quickselect
- Support gamma space calculations for median filtering
- Preserve edges while removing noise, complementing existing blur options

Feature in Issue: #912

* Optimize median filter algorithm by reusing buffers and improving pixel neighborhood collection

* Improve median filter's NaN handling by using total_cmp for safe comparisons

* Add median filter node for noise reduction

- Create dedicated median_filter node separate from blur functionality
- Implement median_filter_algorithm with efficient quickselect
- Support gamma space calculations for consistency
- Use safe NaN handling with f32::total_cmp to prevent panics
- Optimize performance with memory reuse and O(n) median selection

* Refactor median filter to remove gamma handling and simplify algorithm

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2026-01-06 14:22:11 +01:00
Dennis Kobert
e88db022af Exclude node registry functions from desktop frontend builds (#3584)
* Exclude node registry functions from desktop frontend builds

This reduces compile times and file sizes

* Use early return

* Fix branch name in build-linux pipeline
2026-01-06 12:34:15 +00:00
Timon
c2a29470c3 Desktop: Fix serde-based document migrations not being applied in non-Wasm environments (#3580)
Desktop: Fix serde based migrations not beeing applied
2026-01-05 23:45:31 +00:00
Dennis Kobert
fafc687d84 Migrate memo nodes to node macro and make implementing other persistent nodes easier (#3552)
* Add #[data] and #[serialize] attributes to node macro

- Add #[data] attribute for struct fields that aren't node parameters
  - Data fields are initialized with Default::default()
  - Passed as references to the underlying function
  - Excluded from registry metadata (internal state)
  - Generic types in data fields allowed without #[implementations]

- Add #[serialize] attribute for custom Node::serialize() implementation
  - Receives references to all data fields
  - Generates serialize() method in Node trait impl

- Conditional derives based on data field presence
  - With data fields: Debug, Clone only
  - Without data fields: Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash

* Refactor Memo and Monitor Node to use node macro

* Move Complex type into type alias

* Fix format

* Update node-graph/nodes/gcore/src/memo.rs

Co-authored-by: Keavon Chambers <keavon@keavon.com>

* Update node-graph/nodes/gcore/src/memo.rs

Co-authored-by: Keavon Chambers <keavon@keavon.com>

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-01-05 22:28:02 +01:00
Ayush Amawate
42440c0d0b Fix rasterize node document leakage with hashmap and eq check (#3550)
* fix: rasterize node document leakage with hashmap and eq check

* Use single Hashmap and ignore source id

* use or_insert_with instead of Entry match

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2026-01-04 11:33:18 +00:00
James Lindsay
403ab7ba31 Fix math error affecting the linear segment -> polynomial logic (#3562)
Fix typo in the linear segment -> polynomial code
2026-01-02 10:00:02 +00: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
Keavon Chambers
9f25c50ca1 Prep for the RC1 release of the desktop app 2025-12-24 22:45:08 -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