Timon
3509f0b035
Desktop: Persist document path ( #3272 )
...
* persist document path
* persist data cleanup
2025-10-15 10:30:47 +00:00
Sambhram and Timon
591096a817
Exit sub-network via Escape key ( #3285 )
...
"Escape key in sub-network"
Co-authored-by: Timon <me@timon.zip >
2025-10-15 00:08:04 +00:00
Mateo and Timon
497758c273
Desktop: Add simple cli interface ( #3059 )
...
* Open document from cli and add some files to .gitignore
* Revert .gitignore
* Revert .gitignore
* Implement cli properly
* Add ui-accelerated-painting option
* Format code
* Revert changes in .vscode folder
* Don't use global variables for cli
* Apply suggested changes
* Make ready for merge
* Improve names
* remove comment
---------
Co-authored-by: Timon <me@timon.zip >
2025-10-13 21:09:40 +00:00
Trevor Paley
ca70fd8380
Add quick measurement between objects and artboards ( #3274 )
2025-10-12 18:14:02 +00:00
Timon
48ac24da14
Desktop: Fix frontend message response dispatch ( #3247 )
...
* One annoying debugging session later
Discovered that the editor handles frontend messages differently from other messages.
It requires all frontend messages to be fully processed before dispatching any resulting messages.
In the web frontend, this behavior happened implicitly because message dispatch is queued at the current end of the JavaScript execution queue.
For the desktop frontend, I added a vector to collect all responses until the entire batch of frontend messages is handled, and then dispatch them afterwards.
* Fix double click travel
2025-10-06 20:04:24 +00:00
Dennis Kobert
bc66148d2b
Reset the overlay context for each draw request and use global font cache ( #3231 )
2025-09-28 15:36:08 +00:00
Dennis Kobert and Timon Schelling
ffc74273cc
Implement Convert trait to convert between CPU and GPU images ( #3194 )
...
* Add upload texture trait
* Make convert trait use explicit converter
* Add gpu texture download implementation
* Add footprint to convert trait
* Cleanup texture upload / download
* Download wgpu textures aligned
* abstract texture download into converter helper
* rename module
not only doing uploads anymore
conversion looks like a ok name
* Remove into_iter call and intermediate vector allocation
---------
Co-authored-by: Timon Schelling <me@timon.zip >
2025-09-26 14:30:01 +02:00
Dennis Kobert
4e47b5db93
Restructure gcore/text module and fix memory leak ( #3221 )
...
* Restructure gcore/text module and fix memory leak
* Remove unused import
* Fix default font fallback causing wrong caching and rename to TextContext
* Upgrade demo art
2025-09-25 15:29:07 +02:00
Keavon Chambers
9d15e56ce1
Fix and clean up typing-related flaws with the Math category of nodes
2025-09-18 16:37:01 -07:00
Keavon Chambers
7e3ab78ea4
Fix more flaws with 'Transform' node rad-to-deg migration; make 'Tangent on Path' also use degrees by default
2025-09-18 14:09:10 -07:00
Dennis Kobert
390ce023ea
Fix regression when rotating a group, resulting in an incorrect transform cage bounding box ( #3184 )
...
Revert "Reuse click target bounding boxes for document bounds"
This reverts commit d9e8a71cd0 .
2025-09-16 13:41:44 -07:00
Keavon Chambers
50f06c886f
Fix crash from #3160 when migrating some old documents to use degrees not radians
2025-09-11 15:14:41 -07:00
Timon
2483832227
Mark new documents as saved ( #3165 )
...
* clean up new document message handling
* Mark new documents as saved
2025-09-11 12:09:15 -07:00
Dennis Kobert
5836416632
Optimize editor performance for node selection, click target bounds, and batched messages ( #3162 )
...
* Don't clone messages during batch processing
* Improve selected nodes perf and memoize network hash computation
* Reuse click target bounding boxes for document bounds
* Early terminate computing the connected count
* Cleanup
2025-09-11 10:08:26 +00:00
Dennis Kobert
ad5d8fcd37
Optimize rendering by caching intermediate render results when panning/zooming ( #3147 )
...
* Add svg render node
WIP
Fix error in context nullificaton node insertion
Correctly translate metadata
Fix warning
* Cleanup
* Remove color / gradient check and fix svg defs
* Implement viewport filling transform modification for vello
* Cleanup and comments
* Code review
2025-09-11 11:35:33 +02:00
Keavon Chambers
9a32e79853
Rename NodeInput::Network to NodeInput::Import ( #3163 )
2025-09-10 20:50:15 -07:00
Adam Gerhant and Keavon Chambers
332088bce1
Make the Transform node use angles in degrees instead of radians for Rotation and Skew ( #3160 )
...
* Make the Transform node use degrees not radians
* Migration script
* Migrate skew value input to store degrees
* Add comments
* Fix migrations to account for the old deprecated "Pivot" parameter
* Fix tooling interactions with degrees-based transforms
* Upgrade demo art
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-11 00:19:10 +00:00
Keavon Chambers
22aa8c1264
Update UI widget designs to improve color consistency and add a narrow height mode
2025-09-08 21:48:22 -07:00
0SlowPoke0 and Keavon Chambers
485152bf8d
Add "Spiral" to the Shape tool and as a new node ( #2803 )
...
* made spiral node
* number of turns in decimal and arc-angle implementation
* logarithmic spiral
* unified log and arc spiral into spiral node
* add spiral shape in shape tool
* fix min value and degree unit
* make it compile
* updated the api
* changed the function_name
* [/] to update the turns widget in shape tool
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-08 14:37:43 -07:00
Adam Gerhant and Keavon Chambers
7686edd47b
Add a cancel transaction message to the history system ( #3121 )
...
Add cancel transaction
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-07 14:00:42 -07:00
Keavon Chambers
a2c0693038
Fix most known issues with migrations failing to open documents from the past year ( #3148 )
2025-09-07 11:10:03 -07:00
Keavon Chambers
89c9cf1352
Fix infinite recursion introduced in #2795 that occurs in old document migrations
2025-09-05 14:04:10 -07:00
Dennis Kobert and Keavon Chambers
acd7ba38cc
Graphene: Fine-grained context caching ( #2500 )
...
* RFC: Fine Grained Context Caching
* Fix typos
* Fix label
* Add description of inject traits
* Explicitly support context modification
* Start implementation of context invalidation
* Add inject trait variants
* Route Extract / Inject traits to the proto nodes
* Implement context dependency analysis
* Implement context modification node insertion
* Fix erronous force graph run message
* Fix Extract* Inject* annotations in the nodes
* Require Hash implementation for VarArgs
* Fix nullification node insertion
* Cross of done items unresolved questions section
* Update Cargo.lock
* Fix context features propagation
* Update demo artwork
* Remove BondlessFootprint and FreezeRealTime nodes
* Fix migration
* Add migrations for adding context features to old networks
* Always update real time regardless of animation state
* Cargo fmt
* Fix tests
* Readd sed command to hopefully fix profile result parsing
* Add debug output to profiling pr
* Use new totals instead of summaries for for iai results
* Even more debugging
* Use correct debug metrics (hopefully)
* Add more MemoNode implementations
* Add context features annotation to shader node macro
* Cleanup
* Time -> RealTime
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-09-05 11:44:26 +00:00
Timon
083dfa5f49
Clean up autosave persistence ( #3115 )
...
* Set auto save state to false on document rename
* Update open document list on transaction commit and aboard
* Use current network to compute hash
Was using the last element in undo
Before artworks where not auto saved when the had no undo history
* Refactor persistence
2025-09-02 13:27:38 +00:00
Adam Gerhant and Keavon Chambers
f1a1275601
Add support for adding/removing a graph's primary imports/exports separately from the secondary ( #3089 )
...
* Primary Import/Export
* Primary Import/Export
* Complete import exports
* Final changes
* Improve line width
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-29 20:57:15 +00:00
Firestar99 and hypercube
95ef8a5343
Change Table<Color> node inputs to Color where only one value is used so GPU nodes work ( #3096 )
...
* graster-nodes: change `Table<Color>` params to `Color` where only one value is used
* Re-add support for Color and Option<Color>
* Add warning when a default value isn't parsed
---------
Co-authored-by: hypercube <0hypercube@gmail.com >
2025-08-28 15:16:56 +02:00
Priyanshu and Keavon Chambers
9987112cc9
New node: 'Separate Subpaths' to break subpaths into individual vector table rows ( #3069 )
...
* impl separate paths node
* rename
* refactor
* Rename nodes 'Split Segments' -> 'Cut Segments' and 'Split Path' -> 'Cut Path'
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-28 06:07:09 +00:00
82784b46a0
Add node input type support for f32 to enable usage on GPU ( #3095 )
...
* update Cargo.lock
* f32: switch to f32 params
* f32: more f32 params, remove f32 casts
* f32: property support for f32
* f32: fix test `stable_node_id_generation`
* Fix f32 properties
* Fix f32 frontend data types
* Rename TaggedValue::Vec2 to ::FVec2 and ::Affine2 to ::FAffine2
---------
Co-authored-by: hypercube <0hypercube@gmail.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-27 20:08:45 -07:00
Adesh Gupta and Keavon Chambers
34b52bcc54
Clean up Path tool related code and fix bugs in several cases ( #3070 )
...
* Fix regressions related to path tool
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-27 23:42:04 +00:00
Dennis Kobert
d9cbf975ff
Deprecate automatic composition ( #3088 )
...
* 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
2025-08-24 08:34:59 +00:00
Dennis Kobert
354bf93364
Store document node inputs in Arc to reduce memory consumption ( #3086 )
...
Store values in memo hash contanier in arc
2025-08-23 17:24:41 +02:00
Dennis Kobert
469f0a6c30
Remove lambda node inputs since they are no longer used ( #3084 )
...
* Remove lambda node inputs as they are now unused
* Fix warnings
* Fix tests
* Fix clippy warning
2025-08-23 12:16:49 +02:00
Dennis Kobert
7377871106
Fix clippy warnings ( #3085 )
...
* Run clippy fix
* Clippy v2
* Make const item static
* Cargo fmt
2025-08-23 11:45:47 +02:00
Keavon Chambers
0e467907e2
Improve font import; replace Inconsolata with Source Code Pro; show third-party licenses in editor dialog ( #3079 )
...
* Improve font import; replace Inconsolata with Source Code Pro; show third-party licenses in editor dialog
* Code review
2025-08-21 11:57:04 -07:00
Timon and Dennis Kobert
e70862b399
Desktop: Add File > Save As… ( #3034 )
...
* Make file name and document name identical
* Add save as action
* Fix test errors
* Add missing save as action
* Desktop fix drop file open document file message
* Address review comments
* Replace file save suffix with file extension
* Add comment specifying that the upload function takes a html input accept string
* Fix remove file extension in web
* Use let
* Don't show save as menu entry in web
* Don't add SaveDocumentAs in web
* Remove file extension on all open document file calls
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2025-08-20 10:09:01 +00:00
Dennis Kobert and Keavon Chambers
7c30f6168b
Improve snapping performance ( #3067 )
...
* Use lyon_geom for intersection calculation of bezier segments
* Implement approximate nearest point calculation and loosen bounding boxes
* Add algorithm explanation
* Update editor/src/messages/tool/common_functionality/snapping/layer_snapper.rs
Co-authored-by: Keavon Chambers <keavon@keavon.com >
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-20 10:47:58 +02:00
Mohd Mohsin and Keavon Chambers
17d70dc60e
Add struct field visualization to the editor message hierarchy tree visualization on the website ( #2917 )
...
* Fix Message Tree: Enforce Structure and Visibility
* Code review
* fix the erroreous ouputs
* error handling for MessageHandler
* Fix website visualization HTML generation
* error handling for tuple-style message enum variant
* cleanup
* Update messages
* Normalize BroadcastEvent
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-18 21:04:29 -07:00
Firestar99
0a53eae4e0
Remove unused cargo dependencies ( #3063 )
...
* cargo shear
* fix warnings on master
* fix docs needing dev-dependency
2025-08-18 11:26:44 -07:00
Meet Zalavadiya
4da732dcc3
Fix artboard labels not reappearing once the node graph is closed to return to the viewport ( #3061 )
...
Closes #3045
2025-08-18 05:49:21 +00:00
Priyanshu and Keavon Chambers
d22b2ca927
Refactor the Centroid node and Subpath struct and methods to use Kurbo, eliminating all remaining usages of Bezier-rs ( #3036 )
...
* define Subpath struct in gcore and refactor node-graph
* Refactor few methods
* refactoring worked!
* refactor centoid area and length
* remove unused
* cleanup
* fix pathseg_points function
* fix tranforming segments
* fix segment intersection
* refactor to_path_segments fn in gpath-bool crate
* refactor gcraft
* add bezier-rs dep
* Code review the editor directory
* use path-bool for solving roots
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-16 13:39:25 -07:00
Keavon Chambers
bdc029c692
Add Table<Gradient> as a graphical type ( #3051 )
2025-08-13 01:42:51 -07:00
Keavon Chambers
1b351aca76
Replace the Color type with Table<Color> everywhere ( #3048 )
2025-08-12 00:38:23 -07:00
Dennis Kobert
437fc70500
Desktop: Fix Node Graph Overlay ( #3042 )
...
Replace usize::MAX with u32::MAX as a marker value which can be used on both native and wasm
2025-08-11 13:23:12 +00:00
Timon and Dennis Kobert
fa2167dd7f
Desktop: Drag and drop file to open/import functionality ( #3035 )
...
* Desktop app add drop file functionality
* Add x11 libs to flake
* Restructure extension matching to remove nesting
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2025-08-11 11:48:10 +00:00
Keavon Chambers
2bb4509647
Replace the Spreadsheet panel with an improved Data panel ( #3037 )
...
* Improve the table data panel
* Add the "Window" menu bar section and polish everything
2025-08-10 07:46:42 -07:00
Keavon Chambers
2f4aef34e5
Add Table<Color> as a graphical type ( #3033 )
...
* Reduce code duplication in bounding box impls on Table
* Working Table<Color> rendering in the graph
* Implement color and fix other rendering with Vello and polish
2025-08-10 01:34:33 -07:00
Dennis Kobert
e003389526
Desktop: Implement missing vello overlays ( #3004 )
...
* Implement fill overlay
* Implement text rendering for overlays
* Adjust y positioning
2025-08-06 19:39:35 +00:00
Dennis Kobert
ef2fab32a2
Track which document the deferred executions belong to ( #3010 )
...
* Track which document the deferred executions belong to
* Cleanup
* Fix tests
* Fix freehand tool
* Notify defer handler of graph execution updates asap
2025-08-06 21:16:02 +02:00
Timon
96a1b12a05
Desktop: Unify save file handling and add file dialog for export ( #3008 )
...
* Prepare save file unification
* Desktop add save file dialog
2025-08-06 16:07:53 +00:00
Priyanshu and Keavon Chambers
b1f2cf706e
Refactor the node graph UI wires to render using Kurbo ( #2994 )
...
* impl function to check bezpath insideness
* refactor network interface wires to use kurbo
* refactor
* refactor
* fix adding MoveTo instead of LineTo to the grid aligned wire bezpath
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-08-06 02:17:00 -07:00