* Add Gradient node
* Add support of new Gradient node for Gradient tool
* Adapt gemini reviews
* Add tests
* Bring back visibility check
* Remove the 'Gradient' node since it's unwanted after all
* Formatting
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Impl NetworkMessageHandler
* Repalce Frontend fetch like messages with NetworkMessage
* Reimpl resource loading with NetworkMessage
* Fix wasm
* dedublicate resource requests
* Embedd font resources created by migration
* Fixup
* Fix tests
* Fix font catalog not loading
* Cleanup
* Fix layouts not updating when font catalog is loaded
* Review
* Review
* Cleanup
* 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
* Use ResourceId for referring to Resources
* Use Doc
* use error for preprocessor ResourceId replacement failure
* Keep hashes in DocumentInfo
* Migrate with less mem copy
* Global ResourceMessage -> ResourceStorageMessage
* Add document ResourceMessage
* Move embedding logic
* Fix
* Cleanup
* Review
* Fix
* Add a recovery path for autosaved documents that don't open successfully
* Fix file naming edge case
* Add edge cases for Windows zip names
* Simplify comments and remove desktop portion
* Add .nvim.lua to gitignore
* Migrate from iai-callgrind to the renamed successor gungraun
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Desktop: Forward file-open args from a second launch to the running instance
Also adds socket infrastructure that can be used in the future to allow dispatching actions from another process
* Use socket instead of ipc terminologie
* Fix
* Fix
* Better pipe name on windows
* Add TaggedValue::TypeDefault to avoid baking placeholder Tables into saved documents
* Add TaggedValue::TypeDefault to avoid baking placeholder Tables into saved documents
* Migrate empty Vector/Raster/Graphic/Artboard placeholder values to TypeDefault on load
Documents written before the TypeDefault mechanism existed have empty Table<Vector>/<Raster>/<Graphic>/<Artboard> values baked into every unwired exposed input. Walk each migrated node's inputs and rewrite any such placeholder NodeInput::Value into the equivalent NodeInput::type_default, so re-saved documents shed the placeholder payloads. Marked with a TODO for eventual removal once enough documents have been re-saved.
* Re-save demo artwork
* Remove Graphic and Artboard placeholder containers from TaggedValue
* Remove Raster placeholder TaggedValue variant
* Simplify document migration
* Remove Vector placeholder TaggedValue variant
* Remove NodeIdTable from the TaggedValue
* Remove StringTable from the TaggedValue
* Remove F64Table in place of F64Array in TaggedValue
* Replace TaggedValue::Color(Table<Color>) with ::Color(Option<Color>)
* Replace TaggedValue::GradientTable(Table<GradientStops>) with ::Gradient(GradientStops)
* Replace TaggedValue::BrushStrokeTable(Table<BrushStroke>) with ::BrushStrokes(Vec<BrushStroke>)
* Make TaggedValue::DocumentNode runtime-only with TypeDefault placeholder
* Make TaggedValue::ContextFeatures runtime-only
* Remove Serialize/Deserialize from Table<T>
* Add a widget for TaggedValue::BrushStrokes to visualize strokes and samples
* Define a reusable list of TaggedValue::TypeDefault types for its generated methods
* Re-save demo artwork
Fix missing welcome panel after closing all documents
Closing all documents left the Welcome panel as the only tab, but the old active document index could still point to a tab that no longer existed. The fix is to reset it to 0 when the document list becomes empty.