Keavon Chambers
a3ea6ab0af
Refactor transform decomposition API with skew support, add 'Decompose Skew' node, and fix stroke transform interpolation ( #3973 )
...
* Refactor transform decomposition API with skew support, add Decompose Skew node, and fix stroke transform interpolation
* Fix bug in master with skew changing Area node calculated value
* Code review simplification
* More code review fixes
* Rename cases where "shear" terminology was used in place of "skew"
2026-03-28 20:47:32 -07:00
Timon
9a23b9908e
Add missing 'Copy to Points' migration ( #3922 )
...
Add Copy to Points migration
2026-03-23 01:48:39 +00:00
Dennis Kobert
90533e656f
Remove the path-bool library ( #3882 )
2026-03-11 08:55:03 +01:00
Keavon Chambers
9f9dd71e91
Fix vector drawing tool transform space handling ( #3872 )
...
* Fix vector drawing tool transform space handling
* Review fixes
* Fix test
2026-03-10 00:58:51 -07: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
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
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
a88342b8da
Add the "Rate" multiplier parameter to the Animation Time node ( #3685 )
2026-01-26 00:37:15 -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
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
Keavon Chambers
9eb8835bd5
Add the 'Blend Shapes' and 'Origins to Polyline' nodes; generalize the 'Morph' node to >2 states ( #3405 )
...
* New nodes: 'Morph' and 'Multi-Morph'
* Blend Shapes node
* Add the 'Index Points' node
* Fix failing test
2025-11-25 22:17:55 -08:00
Dennis Kobert and Keavon Chambers
57b0b9c7ed
Restructure node crates ( #3384 )
...
* Restructure node-graph folder
* Fix wasm compilation
* Move node definitions out of *-types crates
* Cleanup
* Fix warnings
* Fix warnings
* Start adding migrations
* Add migrations and move memo nodes to gcore
* Move nodes/gsvg-render -> rendering
* Replace some hard coded identifiers and fix automatic conversion
* Fix Vec2Value node migration
* Fix formatting
* Add more migrations
* Cleanup features
* Fix core_types::raster import
* Update demo artwork (to make profile ci work)
* Move *-types to node-graph/libraries folder
* Add missing node migrations
* Migrate more nodes
* Remove impure memo node
* More fixes and remove warning
* Migrate context and add a few missing migrations
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-11-18 10:21:54 +00:00
Dennis Kobert
181c30bc0a
Fix assorted Clippy lints ( #3390 )
2025-11-17 07:58:31 +00:00
Keavon Chambers
055d543117
Rename the 'Index' node to 'Index Elements'
2025-11-03 13:35:56 -08:00
Keavon Chambers
9d15e56ce1
Fix and clean up typing-related flaws with the Math category of nodes
2025-09-18 16:37:01 -07:00
Keavon Chambers
7e3ab78ea4
Fix more flaws with 'Transform' node rad-to-deg migration; make 'Tangent on Path' also use degrees by default
2025-09-18 14:09:10 -07:00
Keavon Chambers
50f06c886f
Fix crash from #3160 when migrating some old documents to use degrees not radians
2025-09-11 15:14:41 -07:00
Adam Gerhant and Keavon Chambers
332088bce1
Make the Transform node use angles in degrees instead of radians for Rotation and Skew ( #3160 )
...
* Make the Transform node use degrees not radians
* Migration script
* Migrate skew value input to store degrees
* Add comments
* Fix migrations to account for the old deprecated "Pivot" parameter
* Fix tooling interactions with degrees-based transforms
* Upgrade demo art
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-11 00:19:10 +00:00
Keavon Chambers
a2c0693038
Fix most known issues with migrations failing to open documents from the past year ( #3148 )
2025-09-07 11:10:03 -07:00
Dennis Kobert and Keavon Chambers
acd7ba38cc
Graphene: Fine-grained context caching ( #2500 )
...
* RFC: Fine Grained Context Caching
* Fix typos
* Fix label
* Add description of inject traits
* Explicitly support context modification
* Start implementation of context invalidation
* Add inject trait variants
* Route Extract / Inject traits to the proto nodes
* Implement context dependency analysis
* Implement context modification node insertion
* Fix erronous force graph run message
* Fix Extract* Inject* annotations in the nodes
* Require Hash implementation for VarArgs
* Fix nullification node insertion
* Cross of done items unresolved questions section
* Update Cargo.lock
* Fix context features propagation
* Update demo artwork
* Remove BondlessFootprint and FreezeRealTime nodes
* Fix migration
* Add migrations for adding context features to old networks
* Always update real time regardless of animation state
* Cargo fmt
* Fix tests
* Readd sed command to hopefully fix profile result parsing
* Add debug output to profiling pr
* Use new totals instead of summaries for for iai results
* Even more debugging
* Use correct debug metrics (hopefully)
* Add more MemoNode implementations
* Add context features annotation to shader node macro
* Cleanup
* Time -> RealTime
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-05 11:44:26 +00:00
Priyanshu and Keavon Chambers
9987112cc9
New node: 'Separate Subpaths' to break subpaths into individual vector table rows ( #3069 )
...
* impl separate paths node
* rename
* refactor
* Rename nodes 'Split Segments' -> 'Cut Segments' and 'Split Path' -> 'Cut Path'
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-28 06:07:09 +00:00
Dennis Kobert
d9cbf975ff
Deprecate automatic composition ( #3088 )
...
* Make manual_compositon non optional and rename to call_argument
* Fix clippy warnings
* Remove automatic composition compiler infrastructure
* Implement document migration
* Fix tests
* Fix compilation on web
* Fix doble number test
* Remove extra parens
* Cleanup
* Update demo artwork
* Remove last compose node mention
* Remove last mention of manual composition
2025-08-24 08:34:59 +00:00
Dennis Kobert
7377871106
Fix clippy warnings ( #3085 )
...
* Run clippy fix
* Clippy v2
* Make const item static
* Cargo fmt
2025-08-23 11:45:47 +02:00
Priyanshu and Keavon Chambers
d22b2ca927
Refactor the Centroid node and Subpath struct and methods to use Kurbo, eliminating all remaining usages of Bezier-rs ( #3036 )
...
* define Subpath struct in gcore and refactor node-graph
* Refactor few methods
* refactoring worked!
* refactor centoid area and length
* remove unused
* cleanup
* fix pathseg_points function
* fix tranforming segments
* fix segment intersection
* refactor to_path_segments fn in gpath-bool crate
* refactor gcraft
* add bezier-rs dep
* Code review the editor directory
* use path-bool for solving roots
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-16 13:39:25 -07:00
Keavon Chambers
1b351aca76
Replace the Color type with Table<Color> everywhere ( #3048 )
2025-08-12 00:38:23 -07:00
Keavon Chambers
2e1396462c
Eliminate bare Graphic and Artboard graph data by making Merge and Artboard nodes internally use tables ( #2996 )
...
* Eliminate bare Graphic and Artboard graph data by making Merge and Artboard nodes internally use tables
* Make the Extend node user-facing
2025-08-05 02:24:12 -07:00
Keavon Chambers
c98477d8ed
Rename graphic subtypes to remove their "data" and "group" suffixes ( #2990 )
...
* Rename VectorData to Vector
* Rename other VectorData* types to Vector*
* Move assorted data types out of vector_data.rs into misc.rs
* Rename vector_data.rs to vector_types.rs and remove the vector_types module folder
* Rename other references to "vector data"
* Remove label widgets for raster/vector/group to use "-" instead
* Rename RasterData to Raster
* Rename GraphicGroup to Group
* Fix migrations and rename graphic_element.rs -> graphic.rs
* Rename TaggedValue::ArtboardGroup -> TaggedValue::Artboard
2025-08-04 04:53:25 -07:00
Keavon Chambers
5637f01845
Rename GraphicElement -> Graphic and trait GraphicElementRendered -> Render ( #2987 )
2025-08-03 16:15:02 -07:00
Keavon Chambers
a0ce56d9b6
Rename Instances<T> to Table<T> and the "instance" terminology to "TableRow" and "element" ( #2981 )
...
* Instances -> Table
* instances.rs -> table.rs
* Rename occurrances of the word "instances"
* .instance -> .element
* Instance* -> TableRow*
* Rename Table and TableRow methods to not say "instance"
* Remove presumed unused serde defaults now that tables default to length 0 not 1
* Rename occurences of the word "instance"
* Un-alias the RasterDataTable<Storage>, VectorDataTable, GraphicGroupTable, ArtboardGroupTable typedefs
* Move artboard type and node code out of graphic_element.rs to a new artboard.rs
* Organize the TaggedValues
* Fix tests
* Fix prior regression with Image Value node not upgrading
2025-08-03 04:12:18 -07:00
Keavon Chambers
3cc9dd79fb
Rename the Coordinate data type to Vec2 ( #2959 )
2025-07-30 22:53:36 -07:00
0SlowPoke0 and Keavon Chambers
3a8c1b6f97
Add Arc drawing mode to the Shape tool and the associated angle gizmos ( #2757 )
...
* implement arc gizmo handler
* fixed wrapping need to fix snapping and overlays
* fixed all the issues
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-07-26 14:55:38 -07:00
Salman Abuhaimed and Keavon Chambers
85021fd9e0
Add text alignment to the Text node ( #2920 )
...
* Add text alignment to Text node
* Lots of renames and improvements
* Add text alignment to the Text tool
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-07-25 22:04:12 -07:00
Firestar99
e7b8b5a3b6
Shaders: graster-nodes no-std prep ( #2924 )
...
* raster-nodes: remove commented out index node
* raster-nodes: move `CubicSplines` to separate mod
* raster-nodes: create `mod blending_nodes` and move assoc nodes
* raster-nodes: move node `gradient_map` to its own mod
2025-07-24 13:32:10 +00:00
Keavon Chambers
99966d848d
Fix text per-glyph instance overlays and click target issues
2025-07-14 14:47:01 -07:00
Keavon Chambers
112efe88c2
Add multi-level loop indexing with the 'Instance Repeat' node
2025-07-14 02:55:44 -07:00
Salman Abuhaimed and Keavon Chambers
166eb00c9c
Separate the Text node's generated glyphs into separate vector table rows ( #2821 )
...
* Separate glyphs into Vector data rows
* Fix `String Length` node
- Properly count characters with
`str.chars().count()` instead of bytes `str.len()`
- Change `String Length` node's output to `u32`
* Apply transform on instance instead of applying it when drawing the glyph
* Add checkbox to enable/disable per-glyph instances
* Tooltips
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-07-13 18:06:41 -07:00
Firestar99
4c75ddf936
Refactor node migration to be less susceptible to forgetting outdated strings ( #2853 )
...
* migration: make document migration use ProtoNodeIdentifier
* migration: NodeReplacement struct for better formatting
* migration: test for duplicates and fix them
2025-07-10 17:40:54 -07:00
Keavon Chambers
d2f8c99744
Avoid panics during document migration
2025-07-08 18:13:05 -07:00
Keavon Chambers
a1d93da532
Fix 'Grid' node migrations breaking up-to-date documents
2025-07-07 18:39:04 -07:00
James Lindsay
4a83067081
Fix Path tool's Path node transform calculation by skipping local transform based on first instance source ID ( #2843 )
...
* First instance source id
* Set source node id and migrations
2025-07-07 22:09:21 +00:00
Adam Gerhant
24c6281644
Fix regression with migration code changed in node UI wire refactor ( #2840 )
...
Fixes
2025-07-06 14:34:43 -07:00
Firestar99
2b380cec3a
Fix more node migrations that lost their implementations ( #2836 )
...
* fix migration for `SampleGradientNode`
* fix `BrushNode` unadjusted path
* fix `NoisePatternNode` unadjusted path
2025-07-06 02:00:07 -07:00
Adam Gerhant and Keavon Chambers
f57163c795
Port node graph wires to the backend and improve graph UI performance ( #2795 )
...
* Improve node graph performance
* Fix wire bugs, add type default for properties.
* Grid aligned wire paths
* remove type source
* node from exposed input
* Refresh wires on preference change
* merge fixes
* Code review
* Fix names
* Code review
* Fix wires on redo/undo
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-07-04 22:53:37 -07:00
Firestar99
8a0241f0fa
Fix running tests locally; fix migrations for relocated nodes ( #2805 )
...
* fix `BoundingBox for Raster<GPU>` when `wgpu` feature is disabled
* fix `tinyvec` crate not being `std` by default
* fixup migration for `CoordinateValueNode`
* fixup migration for raster nodes
2025-07-04 02:56:22 -07:00
Firestar99
a182a7347e
Extract gbrush ( #2784 )
2025-07-01 18:38:47 +00:00
Firestar99
602d7e8bd1
Extract graster-nodes ( #2783 )
2025-07-01 18:12:12 +00:00
Keavon Chambers
8c5accc069
Clean up node catalog by adding missing units, more tooltips; fix 'Line' node missing parameters ( #2813 )
...
* Fix unit usages
* Add node and parameter doc comments
* Fix the parameters panel for the 'Line' node when added from the graph
* Clean up nodes
* Fix tests
* Update the demo artwork
2025-07-01 07:47:54 -07:00