Commit Graph

1684 Commits

Author SHA1 Message Date
Keavon Chambers
f045b87daf Make the network interface's queries take &self instead of &mut self (#4378)
* Back the outward wires cache with an interior-mutability cell readable through &self

* Convert the remaining network-level caches to interior-mutability TransientCache cells

* Move the owned nodes cache out of persistent layer metadata into a transient cell

* Flatten the transient node type enum into a layer width cell with &self loading

* Back the per-node click targets cache with a TransientCache cell

* Unify the per-input and per-export wire caches into one connector-keyed map

* Flip the click target, position, and stack dependent load chains to &self

* Flip the bounding box, import export position, and port load chains to &self

* Flip the wire geometry and resolved type query families to &self

* Flip the hit testing and frontend click target surface to &self

* Flip the frontend assembly, clipboard copy, and chain validation queries to &self

* Load stack dependents before filtering layer-owned nodes out of a selected-nodes shift
2026-09-15 14:37:28 +02:00
Keavon Chambers
7ec885e7c7 Replace NodeTemplate's parallel node and metadata trees with a single flat recursive shape (#4377)
* Unify NodeTemplate into a single flat recursive shape with from_parts/into_parts as the storage split points

* Unify the three sole-dependent traversals onto one is_sole_dependent kernel

