Commit Graph

2694 Commits

Author SHA1 Message Date
Keavon Chambers 1a06d3ea80
Improve PWA support with service worker-based offline caching (#3985)
* Implement the service worker for cached offline mode

* Improve pre-loaded font menu preview visualization

* Code review fixes

* Simplify Response construction

* Attempt to fix ERR_FAILED when reloading page on CF Pages

* Reject service worker install if any precache fetch fails
2026-04-02 18:14:40 -07:00
Keavon Chambers 87bd3d41df Make Alt+click on a handle in the Path tool split it from its colinear pair 2026-04-01 23:04:56 -07:00
Keavon Chambers 662691f32a New node: 'Offset Points' 2026-04-01 23:02:59 -07:00
Keavon Chambers 1543d974ac
Fix 'Jitter Points' and 'Sample Polylines' working incorrectly with X or Y scale of 0 content (#3984)
* Fix NaN points produced by Sample Polylines on 0-scaled input

* Fix Jitter Points inverse transform for zero-scale axes and stop resetting stroke transform

* Remove a couple confusing Debug nodes

* Fix edge case

* Update demo art

* Fix order change in Jitter Points causing different results from earlier

* Fix bug in bisect tool

* Break out functionality into helper functions
2026-04-01 22:51:48 -07:00
Keavon Chambers 79bf1ab688 Fix preprocessor crash when document nodes have outdated input counts 2026-04-01 19:39:12 -07:00
Keavon Chambers 211b9113a1
Add the "Along Normals" parameter to the 'Jitter Points' node (#3983)
* Add the "Along Normals" parameter to the 'Jitter Points' node

* Fix the edge case of a self-loops
2026-04-01 05:18:56 -07:00
Keavon Chambers d41883a942
Add Layers panel support for displaying multiple groups with instances of the same children layers (#3982)
* Add Layers panel support for displaying multiple groups with instances of the same children layers

* Fix insert folder box drawing
2026-04-01 00:13:42 -07:00
Keavon Chambers 86e41a110a
Make the node macro include doc comments when hovering a node's function (#3979) 2026-03-31 02:55:27 -07:00
Keavon Chambers 203910a92f Replace the vite-multiple-assets dev dependency with a small custom Vite plugin (#3976)
* Replace the vite-multiple-assets dev dependency with a small custom Vite plugin

* Restore exception
2026-03-29 03:36:31 -07:00
Keavon Chambers a3ea6ab0af
Refactor transform decomposition API with skew support, add 'Decompose Skew' node, and fix stroke transform interpolation (#3973)
* Refactor transform decomposition API with skew support, add Decompose Skew node, and fix stroke transform interpolation

* Fix bug in master with skew changing Area node calculated value

* Code review simplification

* More code review fixes

* Rename cases where "shear" terminology was used in place of "skew"
2026-03-28 20:47:32 -07:00
Keavon Chambers e2a142333f
Fix the Auto-Tangents node for linear polylines, and track colinear handles in manipulator data (#3972)
* Fix the Auto-Tangents node for linear polylines, and track colinear handles in manipulator data

* Simplify
2026-03-28 18:26:08 -07:00
Keavon Chambers 71ff4c937f
Update 'Solidify Stroke' to preserve the original fill (#3971)
* Update 'Solidify Stroke' to preserve the original fill

* Efficiency improvements
2026-03-28 18:11:26 -07:00
Keavon Chambers 50a618ad12
New node: Path is Closed (#3970)
Add the 'Path is Closed' node
2026-03-28 17:37:50 -07:00
Keavon Chambers 6388a32ac5
Fix an assortment of small bugs (#3968)
* Fix an assertion failure bug when scaling a line in the transform cage

* Fix missing defaults on node gradient inputs

* Fix Blend Shapes path input wire not updating to show in the UI after Layer > Blend

* Fix assertion failure due to browser non-monotonic timestamp

* Fix SVG renderer drawing 1px strokes as half-width when using stroke alignment

* Fix incorrect appearance of the ColorInput widget when set to "none" and "disabled"

* Fix lerp function in Fill enum to handle None cases correctly

* Fix stroke alignment bug
2026-03-28 17:12:13 -07:00
Keavon Chambers 865e9713ad
Refactor eval_pathseg_euclidean() to use kurbo's faster/more accurate inv_arclen() (#3969) 2026-03-28 16:30:26 -07:00
Keavon Chambers e529f74495
Fix click target metadata not propagating through intermediate wrapper table rows (#3967) 2026-03-28 15:39:27 -07:00
Vishnu Tejas 36366b34f2
Desktop: Fix drag followed by a click causing a double click (#3721)
* Fix drag followed by a click causing a double click

* Review

* Fix quadruple click bug and cleanup

bug: quadruple bypassing time and distance check logic

* Improve readability

---------

Co-authored-by: Timon <me@timon.zip>
2026-03-24 00:21:02 +00:00
Keavon Chambers 11b7af61ef
Fix image and SVG import transform bugs (#3942)
* Fix half-pixel offset on imported images

* Break out reused function

* Fix SVG/image open flow placing content with unnecessary Transform nodes

* Fix redundant Transform nodes when opening SVG/image files as documents

* Offset the parent to its destination position not the child objects

* Fix SVG/image File > Open artboard dimensions, origin, and clipping

* Fix the SVG to drag in at the mouse position relative to its visible center

* Fix importing images into offset artboards so they don't get offset as well

* Code review
2026-03-23 16:26:10 -07:00
Keavon Chambers a10092c10c
Fix abysmal O(n^2) SVG import performance (#3938)
* Remove O(n^2) import by disabling bumping

* Add an import mode to avoid acyclic checks

* Rebuild the layer tree at the end, not after each step

* Incrementally update outward wires instead of repeatedly rebuilding them

* Add import->export direct connection guard

* Code review fixes

* Replace magic number offsets with consts

* Add consts for magic numbers

* Improve code structuring
2026-03-22 23:33:58 -07:00
Timon 9727e14fe9 Add the re-labeled node display name to its Properties panel section header (#3930)
* Show nodes display name in properties panel if set

* Review
2026-03-22 20:20:32 -07:00
Timon 9a23b9908e
Add missing 'Copy to Points' migration (#3922)
Add Copy to Points migration
2026-03-23 01:48:39 +00:00
Timon 4a37ce4576
Desktop: Open file dialogs in the folder containing the document (#3934)
Desktop: Open save file dialogs in document parent folder
2026-03-23 01:36:25 +00:00
Timon 5b1e1cb2fb
Fix artboards not exporting with transparency using Vello (#3921)
* Fix hide artboard for raster render mode

* Desktop: Fix transparent viewport blending

* Fix vello render using wrong color space conversion for background

* Review
2026-03-23 01:20:54 +00:00
Jatin Bharti bf486b4cb5 Fix bug where nodes (like Text) with a non-visible primary input would gain a primary input when shaken (#3899)
* fix: Shaking a Text layer breaks its type signature

* Add a second fix for the same issue

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-03-22 00:11:19 -07:00
Keavon Chambers b7a1b3e665 Fix CI failing on PRs reaching master via the merge queue 2026-03-22 00:10:55 -07:00
Keavon Chambers 342160b803
Remove unused frontend npm dependencies (#3935)
* Remove unused frontend npm dependencies

* Add a guard on database open
2026-03-21 21:19:24 -07:00
Keavon Chambers 06f27f1d3a Simplify TS configuration 2026-03-21 19:45:57 -07:00
Dennis Kobert b0cc8a9243
Update Vite to version 8 (#3900)
* Update vite to version 8

* Fix breakage from the upgrade

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-03-22 02:12:28 +00:00
Keavon Chambers 96418e8f5d
Update dependencies to resolve advisories (#3933)
* Update Rust dependencies to resolve cargo-deny advisories

* Update minor/patch npm dependencies, too
2026-03-21 18:25:05 -07:00
Keavon Chambers 17da9ec099
New nodes: 'Decimate' and 'Simplify' (#3851)
* New node: Decimate

* Use preallocated stack to reduce number of allocations and fix double endpoints on closed paths

* Use Kurbo implementation of path-to-polyline sampling

* Add the 'Simplify' node
2026-03-21 17:08:18 -07:00
Keavon Chambers d5d10fe548
Rename /frontend/wasm -> /frontend/wrapper (#3927) 2026-03-21 03:46:47 -07:00
Keavon Chambers 4a0c2016e6
Rename editor_api.rs -> editor_wrapper.rs (#3926) 2026-03-21 03:34:08 -07:00
Keavon Chambers 087b4cd71f
Rename EditorHandle -> EditorWrapper and organize editor_api.rs (#3925)
* Rename EditorHandle -> EditorWrapper and organize editor_api.rs

* pub -> pub(crate)
2026-03-21 03:27:57 -07:00
Keavon Chambers 9bcac1af2d
Remove JS module import prefixes and use absolute paths to the frontend directory (#3924)
* Remove JS module import prefixes

* Fix code review mistakes
2026-03-21 00:08:32 -07:00
Keavon Chambers ed7987c881
Split apart the frontend Editor type into SubscriptionsRouter and EditorHandle (#3923)
* Remove the unused Editor.raw/wasmMemory/wasmImport

* Split out Editor.subscriptions

* Replace editor.handle.* with editor.* (1 of 2)

* Replace editor.handle.* with editor.* (2 of 2)

* Replace Editor typedef with EditorHandle import

* Pluralize subscription-router and rename subscriptionsRef->subscriptionsRouter and editorRef->editorHandle

* Remove editor.ts

* Update the readme

* Fix demo art loading bug
2026-03-20 23:34:13 -07:00
Keavon Chambers 64fd12a1a0
Break out helper functions from the frontend's managers and stores (#3920)
* Move destructor call to each manager/store constructor for safety

* Break out utility functions
2026-03-20 14:22:46 -07:00
Timon 0c7b5cd534
Desktop: Fix broken resizing affecting some Linux systems (#3917)
Desktop: Fix resizeing being broken on some Linux systems

Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com>
2026-03-20 01:28:22 +00:00
Keavon Chambers 2e2c4fe180
Restructure frontend TS files so managers/stores export destructors instead of returning them from their constructors (#3919)
* Replace parameter passing with getContext and extract destroy functions to module-level exports

* Resend layouts from Rust when editor is re-mounted on HMR

* Code review
2026-03-19 18:25:34 -07:00
Keavon Chambers 124b17f609
Fix frontend HMR so the page doesn't break upon saving TS files and restructure frontend architecture (#3871)
* Clean up component setup/tear-down side effects

* Clean up more component setup/tear-down side effects

* Remove nonfunctional debouncer

* Clean up even more component setup/tear-down side effects

* Reuse backend state

* Fix HMR for IO Managers and for State Providers

* Rename IO Managers -> Managers and State Providers -> Stores

* Restructure and partially flatten managers/stores

* Code review fixes

* Review fixes
2026-03-19 13:38:41 -07:00
Keavon Chambers eb562146ce
Consolidate CI web builds into the build workflow and restore deployments to GitHub environments (#3916)
* Restore the CI "View deployment" button in PRs after building

* Consolidate release.yml functionality into build.yml

* Move build from ci.yml to a delegated run in build.yml

* Rename CI to Check

* Code review fixes

* Review 2
2026-03-19 04:53:05 -07:00
Timon 2e842cb425
Desktop: fix Mac restart dialog to show all changes to preferences requiring restart (#3903)
* Desktop: Fix restart dialog on Mac

* Fix

* Fix

* Fix

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-03-19 02:51:26 +00:00
Keavon Chambers 7f6571ee52 Fix regression from #3834 causing sub-menu lists to close if outside their hover stray distance 2026-03-18 15:53:48 -07:00
Keavon Chambers 187b4c38b4
Port website dev docs generated content scripts from JS to Rust to avoid intermediate parsing (#3909)
* Remove the crate dependency graph website generation intermediate generation step

* Remove the message system tree website generation intermediate generation step

* Code cleanup

* Remove cache system

* Fix Windows comment URL error

* Fix incorrect artifact download URLs

* Add Flatpak to comment

* Make Flatpak use debug/release mode choice instead of always release mode
2026-03-17 15:02:15 -07:00
Keavon Chambers d9214c7292
Add the crate dependency graph visualization to the contributor guide (#3907)
* Add the crate dependency graph visualization to the contributor guide

* Code review fixes

* And more
2026-03-17 01:35:56 -07:00
Keavon Chambers df8001fca8 Consolidate separate platform CI build workflows and improve !build comment commands 2026-03-16 17:10:00 -07:00
Keavon Chambers efd142f030 Update, tidy up, and standardize GitHub Actions workflows 2026-03-16 02:49:42 -07:00
Keavon Chambers f7815d0cd0 Add the build link bisect tool to the website (#3902)
* Add the bisect tool

* Add `cargo run explore` to open bisect tool

* Website cleanup

* Bug fixes

* Fix again
2026-03-16 02:46:21 -07:00
Timon 4c45c88034
Desktop: Remove CEF CREDITS.html from Windows bundle (#3889) 2026-03-14 16:44:38 +00:00
Dennis Kobert eb30ee78bc
Fix Grapene CLI compilation (#3892)
* Fix grapene-cli compilation

* Improve cargo features to reduce recompiles
2026-03-13 11:28:34 +01:00
Keavon Chambers a3f88b0f96 Prep for the RC4 release of the desktop app 2026-03-11 14:53:47 -07:00