* Add document-format RFC draft
* Align document-format RFC with graph-storage implementation
* Update writing style
* Recharacterize resource source chain as LWW-element-set, not add-wins OR-set
* Add Rev identity rationale framed against Git, plus patch-id future item
* Correct RFC inaccuracies found in implementation audit
* Mark unimplemented retirement coarsening and leader election as future; fix resurrection mechanism
* Add hot-log to the on-disk payload list in the architecture diagram
* Wire document-format into graphene-cli
* Support loading both legacy and new graphite files in the cli
* Address PR review: propagate CLI errors and use dyn resolver
* Fix CLI network wrap + preprocessor ordering
* Cleanup preprocessor
* Remove unused import
* Add document-format crate
* Adapt document-format to merged graph-storage and consolidate errors
* Fix resource write ordering, codec error masking, and export docs
* Remove document-format RFC; tracked in a dedicated PR
* Restructure document-format into gdd/persist/export/resource modules
Split the 963-line lib.rs by responsibility: persist path into persist.rs, resource I/O into resource.rs, export engine into export.rs. Rename the GddV1 layout struct to GddV1Layout and add a GddV1 = Gdd<GddV1Layout> alias.
* Feature-split document-format and graph-storage for minimal builds
* Address PR review: O(1) history-delta lookup and no-default-features test build
* Address PR review: propagate apply_hot_op persist error and assert resource hash
* Make decompression from archive streaming
* Share archive export body between export and export_to_bytes
* Review cleanup
* Export documents with un-retired hot ops losslessly
* Persist last_broadcast_rev in session.json, drop unused last_retired_at
* Move peer_id from manifest to session.json
* Rename gesture to interaction in document-format storage layer
* Add History type and merge-commit model to graph-storage
* Add History::merge with canonical-sort convergence to graph-storage
* Append merge delta without re-sorting the whole history
* Resurrect across merges by searching all ancestors, not the primary chain
* 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
* Split ci job to run on dedicated runners for web and native build
* Trigger CI
* Update labels
* Update comment text
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* 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>
* Split ci job into multiple jobs running on github runners
* Add permission to build steps
* Try running rust build on selfhosted runner
* Disable nix setup for self hosted runner
* Revert build and only run lint + web build + rust fmt on gh runners
* Only build rust tests and ignore branding for frontend lint
* Provide stub ts types for running linter without building wasm bundle
* Manually install wasm-opt + use cargo-binstall
* Only build with shaders for master builds
* Revert splitting of lint job
* Attempt to build with shaders
* Explicitly install linux target
* Move frontend build back to self hosted runner
* Remove whitespace changes
* Remove explicit build step
* Only rerender ui if it has changed
* Don't immedeatly request new frame at the end of the event loop
* Request redraw after ui update
* Always request redraw after timeout
* Fix setting control flow in all cases
* Remove comment
---------
Co-authored-by: Timon <me@timon.zip>
* Exclude node registry functions from desktop frontend builds
This reduces compile times and file sizes
* Use early return
* Fix branch name in build-linux pipeline
* Add #[data] and #[serialize] attributes to node macro
- Add #[data] attribute for struct fields that aren't node parameters
- Data fields are initialized with Default::default()
- Passed as references to the underlying function
- Excluded from registry metadata (internal state)
- Generic types in data fields allowed without #[implementations]
- Add #[serialize] attribute for custom Node::serialize() implementation
- Receives references to all data fields
- Generates serialize() method in Node trait impl
- Conditional derives based on data field presence
- With data fields: Debug, Clone only
- Without data fields: Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash
* Refactor Memo and Monitor Node to use node macro
* Move Complex type into type alias
* Fix format
* Update node-graph/nodes/gcore/src/memo.rs
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Update node-graph/nodes/gcore/src/memo.rs
Co-authored-by: Keavon Chambers <keavon@keavon.com>
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Only consider changes significant if they exceed an absolute ir diff
* Node graph folder change to trigger ci
* Use extra step for detecting significant perf degradations
* Reenable expanding of sections with significant changes
* Remove temp file
* Cache calculation of bounding boxes with transforms
* Reuse bounding boxes across for the same rotation
* Cleanup code and add documentation
* Add tests
* Disable caching for the instance repeat etc. nodes
* Add usize implementation for caching and monitor nodes
* Change return type of instance index node back to f64
* Cleanup while loop
* Remove stray usize changes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make manual_compositon non optional and rename to call_argument
* Fix clippy warnings
* Remove automatic composition compiler infrastructure
* Implement document migration
* Fix tests
* Fix compilation on web
* Fix doble number test
* Remove extra parens
* Cleanup
* Update demo artwork
* Remove last compose node mention
* Remove last mention of manual composition
* Improve perf of path bool lib
* Use swap remove
* Use outer/inner bounding box for inclusion testing
* Reuse allocations for hit testing
* Use direct root finding for inclusion testing
* Reuse bounding box
* Use faster hash and specify capacities
* Use hashmap based approach for find vertices
* Unroll find_vertecies loop and use 32 bit positions
* Tune initial vec capacities
* Remove unused bounding boxes
* Use smallvec for storing outgoing edges
* Improve allocations for compute_minor
* Use approximate bounding box for edge finding
* Transition aabb to use glam vecs
* Make find vertecies use 64 bit again this is slower but less likely to cause issues
* Improve intersection candidate finding
* Remove loop check in bit vec iter
* Special case cubic line intersections
* Optimize grid rounding and add debug output
* Remove file write
* Remove faulty line intersection
* Fix grid rounding
* Improve robustness and cleanaup code
* Make elided lifetime explicit
* Fix tests
* Fix a boolean ops crash
* Add comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix gamma issue by applying tone mapping in the shader
Vello renders it's values to an RgbaUnorm texture
but if we try to use this in the main rendering
pipeline which renders to an Srgb surface gamma
mapping is applied twice.
* Add comment explaining why we do this to the shader
* Rename variables
* Stub vello based overlay implementation
* Fix warnings
* Don't panic on non implemented functions to allow the tests to pass
* Don't draw overlays for tests
* Add Handler for defered execution of messages
* Cleanup
* Track graph execution id to associate messages with their corresponding execution id
* Rename ViewportReady -> NavigationReady
* Defer layer deselection
* Replace window state with channels and improve resize performance
* Move Cef Handler into the cef module
* Reuse textures
* Test cef scheduling
* Schedule self render if texture is outdated
* Address review comments
* Prototype document network level into node insertion
* Implement Convert trait / node for places we can't use Into
* Add isize/usize and i128/u128 implementations for Convert trait
* Factor out substitutions into preprocessor crate
* Simplify layer node further
* Code review
* Mark preprocessed networks as generated
* Revert changes to layer node definition
* Skip generated flag for serialization
* Don't expand for tests
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix poisson disk sampling with nested subpaths
Previously all subpaths were considered independently for the poisson disk sampling evaluation. We now check agains all subpaths which might contain the point to fix shapes with holes such as fonts with letters with holes in them
* Fix wasm demo
* Fix counting overlapping areas twice
* Rename shape variables to subpath variants