Graphite/node-graph/nodes
Keavon Chambers cb21e5960b
Remove serialization from Table<T> and make TaggedValue only store tooling/widget node inputs (#4129)
* Add TaggedValue::TypeDefault to avoid baking placeholder Tables into saved documents

* Add TaggedValue::TypeDefault to avoid baking placeholder Tables into saved documents

* Migrate empty Vector/Raster/Graphic/Artboard placeholder values to TypeDefault on load

Documents written before the TypeDefault mechanism existed have empty Table<Vector>/<Raster>/<Graphic>/<Artboard> values baked into every unwired exposed input. Walk each migrated node's inputs and rewrite any such placeholder NodeInput::Value into the equivalent NodeInput::type_default, so re-saved documents shed the placeholder payloads. Marked with a TODO for eventual removal once enough documents have been re-saved.

* Re-save demo artwork

* Remove Graphic and Artboard placeholder containers from TaggedValue

* Remove Raster placeholder TaggedValue variant

* Simplify document migration

* Remove Vector placeholder TaggedValue variant

* Remove NodeIdTable from the TaggedValue

* Remove StringTable from the TaggedValue

* Remove F64Table in place of F64Array in TaggedValue

* Replace TaggedValue::Color(Table<Color>) with ::Color(Option<Color>)

* Replace TaggedValue::GradientTable(Table<GradientStops>) with ::Gradient(GradientStops)

* Replace TaggedValue::BrushStrokeTable(Table<BrushStroke>) with ::BrushStrokes(Vec<BrushStroke>)

* Make TaggedValue::DocumentNode runtime-only with TypeDefault placeholder

* Make TaggedValue::ContextFeatures runtime-only

* Remove Serialize/Deserialize from Table<T>

* Add a widget for TaggedValue::BrushStrokes to visualize strokes and samples

* Define a reusable list of TaggedValue::TypeDefault types for its generated methods

* Re-save demo artwork
2026-05-08 16:11:25 -07:00
..
blending Replace the AlphaBlending struct with separate attributes (#4086) 2026-05-01 03:27:42 -07:00
brush Remove serialization from Table<T> and make TaggedValue only store tooling/widget node inputs (#4129) 2026-05-08 16:11:25 -07:00
gcore New nodes: 'Attach Attribute' and 'Read Attribute *' (#4100) 2026-05-05 04:03:41 -07:00
graphic Fix the 'Flatten Vector' node losing child layer transforms for the editor tools (#4116) 2026-05-06 04:35:23 -07:00
gstd Add support for opening multiple selected files from disk (#4128) 2026-05-07 21:21:45 -07:00
math Replace Table<Table<Graphic>> with Table<Artboard> where Artboard is a type boundary newtype (#4093) 2026-05-01 21:57:50 -07:00
path-bool Fix 'Boolean Operation' node outputs having the reversed winding direction (#4091) 2026-05-01 19:23:44 -07:00
raster Remove code for the deprecated and unused Curve type (#4127) 2026-05-07 16:16:19 -07:00
repeat Centralize attribute strings in consts and rename "editor:layer" to "editor:layer_path" (#4076) 2026-04-28 21:53:30 -07:00
text Remove serialization from Table<T> and make TaggedValue only store tooling/widget node inputs (#4129) 2026-05-08 16:11:25 -07:00
transform New nodes: 'Attach Attribute' and 'Read Attribute *' (#4100) 2026-05-05 04:03:41 -07:00
vector New nodes: 'Attach Attribute' and 'Read Attribute *' (#4100) 2026-05-05 04:03:41 -07:00