* Allow using any graphics type for fill
* Adapt gradient/fill property panels and tools to handle List<T>
* Make the initial gradient transform covers the target's bounding box
* Introduce AnyGraphicListDyn to avoid combinatorial explosion
* Allow using any graphics type for stroke paint
* Add FIll node migration
* Add `for_each_vector_list_mut` instead of `set_paint_attribute`
* Adapt paint flow to read and write attributes instead of legacy Fill/Stroke.color
* Fix responsibilities of paint related node input setters
* Fix Morph by storing List<Graphic> for attributes rather than the concrete types
Store fill/stroke paints as List<Graphic> so Color/Gradient transitions
do not hit set_attribute_value_dyn's type-mismatch fallback to default paint.
* Preserve paint attributes in vector editing ops
* Enhance the clarity between direct and chained fill gradients
* Update demo arts
* Consolidate Fill node gradient appearance inputs
* Fix after the cubic review
* Revert "Consolidate Fill node gradient appearance inputs"
This reverts commit 9622feb20196e2c4da99e98ca95dcc2e34c2c98e.
* Replace AnyGraphicListDyn with generic paint connectors on the Fill and Stroke nodes
* Canonicalize paint attribute storage to List<Graphic> with a single write helper
* Fix Solidify Stroke missing fills stored in the legacy style
* Fix Solidify Stroke producing invisible strokes for legacy-only stroke colors
* Fix the initial gradient transform ignoring the bounding box's vertical extent
* Step paint at the morph midpoint instead of dropping it for unmixable pairings
* Remove migration-stage comments
* Clarify the initial gradient transform helper's doc and name
* Correct the bake_paint_transforms doc and prune dead tolerance arms
* Delete the unused Gradient::lerp
* Fix a comment typo
* Thread network paths through the legacy gradient bake so nested fills migrate
* Restore the legacy fill fallback in Expand Fill and Stroke
* Read gradient stops from the node's own input in the Fill properties panel
* Use the transform input constant instead of a hardcoded index
* Remove the unreachable wired color fallback in the Fill properties solid branch
* Narrow the fill overlay redraw check to actual fill inputs
* Coalesce the fill setter's graph runs into a single dispatch
* Position the Gradient Value node inserted for gradient stops
* Bake backup gradient placement during migration
* Persist pending gradient bakes so unfinished migrations retry on reopen
* Migrate the backup gradient's type and spread method
* Harden the gradient-migration pass against document switches and stale bakes
* Keep the Fill properties UI for layerless and nested Fill nodes
* Leave a wired gradient transform input connected instead of overwriting it
* Refuse to start a gradient chain ahead of existing layer content
* Decode a Fill node's gradient through one shared reader
* Nudge a degenerate bounding box so the Fill gradient transform stays invertible
* Broadcast Fill and Stroke paint with a single attribute-column pass
* Fix Morph stepping the target's stroke in near the source instead of the target
* Tidy conventions: clippy get_first, comment periods, sentence-case test messages
* Reattach the gradient orientation doc to its function
* Re-save demo artwork
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Use userSpaceOnUse to render gradient on SVG
* Allow non-uniform transform to radial gradient on vello
* Position gradients absolutely instead of by bbox
* Fix SVG import by removing multiplication of bound's inverse transform
* Represent sheared linear gradients via their equivalent gradient line
* Migration
* Fix migration for radial (elliptical) gradients
* Fix boolean operation gradients
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* feat: Render List<String> as raw paths in SVG and Vell mode
* chore: code review
* chore: change the hardcoded layout bounds to parley's
* chore: code review
* feat: Split text node to text_layer and text_to_vector node
* fix: CI fail because of difference in nature of Mac and github action
* chore: fix
* chore: replace FontStack as it got removed in parley 0.9
* chore: fmt
* chore: migrate the rendering as of new resource architechture
* chore: add text_layer node to text tool for testing
* code review
* Make boolean ops support the Text type
* chore: Move fallback_font_resource authority from editor to text node
* Fix 'Text Layer' node missing font dropdown
* Change node doc comments from Vec<T> to T[]
* Add migrations from the old Text node to Text -> Text to Vector
* Consolidate
* Rename the text attributes and reorder tilt to come before max_width/height
* Detect legacy Text nodes in the split migration by their trailing separate_glyphs input
* Code review
* Frame Text layer thumbnails by laying out their text for bounds
* Give Text layers click targets and selection outlines via collect_metadata
* Route Text tool through Text to Vector with fill, fixing editing-preview placement
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Rename "editor:layer" to "editor:layer_path" and centralize it in a const
* Centralize "editor:merged_layers" in a const
* Centralize all other attributes in consts
* Rename consts with ATTR_ prefix
* Format
* Improve the Data panel with more type-specific detail pages
* Add network_path to SetDisplayName so renames target any network depth
* Track nested layers via full editor:layer paths and rename parent_layer to path_of_subgraph
* Polish the data panel NodeId leaf page with an editable name field
* Make lock and visibility toggles work for layers in nested subgraphs
* Fix formatting
* Fix connected_to_output running in the wrong network for nested-layer toggles
* Fix click target propagation with the Rasterize node
* Add the 'Write Attribute' node
* Remove tag_layer in favor of the new Write Attribute node, prune redundant attribute writes
* Replace the Vector<Upstream> type argument with the "editor:merged_layers" attribute
* Feature-gate serde derives behind cfg_attr in all runtime node graph type crates
* Refactor Table to move its hard-coded fields into an attributes field
* Encapsulate TableRow/TableRowRef/TableRowMut attribute fields behind accessor methods
* Remove TaggedValue::GraphicUnused
* Refactor Table<T> to use dynamic attributes instead fixed names
* Fix code review soundness concerns
* Add todo work
* Replace row-oriented Table<T> API with column-oriented access
* Fix attribute propagation bugs
---------
* Migrate Specta to Tsify to auto-generate messages.ts, working except colors and widgets
* Adopt the generated FillColor/Color/GradientStops
* Fix widget typing
* Separate WidgetGroup enum variants into wrapper structs
* Small rename
* Simplify widgets further
* Clean up message type references
* Switch type imports to the auto-generated file
* Remove lowercase serde rename
* Fix FillChoice deserialization
* Fix small regression from #3837
* Improve type safety
* Make WidgetSpan type-safe
* More cleanup and type safety
* More type safety
* More type safety
* Get the rest to type-check without errors; improve widget builder macro to have optional icons; improve Svelte 5 configs
* Cargo fmt
* Fix imports
* Update outdated readme info
* Fix lint command rename references
* Fix typos
* One more typos fix
* Remove unnecessary dep: prefix from the edited Cargo.toml files
* Remove excess parts from Cargo.toml
* Fix compiling on desktop
* Revert "Remove excess parts from Cargo.toml"
This reverts commit 6b711117b3a5d5d8a3ee20f36a43bc74930b7c82.
* Update dev docs with simpler, more accurate instructions
* 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>