* Revamp the syntax to #[hard(a..b)] and #[soft(a..b)] bounds on node definitions
* Address review feedback: error on empty bounds ranges and remove redundant count clamps
* Fix NaN transform from Repeat Array with a count of 1
* Remove redundant manual clamps already enforced by #[hard(...)] bounds
* 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>
* Good start
* Impl
* allow responses.add(async { Message::NoOp });
* Fix
* Cache font blob in text node
* Refactor font handling to use Font struct direcly
* Fix fmt
* Embedd Font Resources by default
* Review
* Review
* Cache font info based on ResourceHash
* Compensate for upstream row-0 transform absorption in viewport-space 'TransformSet'
* Add 'editor:text_frame' row attribute so the Text tool's drag cage tracks multi-row text
* "Separate Glyph Elements" -> "Separate Glyphs"
* Improve artboard migration robustness from older documents
* Code review
* Make the tools visualize the text frame based on attribute not upstream node
* Use 'Transform', 'Gradient Type', and 'Spread Method' nodes for table gradients
* Add gradient widget to the tool's control bar and update where the two swap buttons go
* Fix gradient rendering
* Format
* Code review
* Replace the Artboard struct with a Table<Table<Graphic>> shape
* Remove the never-functional, seemingly unneeded migrate_type_descriptor_names due to typo
* Allow negative artboard sizes
* 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
* Move Vec<String> to Table<String>
* Remove old VecDVec2
* Move Vec<u8> to Table<u8>
* Move Vec<f64> to Table<f64>
* Move [f64; 4] to Table<f64>
* Move Vec<NodeId> to Table<NodeId>
* Tidy up the TaggedValue variants
* Move Vec<BrushStroke> to Table<BrushStroke>
* Add missing type implementations
* Fix tests
---------
* 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
---------
* Add checkered transparency rendering to infinite canvas and artboards
* Enable artboard clipping by default
* Make new infinite canvas documents begin with a white background layer
* Remove the export dialog's transparency option now that it's redundant
* Make exporting transparent JPGs use white not black
* Code review
* 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"
* 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
* 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>