Commit Graph

871 Commits

Author SHA1 Message Date
Keavon Chambers
7077e877f9 Allow double-clicking a gutter between panels to reset its sizing to default (#4000)
Support double-clicking to reset inter-panel gutter sizing
2026-04-03 14:43:25 -07:00
Keavon Chambers
b52bf7b7d4 Add support for reordering document tabs (#3999)
* Add support for reordering document tabs

* Fix tab bar scrolling

* Close tab without activating it on pointerdown
2026-04-03 06:35:52 -07:00
Keavon Chambers
55115d89d5 Fix several cases of errors appearing in the console
One appeared on load (a deprecated meta tag). One appeared when adding an Identity (Passthrough) node. One appeared when exposing the the Weight parameter of the Stroke node. This also fixes the intended behavior of the bisect script, which was involved when finding the prevenance of these errors.
2026-04-03 03:20:04 -07:00
Keavon Chambers
5edb00bd9a Fix virtual scrolling MenuList font family dropdowns shrinking when wider content is unmounted (#3987)
* Fix virtual scrolling MenuList dropdowns shrinking when wider content goes away

* Code review fixes

* Fix small CI workflow bug

* Stop scrolling in dropdowns from horizontally scrolling the control bar

* Use more robust way of getting commit hash in CI workflow
2026-04-02 19:24:41 -07:00
Keavon Chambers
ab822afae4 Implement window-controls-overlay PWA window frameless mode (#3986)
* Implement window-controls-overlay PWA window frameless mode

* Avoid warning
2026-04-02 18:17:36 -07:00
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
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
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
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
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
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
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
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
a3f88b0f96 Prep for the RC4 release of the desktop app 2026-03-11 14:53:47 -07:00
Keavon Chambers
81d0b8b8d4 Fix the Eyedropper tool on web with Vello and on desktop with SVG (#3886) 2026-03-11 03:26:02 -07:00
Keavon Chambers
52d2b38a82 Refactor the TypeScript data flow for full type safety and auto-generation of Rust types (#3865)
* Migrate Specta to Tsify to auto-generate messages.ts, working except colors and widgets

* Adopt the generated FillColor/Color/GradientStops

* Fix widget typing

* Separate WidgetGroup enum variants into wrapper structs

* Small rename

* Simplify widgets further

* Clean up message type references

* Switch type imports to the auto-generated file

* Remove lowercase serde rename

* Fix FillChoice deserialization

* Fix small regression from #3837

* Improve type safety

* Make WidgetSpan type-safe

* More cleanup and type safety

* More type safety

* More type safety

* Get the rest to type-check without errors; improve widget builder macro to have optional icons; improve Svelte 5 configs

* Cargo fmt

* Fix imports

* Update outdated readme info

* Fix lint command rename references

* Fix typos

* One more typos fix

* Remove unnecessary dep: prefix from the edited Cargo.toml files

* Remove excess parts from Cargo.toml

* Fix compiling on desktop

* Revert "Remove excess parts from Cargo.toml"

This reverts commit 6b711117b3a5d5d8a3ee20f36a43bc74930b7c82.

* Update dev docs with simpler, more accurate instructions
2026-03-09 16:35:04 -07:00
Timon
5d22292072 Replace npm build script with new cargo run tool (#3832)
* move nix flake to root

* cargo run tool

* use thiserror in third-party-licenses tool

* prefere panic over exit

* Add automatic dependency check to cargo run tool

* Skip dependecies that are not needed for the current task

* Fixup

* Fixup

* fix windows

* Fixup

* improve usage text

* Fix linux bundle

* add graphen-cli

* fix build profile

* fix

* release profile should not include debug infos

* Review

* remove profiling profile

was redundent with release

* rename to cargo-run tool

* improve consistency

* rename deps to requirements

* fix

* return success when showing usage
2026-03-07 13:26:19 +00:00
Keavon Chambers
ead914ec2b Fix regression where Vello doesn't render new document opened after closing all documents (#3849)
* Fix regression where Vello doesn't render new document opened after closing all documents

* Remove last_svg_canvas and do this logic in the frontend
2026-03-05 09:54:31 +00:00
Keavon Chambers
8a1dfb9d8f Refactor messages.ts by removing class-transformer and JS classes (#3858)
* Fix gamma correction with HTML-based editable Text tool text

* Migrate simple, undecorated classes to types

* Remove TupleToVec2 transformation

* Remove @Transform from tooltips

* Cleanup: replace value.toString() with String(value) everywhere

* Convert documentId from string to bigint

* Migrate the rest of the easy @Transform/@Type decorations

* Migrate FillChoice

* Migrate WidgetDiffUpdate

* Migrate WidgetInstance

* Migrate away from classes that extend WidgetProps

* Remove class-transformer and all classes in messages.ts

* Migrate UI layout passing

* Remove dead code

* Remove unnecessary export and readonly prefixes

* Remove HSVA type

* Break out Color, Gradient, and FillChoice functions into a utility-functions file

* Move widget helper functions from messages.ts into a new utility-functions file; restructure type imports

* Reduce internal type defs

* Rename JsMessage to FrontendMessage

* Code review fixes

* Fix other usages

* Tidying up
2026-03-05 01:43:21 -08:00
Keavon Chambers
f00a15a4c9 Clean up Gradient and Color classes in TS by removing their methods (#3857) 2026-03-04 02:39:07 -08:00
Keavon Chambers
5834ee9ce4 Clean up generic widget handling code in the frontend (#3856)
* Clean up WidgetSpan component code to avoid the giant if-chain for choosing a widget

* Improve typing support
2026-03-04 01:00:09 -08:00
Keavon Chambers
8a75c0c1e1 Add layer locked toggle icon and context menu entry to node graph (#3855)
* Add layer locked toggle icon and context menu entry to node graph

* Simplify logic
2026-03-04 06:30:04 +00:00
Timon
da7437c023 Reimplement notice file generation for third-party licenses through Rust, now with CEF credits (#3808) 2026-02-26 11:12:28 +00:00
Keavon Chambers
e62771845f Add an in-viewport color picker to the Gradient tool when double-clicking a color stop (#3834)
* Hide batched blocked debug print messages

* Implement the color picker on double-clicking stops

* Code review
2026-02-25 21:03:12 -08:00
Keavon Chambers
691d965bcf Add support for gradients with midpoints and add draggable diamonds to the color picker dialog (#3813)
* Refactor GradientStops to use struct-of-arrays and include midpoint

* Implement interaction and rendering

* Make color picker saturation-value color picking snap to original position and show both axis lines

Make color picker saturation-value color picking snap to original position and show both axis lines

* Add graphite:midpoint attribute to SVG exports

* Add graphite:midpoint parsing to SVG importer
2026-02-23 19:21:51 -08:00
Keavon Chambers
9f2c8713ff Add the SVG Preview render mode in place of the Vello option in the preferences (#3797)
* Remove Vello from preferences

* Add the Render Mode: SVG Preview radio button

* Remove SVG outline renderer

* Add a tooltip explaination when disabled in unsupported browsers

* Fix Eyedropper tool to support Outline render mode

* Use #[allow(clippy::too_many_arguments)] instead of tuple

* Rerun nodegraph when max render area is changed

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2026-02-22 20:27:26 +00:00
Timon
a2d3b3f410 Desktop: Make shutdown more robust and fix panic caused by invalid viewport scale (#3783)
* Fix panic caused by invalid viewport scale

* Make shutdown more robust
2026-02-22 17:28:35 +00:00
Jill Chhagnani
9d83998463 Fix missing crash dialog for panics thrown inside requestAnimationFrame loop (#3788)
* add crash dialog in RAF path

* removed panic!()

* removed redundant string allocationa dn duplication between function

* fixed allocation

* removed bloated code
2026-02-22 17:27:23 +00:00
Dennis Kobert
0531769c41 Cache Vello render output as stitchable textures (#3722)
* 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>
2026-02-22 10:12:50 +00:00
Keavon Chambers
5aca75dcbd Simplify breadcrumb trail buttons widget styling 2026-02-20 22:50:05 -08:00
Timon
3f999bf231 Desktop: Add "Disable UI Acceleration" to preferences (#3774)
* Deskltop: Add Disable UI Accelaration preference

* Fixup

* Fix typo

* Code review and update strings

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-19 01:54:01 +00:00
Keavon Chambers
6824f55929 Add hover style to checkboxes when their corresponding labels are hovered 2026-02-18 17:37:34 -08:00
Ayush Amawate
9bf3605b85 Add F2 shortcut for renaming the selected layer (#3641)
* add keyboard shortcuts for renaming layers

* apply reviewed suggestions

* Add todo comment

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-18 12:05:04 +00:00
Jill Chhagnani
2f8ee1b1bf Fix inability to navigate up and down with arrow keys in interactive-style menu lists (#3768)
fixed keyboard navigation in font picker
2026-02-15 19:19:23 +00:00
Kulcode
97c86125f6 Prevent tooltips from showing when mouse leaves the window over a widget with a tooltip (#3627)
* Fix tooltip visbility issue

* Reorganize

* Fix

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-15 10:53:24 -08:00
Keavon Chambers
df0c9dcba2 Fix Breadcrumb Trail widget pixel misalignment at non-integer UI scaling 2026-02-15 00:18:10 -08:00
Vatsal Kumar
f2dfd42754 Fix dragging range-style integer number inputs not accumulating slow mouse movements (#3682)
fixed to register non integer drag also
2026-02-14 07:02:43 +00:00
Ayush Amawate
9ae13634d0 Simplify the Layers panel tree structure Rust -> JS encoding (#3744)
* replace custom layer structure encoding with simple JSON tree

* add leftover files

* Renames

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-02-12 20:06:58 +00:00
Jatin Bharti
f4a5c77df8 Fix regression preventing the renaming of graph imports/exports (#3752)
fix : Node Renaming error
2026-02-12 10:42:38 -08:00
Timon
acab171bc5 Desktop: Build and Sign Mac and Windows Bundles in CI (#3728)
* Desktop: Build and Sign Mac and Windows Bundles in CI

* Desktop: Remove unnecessary CEF files from Windows Bundle

* Desktop: Use a temp file for license generation on Windows to avoid PowerShell modifying stdout
2026-02-06 13:37:07 +00:00
Keavon Chambers
ea293575e0 Fix inability to click node in catalog, a Svelte 5 regression
Closes #3693
2026-01-27 15:25:56 -08:00