* Fix half-pixel offset on imported images
* Break out reused function
* Fix SVG/image open flow placing content with unnecessary Transform nodes
* Fix redundant Transform nodes when opening SVG/image files as documents
* Offset the parent to its destination position not the child objects
* Fix SVG/image File > Open artboard dimensions, origin, and clipping
* Fix the SVG to drag in at the mouse position relative to its visible center
* Fix importing images into offset artboards so they don't get offset as well
* Code review
* Remove O(n^2) import by disabling bumping
* Add an import mode to avoid acyclic checks
* Rebuild the layer tree at the end, not after each step
* Incrementally update outward wires instead of repeatedly rebuilding them
* Add import->export direct connection guard
* Code review fixes
* Replace magic number offsets with consts
* Add consts for magic numbers
* Improve code structuring
* Fix hide artboard for raster render mode
* Desktop: Fix transparent viewport blending
* Fix vello render using wrong color space conversion for background
* Review
* fix: Shaking a Text layer breaks its type signature
* Add a second fix for the same issue
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Replace parameter passing with getContext and extract destroy functions to module-level exports
* Resend layouts from Rust when editor is re-mounted on HMR
* Code review
* Make the order of Shape tool shape types consistent
* Add Arrow shape modifier keys and snapping support
* Add endpoint dragging to arrows
* Show the default cursor when hovering line/arrow endpoints
* Reduce duplicated function
* Fix incorrect coordinate spaces
* Improve endpoint dragging clarity
* 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
* Fix gamma correction with HTML-based editable Text tool text
* Migrate simple, undecorated classes to types
* Remove TupleToVec2 transformation
* Remove @Transform from tooltips
* Cleanup: replace value.toString() with String(value) everywhere
* Convert documentId from string to bigint
* Migrate the rest of the easy @Transform/@Type decorations
* Migrate FillChoice
* Migrate WidgetDiffUpdate
* Migrate WidgetInstance
* Migrate away from classes that extend WidgetProps
* Remove class-transformer and all classes in messages.ts
* Migrate UI layout passing
* Remove dead code
* Remove unnecessary export and readonly prefixes
* Remove HSVA type
* Break out Color, Gradient, and FillChoice functions into a utility-functions file
* Move widget helper functions from messages.ts into a new utility-functions file; restructure type imports
* Reduce internal type defs
* Rename JsMessage to FrontendMessage
* Code review fixes
* Fix other usages
* Tidying up
* Improve Gradient tool dragging behavior and make hints reactive to current interaction state
* Reduce code duplication for drawing stops
* Fix coordinate system issue when PTZ'ing document during drag or autopan
* 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
* Remove Vello from preferences
* Add the Render Mode: SVG Preview radio button
* Remove SVG outline renderer
* Add a tooltip explaination when disabled in unsupported browsers
* Fix Eyedropper tool to support Outline render mode
* Use #[allow(clippy::too_many_arguments)] instead of tuple
* Rerun nodegraph when max render area is changed
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* 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>