* Fix dropdown menus spawning offset in scrolled panels, a regression from upgrading to Svelte 5.54
Regression introduced in #3933 by upgrading from Svelte 5.47.1 to 5.54.1
* Code review
* Fix unrelated typo
* Add assets build size to build link comment
* Add new string processing nodes
* Remove the IntegerCount = u32 type alias
* Add the 'Format Number' node
* Add "Up To" parameter to the 'String Pad' node
* Fix 'String Capitalization' behavior
* Add 'Map String' and 'Read String' nodes
* Add separator_escaping to 'String Repeat'
* Add 'Regex Replace'
* Add 'Regex Match' node
* Regex Find and Regex Find All
* Code review
* Add the 'Escape String' node
* Improve implementations
* Move nodes from logic.rs to text/src/lib.rs
* Clean up migrations
* Fix #[{hard, soft}_{min, max}(...)] node macro attribute
* Improve Data panel number and text display
* Add the 'Query JSON' and 'Query JSON All' nodes
* Add the 'Lorem Ipsum' node and Ipsum library
* Add the 14 nodes back in their final state
* Add handling for fixed decimal places in number formatting
* Code review fixes
* Improve the Data panel's data display with monospaced text and copyable number values
* Revert attempted fix for dropdown menus appearing lower in scrolled Properties panel, since it makes other floating menus freeze the app
* Code review
* Rename 'Image Value' node to 'Image' and have its input value be Image<Color> not Table<Raster<CPU>>
* Add a Properties panel widget labeling "width x height" for images in the Image node
* Add Image<Color> node registry entry for MonitorNode
* Code review
* Make paste/import SVG store as the Path node's VectorModification not Table<Vector>
* Add a migration from Table<Vector> to VectorModification for existing documents
* Add a VectorModification widget to visualize change counts
* Refactor VectorModification to compute per-category counts for additions, removals, and modifications
* Switch indexedDb document serialized struct from camelCase to snake_case
* Refactor and migrate old indexedDb format to the same shape as desktop persistence
* Avoid duplicate struct definitions in the desktop crate
* Refactor frontend message handling to consolidate auto-save document loading
* Code review
* Review
---------
Co-authored-by: Timon <me@timon.zip>
* Add spread method support for gradients
* Add GradientSpreadMethod enum (Pad, Repeat, Reflect) to vector-types
* Add radio buttons to gradient tool and fill properties panel
* Convert spread method when importing SVGs via usvg
* Sync backup gradient input when changing spread method
* Table<GradientStops> rendering is not yet updated for spread method
* Sync gradient tool options with layer's gradient
* Sync gradient_type and spread_method from the selected
layer's existing gradient to the tool options bar when
switching to the gradient tool
* Refactor has_gradient_on_selected_layers
to reuse a new get_gradient_on_selected_layer helper
* Swap Reflect and Repeat order in UI radio buttons
* Fix alignment of the radio buttons in right panel
* Fix the position of the radio buttons in the tool
* Rename SpreadMethod to SetSpreadMethod
* Move default spread method omission logic
* 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
* Add interactive panel docking
* Preserve active tab when a panel group is docked
* Add inter-panel gutter hover color
* Code review fixes
* More code review
* Add support for dragging panel tabs docked into other panel tab bars
* Fix terminology
* Add Group suffix to PanelGroupId enums variants
* Code review
* Remove sample based image hashing to avoid false equalities
This was originally introduced to improve the performance of working with
image data, but since the memo hash wrapper got introduced this should no
longer be really necessary.
* Fix todo comment
* Fix Morph node transform interpolation and preservation in the table
* Fix click target positions for Morph's nested layers by pre-compensating upstream_data transforms
* Redesign Morph node (v3) with control path input and uniformly spaced progression, and fix Stroke::lerp interpolation weights
* Add migration from Morph node v2 to v3
* Redesign the 'Blend Shapes' node behavior and subgraph definition
* Add the Layer > Blend menu entry to easily set up a blend
* Optimize the Morph node
* Refactor the Morph node to remove the roundtrip through BezPath
* Fine-tune Morph node Bezier order promotion and handle interpolation
* Add the Layer > Morph menu bar entry
* Fix NaN and guard against other potential NaN bugs breaking the editor
* Add InterpolationDistribution parameter to Morph with weighted progression, swap parameter orders, and rename shear to skew
* Add the Reverse parameter to the Morph node
* Update the order of the inputs to Blend Shapes for consistency with Morph
* Make Layer > Morph create the Morph Path control layer
* Fix migrations
* Move 10 to a constant
* Avoid division by 0 in the Blend Shapes node internals
* Rename nodes 'Blend' -> 'Mix' and 'Blend Shapes' to 'Blend'
* Fix a crash encountered while testing
* Final code review
* Make domain push dupe checks debug-only and use push_unchecked in the Morph node
* Pre-allocate for pushes to the vector domains
* Add fast path at t=0
* Inline reserve()
* Set up the control path layer above not below, and starting collapsed
* Review fixes
---------
Co-authored-by: Timon <me@timon.zip>
One appeared on load (a deprecated meta tag). One appeared when adding an Identity (Passthrough) node. One appeared when exposing the the Weight parameter of the Stroke node. This also fixes the intended behavior of the bisect script, which was involved when finding the prevenance of these errors.
* Fix virtual scrolling MenuList dropdowns shrinking when wider content goes away
* Code review fixes
* Fix small CI workflow bug
* Stop scrolling in dropdowns from horizontally scrolling the control bar
* Use more robust way of getting commit hash in CI workflow
* Implement the service worker for cached offline mode
* Improve pre-loaded font menu preview visualization
* Code review fixes
* Simplify Response construction
* Attempt to fix ERR_FAILED when reloading page on CF Pages
* Reject service worker install if any precache fetch fails
* Fix NaN points produced by Sample Polylines on 0-scaled input
* Fix Jitter Points inverse transform for zero-scale axes and stop resetting stroke transform
* Remove a couple confusing Debug nodes
* Fix edge case
* Update demo art
* Fix order change in Jitter Points causing different results from earlier
* Fix bug in bisect tool
* Break out functionality into helper functions
* 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"