* Node graph API stub
* Rename and fix SetInputValue
* Get list of links from network
* Test populating node graph UI
* Node properties
* Fix viewport bounds
* Slightly change promise usage
* A tiny bit of cleanup I did while reading code
* Cleanup and work towards hooking up node links in Vue template
* Add the brighten colour node
* Run cargo fmt
* Add to and from hsla
* GrayscaleImage node with small perf improvement
* Fix gutter panel resizing
* Display node links from backend
* Add support for connecting node links
* Use existing message
* Fix formatting error
* Add a (currently crashing) brighten node
* Replace brighten node with proto node implementation
* Add support for connecting node links
* Update watch dirs
* Add hue shift node
* Add create_node function to editor api
* Basic insert node UI
* Fix broken names
* Add log
* Fix positioning
* Set connector index to 0
* Add properties for Heu shift / brighten
* Allow deselecting nodes
* Redesign Properties panel collapsible sections
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Limit saved undo history
* Do not commit path every mouse move event
* Reference count images in history system instead of cloning the image data
* Increase history storage step limit to 100
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add range slider to NumberInput
* Cleanup
* Fix event ordering causing bug in Firefox
* Polish the code
* Switch number input modes to range in relevant places
* Add gradient stops
* Better step adding
* Steps can be dragged past each other
* Swapping and switching gradient/fill
* Fix convert to gradient
* Skip non finite transforms for overlays
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Update the Imaginate feature server API
* Change connection status strategy to prevent console errors
* Possible CORS fix? Maybe revert.
* Update to the final API and fix bugs
* Organize persistence.ts
* Switch to simpler promise handling
* Switch document list storage from localStorage to IndexedDB
* Track document auto-save status to avoid re-auto-saving unnecessarily
* Add button to clear storage on crash
* Bump document version and test file
* Switch to IDB-Keyval instead of raw IDB transactions
* Add cancel hint to Eyedropper tool
* Improve eyedropper overlay CSS
* Make CSS for transparent checkered background reusable
* Add color choice preview to color picker
* Draw text and markers as contrasting white or black
* Add reactive color updating and new/initial swapping
* Add Hex, RGB, HSV, and Opacity inputs
* Add none color and preset buttons
* Add eyedropper button and fix alignment (now visually done)
* Wire up none colors through the backend and style the ColorInput widget
* Add color info chip to ColorInput widget
* Fix all UX bugs
* Add more tooltips
* Fix FloatingMenu recursive loop
* Prevent mouse stray from closing color picker while dragging pickers
Closes#703
* Fix deselect all layers shortcut
* Add temporary eyedropper for Chromium browsers and a coming soon fallback
* Break path by placing anchor on previous one
* Fix offset on click without dragging
* Fix bug where ids reassigned from saved document
* Fix stuck overlay
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Double click to flip sharpness of anchor's handles
* Fix bad length
* Convert mirror distance to toggle
* Revert "Convert mirror distance to toggle"
This reverts commit 76b565002265feb29c899840c4b4696b80a220b2.
* Fix mirror_distance_between_handles being inverted
* Move FloatingMenu template component
* Rewrite the ColorPicker component so it's not horrifically bad code
* Move FloatingMenu into the ColorPicker component
* Little Imaginate fixes
* Add todo
* Add AI Artist layer
* WIP add a button to download the rendered folder under an AI Artist layer
* Successfully download the correct image
* Break out image downloading JS into helper function
* Change file download from using data URLs to blob URLs
* WIP rasterize to blob
* Remove dimensions from AI Artist layer
* Successfully draw rasterized image on layer after calculation
* Working txt2img generation based on user prompt
* Add img2img and the main parameters
* Fix ability to rasterize multi-depth documents with blob URL images by switching them to base64
* Fix test
* Rasterize with artboard background color
* Allow aspect ratio stretch of AI Artist images
* Add automatic resolution choosing
* Add a terminate button, and make the lifecycle more robust
* Add negative prompt
* Add range bounds for parameter inputs
* Add seed
* Add tiling and restore faces
* Add server status check, server hostname customization, and resizing layer to fit AI Artist resolution
* Fix background color of infinite canvas rasterization
* Escape prompt text sent in the JSON
* Revoke blob URLs when cleared/replaced to reduce memory leak
* Fix welcome screen logo color
* Add PreferencesMessageHandler
* Add persistent storage of preferences
* Fix crash introduced in previous commit when moving mouse on page load
* Add tooltips to the AI Artist layer properties
* Integrate AI Artist tool into the raster section of the tool shelf
* Add a refresh button to the connection status
* Fix crash when generating and switching to a different document tab
* Add persistent image storage to AI Artist layers and fix duplication bugs
* Add a generate with random seed button
* Simplify and standardize message names
* Majorly improve robustness of networking code
* Fix race condition causing default server hostname to show disconnected when app loads with AI Artist layer selected (probably, not confirmed fixed)
* Clean up messages and function calls by changing arguments into structs
* Update API to more recent server commit
* Add support for picking the sampling method
* Add machinery for filtering selected layers with type
* Replace placeholder button icons
* Improve the random icon by tilting the dice
* Use selected_layers() instead of repeating that code
* Fix borrow error
* Change message flow in progress towards fixing #797
* Allow loading image on non-active document (fixes#797)
* Reduce code duplication with rasterization
* Add AI Artist tool and layer icons, and remove ugly node layer icon style
* Rename "AI Artist" codename to "Imaginate" feature name
Co-authored-by: otdavies <oliver@psyfer.io>
Co-authored-by: 0hypercube <0hypercube@gmail.com>
* Fix crashes when dragging the bounding box/transform cage of a 0-scale shape.
* Fix crashes when dragging the pivot point of a 0-scale shape
* Fix rotation computation on DAffine2 when scale.x is 0, avoids Nan display
* remove remaining log::info that I introduced in earlier commit
* Fix crash when updating the scale of a transform that was already 0.
* Fix NumberInput behaviour when the requested value changed is does not happen.
* Fix rotation computation when Scale X and Scale Y are both 0. Display 0. This also fixes crashes when modifying the rotation in such case
* Close paths with pen tool
* Issue Z command always at end of path
* Small code review style changes
* Extending paths
* Fix mirror on extend path
* Code review tweaks
Co-authored-by: Keavon Chambers <keavon@keavon.com>