Commit Graph

2950 Commits

Author SHA1 Message Date
Dennis Kobert
b079ec9c2c Migrate legacy document call arguments to the context call convention 2026-07-30 11:26:12 +00:00
Dennis Kobert
9cdf9cec6b Share scope values as owned Arc handles 2026-07-30 11:26:12 +00:00
Dennis Kobert
9bdf4541d0 Replace borrowed scope injections with arcs 2026-07-30 10:58:51 +00:00
Dennis Kobert
382ad9d15c Add missing send / sync impls and make rasterize node async 2026-07-30 10:28:50 +00:00
Dennis Kobert
b70b28bbe3 Restore serialize-based introspection through the typed edges 2026-07-30 10:15:51 +00:00
Dennis Kobert
bb736002cf Add the async convert trait and restore the GPU texture download 2026-07-30 09:54:20 +00:00
Dennis Kobert
149a39faac Convert values to typed edges and flip the interpreted executor 2026-07-30 09:54:19 +00:00
Dennis Kobert
b74c64ebcd Retarget typing and row consumers onto the registry entries 2026-07-30 09:54:19 +00:00
Dennis Kobert
bb67b47301 Carry full function types in the registry rows 2026-07-30 09:54:19 +00:00
Dennis Kobert
683ca34fac Add the graph runtime with the completion epilogue 2026-07-30 09:54:19 +00:00
Dennis Kobert
db796be8e8 Make every edge a shared payload pointer with an owning Arc 2026-07-27 18:23:42 +00:00
Dennis Kobert
88d9c637e7 Merge the wiring surface into the registry and express the memo nodes as macro kernels 2026-07-27 16:06:42 +00:00
Dennis Kobert
c3fdc97f81 Convert create_context to a sync derivation kernel over the bare-root contract 2026-07-27 11:40:16 +00:00
Dennis Kobert
3d17fa0f0c Make the arena unwind safe and the slot locks poison tolerant 2026-07-27 11:40:16 +00:00
Dennis Kobert
9e83632647 Make the GPU render and dispatch pipelines synchronous 2026-07-27 10:47:44 +00:00
Dennis Kobert
6392c02dee Add the sync-prologue async source form 2026-07-27 10:47:44 +00:00
Dennis Kobert
470ffdab43 Add vararg slot cloning and snapshot vararg capture 2026-07-27 10:47:44 +00:00
Dennis Kobert
28d9e3cbe3 Convert the remaining nodes and mark genuine async sources 2026-07-26 22:58:40 +00:00
Dennis Kobert
28d37d30d0 Store the wgpu executor as an Arc and restore the upload texture node 2026-07-26 22:58:40 +00:00
Dennis Kobert
cf66f8396b Emit the async source tier from the node macro 2026-07-26 22:58:40 +00:00
Dennis Kobert
be5c78421a Add the async source runtime vocabulary and context snapshot 2026-07-26 22:58:40 +00:00
Dennis Kobert
f0f7d6a5d7 Start adapting nodes to new version 2026-07-26 20:59:12 +00:00
Dennis Kobert
44277c9636 Update node macro to new syntax 2026-07-26 20:58:11 +00:00
Dennis Kobert
99f94503c3 Reshape ContextImpl into the borrowed graphene context 2026-07-25 19:33:41 +00:00
Dennis Kobert
925075337b Add the generation-scoped arena and the FrameTable frame memo store 2026-07-25 17:05:40 +00:00
Dennis Kobert
df70222d61 Add the GNode trait with the spec-loop batch default; give InjectIndex its method 2026-07-25 17:05:01 +00:00
Dennis Kobert
1f9e0cc37b Add the GPoll evaluation vocabulary and an inert Type::Ref variant 2026-07-25 17:03:32 +00:00
Timon
eb50be844b Remove now obsolete disable-registration special case from node macro (#4375) 2026-07-25 13:54:46 +00:00
Dennis Kobert
0f0f62c2e9 Enforce unwind safety on all public executor entry points (#4356) 2026-07-24 09:34:40 +00:00
Timon
f5b1fee85f Fix node insertion crash caused by mismatched DefinitionIdentifier serialization (#4353) 2026-07-22 09:38:07 +00:00
Timon
6f8c4b2adb Desktop: Stop compiling the editor into the wasm wrapper (#4348)
* Make wasm wrapper not depend on editor on native

* Introduce pkg-native

* Fix tests

* Fix fmt

* Correct span and make cargo fmt work inside editor_commands block

* Review

* Fix lint
2026-07-18 10:33:38 +00:00
Timon
a040362d4a Change footprint to always be in physical instead of logical space (#4280)
* Fix footprint scale

* Footprint in physical pixels

* Move scale conversion to `create_context`

* Remove scale from render cache

* Review
2026-07-15 13:37:46 +00:00
Keavon Chambers
e40fe7843d Exclude teardown metrics from executors in the gungraun benchmark functions (#4336) 2026-07-15 05:29:48 -07:00
Timon
dc813e35fc More consistent document crate names (#4323)
* More consistent document crate names

* Fix fmt

* Fix ASCII art diagrams

* rename document-graph to document-graph-storage
2026-07-15 12:25:12 +00:00
Timon
f0bb2edb3d Desktop: Handle keyboard shortcuts that are skipped by CEF on Mac (#4322)
* Fix text selection on Mac

* Review
2026-07-15 10:57:48 +00:00
Timon
7e29fe9a31 Fix lifetime of cached textures (#4333)
* Fix in-use textures being destroyed

* Remove ImageTexture refs

* Review
2026-07-14 14:51:33 -07:00
Timon
ba0a97aefe Desktop: Isolate CEF-rendered UI into separate crate and process (#4321)
* Extract CEF rendered UI into a separate process and crate

* Review

* Review

* Review

* Review

* Remove necessary workarounds

* Block on frame copy ack

* Crop and resample frames correctly

* Skip blank frames

* Fix deps

* Fix fmt

* Fix clippy warning

* Review

* Fix todo
2026-07-14 14:51:20 -07:00
Keavon Chambers
97a43e66fb Split up Wasm binaries so Cloudflare deployments stay below 25 MB per file 2026-07-14 14:43:34 -07:00
Timon
97f8113fe4 Desktop: Fix crash caused by submitting work mid surface-reconfigure (#4317)
Implement wgpu-sync
2026-07-09 12:09:01 +00:00
YohYamasaki
6a54dcb5da Remove the legacy Fill, Gradient, and PathStyle types now that paints live in attributes (#4297)
* Remove `Stroke.color`

* Remove legacy Gradient struct usage

* Fix gradient tool tests

* Remove `Fill` enum

* Fix direction of `gradient_orientation_rightward`

* Remove `Gradient` struct

* Remove `PathStyle` struct

* Fix old `VectorData` migration

* Refactor

- Remove unnecessary wrapper functions
- Use `as_ref` instead of `clone` for stroke if possible
- Comment cleanup

* Clean up stale style comments and bindings left by the paint attribute migration

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-07-04 23:08:06 -07:00
YohYamasaki
9f9899cfd0 Refactor the 'Fill' and 'Stroke' nodes to set "fill" and "stroke" attributes for paints (#4257)
* Allow using any graphics type for fill

* Adapt gradient/fill property panels and tools to handle List<T>

* Make the initial gradient transform covers the target's bounding box

* Introduce AnyGraphicListDyn to avoid combinatorial explosion

* Allow using any graphics type for stroke paint

* Add FIll node migration

* Add `for_each_vector_list_mut` instead of `set_paint_attribute`

* Adapt paint flow to read and write attributes instead of legacy Fill/Stroke.color

* Fix responsibilities of paint related node input setters

* Fix Morph by storing List<Graphic> for attributes rather than the concrete types

Store fill/stroke paints as List<Graphic> so Color/Gradient transitions
do not hit set_attribute_value_dyn's type-mismatch fallback to default paint.

* Preserve paint attributes in vector editing ops

* Enhance the clarity between direct and chained fill gradients

* Update demo arts

* Consolidate Fill node gradient appearance inputs

* Fix after the cubic review

* Revert "Consolidate Fill node gradient appearance inputs"

This reverts commit 9622feb20196e2c4da99e98ca95dcc2e34c2c98e.

* Replace AnyGraphicListDyn with generic paint connectors on the Fill and Stroke nodes

* Canonicalize paint attribute storage to List<Graphic> with a single write helper

* Fix Solidify Stroke missing fills stored in the legacy style

* Fix Solidify Stroke producing invisible strokes for legacy-only stroke colors

* Fix the initial gradient transform ignoring the bounding box's vertical extent

* Step paint at the morph midpoint instead of dropping it for unmixable pairings

* Remove migration-stage comments

* Clarify the initial gradient transform helper's doc and name

* Correct the bake_paint_transforms doc and prune dead tolerance arms

* Delete the unused Gradient::lerp

* Fix a comment typo

* Thread network paths through the legacy gradient bake so nested fills migrate

* Restore the legacy fill fallback in Expand Fill and Stroke

* Read gradient stops from the node's own input in the Fill properties panel

* Use the transform input constant instead of a hardcoded index

* Remove the unreachable wired color fallback in the Fill properties solid branch

* Narrow the fill overlay redraw check to actual fill inputs

* Coalesce the fill setter's graph runs into a single dispatch

* Position the Gradient Value node inserted for gradient stops

* Bake backup gradient placement during migration

* Persist pending gradient bakes so unfinished migrations retry on reopen

* Migrate the backup gradient's type and spread method

* Harden the gradient-migration pass against document switches and stale bakes

* Keep the Fill properties UI for layerless and nested Fill nodes

* Leave a wired gradient transform input connected instead of overwriting it

* Refuse to start a gradient chain ahead of existing layer content

* Decode a Fill node's gradient through one shared reader

* Nudge a degenerate bounding box so the Fill gradient transform stays invertible

* Broadcast Fill and Stroke paint with a single attribute-column pass

* Fix Morph stepping the target's stroke in near the source instead of the target

* Tidy conventions: clippy get_first, comment periods, sentence-case test messages

* Reattach the gradient orientation doc to its function

* Re-save demo artwork

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-07-04 23:08:21 +00:00
Keavon Chambers
f82b0a8fca Switch production builds from -Os to -Oz to avoid 25 MB deployment limit (#4309) 2026-07-04 14:25:38 -07:00
Dennis Kobert
540a4ff273 Integrate document-format storage into the editor (#4265)
* Integrate document-format storage into the editor

* Address review feedback: drop redundant clones and dedupe metadata traversal

* Extract DocumentHistory and move storage-metadata tests to their own file

* Extract storage diffing/IO, gate validation and .gdd save behind preferences, restructure tests

* Address PR review: save-format/path consistency, autosave persistence, and view-settings/diff fixes

* Skip storage remount on .gdd open and split value/timestamp drift in attribute diff

* Rename storage tests module and surface .gdd open failures with per-resource diff detail

* Add debug-menu toggle to hide the storage preferences section

* Hopefully fix async tests

* Shorten comments

* Fix tests

* Review

* Review

* Review

* Block on future mesages in tests

* Review

* Shorten comments

---------

Co-authored-by: Timon <me@timon.zip>
2026-07-04 19:27:00 +00:00
Timon
294952e152 Desktop: Use dirty rects for UI texture uploads (#4305) 2026-07-04 16:25:16 +00:00
Keavon Chambers
f05a644bd9 Revamp the syntax to #[hard(a..b)] and #[soft(a..b)] bounds on node definitions (#4307)
* Revamp the syntax to #[hard(a..b)] and #[soft(a..b)] bounds on node definitions

* Address review feedback: error on empty bounds ranges and remove redundant count clamps

* Fix NaN transform from Repeat Array with a count of 1

* Remove redundant manual clamps already enforced by #[hard(...)] bounds
2026-07-03 18:48:58 -07:00
Keavon Chambers
95c1ab81f3 Prep for the RC6 release of the desktop app latest-stable 2026-07-01 04:55:57 -07:00
Keavon Chambers
7ae7bda3d3 Add persistence to the collapsed state of Properties panel node sections (#4300)
* Add persistence to the collapsed state of Properties panel node sections

* Improve comments

* Fix generator node handling with #4299
2026-07-01 04:54:39 -07:00
Keavon Chambers
1648e33c1f Implement dragging to reorder Properties panel node sections (#4299)
* Implement dragging to reorder Properties panel node sections

* Code review
2026-07-01 03:39:52 -07:00
Timon
8a38af5be7 Rework clipboard handling to carry embedded resources across documents (#4296)
* Move clipboard code to its dedicated handler

* Adapt clipboard format to work with resources

* Restore visibility, lock, and collapse state when pasting layers

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2026-07-01 09:31:55 +00:00
Keavon Chambers
7c870d9426 Fix skewed linear gradient layers ignoring the horizontal shear axis in Vello 2026-06-30 21:48:51 -07:00