Timon
881ec0b193
Split out viewport handling into its own message handler ( #3331 )
...
* extract viewport handeling
* fix web overlays
* some cleanup
* remove some physical conversions
* fix resize snapping
* fixup
* apply some review feedback
* make viewport api more ergonomic
* fix
* fix web overlay canvas clear size
* clear workaround for canvas
* rename trigger message
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2025-11-08 08:59:38 +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
Keavon Chambers
b5ebe78f5e
Update all frontend npm dependencies except Svelte and Vite ( #3120 )
...
* Upgrade node dependencies except Svelte 5 and its peer deps
* Fix lint errors
* Fix previous Rust deps upgrade breakage
* Fix demo artwork
* Allow profiling CI workflow to fail
2025-09-01 17:22:30 -07:00
Timon
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
Timon
5d17f5dcce
Fix broken SVG file export regression ( #3021 )
...
Js is a joke
2025-08-07 11:23:31 +00: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
Keavon Chambers
6dd17f76c1
Fix pointer offset from viewport position
2025-08-05 03:26:09 -07:00
Timon
853c26cbc1
Desktop: Viewport bounds from viewport container ( #2989 )
...
* Remove build script because it created more issues that it solved
* Get viewport bounds from viewport container
2025-08-04 11:14:34 +00:00
Keavon Chambers
07802204f2
Fix ~1 second delay opening new document in Chrome by correctly setting willReadFrequently ( #2962 )
...
* Fix ~1 second delay opening new document in Chrome by correctly setting willReadFrequently
* Use willReadFrequently in a couple more places
2025-07-31 02:49:16 -07:00
Keavon Chambers
4391f88d03
Update references to the latest tech stack plans
2025-07-29 15:17:41 -07:00
Adesh Gupta
391ed34a30
Add segment editing mode to the Path tool ( #2712 )
...
* Segment select mode upto dragging
* Lasso select for segment editing
* Formatting
* Compatibility with point selection mode
* Add delete segment support and drawing from inside of shape
* Add GRS support for selected segments
* Cleanup and add dynamic hints
* Fix double click behaviour and overlays
* Format code
* Fix merge
* Fix Lint
* Fix formatting
* Fix lasso bug
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-06-29 23:19:54 -07:00
Keavon Chambers
899ed5ad85
Tidy up the Layers panel with a new bottom bar
2025-05-21 04:14:01 -07:00
Keavon Chambers
d445bffe31
Add donation callouts in-app and on the site
2025-04-25 00:13:24 -07:00
Keavon Chambers
cdf896bf79
New demo artwork: "Parametric Dunescape"
2025-04-01 23:20:34 -07:00
Keavon Chambers
08a4b69948
Add animation control buttons to document bar
2025-03-19 02:15:40 -07:00
Keavon Chambers
ddb0c8c249
Reorganize the menu bar and add additional commands to it
2025-03-01 13:44:28 -08:00
Keavon Chambers
7bbbf7fa7c
Add icons and tooltips for the previous commit's feature
2025-02-12 01:54:30 -08:00
Keavon Chambers
0037f5158c
Add new icons to all menu bar entries
2025-02-07 19:08:06 -08:00
Keavon Chambers
0ec91bfe01
Add pin and cut icons; improve menu bar shortcut labels to choose shortest
2025-02-05 18:30:10 -08:00
Keavon Chambers
9ad6c31483
Remove blob URL dead code and clean up more frontend code ( #2199 )
2025-01-14 13:08:47 -08:00
James Lindsay
5aa6716910
Add a node insertion button and layer renaming from the Properties panel ( #2072 )
...
* Add node button
* Improve css a bit
* Add layer renaming to the Properties panel and move New Layer to that, plus add unpinning to properties sections
* Add tooltip
* Re-add layer itself in listing
* Final code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-10-25 23:58:34 -07:00
Keavon Chambers
fa6b5f298a
New demo artwork: "Changing Seasons"
2024-10-04 16:31:22 -07:00
Keavon Chambers
904cf09c79
Add drag-and-drop and copy-paste file importing/opening throughout the UI ( #2012 )
...
* Add file importing by dragging and dropping throughout the UI
* Disable comment-profiling-changes.yaml
* Fix CI
2024-09-28 00:19:43 -07:00
Keavon Chambers
1ee5ffbbe8
Clean up web code errors and make CI enforce them
2024-09-24 01:33:02 -07:00
James Lindsay
dd4a97b09f
Correctly apply transforms to vector data and strokes ( #1977 )
...
* Fix adding a layer to a transformed group
* Fix assorted transform issues
* Default stroke transform
* Fix bench
* Transform gradient
* Gradient fix
* Add gradient reversal buttons to Fill node in the Properties panel
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-15 22:26:11 +00:00
adamgerhant
33739b9ad4
Separate the Merge node from the Boolean Operation node ( #1933 )
...
* Rework boolean operation node
* Set Boolean Operation name for layer
* Remove memoize
* Update both demo artworks that use booleans
* Delete dead code, rename input connectors
* Remove more dead code
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-16 00:36:07 +00:00
Keavon Chambers
80cf486790
Add "Painted Dreams" demo artwork (and retire Just a Potted Cactus)
2024-08-02 05:20:01 -07:00
Keavon Chambers
06177597ae
Fix viewport bounds getting out of sync at times, like when toggling rulers
2024-07-28 05:42:27 -07:00
adamgerhant
9d749c49fb
Add a stack-based Boolean Operation layer node ( #1813 )
...
* Multiple boolean operation node
* Change boolean operation ordering
* Complete layer boolean operation node
* Automatically insert new boolean operation node
* Remove divide operation
* Fix subtract operations
* Remove stack data from boolean operation properties
* Fix images and custom vectors
* Code cleanup
* Use slice instead of iter to avoid infinite type recursion
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-07-10 02:12:55 -07:00
James Lindsay
7a82a75d2c
Fix multi-subpath boolean operations ( #1804 )
...
Fix multi subpath boolean operations
2024-07-06 01:26:00 -07:00
Keavon Chambers
a9a4b5cd19
Move gradient picking into the color picker ( #1778 )
...
* Gradient picker
* Fix up color picker layout CSS problems
* Begin hooking up SpectrumInput for gradient in the ColorPicker
* Working gradient picking on the frontend only
* Plumb FillColorChoice into the backend
* Hook everything else up, just with a weird bug remaining
* Fix some svelty reactivity issues
* Add and remove stops
* Cleanup
* Rename type
* Fill node document format upgrading
* Fix lint
* Polish the color picker UX and fix a bug
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com >
2024-06-09 22:55:13 -07:00
Keavon Chambers
d40fb6caad
Add boolean operations ( #1759 )
2024-05-25 22:02:00 -07:00
Keavon Chambers
6b0822d318
Add Isometric Fountain demo artwork
2024-05-08 19:00:31 -07:00
adamgerhant
bc33eabc3c
Add grid color customization and choice to display as dots ( #1743 )
...
* dot grid
* fix warning: unreachable pattern
* grid color select
* add color for all grid types
* Dot grid checkbox and remove prefixed Color functions
* Display dot grid as grid aligned pixels
* Dashed line comment
* Code review and UI design widget placement updates
* Isometric dotted grid
* Early return when cos = 0
* Add spacing, x offset, and color to dot grids
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-05-08 21:36:15 +00:00
adamgerhant
8d83fa7079
Generalize layers as merge nodes to enable adjustment layers ( #1712 )
...
* WIP, backward traversal issues
* Fix some tool issues
* Remove debugging
* Change some indices
* WIP: new artboard node
* WIP: add artboard node
* WIP: Artboard node and create_artboard
* WIP: Artboard node implementation complete
* WIP: Artboards input for output node
* Complete Artboard node
* Generalize LayerNodeIdentifier, monitor_nodes support for Artboard node, adjust ResizeArtboard/ClearArtboards, move alias validation to Rust
* Fix misaligned artboard click targets
* Generalize/clarify create_layer and insert_between
* non-negative dimensions for resize_artboard
* Show artboards in layer panel
* Generalize create_layer for layer output node
* Generalize delete_layer/delete_artboard to NodeGraphMessage::DeleteNodes. Fixed upstream flow Iter
* remove old primary_input function
* Vertical node visuals, remove is_layer function, rename Layer node to Merge node, toggle display as layer
exposed_value_count type fix
Vertical node visuals, remove is_layer function, rename Layer node to Merge node, toggle display as layer
* Fix demo artwork
* Layer display context menu
* Automatically select artboard, fix warnings
* Improvements to context menu and layer invariant enforcement
* Remove display_as_layer and update load_structure
* Improve load_structure to show more layers, improve FlowIter, improve layer naming, layer rearrangement validation.
* Clean up demo artwork using generalized layers
* Improve design of Layers panel and graph nodes
* MoveSelectedLayersTo rewrite to support generalized layer nodes
* Include artboards in deepest_common_ancestor, fix resize_artboard/delete_artboard, sync artboard tool to layer panel
* MoveSelectedLayersTo adjustments
* Sync non layer node visibility with metadata
* Include non layer nodes when moving/creating layer
* Fix group layers and get_post_node_with_index
* Include non layer nodes in UngroupSelectedLayers
* GroupSelected for all selected nodes, UnGroupSelected position adjustments
* Add grouping for layers in different folders
* Fix hidden layers
* Prevent node from connecting to itself, fix undo automatic node insertion,
* Fix undo CreateEmptyFolder, fix grouping nested layer nodes
* Formatting
* Remove test and check if node is layer from network
* Fix undo group layers
* Check off roadmap
* MoveUpstreamSiblingsToChild adjustments
* Replace tabs with spaces, remove mut from argument
* Final code review pass
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-04-30 23:03:42 -07:00
Keavon Chambers
938a688fa0
Polish up the Layers panel design
2024-04-01 02:09:01 -07:00
Keavon Chambers
5bca931813
Rename handle mirroring to colinear
2024-03-14 07:44:55 -07:00
Keavon Chambers
12e16b9a4e
Add Red Dress demo artwork
2024-02-05 14:41:07 -08:00
Keavon Chambers
c7fd9cfc21
New demo artwork: Procedural String Lights
2024-01-05 15:16:48 -08:00
Keavon Chambers
96b5d7b520
Many subtle improvements to the UI design system ( #1537 )
2023-12-28 04:35:20 -08:00
Keavon Chambers
7bfe0ce55b
Retire layer paths used throughout the code ( #1531 )
...
* Part 1
* Part 2
* Part 3
* Part 4
* Part 5
* Part 6
* Part 7
* Part 8
2023-12-21 19:32:46 -08:00
0HyperCube
b2ca643e6e
Fix transforms, Brush tool, and G/R/S ( #1473 )
...
* Transform fixes
* Fix the desert artwork
* Change artboard icon
* Better handling when transforming brush strokes
* Code review pass
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2023-11-26 20:54:06 -08:00
Keavon Chambers
34c6c0431b
Improve NumberInput with dragging to change value and escape/right-click to abort ( #1469 )
...
* Improve NumberInput with dragging to change value and escape to abort
Closes #1468
* Fix slowing with Shift and integer mode
2023-11-21 17:26:28 -08:00
Keavon Chambers
a6ca43bb2d
Restore ESLint and Prettier auto-formatting and CI linting ( #1457 )
...
* Restore ESLint and Prettier autoformatting
* Fix formatting and lints in web files
* Hacky fix to eslint crash
* Fix remaining lints
* Add lint-fix script
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com >
2023-11-16 13:12:47 -08:00
Keavon Chambers
e54a2e2fc6
Remove the Frame tool
2023-11-04 03:04:26 -07:00
Keavon Chambers
b30488bbb7
Add support for handling MMB/RMB double click inputs ( #1407 )
...
* Add support for handling MMB/RMB double click inputs
* Add todo comment
* Enforce types
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com >
2023-09-01 14:57:03 -07:00
Keavon Chambers
a112ab27cf
Dialog redesign and content revamp ( #1409 )
...
* Revamp the content and design of dialogs
* Add the Licenses dialog
2023-09-01 01:58:20 -07:00
Keavon Chambers
0dcfafbf64
Add demo artwork
2023-08-22 03:26:59 -07:00
Keavon Chambers
185106132d
Move node graph from panel to overlay on viewport
2023-08-19 01:21:37 -07:00
nat-rix
dc4b16aead
Curves image adjustment node ( #1214 )
...
* Create ValueMapperNode and use it for brightness/contrast
* move spline code into seperate module
* Add GenerateCurvesNode
* add a `LuminanceMut`-trait
* add `lerp` to `Channel`
* Add frontend code to handle the curves widget's inputs
* Rename spline module to curve
* Make messages in CurveInput pass
* Improve curves widget design and fix sizing issue
* Implement proper bezier handling
* Use bezier_rs's intersections function instead of own cubic root solver
* Debounce CurveInput events and change how debouncer works
the first event issued to the debouncer was unneccessarily delayed.
Instead now the debouncer fires it instantaneously but blocks events
that come in until a timeout was reached.
* Make curve editing more user friendly
* Change code to use project terminology
* sample -> manipulator group or manipulator
* marker -> handle
* Fix small documentation mistake in bezier-rs
* Add find_tvalues_for_x function to bezier-rs
also integrate the function into curves node
* Add tests for find_tvalues_for_x in bezier-rs
* Fix formatting
* Revert BrightnessContrastNode changes
* Frontend cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2023-08-13 01:07:11 -07:00