* Scan network exports for resource values when collecting used resources
2026-09-15 14:37:22 +02:00
Keavon Chambers
343969561e Introduce the NetworkView read cursor with typed errors and convert the network queries onto it (#4376)
* Introduce a NetworkView cursor with typed errors and convert the primitive queries to it

* Convert the composite name, selection, and eligibility queries onto NetworkView
2026-09-15 14:37:17 +02:00
Keavon Chambers
4e1426eb67 Make double-clicking a text layer begin editing in shallow select mode, not just deep select mode (#4373) 2026-09-15 14:37:12 +02:00
Keavon Chambers
c616bd2238 Break apart the enormous network_interface.rs into submodules (#4371)
Split the network interface monolith into submodules with no behavior change
2026-09-15 14:37:06 +02:00
Keavon Chambers
faa20bd041 Add additional tests to the network interface (#4370)
* Add a network interface invariant validator and characterization tests as a refactor safety net

* Characterize stack, chain, layer move, signature edit, and preview behaviors in tests

* Sweep network interface invariants after every message in editor tests
2026-09-15 14:36:58 +02:00
Keavon Chambers
3aad7ee8ae Fix assorted node graph correctness bugs and replace network interface panics with logged errors (#4364)
* Deselect deleted layer children by pruning the expanded deletion set from the selection

* Rebuild the document structure on redo to match undo

* Check for cycles in set_input before applying layout side effects rather than reverting after

* Correct the swapped old/new exposure binding names in set_input

* Reload the document structure when an import or export is appended into the first two slots

* Treat toggling preview on a disconnected export as a preview with nothing to restore

* Replace panics on malformed networks with logged errors in the network interface

* Make is_artboard an identity check independent of scene connectivity

* Stop serializing the selection undo and redo history into saved documents

* Run the set_input cycle check before the node-to-node disconnect so a rejected wire swap leaves the graph unchanged
2026-09-15 14:36:50 +02:00
Keavon Chambers
fdadd9cc0d Improve number fields/labels in the UI to filter out floating point noise and truncate at correct precision (#4363)
* Improve the displayed precision of float number labels

* Show actual tiny values in high-precision number fields
2026-09-15 14:36:42 +02:00
Keavon Chambers
dfec7c9e4b New nodes: 'Sign', 'Distance', 'Cross Product', and 'Lerp' (#4361) 2026-09-15 14:36:28 +02:00
Keavon Chambers
4f49c000e8 Rename the nodes 'Length' -> 'Magnitude', 'Flatten Path' -> 'Combine Paths', 'Vec2 Value' -> 'Combine Vec2', and add a new 'Vec2 Value' node (#4349)
* Rename the node 'Length' -> 'Magnitude'

* Rename the node 'Flatten Path' -> 'Combine Paths'

* Replace the node 'Vec2 Value' with 'Combine Vec2' and add a new 'Vec2 Value' that's actually a vec2

* Update demo artwork
2026-09-15 14:35:48 +02:00
Keavon Chambers
20eb5ccb8a New nodes: Sum, Average, Minimum, Maximum, Any, All (#4344)
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2026-09-15 14:35:27 +02:00
Keavon Chambers
04d6c0d5cf Convert the node catalog to rank-polymorphic kernels, materialize stored values as ranked wires, and display wire rank in the graph
Co-authored-by:    Dennis Kobert <dennis@kobert.dev>
2026-09-15 14:35:20 +02:00
Keavon Chambers
83cfd0225a Reshape the node catalog: rename the list access nodes, split Text to Vector, reinstate Upload Texture as a proto node, and delete the vestigial debug nodes 2026-09-15 14:35:15 +02:00
Keavon Chambers
194c3d0a72 Split Fill's optional transform into a has-transform toggle and add the DashPattern and BoxCorners value types 2026-09-15 14:35:10 +02:00
Keavon Chambers
8e233d3229 Add Graphic::None and store paint choices as plain color, gradient, and no-paint values 2026-09-15 14:35:04 +02:00
Keavon Chambers
9dd1e2bdf9 Rename GradientStops to Gradient and the legacy Gradient/Fill structs to LegacyGradient/LegacyFill 2026-09-15 14:34:59 +02:00
Dennis Kobert
362b54dafa Box the largest message and update payloads 2026-09-15 14:34:16 +02:00
Dennis Kobert
5356a9fe7e Sort key mappings and node positions by key 2026-09-15 14:34:10 +02:00
Dennis Kobert
71c15802d0 Drop redundant conversions, assertions and struct updates 2026-09-15 14:34:06 +02:00
Dennis Kobert
de93fa40fb Collapse nested conditionals into let-chains and match guards 2026-09-15 14:33:50 +02:00
Dennis Kobert
3bdec5d005 Fold attribute names through monitors and skip coercing name inputs 2026-09-15 14:33:45 +02:00
Dennis Kobert
9b92edc0e9 Write an attribute under a name the graph supplies
`Named<X>` in parameter position declares where a placeholder's name is
wired, and the macro gives that input constant text; `Attr<Named<X, V>>`
in the return writes under it. The kernel is handed the bare placeholder,
since the name is spent resolving the layout and a folded offset is all
the write needs, so the hot path matches a marker node's exactly.

A name-generic write names its value type through the wired generic,
which only an implementations row resolves, so those nodes emit their
layout meta per row rather than sharing one across rows.

`write_attribute` is the catalog's set half, restoring the identifier
master's documents carry with its input positions. Its name input is a
constant, so those documents resolve without migration, and the reset
marker that stood in for the missing node retires with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-09 09:26:17 +00:00
Dennis Kobert
98cabee4c6 Rebuild stale rasterize subgraphs at document migration 2026-09-08 12:53:02 +00:00
Dennis Kobert
313c591f70 State from_resident's borrow-window contract at its call sites 2026-09-07 16:11:32 +00:00
Dennis Kobert
9f0e0ebc96 Clear the remaining clippy warnings on the diff surface 2026-09-06 16:25:17 +00:00
Dennis Kobert
a911bcc165 Justify the three clippy lints that must stand 2026-09-06 16:24:53 +00:00
Dennis Kobert
fbdba0e545 Drop narration and internal asides from comments 2026-09-06 15:59:41 +00:00
Dennis Kobert
fc9e69a7a7 Spell the elided Graphic and Artboard lifetimes in return paths 2026-09-06 15:48:45 +00:00
Dennis Kobert
1be90ebb4a Delete the orphaned graphic accessor, introspection helper, and fn type macro 2026-09-05 13:11:45 +00:00
Dennis Kobert
39ce55ab61 Convert rasterize to an async record source with an owned merged-layers write 2026-09-05 12:17:06 +00:00
Dennis Kobert
a955d6b458 Run cargo fmt 2026-08-29 18:40:02 +00:00
Dennis Kobert
25f49e8750 Give the graphic types the serving lifetime 2026-08-28 13:30:06 +00:00
Dennis Kobert
f34ec257e7 Normalize lifetime arguments out of registry type names 2026-08-28 13:30:05 +00:00
Dennis Kobert
68a2fb2be3 Render root levels natively and remove the unconstructed stack form 2026-08-27 14:44:19 +00:00
Dennis Kobert
50911a6a25 Recreate introspection data from the monitor's context snapshot 2026-08-27 13:53:25 +00:00
Dennis Kobert
bb3643541d Resolve context features from the registry at compile instead of persisting them 2026-08-25 11:16:56 +00:00
Dennis Kobert
9aef511891 Cargo fmt 2026-08-24 23:15:10 +02:00
Dennis Kobert
d718cdb225 Keep the monitor's whole-extent capture off the record stack 2026-08-24 12:23:32 +00:00
Dennis Kobert
ed6922d7eb Read the layer path in its owned form and retarget the introspection tests 2026-08-24 10:26:24 +00:00
Dennis Kobert
8c67ad508f Restore pre-flip color parity: rng replay, typed wrap, boolean marker paints 2026-08-24 00:43:44 +00:00
Dennis Kobert
2575b94e8f Swap the leveled repeat_radial and repeat_on_points in for the eager variants 2026-08-23 19:50:36 +00:00
Dennis Kobert
c0eb2ee4ff Remove the runtime-named attribute family and its type-erased bridges 2026-08-23 19:05:26 +00:00
Dennis Kobert
511b4da9f5 Convert the raster std and adjustments families to element kernels and keep the unit primary's slot 2026-08-23 16:52:43 +00:00
Dennis Kobert
3126a5b278 Convert copy to points, sample polyline, scatter, spline, jitter, and assign colors 2026-08-22 20:59:37 +00:00
Dennis Kobert
3da7f6cea3 Drop the legacy fill and stroke rows for single-typed paint 2026-08-22 17:29:51 +00:00
Dennis Kobert
39c7ba39cf Lift the artboard element onto a level and migrate demos for smoke tests 2026-08-22 15:01:27 +00:00
Dennis Kobert
6635e0aeff Convert the artboard constructor to an attribute kernel behind a footprint translate 2026-08-22 14:46:29 +00:00
Dennis Kobert
fb71ea426d Bridge legacy seams and convert the transform family 2026-08-22 14:25:31 +00:00
Dennis Kobert
46220ac268 Switch the tagged list values and layer internals onto leveled wires 2026-08-22 12:47:31 +00:00
Dennis Kobert
887dbaca2c Re-home the layer-path stamp and switch the node path to its plain value form 2026-08-22 12:35:48 +00:00