User:HooglyBoogly/Reports/2021/

December 20 - December 26
This week I mainly worked on cleanups, some performance improvements, a merge by distance node, and code review.

I worked on some performance improvements, and got some good numbers there-- freeing and copying a large node tree is 25 and 7 times faster, and I observed a 4.4x speedup for calculating the bounds of a large mesh.

I'm happy with the progress of the cleanup of the node editor, I removed 8 more bytes of runtime information from both `bNode` and `bNodeSocket`, and removed an extra loop over all nodes and links when drawing the editor.

On Sunday I started a mesh-based implementation of an extrude node-- I just really don't like the idea of adding a `BMesh` round trip just to implement something that should be very fast.

Changes / Features
 * Mesh: Parallelize bounding box calculation
 * Geometry Nodes: Parallelize mesh grid primitive
 * Nodes: Add link drag search support for map range node
 * Nodes: Improve performance when freeing a node tree
 * Nodes: Improve node tree copy performance
 * Docs: Add to and cleanup attribute API docs
 * : Geometry Nodes: Basic point cloud merge by distance node

Bug Fixes
 * Fix T94232: No selection with set material node empty material list
 * Fix: Potential use after scope in curve to mesh node
 * Fix: Missing update when toggling node mute
 * Fix: Wrong node link drag search menu items for attribute statistic
 * Fix T94357: Node Ungroup operator copies current node tree
 * Fix: Curve trim node test failure
 * Fix T94344: Incorrect size for edge vertices node output
 * Fix: Extra space at the front of "Sample Curve" node name
 * : Fix T94334: Area close operator crash in 3D view menu

Cleanup
 * Cleanup: Remove spline add_point method, refactor mesh to curve node ,
 * Cleanup: Avoid adding points to splines sequentially
 * Nodes: Refactor to remove node and socket "new" pointers
 * Cleanup: Use simpler loops in weld modifier
 * Cleanup: Move customdata.c to C++
 * Cleanup: Move hair object type files to C++
 * Cleanup: Use vector instead of linked list
 * Cleanup: Remove unused UI button definition functions
 * Cleanup: Remove misleading comments
 * Cleanup: Remove outdated comment
 * Cleanup: Use more common variable name
 * Cleanup: Use consistent order for custom data mesh masks
 * Cleanup: Use span instead of raw pointer
 * Cleanup: Remove unused arguments
 * Cleanup: Comment formatting in node.cc
 * Cleanup: Clang tidy, restore alphabetical sorting
 * Cleanup: Remove mesh valid assertions in debug builds
 * Cleanup: Remove unused node type flag
 * Cleanup: Return early

Review
 * `Requested changes` : Geometry Nodes: Accumulate Function Node
 * `Requested changes` : Geometry Nodes: Add Integer Mode to Attribute Statistics
 * `Accepted, committed` : Fix T94144: Duplicate edges in dual mesh node
 * `Requested changes` : Fix T94113: Local view + Geometry Nodes is broken for instances
 * `Requested changes` : USD Preview Surface material export.
 * `Accepted, committed` : Fix assert conditions in NURBSpline::knots method

Tracker
 * Investigated: 11
 * Resolved: 4
 * Archived: 3
 * Confirmed: 4
 * Known Issue: 1

Next Week

(Like I said last week) I'll try to finish up the merge by distance node. Also on the list are making progress on a rotation data type, working a bit on the named attribute nodes, and hopefully finishing up this extrude node that I started, at least an initial version anyway.

December 13 - December 19
This week I committed the link drag search patch I've been working on for a few weeks, worked on some other smaller patches, and started cleaning up the weld modifier in order to use it in a merge by distance node soon. I also did a fair amount of bug triaging and code review, and worked on a few performance improvements.

Changes / Features
 * UI: String Search: Add an optional weight parameter
 * Geometry Nodes: Support point clouds in the set material node
 * Geometry Nodes: Add a note about the nested instancing limit
 * Geometry Nodes: Add vector map range node tests
 * : Mesh: Parallelize bounding box calculation (WIP)
 * : Geometry Nodes: Support instances in the delete geometry node
 * : Spreadsheet: Add material column for meshes
 * : Geometry Nodes: Remove "normal" from the spreadsheet
 * : Geometry Nodes: Parallelize mesh grid node
 * : Geometry Nodes: Support warnings from field inputs (WIP)

Bug Fixes
 * Fix various cases of incorrect filtering in node link drag search
 * Fix: Crash in nodes modifier with missing node group
 * Fix T94173: Missing update for frame node size
 * Fix T93920: Wrong field inferencing state with unavailable socket
 * Fix T94082: Curve to point empty evaluated NURBS crash
 * Fix: Build error from missing include

Cleanup
 * Refactor: Simplify spreadsheet handling of cell values
 * Cleanup: Remove runtime uiBlock pointer from nodes
 * Cleanup: Move weld modifier to C++
 * Cleanup: Simplify node group input and output socket verification
 * Cleanup: Remove no-op node preview function calls
 * Cleanup: Use signed integers in the weld modifier
 * Cleanup: Move curve.c to C++
 * Cleanup: Simplify logic in set material node
 * Cleanup: Use const arguments, references
 * Cleanup: Remove more no-op node preview code
 * Cleanup: Remove more texture nodes preview handling
 * Cleanup: Const arguments, remove unused argument

Review
 * `Accepted` : Geometry Nodes: Support instance attributes when realizing instances.
 * `Accepted` : Nodes: Refactor node tree update handling.
 * `Requested changes` : Accurate NURBS circle and sphere
 * `Requested changes, accepted` : Geometry Nodes: Add Selection Input to Attribute Statistics Node
 * `Commented` : Geometry Nodes: Selection Expand / Contract
 * `Accepted, committed` : UI: Fix nodes sockets alignment
 * `Accepted, committed` : Remove CU_CARDINAL and CU_BSPLINE from code base
 * `Commented` : Fix T94078: Wrong Bound Box calculated for curves
 * `Requested changes` : Geometry Nodes: Segment Length Node
 * `Requested changes, accepted` : Fix T94144: Duplicate edges in dual mesh node
 * `Updated` : Remove node->offsetx/offsety [WIP]
 * `Accepted` : Nodes: Add Vector Map Range node
 * `Commented` : Geometry Nodes: Add Integer Mode to Attribute Statistics
 * `Accepted` : AssetsBrowser: Add ID Properties to Asset Indexer
 * `Accepted` : Nodes: Begin splitting composite node buttons into individual files
 * `Requested changes` : Address Multifunction API warnings
 * `Commented` : Geometry Nodes: Transpose Splines Node
 * `Commented` : Nodes: Pointer from socket to node for faster lookups
 * `Accepted` : Geometry Nodes: Simplify using selection when evaluating field.
 * `Accepted` : Fix assert conditions in NURBSpline::knots method
 * `Accepted` : Fix T94162: Incorrect handling when there are multiple group outputs.
 * `Commented` : Geometry Nodes: Add Is Empty Node
 * `Accepted` : Fix T93975: Add more nested instance limit checks.
 * `Accepted` : Fix T86200: Properties editor rearranges columns poorly when very wide
 * `Commented` : Paint2D: Performance

Tracker
 * Investigated: 29
 * Needs Information: 3
 * Resolved: 3
 * Archived: 11
 * Confirmed: 3

Next Week

I'll try to finish up a merge by distance node, do more code review of geometry nodes features, and finish up some of the small projects I started towards the end of this week (the patches at the bottom of the "Changes / Features" section. I'd also like to work on a rotation or 2D vector data type, and update the named attribute nodes patch.

December 6 - December 12
This week I mostly focussed on code review, finishing up the node link drag search menu, and cleanup. I was travelling on Wednesday, but I decided to start some cleanup of runtime values in node DNA and other various node editor code improvements, which I continued a bit later in the week.

I also spent a bit of time working on my refactor of mesh vertex normals.

And as usual, a couple of tasks I made this week:
 * : Move GeometrySet and CurveEval to blender::bke namespace
 * : Convert Triangulate node input to a selection

Changes / Features
 * Geometry Nodes: Remove unnecessary copy when replacing data

Bug Fixes
 * Fix T93521: Single point NURBS crash in resample node
 * Revert recent changes to ImBuf transform
 * Fix: Attempt to fix build error on macOS
 * Fix: Compile error in field input

Cleanup
 * Docs: Add more comments to geometry set header
 * Docs: Add comments to Mesh header, rearrange fields
 * Docs: Add comment to spline lookup factor method
 * Docs: Extend a few comments in BKE_spline.hh
 * Cleanup: Remove includes in node_util.h header
 * Cleanup: Remove unnecessary generic includes from headers
 * Cleanup: Remove unused includes
 * Cleanup: Use const arguments
 * Cleanup: Use const argument, rename variables
 * Cleanup: Use C++ types for multi input socket sorting
 * Cleanup: Use float2 for node view functions
 * Cleanup: Add macro and functions for node storage
 * Cleanup: Point cloud vs point-cloud in comments
 * Cleanup: Return early in null check ,
 * Cleanup: Remove unused node flag
 * Cleanup: Fix warnings about copied Map loop variables
 * : Nodes: Refactor to remove node and socket "new" pointers (WIP)
 * : Cleanup: Simplify node group input and output socket verification
 * : Cleanup: Remove runtime uiBlock pointer from nodes
 * : Node Editor: Refactor node tree drawing, avoid runtime data in DNA (WIP)
 * : Cleanup: Remove unused "init" node tree flag

Review
 * `Requested changes` : Nodes: Refactor node tree update handling
 * `Requested changes, accepted` : Geometry Nodes: Support instance attributes when realizing instances
 * `Requested changes` : Geometry Nodes: Add Curve Curvature Node
 * `Requested changes` : AssetsBrowser: Add ID Properties to Asset Indexer
 * `Accepted` : Geometry Nodes: Move up destruct instructions in procedure
 * `Requested changes, accepted` : Geometry Nodes: Mesh Island Field Input Node
 * `Accepted, committed` : Fix T93591: Make 'Random Value' node in Integer mode spit out evenly distributed numbers
 * `Requested changes` : Set Spline Type node - better conversion from NURBS to Bezier
 * `Commented` : Curves: Curve Pen
 * `Commented` : Geometry Nodes: Add Random Spherical Distribution node
 * `Accepted` : Geometry Nodes: Reduce code duplication with new GeometryFieldInput.
 * `Commented` : Geometry Nodes: Add HSVA separate and combine nodes
 * `Accepted` : UI: Add curve handle buttons to CurveMap interface
 * `Requested changes` : UI: Fix nodes sockets alignment
 * `Accepted` : Geometry Nodes: Scene Time Input Node
 * `Accepted` : Geometry Nodes: New Geometry to Instance node.
 * `Commented` : UI: Separate Snap option for 3d viewport, UV edit and Node editors
 * `Commented` : Shader Nodes: Convert bump node to use new socket builder
 * `Commented` : UI: Individualize option to use snap by space type
 * `Commented` : UX: Prevent click-through panels and used header area
 * `Commented` : Nodes: Begin splitting composite node buttons into individual files
 * `Abandoned` : Geometry Nodes: Mesh Auto Smooth
 * `Accepted` : Fix T93728: Greasepencil separate will loose all vertex groups
 * `Accepted` : Fix T93611: Curve modifier crash in editmode in certain situations
 * `Commented` : Allocator: Simplify using guarded allocator from c++.
 * `Commented` : Expose the "mute" property of the node on sidebar in Node Editor

Tracker
 * Investigated: 15
 * Needs Information: 1
 * Resolved: 2
 * Archived: 6
 * Confirmed: 2
 * Duplicate: 4
 * Known Issue: 1

Next Week

Hopefully I can land the link drag search menu after finishing responding to the feedback, and start on something like finishing up a couple of the procedural modeling nodes.

November 29 - December 5
This week was mostly about work on the node link drag search menu from last week. At the end of the week, that work turned into some more significant cleanup of node editor files. I made a good start there, but there are so many possible cleanups (and O(N^2) algorithms to fix!).

I also did some bug fixing/triaging and code review. And here are two new tasks I made:
 * : Convert Mesh vertex data into float3
 * : Flip Mesh Faces Node

Changes / Features
 * Geometry Nodes: Propagate attributes in Instances to Points node
 * UI: Add an option to display the node editor context path
 * : Geometry Nodes: Use mutable input for the resample curve node
 * : Geometry Nodes: Add Factor and Size to Index Input

Bug Fixes
 * Fix T93525: Crash with curve/text armature bone gizmo
 * Fix T84710: Instances with only mesh edges or vertices are invisible
 * Fix: Missing handling of dynamic instance attribute size
 * Fix: Instances component does not copy attributes
 * Fix: Remove incorrect asserts for empty attributes
 * Fix: Add tooltip translation marker to disabled hints
 * Fix: Updating geometry nodes test results fails
 * Fix: Missing min value for set spline resolution node

Cleanup
 * Cleanup: Use references in node editor, other improvements
 * Cleanup: Store instances id attribute with other attributes
 * Cleanup: Remove unnecessary node type callbacks for drawing
 * Cleanup: Remove unnecesary node type draw callback
 * Cleanup: Const, use references, C++ types
 * Cleanup: Remove unused next and prev pointers in bNodeType
 * Cleanup: Rename curve struct fields
 * Cleanup: Move public docs to BKE_spline.hh header
 * Cleanup: Use typed enum for node resize direction
 * Cleanup: Avoid using C++ keyword as variable name
 * Cleanup: Comments and ordering in node editor header
 * Cleanup: Use LISTBASE_FOREACH macro
 * Cleanup: Remove unused code
 * Cleanup: Move node_shader_util.c to C++
 * : Cleanup/Docs: Add comments to Mesh header, rearrange fields

Review
 * `Requested changes, accepted` : Geometry Nodes: Dual Mesh node
 * `Requested changes` : Curves: Curve Pen
 * `Requested changes, accepted` : Geometry Nodes: 4 Mesh Data Input Nodes
 * `Accepted, committed` : UI: Fix scaling of HSV cursor when zooming
 * `Accepted` : Shader Nodes: Declare nodes in their own namespace
 * `Accepted` : Geometry Nodes: Deduplicate join geometry code
 * `Accepted` : Geometry Nodes: Add Domain Size Node
 * `Requested changes, accepted` : Geometry Nodes: Generalized Compare Node
 * `Accepted` : Geometry Nodes: Propagate attributes in Instance on Points node
 * `Commented` : Geometry Nodes: Add HSVA separate and combine nodes
 * `Accepted, committed` : Fix Group Output nodes having different padding from Group Input nodes
 * `Commented` : UI: Don't use different active color for icons without an emboss
 * `Commented` : Nodes: Declare compositor nodes in their own namespace
 * `Commented` : Node editors: Add overlays for grid and breadcrumbs
 * `Abandoned` : "Mesh Info" and "Point Cloud Info" Geometry Nodes

Tracker
 * Investigated: 17
 * Resolved: 2
 * Archived: 6
 * Confirmed: 2
 * Duplicate: 5
 * Known Issue: 1

Next Week

I'll finish up the link drag search menu, do some other smaller tasks, and hopefully get started on another larger task.

November 22 - November 24
A short week because of the Thanksgiving holidays. I still made some nice progress with the node link drag search menu. It has some issues still but it's looking much closer to finished.



Apart from that, I spent time reviewing patches, mostly from Jacques and Johnny. I also got the mesh vertex normal refactor to a point where code review comes next.

Changes / Features
 * Tests: Add simple test for geometry nodes writing to vertex group
 * Tests: Add test for corner domain attribute transfer in delete geometry node

Bug Fixes
 * Fix T92120 (partially): No bone custom shape with curve object meshes
 * Fix T93250: Crash in spreadsheet tree view after recent commit
 * : Fix: Missing handling of dynamic instance attribute size

Cleanup
 * Cleanup: Deduplicate instances component in spreadsheet
 * Cleanup: Simplify geometry node function names
 * Cleanup: Else after return, other simplifications
 * Geometry Nodes: Rename legacy node files

Review
 * `Accepted` : Geometry Nodes: Add utility to set remaining outputs
 * `Accepted, edited, committed` : Updated Addon Themes for Spreadsheet Workspace
 * `Requested changes` : Geometry Nodes: Generalized Compare Node
 * `Requested changes, accepted` : Geometry Nodes: Show node execution time
 * `Requested changes, accepted` : Geometry Nodes: Use `ValueOrField` type in geometry nodes evaluator.
 * `Accepted` : Geometry Nodes: Fix logging socket value to group input socket
 * `Requested changes` : Initial modifications allowing Text object (OB_FONT) boolean targets
 * `Requested changes` : Geometry Nodes: Add Attribute Domain Size Node
 * `Accepted` : Geometry Nodes: Fix attribute propagation in Delete Geometry node
 * `Accepted` : Fix T90808: Undo curve selection recalculates boundbox based on curve data
 * `Accepted, committed` : Fix T92631: Fix regression with negative thickness in complex solidify
 * `Requested changes` : Geometry Nodes: 4 Mesh Data Input Nodes
 * `Requested changes` : Geometry Nodes: Add Arc Mode to Circle Node
 * `Requested changes` : Geometry Nodes: Add Spline Point Count to Spline Length Node
 * `Requested changes, accepted` : Geometry Nodes: Change Curve Parameter to Spline Parameter & add Index
 * `Accepted` : Geometry Nodes: Decouple Delete Geometry node from Mask modifier
 * `Accepted` : Fix T93231: Crash when overwriting vertex group with other domain
 * `Accepted` : Fix T93090: Crash with data transfer modifier and geometry nodes.
 * `Accepted` : Fix T93296: Raycast node uses wrong domain for face corner attributes
 * `Accepted` : Geometry Nodes: Add file namespaces.
 * `Accepted` : Fix T93362: Crash when capturing attribute after fillet curve node
 * `Accepted` : Fix T92654: Missing padding in spreadsheet cells.
 * `Accepted` : Fix: Const warning in editmesh_knife.c
 * `Accepted` : Fix (unreported) broken handling of constraints reordering with liboverride.
 * `Accepted` : CurveEval: Add Point Size and Total Length functions
 * `Accepted` : GPencil: New Shrinkwrap modifier
 * `Accepted` : Geometry Nodes: Add utility to show debug messages in node editor
 * `Commented` : BLF WIP: Outlines from FontBLF
 * `Closed` : Fix T93159: Particles don't emit text

Tracker
 * Investigated: 10
 * Resolved: 2
 * Archived: 3
 * Needs Information: 1

Next Week

I have a normal full week next week. I'll do code review and look into making more significant progress on our 3.1 targets, especially continuing work on the link drag search menu.

November 15 - November 21
I didn't finish much of anything this week, except for some cleanup. I made progress on lots of things, but I'm definitely spread out a bit too much right now. And there's still a lot of time dedicated to bug-fixing, though maybe that's slowing down now.

I didn't expect to work on this, but I revived the patch for a search menu when dragging a node link to empty space: It's been a while since I tested that out. I really like it!. It should be a huge usability improvement.

I also created/responded to some new tasks:
 * : Geometry Nodes 3.1 Targets
 * : Scene time input node
 * : Refactor Spline Attribute Storage
 * : Bezier Splines: Support different interpolation options
 * : Tangent normal calculation mode for curves
 * : Auto Smooth and Geometry Nodes

Changes / Features
 * Geometry Nodes: Small improvements to object info node
 * Spreadsheet: Support instances component viewer node columns
 * : Geometry Nodes: Add three more tests for the cube primitive
 * : UI: Add an option to display the node editor context path

Bug Fixes
 * Fix T92857: Deadlock in geometry nodes curve multi-threading
 * Fix T92682: EEVEE motion blur crash with curve objects
 * Fix T93085: Incorrect geometry nodes modifier warning
 * Fix T93256: Instances to points node broken after recent commit
 * Fix: Use the instances domain in instance transform nodes
 * Fix: Exception in tree view code in new case
 * : Fix T93250: Crash in spreadsheet tree view after recent commit

Cleanup
 * Refactor: Port spreadsheet data set to UI tree view
 * Cleanup: Simplify node editor link dragging storage
 * Cleanup: Use vector instead of linked list
 * Cleanup: Simplify declarations in C++ header
 * Cleanup: Use canonical variable name
 * Cleanup: Move menu search template to C++
 * Cleanup: Use const arguments
 * Cleanup: Use C++ matrix identity constructor
 * Cleanup: Else after return
 * Cleanup: Use bool instead of int

Review
 * `Accepted` : Geometry Nodes: Refactor virtual array system.
 * `Requested changes` : Geometry Nodes: Add Random Spherical Distribution node
 * `Requested changes` : Geometry Nodes: Show node execution time
 * `Requested changes` : Geometry Nodes: Dual Mesh node
 * `Accepted` : Geometry Nodes: Support custom instance attributes
 * `Accepted` : UI: Use a map for block name lookups
 * `Accepted` : Geometry Nodes: Optimize Cube primitive vertex calculation
 * `Commented` : Fix T90808: Undo curve selection recalculates boundbox based on curve data
 * `Commented` : Geometry Nodes: Generalized Compare Node
 * `Commented` : Geometry Nodes: Expand Spline Length and Curve Length
 * `Accepted` : Node Editor: Skip drawing sockets if zoom is small
 * `Accepted` : Node Editor: Change minimum zoom
 * `Accepted` : Fix T93184: Link color not used for custom sockets
 * `Accepted` : Nodes: Add bf_nodes_geometry library
 * `Accepted, committed` : Fix: Incorrect socket identifier versioning.
 * `Requested changes` : Geometry Nodes: Finish off Distribute Points in Volume
 * `Requested changes` : Geometry Nodes: Add Easing Function Node
 * `Accepted, committed` : Fix time node using "Sta" instead of "Start"
 * `Commented` : "Mesh Info" and "Point Cloud Info" Geometry Nodes
 * `Accepted` : Fix: Error when materializing curve point attribute.
 * `Accepted` : GPencil: Add randomize options to Length modifier
 * `Accepted` : Fix Group Output nodes having different padding from Group Input nodes
 * `Commented` : UI: Fix disconnected and non-clickable checkbox labels in popovers

Tracker
 * Investigated: 16
 * Resolved: 3
 * Archived: 7
 * Duplicate: 1
 * Needs Information: 1

Next Week

Next week will be pretty short for me, since it's the Thanksgiving holiday here. Hopefully I can still get a few things finished though. Anything to narrow down the list of possibilities at this point, there's just so much!

November 8 - November 12
This was a four day week, since I took most of Monday off. Even though I didn't really expect to, I spent most of the week triaging and fixing bugs. We also had some good design discussions though, including a bit of discussion about the simulations topic. Generally that's a relatively difficult thing to discuss though. Some tasks that came out of those discussions:
 * : Add rotation data type
 * : Single Point Node (Design)
 * : Automated performance benchmarks for geometry nodes/modifiers
 * : Refactor the spreadsheet data set region to use the abstract tree view API
 * : Display the execution time of nodes

Other than that, I spend more time working on various refactors-- mesh normals, C++ conversions, and the spreadsheet.

I also spent some more time on the manual, and added a page to describe fields at a high level: https://docs.blender.org/manual/en/3.0/modeling/geometry_nodes/fields.html

Changes / Features
 * Viewport: Remove different outline color for instances
 * Geometry Nodes: Clarify modifier node group errors

Bug Fixes
 * Fix T91826: Inconsistent node socket name identifier separator
 * Fix T92636: Vector math node link disconnects when loading old file
 * Revert "Fix T92636: Vector math node link disconnects when loading old file" (3.1)
 * Fix T89313: Attribute search crash with animation playback
 * Fix: Incorrect transfer attribute error message with curves
 * Fix: Hide selection value in resample curve node, fix order
 * Fix: Incorrect modifier warning with non-geometry input first
 * Fix: Incorrect translation search for modifier error messages
 * : Fix T87335: Object material slots do not work with new geometry (WIP)
 * : Fix T84710: Instances with only mesh edges or vertices are invisible
 * : Fix: Exception in tree view code in new case

Cleanup
 * Cleanup: Move interface_region_search.c to C++
 * Cleanup: Move info_stats.c to C++
 * Cleanup: Move remaning node editor files to C++
 * Cleanup: Use bool instead of int
 * Cleanup: Improve comment
 * : Refactor: Port spreadsheet data set to UI tree view

Review
 * `Accepted` : Fix T92908: Print warning when instance recursion limit is reached.
 * `Accepted` : Fix T92928: Geometry nodes animation decorator wrong for vectors
 * `Accepted` : Fix: Attribute Transfer node does not work with a single index.
 * `Requested changes` : Geometry Nodes: Support custom instance attributes
 * `Requested changes` : Fix T92313: Adjust header to the center
 * `Accepted, committed` : Prevent use of uninitialized memory when constructing bezier spline.
 * `Accepted, committed` : Update Minimal Dark community theme for node editor changes
 * `Accepted, committed` : Updated Blender Light Theme for Spreadsheet Workspace
 * `Accepted, committed` UI: Update Minimal Dark community theme for node editor changes
 * `Accepted` : Geometry Nodes: Add Points Selection Output to Star
 * `Requested changes` : Geometry Nodes: Merge by Distance (Modifier port)
 * `Commented` : UI: Add frame range theme options
 * `Closed` : LineArt Icon patch.

Tracker
 * Investigated: 28
 * Resolved: 14
 * Archived: 5
 * Duplicate: 2
 * Known Issue: 2
 * Needs Information: 1

Next Week

Hopefully there will be fewer bugs and I can make some more progress towards the larger 3.1 goals. I'd like to make some good headway for patch review too.

November 1 - November 7
I spent the majority of the week working on bug fixes. It turns out having Nodevember during Bcon3 has been very helpful for uncovering bugs-- we made a lot of progress. There are still more to finish fixing, but I don't think there will be many other big ones.

I also spent a fair amount of time on code review, and made some design tasks. The first one is particularly important I think.
 * : How to deal with multiple volume grids in a geometry
 * : Add options to realize instances node
 * : More general "Compare" node
 * : 2D Vector Socket Type

Also, I can't see commits to the 3.0 manual branch on Phabricator, but I spent plenty of time checking on the documentation, making some final changes and additions. I still have a couple of things I think should be added there though.

Changes / Features
 * Geometry Nodes: Support volumes in the set material node
 * Spreadsheet: Display geometry volume component grids

Bug Fixes
 * Fix T92815: Incorrect handling of evaluated meshes from curves
 * Fix T92652: Joining curves breaks point attribute order
 * Fix T92848: Crash when joining curves with spline domain attributes
 * Fix T92850: Curve to mesh incorrect for single point profiles
 * Fix T92662: Curve to mesh start cap invalid topology
 * Fix T92532: Missing null checks in IDPropertyManager.update_from
 * Fix T92316: Inconsistent name for Set Curve Tilt node
 * Fix T92640: Crash with instance input to reverse curve node
 * Fix: Startup file geometry nodes viewport inconsistent orientation
 * Fix T92812: Startup has "Standard" View Transform Instead of "Filmic"
 * Fix part of T89313: Attribute search crash during animation playback
 * : Viewport: Remove different outline color for instances
 * : Fix: Add tooltip translation marker to disabled hints

Cleanup
 * Cleanup: Improve curve point attribute assert
 * Cleanup: Add function to get attribute ID from custom data layer
 * Cleanup: Decrease variable scope, rename functions
 * Cleanup: Grammar in comments
 * Cleanup: Clang tidy

Review
 * `Requested changes` : Curves: Curve Pen
 * `Requested changes` : Geometry Nodes: Dual Mesh node
 * `Requested changes, accepted` : Geometry Nodes: Selection outputs for cone and cylinder.
 * `Accepted, committed` : Add node tooltips to Geometry Nodes primitives
 * `Accepted` : Fix T91862: Do type conversion when data enters or exists node group.
 * `Requested changes, accepted` : UI: Improve scaling of widgets when zooming
 * `Requested changes` : Geometry Nodes: Add Points Selection Output to Star
 * `Requested changes` : Geometry Nodes: Relative Handle Position Mode
 * `Requested changes` : Updated Addon Themes for Spreadsheet Workspace
 * `Requested changes` : Prevent use of uninitialized memory when constructing bezier spline.
 * `Accepted` : UI: Use socket type info color to draw links
 * `Requested changes, accepted` : Geometry Nodes: Add Selection Input to Resample Curves Node
 * `Requested changes, accepted` : Cleanup: Move object.c to C++
 * `Commented` : Add tooltips to MixRGB modes
 * `Commented` : Geometry Nodes: Add Easing Function Node
 * `Commented` : Fix T89709: Avoid double node links after delete and reconnect
 * `Accepted` : Geometry Nodes: Add Length to Curve Parameter Node
 * `Accepted` : Fix: Make sure geometry set owns mesh before taking ownership.
 * `Accepted` : Fix T92864: Curve object does not sync correctly in cycles.
 * `Accepted` : Cleanup: Move mesh.c to C++
 * `Accepted` : Include node name for socket animation channel UI
 * `Accepted` : Nodes: Add default link socket to socket declaration.
 * `Accepted, committed` : Fix: Tool icon jittering in some cases
 * `Accepted` : UI: Error in UI_GetThemeColorBlendShade4fv function when calculating Alpha
 * `Committed` : UI: Update Minimal Dark community theme
 * `Commented` : Add jump to top and bottom operator in view panning
 * `Commented` : Fix: Viewport stats not fully working for Geometry Nodes
 * `Commented` : Fix T92815: Wrong curve rendering in cycles (WIP).
 * `Commented` : VSE: Remove separator lines between rows
 * `Commented` : Text Editor: Auto close relevant characters

Tracker
 * Reported : Cycles: Curve object evaluated mesh does not update
 * Investigated: 29
 * Resolved: 10
 * Archived: 9
 * Duplicate: 2
 * Known Issue: 1

Next Week

I'd like to finish fixing the last of this set of bugs and start making some progress on the other new tasks. I also want to get my refactor of mesh vertex normals storage closer to finished.

October 25 - October 31
This week I almost finished the documentation for the changes to geometry nodes in 3.0, I worked on the final changes we wanted to complete before Bcon3, fixed some bugs, and did code review.



Changes / Features
 * UI: Improve node editor breadcrumbs display
 * UI: Change node editor grid into a dot grid
 * UI: Improve layout of custom property edit panel
 * Geometry Nodes: Add "Fill Caps" option to curve to mesh node
 * Geometry Nodes: Handle multiple grids in the volume to mesh node
 * Geometry Nodes: Rename geometry sockets to add hints about supported types ,
 * Geometry Nodes: Get and set nodes for ID attribute
 * Geometry Nodes: Only create instance IDs when they exist
 * Geometry Nodes: Show hint in empty output attributes panel
 * UI: Hide labels for subdivision surface node enums
 * UI: Make the mesh to volume node slightly narrower
 * Nodes: Add translation markers to new socket names and descriptions
 * Geometry Nodes: Support instances in the remove attribute node
 * Documentation
 * Geometry Nodes: Complete curve nodes documentation
 * Geometry Nodes: Complete documentation in text category
 * Geometry Nodes: Set Position node
 * Add more geometry nodes stub files, started page for capture attribute
 * Geometry Nodes: Separate components and realize instances nodes
 * Geometry Nodes: Complete geometry proximity page with examples
 * Add back note about id to distribute points on faces
 * Geometry Nodes: Add "Fill Caps" option to curve to mesh node
 * Geometry Nodes: Fields version of the raycast node
 * Geometry Nodes: Get and set nodes for ID attribute
 * Small improvements to wording in transform node
 * Fix typo in curve tangent node, add more detail
 * : Geometry Nodes: Support volumes in the set material node
 * : Spreadsheet: Support geometry volume component
 * : Geometry Nodes: Support volumes in the join geometry node

Bug Fixes
 * Fix T92552: Spline evaluation with all points at the origin
 * Fix: Realize instances versioning fails for curve to mesh node
 * Fix: Show "new" attribute name typed in nodes modifier input search
 * Fix: Incorrect component type warning in points to volume node
 * Fix: Show node editor dot grid when there is no node tree
 * Fix: Assert on startup from incorrect float property min
 * Fix: Inverted normal for one curve to mesh cap
 * Fix: Typo in texture nodes documentation
 * : Fix T92120: Bone custom shape does not work with curve object meshes
 * : Fix T92532: Missing null checks in IDPropertyManager.update_from

Cleanup
 * Cleanup: Simplify logic for adding grid in points to volume node
 * Cleanup: Restore alphabetical order
 * Cleanup: Remove unused functions, make functions static

Review
 * `Requested changes` : Geometry Nodes: Refactor virtual array system (WIP).
 * `Accepted` : Fix T92256: Rotate Instances node does not take scaling into account correctly.
 * `Accepted` : Geometry Nodes: Support viewing field values in spreadsheet.
 * `Requested changes` : AssetsBrowser: Add ID Properties to Asset Indexer
 * `Requested changes` : Geometry Nodes: Add Length to Curve Parameter Node
 * `Requested changes` : Add node tooltips to Geometry Nodes primitives
 * `Accepted` : Geometry Nodes: Remove reference to anonymous attributes in socket inspection.
 * `Requested changes` : Geometry Nodes: Add Easing Function Node
 * `Requested changes` : Geometry Nodes: Add Random Spherical Distribution node
 * `Requested changes` : Geometry Nodes: Field Reverse Node
 * `Accepted` : Fix T92427: Adding nodes does no edge-scrolling
 * `Accepted` : Geometry Nodes: Component type warning system.
 * `Accepted` : Geometry Nodes: Relative Handle Position Mode
 * `Accepted` : Geometry Nodes: Do cache invalidation after writing attributes.
 * `Accepted, committed` : UI: Improve socket icon scaling in the node group input / output list
 * `Commented` : Geometry Nodes: Curve Auto-Cyclic
 * `Commented` : Geometry Nodes: Index Offset Node
 * `Accepted` : Updates Blender manual to have clearer descriptions of Geometry Nodes
 * `Accepted` : UI: Use flat colors for NLA strip drawing
 * `Accepted` : Geometry Nodes: Add Image to Switch Node
 * `Accepted` : Fix T92494: Node Editor dot grid not respecting display resolution scale
 * `Accepted` : Update images for: Distribute Points on Faces, Value to String, Slice String

Tracker
 * Investigated: 13
 * Resolved: 2
 * Archived: 8

Next Week

Start planning for the next things we want to prioritize in 3.1 and beyond, bug fixing, and code review.

October 18 - October 24
This week I continued working on the final setps of the transition to geometry nodes fields for 3.0. At the end of the week there is still more work to do, but we're very close. At this point I'm definitely looking forward to finishing the fields changes and working on something new!





Changes / Features
 * Geometry Nodes: Fields version of the raycast node
 * Geometry Nodes: Update bounding box to work on individual instances
 * Geometry Nodes: Attribute search in the modifier
 * Geometry Nodes: Remove repeated instance attribute names in search
 * Geometry Nodes: Make Random ID a builtin attribute, remove sockets
 * Geometry Nodes: Fields version of Curve to Points node
 * Geometry Nodes: De-duplicate index input nodes during evaluation
 * Geometry Nodes: Remove implicit realizing and conversion ,
 * Geometry Nodes: Optimize curve builtin attribute exists check
 * BLI: Support removing keys from a set during iteration
 * Documentation
 * Geometry Nodes: Add documentation for the remaining curve nodes
 * Update collection info node documentation
 * Update the rest of the geometry nodes input nodes
 * Add a note about instances to the convex hull node page
 * Cleanup: Improve wording of separate components note
 * UI: Turn on overlays by default in new node editors
 * : Geometry Nodes: Add "Fill Caps" option to curve to mesh node
 * : Geometry Nodes: Replace color separate and combine nodes

Bug Fixes
 * Fix: Support swapped inputs properly in trim curve node
 * Fix: Cyclic single point bezier splines have multiple evaluated points
 * Fix T92369: Raycast node crash with no target attribute
 * Fix T92345: Crash with only pointcloud in attribute transfer node
 * Fix: Assert using selection in instances to points node
 * Fix: Add missing TBB define to geometry module
 * Fix: Curve trim crash on splines with no edges
 * Fix: Assert for unused field evaluator in resample curve node
 * Fix: Empty geometry nodes input menu with legacy nodes enabled
 * Fix: Builtin curve attributes unavailable
 * Fix: Display color sockets without labels correctly
 * Fix T92354: Missing raycast node in geometry nodes add menu
 * Fix: Empty id attribute on curve control points
 * Fix: Double calculation of UVs in cone primitive
 * Fix: Crash when retrieving output "id" attribute
 * Small fixes to manual

Cleanup
 * Cleanup: Remove unused function
 * Cleanup: Use common define for menu separator arrow
 * Cleanup: Add check whether to remove an anonymous atttribute
 * Cleanup: Use simpler method to create attribute lookups
 * Cleanup: Rearrange code, rename function
 * Cleanup: Remove unnecessary constructor argument

Review
 * `Requested changes` : Nodes: Support updating socket availability and labels in declaration.
 * `Requested changes` : Geometry Nodes: Support viewing field values in spreadsheet.
 * `Accepted, committed` : Geometry Nodes: Instances to points
 * `Accepted` : Geometry Nodes: Add Image Texture node
 * `Accepted` : Node Editor: Introduce color overlay and dashed wires theme setting
 * `Accepted, committed` : Geometry Nodes: "Replace String" node
 * `Accepted` : Fix T92371: Move AZONE_REGION When Overlapped
 * `Accepted, committed` : warnings for inputs with instances in Geometry Proximity and Sample Curve geometry nodes
 * `Accepted, committed` : Fix for T91979: Make String Length Output not a field
 * `Accepted` : Geometry Nodes: Insert Instances in Name Order
 * `Requested changes` : Geometry Nodes: Relative Handle Position Mode
 * `Requested changes` : Geometry Nodes: 2D PolyLine/Bezier Boolean [WIP]
 * `Requested changes` : Geometry Nodes: Trim Curves with Cyclic Curves
 * `Commented` : Add node tooltips to Geometry Nodes primitives
 * `Requested changes, accepted` {Phab|D12981}}: Manual: Rotate Euler, Align Euler to Vector, Subdivision Surface, Instances to Points
 * `Requested changes` : Geometry Nodes: Add Length to Curve Parameter Node
 * `Requested changes` : Fix: Tool icon jittering in some cases
 * `Commented` : Fix T90808: Undo curve selection recalculates boundbox based on curve data
 * `Commented` : [WIP] UI: Improve scaling of widgets when zooming
 * `Accepted` : Fix panel pinning showing for instanced panels (e.g. FCurve modifiers)
 * `Accepted` : Geometry Nodes: Rename node "String Substring" to "Slice String"
 * `Commented` : Nodes: Add Vector Map Range node
 * `Closed` : Bounding Box around instances (WIP)

Tracker
 * Investigated: 4
 * Resolved: 3
 * Archived: 1

Next Week

I'll finish the final changes and updates for 3.0 in the first half of the week. Then whatever time is left should probably just be dedicated to bug fixing.

October 11 - October 17
This week I continued working on updating nodes for the field changes, started work on documentation, and did code review for those same changes. I also worked with Pablo to finish/review some of the patches for UI style changes.

The transfer attribute node was probably the most exciting thing I committed this week, I really like how it works as a field node.

Other than that, discussion about the named attribute nodes mostly petered out, and I was mostly finishing up patches from last week.

Changes / Features
 * Geometry Nodes: Fields version of edge split node
 * Geometry Nodes: Fields transfer attribute node
 * Geometry Nodes: Field version of mesh to curve node
 * Geometry Nodes: Object info node optional instance output
 * Geometry Nodes: Make attribute capture work on instances
 * Documentation or stubs for 20 nodes, screenshots for all nodes ,
 * Documentation for 10 curve nodes, other fixes
 * Functions: Generic array data structure
 * Geometry Nodes: Order selection inputs after geometry inputs
 * Geometry Nodes: Create empty components less often
 * Geometry Nodes: Add units to set radius node inputs
 * Geometry Nodes: Add "XYZ" label to instance on points scale
 * Geometry Nodes: Use a separator in the add menu input category
 * UI: Reduce whitespace in custom node categories
 * : Geometry Nodes: Fields Version of Raycast Node (WIP)
 * : Geometry Nodes: Make Random ID a builtin attribute (WIP)
 * : BLI: Support removing keys from a set during iteration

Bug Fixes
 * Fix T91809: Crash on undo with empty field inferencing
 * Fix T92160: Geometry Proximity node can produce invalid values
 * Fix T92192: Inconsistent curve circle primitive direction
 * Fix T92180: Curve subdivide incorrect result for poly splines
 * Fix: Field type inference considers unavailable sockets
 * Fix: Incorrect error message in set spline resolution node
 * : Update geometry nodes test file for change in object info node

Cleanup
 * Cleanup: Refactor use of implicit inputs in geometry nodes
 * Cleanup: Attempt to fix benign macOS compile warnings
 * Cleanup: Fix comment formatting and grammar

Review
 * `Updated, accepted` : UI: Visual style update to panels
 * `Requested changes` : Fix T92256: Rotate instances node scaling bug
 * `Accepted, committed` : Geometry Nodes: Separate + Delete Geometry for fields
 * `Accepted, committed` : Geometry Nodes: Scale Instances node
 * `Accepted, committed` : Geometry Nodes: Rotate Instances Node
 * `Accepted, committed` : Geometry Nodes: Translate Instances node
 * `Commented` : Geometry Nodes: Curve to Points Node Update - WIP
 * `Commented` : Node Editor: Style update to nodes
 * `Commented` : Node Editor: Introduce color and dashed wires overlay
 * `Accepted` : Fix T92103: Update BLI hash_float_to_float functions to be shader compatible
 * `Accepted` : Geometry Nodes: Add Color input node
 * `Accepted` : Geometry Nodes: Update the 'Set Position' node with offset input
 * `Accepted` : Geometry Nodes: Curve Endpoint Selection
 * `Accepted` : Geometry Nodes: Verb First Name Changes for 12 Nodes
 * `Accepted, committed` : UI: Remove padding around curve widget
 * `Accepted, committed` : Geometry Nodes: Subdivision Surface Node
 * `Accepted, committed` : Rotate Euler: Use "Local" instead of "Point"
 * `Accepted, committed` : Overload float4x4 multiplication-assignment operator.
 * `Accepted, committed` : Fix T92149: Missing check for empty components
 * `Accepted, committed` : Fix T92150: Incorrect invert in Delete Geometry node
 * `Accepted, committed` : Some Align Euler to Vector fixes
 * `Commented` : [WIP] UI: Improve scaling of widgets when zooming
 * `Accepted` : Geometry Nodes: Material Index Get/Set, and Node Naming
 * `Accepted` : Geometry Nodes: Add selection to Instance on Points
 * `Accepted` : Fix T92153: Use-after-free with anonymous attributes.
 * `Accepted` : UI: Adjust header color when active instead of inactive
 * `Accepted` : Fix T92083: Crash renaming bone used in Armature modifier on curve
 * `Accepted` : Geometry Nodes: Bring back lazy evaluation for field types in Switch node.
 * `Accepted` : Fix: Subdivision Surface Node Crash with no Edges
 * `Accepted` : Nodes: Support sharing node declarations between nodes.

Tracker
 * Reported : User after free when opening file after Blender starts
 * Investigated: 12
 * Resolved: 4
 * Archived: 5
 * Duplicate: 1
 * Confirmed: 1

Next Week

I'll continue working on the final changes necessary before Bcon3 and finish documentation for new geometry nodes features.

October 4 - October 10
This week I continued working where I could to make more progress on the fields conversion. Without Jacques around I didn't commit very much of it though. The design for a few other patches stalled a bit. On the bright side that means we should be able to make more visible progress next week.



On topic that took up a lot of time was the removal of the named attribute nodes. Currently the official plan is to only add the "Store Named Attribute" node, but not an input node. As users realized this, it became an important topic. Hopefully discussion about that can move forward next week.



Changes / Features
 * : Refactor: Move normals out of MVert, on demand calculation
 * : Geometry Nodes: Fields transfer attribute node
 * : Geometry Nodes: Attribute search in the modifier (WIP)
 * : UI: Improve layout of custom property edit panel
 * : UI: Improve node editor breadcrumbs display

Bug Fixes
 * Fix T92037: Custom property edit issues with integer soft range
 * Fix: Missing field markers for curve fillet node inputs
 * Fix: Typo in UI error message
 * Fix: Unable to select left and right in set handle type node
 * Fix field type in curve resample node

Cleanup
 * Cleanup: Remove unused DerivedMesh functions
 * Cleanup: Change variable name, comment formatting
 * Cleanup: Clang tidy
 * Cleanup: Rename enum values
 * Cleanup: Remove unused variable and include

Review
 * `Requested changes` : Geometry Nodes: 2D PolyLine/Bezier Boolean [WIP]
 * `Commented` : Fix T90808: Undo curve selection recalculates boundbox based on curve data
 * `Requested changes` : Geometry Nodes: Merge by Distance (Modifier port)
 * `Requested changes` : Geometry Nodes: Separate + Delete Geometry for fields
 * `Requested changes` : Geometry Nodes: Accumulate Function Node
 * `Commented` : Geometry Nodes: Add Nodes to Get/Set Built-in Attributes
 * `Accepted` : Geometry Nodes: "Replace in String" node
 * `Requested changes` : Geometry Nodes: Index Range Selection
 * `Commented` : Geometry Nodes: Curve Endpoints Node Update (WIP)
 * `Commented` : Nodes: Add Vector Map Range node
 * `Accepted` : Geometry Nodes: Add Fields Inputs to Trim Curve Node
 * `Accepted` : Nodes: Move texture nodes to C++
 * `Accepted` : Geometry Nodes: Add default_value to String socket declaration
 * `Accepted, committed` : Geometry Nodes: Align Euler to Vector Node
 * `Committed` : Geometry Nodes: Rename "String Join"-node to "Join Strings"
 * `Commented` : UI: Default Fonts Folder for Mac and Linux
 * `Commented` : Geometry Nodes: Dimmed dashed lines
 * `Closed` : Destructive Extrude Operator

Tracker
 * Investigated: 6
 * Resolved: 1
 * Archived: 2

Next Week

I'd like to move forward on the named attribute input node discussion, i.e. present my viewpoint in a more final way, and make a big push to finish converting all of the other nodes, and add the last changes for Bcon2. It might be a lot!

September 27 - October 3
This week I mainly worked on code review, changing the behavior of how nodes act on instances, and attempting to fix some bugs. The bug I still haven't figured out has to do with keeping track of data through undo steps. Hopefully I can figure it out early next week.

I started working on a mesh based version of the edge split node. There is already some slightly similar functionality exposed as an API function for cycles to split edges based on normals, but this needs to use a selection. Figuring out which edges should actually be split based on the selection is turning out to be quite tricky though!



I also created some tasks:
 * : Updated versions of curve to points and curve endpoints nodes
 * : Updated version of subdivision surface node
 * : Selection outputs in primitive nodes
 * : Add "Offset" toggle to set position node
 * : Output UVs from mesh primitive nodes with anonymous attributes
 * : Add warnings for nodes that don't work with instances
 * : Support fields in the curve trim node

Changes / Features
 * Geometry Nodes: Run nodes once on unique instance data
 * Geometry Nodes: Mesh Point Cloud Conversion Nodes ,
 * Geometry Nodes: Expose Bezier handle positions as an attribute
 * Geometry Nodes: Distribute points once per instance reference
 * Geometry Nodes: Fields version of attribute proximity node
 * Geometry Nodes: Only show attribute toggle for field inputs
 * Geometry Nodes: Move output attribute names to a subpanel
 * Geometry Nodes: Use factor slider for distribution density factor
 * Geometry Nodes: Do not realize instances in the material assign node
 * Data Transfer: Remove unnecessary noisy error message
 * : Geometry Nodes: Field version of mesh to curve node

Bug Fixes
 * Fix T91904: Assert when loading empty CurveProfile
 * Fix: Incorrect node socket name after recent refactor

Cleanup
 * Cleanup: Move curveprofile.c to C++
 * Cleanup: Add doxygen sections, rearrange functions
 * Cleanup: Make functions static ,
 * Cleanup: Replace macro with function
 * Cleanup: Fix incorrect comments
 * Geometry Nodes: Move more nodes to legacy
 * Cleanup: Sort node types alphabetically
 * Cleanup: Add constructor for AttributeFieldInput
 * Cleanup: Fix unused variable warning

Review
 * `Accepted, committed` : Geometry Nodes: Add side and fill segments to Cone/Cylinder mesh primitive nodes
 * `Requested changes` : Geometry Nodes: Add UV output to Curve to Mesh node
 * `Accepted, committed` : Geometry Nodes: Rotate Euler Node
 * `Accepted` : Geometry Nodes: Add utility to process all instances separately.
 * `Accepted` : Geometry Nodes: Support creating new attributes in modifier.
 * `Accepted` : Fix T87536: Incorrect socket types in reroute nodes.
 * `Requested changes` : Geometry Nodes: Separate + Delete Geometry for fields
 * `Requested changes, accepted` : Geometry Nodes: Create New Version of Curve Reverse Node
 * `Requested changes, accepted` : Geometry Nodes: Fields Version of Select by Handle Type
 * `Requested changes, accepted` : Geometry Nodes: Fields Version of Points to Volume
 * `Accepted` : Geometry Nodes: Add option to enable attribute search in node sockets
 * `Commented` : VSE: Sound add decorate buttons, sort and expose degree
 * `Accepted, committed` : Fix: fix warning icon on Curve to Mesh geometry node
 * `Accepted, committed` : Geometry Nodes: Remove experimental option for fields.
 * `Accepted, committed` : String to Curves VS2017 fix
 * `Accepted` : Geometry Nodes: Port shader gradient texture node
 * `Accepted` : Fix T91839: Incorrect active vertex group index.
 * `Accepted` : Nodes: Add Float Curve
 * `Accepted` : Geometry Nodes: Multi-threading for modify_geometry_sets.
 * `Accepted` : Geometry Nodes: Use thinner link lines for fields.
 * `Accepted` : Geometry Nodes: Rename "String Join"-node to "Join Strings"
 * `Accepted` : Fix for T91756: String to Curves node produces NaN when size is zero
 * `Accepted` : Geometry Nodes: Update Set Spline Type Node for Fields
 * `Accepted` : Geometry Nodes: Fields Version of Curve Subdivide
 * `Accepted` : Geometry Nodes: Resample Curve Fields Update
 * `Closed` : Geometry Nodes: Fields Version of Point Separate
 * `Closed` : Bevel on curves does not create distorted geometry anymore
 * `Closed` : Fix T80979: Fixed the bevel distortion issue at bends

Tracker
 * Investigated: 1
 * Archived: 1

Next Week

Since Jacques won't be here, I won't take on many new things, my to-do list is already way too long. So I'll probably just use the opportunity to catch up on lots of things.

September 20 - September 24
This week I worked on finishing up work on the final curve nodes for 3.0, including review of the string to curves node and the curve fillet node. We also had some very productive discussions about instances and naming that I started to work on implementing in some places.

The other goal was getting ready to enable fields by default in master. I didn't quite finish up outputting attributes from the modifier like I had hoped though.



Changes / Features
 * Custom Properties: Rewrite edit operator, improve UX
 * Geometry Nodes: Curve Sample Node
 * Geometry Nodes: Curve Parameter Node
 * Geometry Nodes: Curve tangent node
 * Geometry nodes: Output curve normals from the normal node
 * Geometry Nodes: Fill instances separately in the curve fill node
 * Geometry Nodes: Add legacy warning and "View Legacy" operator
 * Geometry Nodes: Add versioning and legacy warning for random float node
 * : Geometry Nodes: Only show attribute toggle for field inputs (WIP)
 * : Geometry Nodes: Field version of mesh to curve node

Bug Fixes
 * Fix T12533: Simplify curve object to mesh conversion
 * Fix: Incorrect field visualization for some shader nodes
 * Fix: Add versioning for geometry nodes attribute input toggle
 * Fix: Curve fill node doesn't fill real geometry with instances
 * Fix T91661: Vector rotate output socket diconnects on file load
 * Fix: Crash with single point bezier spline auto handles
 * Functions: Fix incorrect assert for unused output
 * Fix: Incorrect versioning for float IDProperty default array
 * Fix: Incorrect socket names after previous commit
 * Fix build error caused by typo

Cleanup
 * Cleanup: Use new node socket declaration API for some shader nodes ,
 * Cleanup: Move curve to mesh node implementation to blenkernel
 * Cleanup: Remove debugging change, add comments

Review
 * `Requested changes` : Geometry Nodes: Merge by Distance (Modifier port)
 * `Updated, committed` : Geometry Nodes: Initial socket visualization for fields
 * `Updated, committed` : Geometry Nodes: String to Curves
 * `Commented, accepted` : Geometry Nodes: Point Distribute Surface
 * `Accepted, committed` : Geometry Nodes: Attribute Statistic node
 * `Accepted, committed` : Geometry Nodes: Fields version of Attribute Randomize as a Function Node
 * `Requested changes, accepted` : Add Tooltips to new Socket API and Tooltip Drawing
 * `Requested changes, accepted` : UI: Tree-View API for easy creation of tree UIs
 * `Accepted` : Geometry Nodes: Add curve fillet node
 * `Accepted, committed` : String manipulation nodes
 * `Accepted, committed` : Geometry Nodes: Special Characters
 * `Commented` : Curves: Cleanup set radius/weight operators
 * `Accepted` : Geometry Nodes: Implicit Position input in Set Position node.
 * `Accepted` : Geometry Nodes: Create New Version of Curve Set Handles Node
 * `Accepted` : Geometry Nodes: Create New Version of Curve Reverse Node
 * `Accepted` : Add Custom properties to Collection Properties Tab
 * `Requested changes` : Move Sculpt Color From Experimental

Tracker
 * Investigated: 8
 * Resolved: 2
 * Archived: 3
 * Known Issue: 1

Next Week

I'll start with code review, then making progress on converting the next nodes for fields.

September 13 - September 19
This week I worked on some converting some nodes to use fields, transferring attributes in the curve to mesh node, and adding special domain interpolation for selections, since before they weren't working like edit mode selection interpolations.

On the weekend I finished up a proper implementation of the curve parameter node and curve sample node, which I hope to get into 3.0. The curvature node ended up being a bit tricky, so I don't think I'll try to finish that this week. It may not be possible to find a definition of curvature that doesn't change when the curve resolution increases or when the curve scales up, so I'll probably have to expose both.

Changes / Features
 * Geometry Nodes: Transfer attributes in the curve to mesh node ,
 * Geometry Nodes: Add special domain interpolation for selections
 * Geometry Nodes: Add a toggle to use attributes as input values
 * Geometry Nodes: Add fields version of material nodes
 * Geometry Nodes: Hide values for selection inputs
 * : Geometry Nodes: Curve Sample Node
 * : Geometry Nodes: Add Curve Parameter Node
 * : Attributes: Add mesh edit mode operators for boolean attributes (WIP)
 * : Geometry Nodes: Add legacy warning and "View Legacy" operator

Bug Fixes
 * Fix: Use after free in spreadsheet attribute column ID
 * Fix: Spline length calculation fails with no evaluated points
 * Fix: Incorrect default values for the curve trim node ,
 * Fix: Nodes modifier ignores input value with new property missing
 * Fix: Division by zero in curve spiral primitive node
 * : Fix: Custom property step value has 100x factor

Cleanup
 * Cleanup: Remove duplicate warning from subdivision surface node
 * Cleanup: Use function to mark mesh normals dirty
 * Geometry Nodes: Simplify using OutputAttribute in a vector
 * Cleanup: Rename curve node enums
 * Cleanup: Fix/improve variable names and comments
 * Cleanup: Add built-in check for an attribute ID
 * Cleanup: Remove unnecessary manual of move constructor
 * Cleanup: Move mesh_convert.c to C++
 * Cleanup: Pass const mesh argument

Review
 * `Updated, accepted` : GPencil: Dot-dash modifier
 * `Requested changes` : Geometry Nodes: Add curve fillet node
 * `Requested changes` : Geometry Nodes: Instance on Points and Collection Info
 * `Requested changes, accepted` : Nodes: Cache node declaration on node.
 * `Requested changes, accepted` : Geometry Nodes: Attribute Statistic node
 * `Requested changes` : Geometry Nodes: Fields Version of Select by Handle Type
 * `Requested changes` : [WIP] Geometry Nodes: Text nodes
 * `Accepted` : Geometry Nodes: Multi-threaded field evaluation
 * `Requested changes` : String manipulation nodes
 * `Requested changes` : Geometry Nodes: Point Distribute Surface
 * `Requested changes` : Accurate NURBS circle and sphere
 * `Requested changes` : Geometry Nodes: Create New Version of Curve Reverse Node
 * `Commented, accepted` : GPencil: Curvature support for length modifier
 * `Requested changes, committed` : Create a Spline Method for Revering a Spline
 * `Accepted` : Add a reverse method to MutableSpan

Tracker
 * Investigated: 5
 * Resolved: 1
 * Archived: 2

Next Week

I'm narrowing down the list of things I'd like to get into 3.0-- I'd like to get the curve fillet, string to curve, curve sample, curve parameter, and hopefully the attribute statistic node committed. There's also general conversions and design discussions to do.

September 6 - September 12
This week I mainly worked on final cleanup on the first commit of the field changes with Jacques, fixed issues with the curve object geometry nodes support (and finally committed it!), and worked on more custom property issues. I ended up making a patch to improve the custom property edit operator-- the old one just didn't cut it.

On Saturday I also worked a bit more on refactoring mesh normal storage. It affects way more places than I thought, so even after a fair amount of work my branch still doesn't compile, but I think the refactor is very important for the future of data-oriented mesh processing in Blender.

Changes / Features
 * Geometry Nodes: fields and anonymous attributes (With Jacques)
 * Geometry Nodes: Support "Evaluated" mode in Resample Curve node
 * Geometry Nodes: Allow exposing color sockets to the modifier
 * Geometry Nodes: Add versioning to change legacy node ID names
 * Nodes: Add vector min/max support to new socket builder API
 * UI: Remove label of mode in Point Instance node
 * : Custom Properties: Rewrite edit operator, improve UX
 * : Geometry Nodes: Add fields version of material nodes
 * : Geometry Nodes: Add legacy warning and "View Legacy" operator

Bug Fixes
 * Fix T91255: IDProperty UI as_dict returns step as default value
 * Fix: Incorrect default for exposed geometry nodes vectors
 * Fix: Incorrect file subversion for geometry node versioning

Cleanup
 * Cleanup: Rename variables, simplify logic
 * Cleanup: Move function to versioning_common.cc
 * Cleanup: Remove no-op/unused code
 * Cleanup: Split legacy node type defines

Review
 * `Requested changes` : GPencil: Dot-dash modifier
 * `Accepted` : Fix T91093: Off by one error in curve resample node.
 * `Commented` : BLI: Add Cycles compatible Perlin noise
 * `Accepted` : UI: ActionZone Mouse Cursor Feedback
 * `Commented` : UI: Movie Clip: Cleanup Proxy Settings
 * `Requested changes` : Fix T90862: Texts in Outliner can have wrong icon
 * `Commented` : VSE UI: Since functions in Effect menu only work on active strip, move them into the strip sidebar

Tracker
 * Investigated: 4
 * Resolved: 1
 * Archived: 1

Next Week

Next week I'd like make some significant progress getting updated versions of nodes added to master. Since I didn't get to much code review last week, I'll do more of that. And I'll be working on more general field-refactor changes too, like allowing the modifier to switch between inputing a value or a named attribute. Speaking of named attributes, there is that design discussion to continue.

August 30 - September 5
Earlier this week I fixed more issues that came up after the IDProperty UI data refactor, but I mostly continued working in the fields branch.

I added a "Normal" node that gives properly normalized normals on all mesh domains, added support for fields and a selection in the point translate node, and did more cleanup and refactoring. I also made a list of the nodes we'll have to change, and we had discussions about visualization and naming of some of the new concepts.



I spent a bit of extra time on the level set patch, including adding info to a thread on devtalk for discussion.



On the weekend I spent some time investigating moving mesh vertex normals to their own data layer instead of storing them in `MVert`. Here is a design task with some reasoning: T91186: Move mesh vertex normals out of MVert

Changes / Features
 * : Geometry Nodes: Transfer named attributes in the curve to mesh node

Bug Fixes
 * Fix: Incorrect versioning for float IDProperty UI data
 * Fix T91084: Missing versioning for object pose bone property UI data
 * Fix T91088: Assigning custom property value in python resets UI data
 * Fix T91054: List of strings custom property cannot be edited
 * Fix T91054: Editing group custom property gives error
 * Fix T91119: Curve to mesh node inverted face normals ,
 * Fix: Output int for precision in UI data as_dict method

Cleanup
 * Cleanup: Remove redundant property UI data clear
 * Cleanup: Reduce variable scope
 * Cleanup: Grammar
 * : Cleanup: Use C++ types and lambdas for mesh normal calculation

Review
 * `Requested changes` : Geometry Nodes: Add curve fillet node
 * `Requested changes` : Geometry Nodes: Curve Connect Splines Node
 * `Commented` : [WIP] Geometry Nodes: Text nodes
 * `Accepted` : Nodes: Add more flexible method to declare the sockets of a node
 * `Commented` : Geometry Nodes: Helper functions for nodes that uses bmesh operators
 * `Accepted` : Let rna_idprop_ui_create take "step" as a keyword argument
 * `Accepted` : Geometry Nodes: Most Remaining Nodes New Socket Syntax
 * `Accepted` : Geometry Nodes: Attribute Nodes New Socket Syntax
 * `Accepted` : Geometry Nodes: Change All Curve & Curve Primitive Nodes to New Socket Format
 * `Accepted` : Geometry Nodes: Change All Points Nodes to New Socket Format
 * `Commented` : [WIP] Reroute node improvements
 * `Requested changes` : Rename options for Quad View to be more readable
 * `Commented` : [Scr-ops] Drag resize operator
 * `Commented` : UI: Increase Area Resize Edge Hit Size
 * `Commented` : Smart UV: search optimization

Tracker
 * Investigated: 11
 * Resolved: 6
 * Archived: 2
 * Duplicate: 1
 * Known Issue: 1

Next Week

Next week the goal is to merge the initial changes in the fields branch. But there is still lots more to do-- the changes for all the nodes in the list above, discussions about making versioning possible, and other new features.

I'd also like to make progress on some of the other changes in my 3.0 targets list.

August 23 - August 29
This week I mainly worked on understanding the idea and prototype implementation of fields, and implementing the basic data structures and evaluation system in a branch. Jacques suggested I do this so I'd have a better idea of the internals. That was a great idea, because I definitely do! In the process I created a document with some of the things I learned: https://hackmd.io/@nodes/ByW_ZpzWt

I finally committed the IDProperty UI data refactor! (And sadly spent a large chunk of Friday searching for a stupid mistake in it that broke tests.)

I also made a quick list of my goals for geometry nodes 3.0: https://hackmd.io/@nodes/By1_orZWt

Changes / Features
 * Refactor IDProperty UI data storage
 * Update addons for D9697 "_RNA_UI" removal
 * : Geometry Nodes: Level Set Nodes
 * Add support for the Attribute Proximity node
 * : Generic array data structure

Bug Fixes
 * Fix T90900: Crash when rendering geometry nodes created curve
 * Fix failing alembic test after IDProperty UI data refactor

Cleanup
 * Cleanup: Refactor proximity node to be more data type agnostic
 * Cleanup: Remove unecessary variables
 * Cleanup: Add comment about suspicious O(n^3) loop
 * Cleanup: Make function static, remove unused arguments
 * Cleanup: Remove redundant null check
 * Cleanup: Simplify logic
 * Cleanup: Use shorter enum item names

Review
 * `Accepted, committed with tweaks` : Cuboid Mesh Primitive Geometry Node
 * `Accepted, Committed with tweaks` : Geometry Nodes: Curve Fill
 * `Requested changes` : GPencil: Dot-dash modifier
 * `Requested changes` : GPencil: Curvature support for length modifier
 * `Accepted` : Nodes: Improvements to edge panning in the node editor.
 * `Commented` : Add Bisect Modifier
 * `Accepted, committed` : Geometry Nodes: Allow for one vertex in grid node
 * `Accepted, committed` : Fix: Corrected edge flag for outer edges in the circle mesh primitive node.
 * `Commented` : UI: Consistent Area Move Snapping Locations
 * `Commented` : Modifiers: export motion blur velocity through attribute
 * `Commented` : VSE: Use the word "Hide" for all non-sound strip types instead of the counter-intuitive "Mute".
 * `Commented` : Geometry Nodes: Add Easing Function Node

Tracker
 * Investigated: 10
 * Resolved: 2
 * Archived: 5

Next Week

I'll finish up the fields data structure and evaluator, add tests, support building the fields network in the geometry nodes evaluator, and do code review. If I'm too slow with the fields stuff, I'll switch tasks with Jacques, since I don't want to hold things up (it's basically the first time I written code that needs to solve that class of problem).

August 9 - August 13
This week I reviewed all of the patches assigned to the geometry nodes project, spending more time on the curve fillet node, the connect splines node, the text nodes, and the cuboid node. I also worked on the fields branch, where I added a "Curve Parameter" node, and progressed farther in my level set patch, where I added primitive nodes, morphing between level sets, converting level sets to masks, and finished the sample volume node. The volume stuff has been a nice thing to work on while waiting for the attribute discussion to finish, I think it will end up being very useful! It's in the `geometry-nodes-level-set-nodes` branch right now.







Also, Campbell and Sybren accepted the IDProperty UI data refactor patch ! I'll commit it when I get back after next week.

Changes / Features
 * : Geometry Nodes: Proof of concept lazy conversion to and from BMesh

Bug Fixes
 * Fix T90447: 3D view transform locks do not use driver colors
 * Fix T90547: Add node errors when compiled without OpenVDB or Bullet
 * Fixed typos and errors for point separate geometry node

Cleanup
 * Cleanup: Variable names, formatting, reduce indentation
 * Cleanup: Remove unused includes
 * Cleanup: Remove unecessary RNA get and set functions

Review
 * `Requested changes` : Geometry Nodes: Add curve fillet node
 * `Requested changes` : Geometry Nodes: Curve Connect Splines Node
 * `Requested changes` : [WIP] Geometry Nodes: Text nodes
 * `Requested changes` : Cuboid Mesh Primitive Geometry Node
 * `Requested changes` : GPencil: Dot-dash modifier
 * `Requested changes` : Geometry Nodes: Curve Fill
 * `Requested changes` : Geometry Nodes: Merge by Distance (Modifier port)
 * `Updated` : Geometry Nodes: Curve Primitive Phyllotaxis Spiral
 * `Requested changes` : Geometry Nodes: Curve Primitive Arc
 * `Commented` : Geometry Nodes: Mesh Auto Smooth
 * `Accepted` : Geometry Nodes: Initial support for geometry instancing (WIP).
 * `Commented` : Nodes: Improvements to edge panning in the node editor.
 * `Requested changes` : Geometry Nodes: Inset
 * `Requested changes` : Geometry Nodes: Collapse Node, Dissolve Node, Unsubdivide Node
 * `Requested changes` : UI: Node Contents Jiggling
 * `Accepted` : Topology mapping mode for Attribute Transfer node
 * `Accepted` : Nodes: Highlight entire link when connected to a selected node
 * `Accepted` : Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
 * `Requested changes` : Geometry Nodes: Curve Extract Spline Node
 * `Requested changes` : Geometry Nodes: Bridge Curve Node
 * `Requested changes` : Geometry Nodes: Using BMesh Subdivide Operation for the Subdivide Node
 * `Accepted, committed` : Add a label for texture sockets
 * `Accepted, committed` : Fixed typos for point separate geometry node
 * `Accepted` : UI: Freestyle UI Upgrade
 * `Accepted` : Fix T89027: [2.93 only] pose slide factor wrong in redo popup
 * `Accepted` : Add Extras Dropdown Menu to Constraints
 * `Closed` : Geometry Nodes: Mesh Primitive Torus
 * `Closed` : Geometry Nodes: Point Primitive Node
 * `Closed` : Rename "Point Distribute" to "Point Distribute Surface"
 * `Closed` : Geometry Nodes: Add Invert option to the Transform node
 * `Requested changes` : Geometry Nodes: Add shader Color Mix node
 * `Requested changes` : Geometry Nodes: Add Attribute Easing Node
 * `Requested changes` : Geometry Nodes: Add alternative distribution options to the Attribute Randomize node
 * `Requested changes` : Geometry Nodes: Attribute Randomize Spherical Node
 * `Requested changes` : Geometry Nodes: Add a minimum distance attribute to the Attribute Proximity Node
 * `Commented` : Adding Attribute Math Expression Node
 * `Commented` : Geometry Nodes: Geometry, Mesh, Curve & Point Cloud Info nodes
 * `Commented` : Geometry Nodes: Yuksel's sample elimination algorithm
 * `Commented` : UI: Add option to allow the display of the viewport axis gizmo while transforming
 * `Requested changes` : Geometry Nodes: Solidify Node
 * `Commented` : Geometry Nodes: Curve Primitive Line -> Add 'Track To' mode
 * `Commented` : Geometry: new geometry module
 * `Closed` : Geometry Nodes: add Attribute Edge Length
 * `Closed` : Node: Merge by Distance
 * `Closed` : Geometry Nodes: Add rotation orders in the Transform Node
 * `Commented` : Geometry Nodes: New Attribute Processor.

Tracker
 * Investigated: 4
 * Resolved: 2
 * Archived: 1

Next Week

I'll be away next week, no internet at all!

August 2 - August 8
This past week (and the weekend before at the end of vacation), I focussed on a few things:
 * Cleaning up the current openVDB level set API and building nodes for level set operations
 * Adding features and support for nodes to the fields and anonymous attributes prototype branch
 * Working on the IDProperty UI data storage refactor (now accepted by Campbell and Sybren!)
 * Code review, mostly for more geometry nodes features





Changes / Features
 * Geometry Nodes: Select by Handle Type Node
 * Mesh: Tag normals dirty instead of calculating
 * : Geometry Nodes: Level Set Nodes (WIP)

Bug Fixes
 * Fix T90087: Assigning object data doesn't copy vertex groups
 * Fix T90042: Spline tangent calculation assert with coincident points
 * Fix memory leak from rB263fa406cd2b
 * Fix build error in debug builds and uninitialized structs

Cleanup
 * Cleanup: Remove unused/unecessary OpenVDB C API
 * Cleanup: Use const mesh arguments
 * Cleanup: Remove unecessary helper function
 * Cleanup: Voxel remesh function naming
 * Cleanup: Simplify logic, follow style guide for integer types
 * Cleanup: Move remesh files to C++
 * Cleanup: Sort node types alphabetically
 * Cleanup: Remove unused includes
 * Cleanup: Reorder functions
 * Cleanup: Remove duplicate special case check
 * Cleanup: Make spline settings copy function public

Review
 * `Updated, accepted` : Geometry Nodes: Attribute Statistic node
 * `Updated, accepted` : Geometry Nodes: Curve Set Spline Type
 * `Requested changes` : Cuboid Mesh Primitive Geometry Node
 * `Requested changes` : A Mesh Smooth node, as designed in T86903.
 * `Requested changes` : Fix unexpected twist and asymmetry in curve using tangent mode
 * `Requested changes` : Geometry Nodes: Extrude
 * `Accepted` : XR Actions [part 2]: Actionmaps
 * `Accepted` : Geometry Nodes: Add more warnings for out of bounds parameters
 * `Requested changes` : Range filter for spreadsheet editor
 * `Requested changes` : Geometry Nodes: Allow for one vertex in grid node
 * `Requested changes` : Geometry Nodes: Remesh Voxel
 * `Accepted` : Fix: Corrected edge flag for outer edges in the circle mesh primitive node.
 * `Accepted` : Fix: Avoid FP error to accumulate when creating mesh primitives

Tracker
 * Investigated: 5
 * Archived: 2

Next Week

I'll work more on all of the ongoing projects, and maybe participate in some of the discussions about the attribute workflow changes.

I'd also like to make a simple system to lazily convert to and from `BMesh` for the `MeshComponent`.

July 19 - July 23
This week I mainly worked on the curve modifier stack changes for the nodes modifier (I had to merge Jacques' geometry instancing patch to fix an issue), investigated bugs, adding notes or committing fixes directly, and did code review.

Apart from that, I discussed the IDProperty UI data refactor with Sybren and Campbell. After some disagreements we came to a nice conclusion that I'll implement when I'm back.

Changes / Features
 * Geometry Nodes: Display Node Warnings in Modifier
 * : Geometry Nodes: Expose NURBS weight as an attribute
 * : Geometry Nodes: Expose Bezier handle positions as an attribute

Bug Fixes
 * Fix T89979: Assert in edit mode with curve to mesh node
 * Fix: Bezier segment node adds handles incorrectly
 * Fix T89687: Curve to mesh node incorrect face orientation
 * Fix T89993: Failed assert drawing single point cyclic splines
 * Fix T89827: Attribute transfer node crash on mesh with no faces
 * Fix: "Bake" automatically calculated handles in set handle node

Cleanup
 * Cleanup: Use const arguments and less sequential iteration
 * Cleanup: Remove unused function, unused declaration ,
 * Cleanup: Make function static, use const object argument
 * Cleanup: Add function to check a curve's spline types

Review
 * [Requested changes, accepted] : USD Importer
 * [Requested changes] : GPencil: New Brush option to define Caps type
 * [Requested changes] : XR Actions [part 2]: Actionmaps
 * [Requested changes, committed] : Geometry Nodes: Set Handle Type Node


 * [Accepted] : Fix T89393: Crash when selecting edges when geometry nodes has "on cage" turned on
 * [Accepted] : Fix: Avoid creating improper rotation matrix
 * [Accepted] : Fix T89829: Wrong active context path check in spreadsheet
 * [Accepted] : Fix T90065: Disable attribute search in places where there is too little context
 * [Accepted] : Geometry Nodes: Merge by Distance (Modifier port)
 * [Accepted] : Geometry Nodes: Solidify Node
 * [Accepted] : Geometry Nodes: Remesh Blocks
 * [Commented] : Fix curve minimum twist producing wrong geometry
 * [Accepted] : Fix T89982: 'New' Button tries to create node tree on active modifier rather than context
 * [Accepted] : Make polls for removing mesh data layers consistent

Tracker
 * Reported : Resetting multi-button value does not work when active button value is the same
 * Investigated: 13
 * Archived: 1
 * Known Issue: 1
 * Duplicate: 1
 * Resolved: 1

Next Week

Vacation next week, I'll be sailing, hopefully not thinking too much about this stuff ; )

July 12 - July 18
This week I continued working on supporting the nodes modifier on curve objects, on the vertex group refactor, and on the IDProperty refactor. I also spent a fair amount of time on code review, and I spent some time adding the new features to the manual.

The vertex group refactor caused a couple bugs, it turns out some edit mesh / dependency graph work caused some of the issues though.



Changes / Features
 * Refactor: Move vertex group names to object data
 * Python API: Add functions to ensure and clear IDProperties
 * Bezier Spline: Add a more generalized insertion utility
 * Python API: Add functions to ensure and clear IDProperties
 * Updates to the manual
 * Spreadsheet Editor: Dataset region
 * Spreadsheet Editor: Row Filters
 * Geometry Nodes: New Viewer Node (further changes)
 * Geometry Nodes: Curve Primitive Quadrilateral
 * Geometry Nodes: Curve Trim Node
 * Refactor: Move vertex group names to object data
 * Geometry Nodes: Curve Endpoints Node

Bug Fixes
 * Fix T89899: Crashes when accessing vertex groups from objects
 * Fix: Incorrect logic in spline lookup function
 * Fix: memcpy overlapping region ASAN warning in curve trim node
 * Fix failing tests from vertex group name parameter copy

Cleanup
 * Cleanup: Make curve trim node code more semantically correct
 * Cleanup: Avoid duplication in line art stroke generation
 * Cleanup: Move gpencil_geom.c to C++
 * Cleanup: Simplify logic, use C++ types
 * Cleanup: Simplify realizing of pointcloud instances
 * Cleanup: Use C++ float3 type, use prefix for return argument
 * Cleanup: Remove redundant logic
 * Cleanup: Get vertex group names directly from grease pencil data
 * Cleanup: Remove use of designated initializers in C++ code
 * Cleanup: Clang tidy

Review
 * [Requested changes] : GPencil: Dot-dash modifier
 * [Requested changes, accepted] : USD Importer
 * [Requested changes, committed] : Geometry Nodes: Curve Trim Node
 * [Requested changes] : Geometry Nodes: Curve Fill
 * [Requested changes] : Cuboid Mesh Primitive Geometry Node
 * [Requested changes, acceped] : Geometry Nodes: Initial socket inspection.
 * [Accepted] : VSE: Fix truncated label
 * [Accepted] : Versioning: fix vertex group name loss in linked duplicates
 * [Requested changes] : Node Editor: Paste Node on mouse position
 * [Accepted] : Nodes: Dim links whose start and end sockets are not visible
 * [Commented] : Nodes: Improvements to edge panning in the node editor.
 * [Committed] : Geometry Nodes: Curve Primitive Quadrilateral
 * [Updated] : Geometry Nodes: Curve Primitive Phyllotaxis Spiral
 * [Committed] : Papercut: Flip driver debug UI
 * [Commented] : Add more warnings to Geometry Nodes
 * [Commented] : Fix curve minimum twist producing wrong geometry
 * [Commented] : Geometry Nodes: Curve Primitive Line -> Add 'Track To' mode
 * [Closed] : Geometry Nodes: Multiple dynamic sockets for the Join Geometry Node
 * [Closed] : Fix T89316: Boolean node does not transfer vertex group names

Tracker
 * Investigated: 11
 * Archived: 2
 * Known Issue: 1
 * Resolved: 5

Next Week

Next week I'll just continue focusing on the same couple things, and whatever smaller things we decide to focus on this coming week.

July 5 - July 11
This was just a two day week, so I didn't finish much, I focused on code review. While I was gone I kept up with the GSoC projects and conversations in the chat.

Changes / Features
 * Geometry Nodes: Rename nodes for clarity between mesh and curve
 * Geometry Nodes: Use same shape as mesh line in curve line node
 * Geometry Nodes: Allow 3 points in curve star primitive

Bug Fixes
 * Fix: Crash when geometry nodes NURB spline has no evaluated points
 * Fix: Curve Resample Node: Copy attributes to 1 point results
 * Fix T89702: Curve to points node assert on single point spline

Cleanup
 * Cleanup: Clang tidy, unused include
 * Cleanup: Use enum for UI block emboss type
 * Cleanup: Sort nodes alphabetically

Review
 * [Requested changes, accepted] : Geometry Nodes: Refactor logging during evaluation
 * [Requested changes, accepted] : Nodes: Add a button to change group socket types
 * [Accepted with changes] : Fix T89559: Outliner shows extra view layer column when it shouldn't
 * [Requested changes] : Geometry Nodes: Collapse Node, Dissolve Node, Unsubdivide Node
 * [Requested changes] : Topology mapping mode for Attribute Transfer node
 * [Committed] : Curve End Points Node
 * [Committed] : Geometry Nodes: Add explicit Float to Int conversion node
 * [Committed] : Geometry Nodes: Curve Primitive Line
 * [Closed] : Geometry Nodes: Curve Primitive Rose Curve
 * [Closed] : Geometry Nodes: Curve Primitive Polynomial Curve
 * [Commented] : UI: Fix time labels drawing
 * [Commented] : [WIP] Geometry Nodes: Text nodes
 * [Commented] : Add a label for texture sockets
 * [Committed] : Documentation for new Float To Int Node

Tracker
 * Investigated: 4
 * Archived: 1

Next Week

Catch up with review and responding to review on my own patches, then more general module development. I'll do the documentation for the spreadsheet row filters.

June 28 - July 4
This week I mainly worked on the same two tasks as last week-- moving vertex groups names to geometry, and getting the geometry nodes modifier working on curve objects. That has taken quite a bit of time, but I finally got it working!



Other than that I mostly spent time on code review.

I also made a design task for sampling data from a curve, like a curve deform node without the deformation, and more flexible:

Changes / Features
 * Curves: Avoid duplication of control points during evaluation
 * Geometry Nodes: Add mesh input warning to curve to mesh node

Bug Fixes
 * Fix T89350: Emboss color missing from icon buttons without emboss
 * Fix name of UI emboss RNA enum item

Cleanup
 * Cleanup: Remove unused "for_orco" argument to curve evaluation
 * Cleanup: Remove unused transform matrix from objects
 * Cleanup: Use const variables for object's evaluated mesh
 * Cleanup: Use const mesh to ensure BVH and triangulation cache
 * Cleanup: Add function to create a CurveEval from a nurbs list
 * Cleanup: Further use of const when accessing evaluated mesh
 * Cleanup: Move bvhutils.c to C++
 * Cleanup: Split curve and surface data evaluation functions, rename
 * Cleanup: Replace paranoid check with assert
 * Cleanup: Avoid freeing curve evaluation data twice
 * Cleanup: Avoid ASAN report when converting displist to mesh
 * Cleanup: Use simpler method to retrieve attribute domain
 * Cleanup: Fix variable redeclaration warning
 * Cleanup: Clang tidy, remove typedef
 * Cleanup: Use bool instead of int, rename variable ,
 * Cleanup: Use function name for allocation strings
 * Cleanup: Use const arguments
 * Curve: Add functions to retrieve const access to spline list
 * Cleanup: Order return arguments last, use r_ prefix

Review
 * [Commented] : [WIP] Geometry Nodes: Text nodes
 * [Accepted] : Node Wrangler: Change shortcut to make viewer node work in geometry nodes.
 * [Requested changes] : Implement T89215 Curve Endpoints
 * [Requested changes] : Geometry Nodes: Add explicit Float to Int conversion node
 * [Commented] : UI: Node Contents Jiggling
 * [Committed] : Geometry Nodes: Curve Primitive Circle
 * [Committed] : Geometry Nodes: Curve Primitive Spiral
 * [Committed] : Geometry Nodes: Curve Primitive Quadratic Bezier Segment
 * [Committed] : Geometry Nodes: Curve Primitive Bezier Segment
 * [Committed] : Geometry Nodes: Curve Primitive Star
 * [Requested changes] : Geometry Nodes: Curve Primitive Quadrilateral
 * [Commented, Accepted] : VSE: Snapping feedback
 * [Requested changes] : Moving mesh_evaluate.c to C++
 * [Commented] : Various Boolean parallelizations and optimizations
 * [Commented] : Add a label for texture sockets
 * [Accepted] : UI: Custom free functions improvements.
 * [Accepted] : Cleanup: variable naming for texture/material SocketPropertyType
 * [Accepted] : Typo in function identifier: mutli -> multi

Tracker
 * Investigated: 6
 * Duplicate: 4
 * Archived: 3

Next Week

Next week is only two days, so I won't plan much except hopefully finishing some in-progress tasks.

June 21 - June 27
Not too much new this week, I mainly focused on finishing up earlier projects, including:
 * More work on supporting the geometry nodes modifier on curve objects.
 * Trying to debug the curve deform node
 * Supporting Johnny Matthews on his work on the Curve Primitive Nodes
 * Researching optimizations I was thinking of for curve spline code (some successful, others were not)
 * Fixing bugs

I also started working on moving vertex groups to geometry (mesh, grease pencil, and lattice data), which should solve a whole class of bugs, and improve code quality.

Changes / Features
 * Geometry Nodes: Use multithreading for the curve to mesh node
 * Geometry Nodes: Join curve attributes when realizing instances
 * UI: Cleanup: Phrasing of tooltips in line art modifier
 * : Refactor: Move vertex group names to object data (WIP)

Bug Fixes
 * Fix T89343: Point cloud instances not transformed when realized
 * Fix T89430: Realizing NURBS curve instances is broken
 * Fix T89327: Cube and ico sphere nodes do not create UVs

Cleanup
 * Cleanup: Refactor spline copying functions
 * Cleanup: Rename variables, use shorter names
 * Cleanup: Use "size" instead of "points_len" in spline code
 * Cleanup: Clang format

Review
 * [Requested changes] : Moving mesh_evaluate.c to C++
 * [Requested changes] : Geometry Nodes: Add explicit Float to Int conversion node
 * [Committed] : Fix widget emboss: Also fade emboss on the right side
 * [Commented] : Fix T89316: Boolean node does not transfer vertex group names.
 * [Requested changes] : Geometry Nodes: Curve Primitive Polynomial Curve
 * [Requested changes] : Geometry Nodes: Curve Primitive Star
 * [Requested changes] : Geometry Nodes: Curve Primitive Circle
 * [Requested changes] : Geometry Nodes: Curve Primitive Spiral
 * [Requested changes] : Geometry Nodes: Curve Primitive Quadratic Bezier Segment
 * [Requested changes] : Geometry Nodes: Curve Primitive Bezier Segment
 * [Requested changes] : Geometry Nodes: Curve Primitive Phyllotaxis Spiral
 * [Requested changes] : Geometry Nodes: Curve Primitive Quadrilateral
 * [Requested changes] : Geometry Nodes: Curve Primitive Rose Curve
 * [Accepted] : Geometry Nodes: Curve Primitive Polygon

Tracker
 * Investigated: 9
 * Archived: 5

Next Week

My first priority is finishing the curve modifier stack work. Then I'll try to finish up some other tasks, and support Jacques on the node work where I can.

June 14 - June 20
This week I focused on finishing up more of the curve nodes, reviewing code for geometry nodes features, cleanup, and some bug fixing. There are a few contributors working on curve features, including the GSoC project, so I'm trying to keep all of that coordinated too.

I spent time working on trying to wrap up the IDProperty UI data refactor, getting closer there! And finally committed the spreadsheet row filter patch.



I also made some design tasks this week. That's quite fun!
 * Tasks for new nodes:
 * : Volume Sample Node
 * : Curve Primitive Nodes
 * : Connect Curve Splines Node
 * : Curve Fillet Node
 * : Curve Endpoints Node
 * Some work on the "converting modifiers" task (I should write a blog post about this at some point)
 * : Converting Modifiers to Nodes
 * And a couple TODO tasks for the spreadsheet editor after landing the row filters:
 * : Visible column search for the spreadsheet
 * : "Range" filter option for spreadsheet row filters

Changes / Features
 * Geometry Nodes: Curve to Points Node for Evaluated Data
 * Geometry Nodes: Add Curve Subdivision Node
 * Spreadsheet Editor: Row Filters
 * Curves: Multithread Curve to CurveEval conversion
 * Geometry Nodes: Multithread curve resample node
 * Geometry Nodes: Parallelize curve reverse node
 * Geometry Nodes: Allow int attribute input fields with single value

Bug Fixes
 * Fix: Spreadsheet selection filter crash on non-mesh components
 * Fix T89302: Broken normals after mesh to curve node
 * Fix T89233: Incorrect attribute remove warning for curves
 * Fix T89310: Industry Compatible keymap not working

Cleanup
 * Splines: Add resize method to CurveEval
 * Cleanup: Rename spline interpolation functions
 * Cleanup: Expose function publicly, rename
 * Cleanup: Fix inconsistent parameter name warning
 * Cleanup: Refactor join geometry node attribute gathering

Review
 * [Requested changes, accepted] : Raycast geometry node
 * [Requested changes, accepted] : Line Art: Cached calculation for multiple modifiers in the stack
 * [Accepted] : T86838 Geometry Nodes: Add Mesh To Volume Node
 * [Accepted] : Edge-scrolling for node editor
 * [Committed] : Geometry Nodes: Separate Components Node
 * [Committed] : Curve 'Switch Direction' Node (Change Direction, Reverse)
 * [Requested changes] : Geometry Nodes: Curve Primitive Bezier Segment
 * [Commented, accepted] : Documentation for Raycast geometry node
 * [Accepted] : BLI: Add threading namespace.

Tracker
 * Investigated: 5
 * Archived: 4

Next Week

Next week is general module development: I'm planning to tackle technical debt, some last important features for curves, and maybe some thinking/work on volumes.

June 7 - June 13
This week I (still) focused on finishing up the curve tasks on the workboard. Most of them are getting close, but there is still work to do. In preparation for supporting the nodes modifier on curve objects I did some cleanup to the file responsible for the curve modifier stack.



Changes / Features
 * UI: Add the option to not display some socket labels
 * UI: Remove property descriptions exactly the same as names
 * Splines: Add API functions for interpolating data
 * Geometry Nodes: Copy spline attributes in the curve resample node
 * Geometry Nodes: Support curve instances in the bounding box node
 * Geometry Nodes: Rename bounding box mesh output to "Bounding Box"
 * : Geometry Nodes: Curve to Points Node
 * : Geometry Nodes: Curve Deform Node
 * : WIP: Geometry Nodes: Support nodes modifier on curve objects
 * : Geometry Nodes: Support multi-input socket in bounding box node

Bug Fixes
 * Fix T88934: Crash with line node count input < 0
 * Fix: Point translate and point scale don't execute on curve data
 * Fix: Incorrect node bezier spline tangent calculation for end points
 * Fix test failure caused by earlier cleanup commit

Cleanup
 * Cleanup: Decrease variable scope
 * Cleanup: Remove outdated/useless comments
 * Cleanup: Use const arguments, return by value
 * Cleanup: Remove unused function, make function private
 * Cleanup: Fix uninitialized variable warning
 * Cleanup: Order return argument last
 * Cleanup: Reduce indentation from redundant check
 * Cleanup: Comment formatting
 * Cleanup: Remove duplicate call to function
 * Cleanup: Make function static
 * Cleanup: Order return argument last

Review
 * [Committed] : Geometry Nodes: Convex Hull Node
 * [Requested changes, accepted] : Spreadsheet: Dataset region for spreadsheet editor
 * [Requested changes] : Nodes: String to Curve, Value to String, String Join, String Substring, String Length
 * [Commented] : Geometry Nodes: New Viewer node.
 * [Committed] : Add Texture and Material options to switch node
 * [Requested changes, accepted] : Curve 'Switch Direction' Node (Change Direction, Reverse)
 * [Commented] : Alembic: add settings to control radius of imported curves and points
 * [Closed] : WIP:Geometry Nodes: Remesh Node

Tracker
 * Investigated: 4
 * Archived: 2

Next Week

More work on curve nodes, hopefully finishing all of them that I'm working on right now. Apart from that, some code review and feedback to other developers. Also, hopefully more conversations with GSoC students.

May 31 - June 4
This week I mainly focused on code review and various curve node tasks.

For code review, I did review rounds of the spreadsheet data set region patch, and reviewed/committed the geometry delete node and curve length nodes, among some other smaller patches.

I took a break from the subdivide node, since the implementation for bezier curves was giving me a headache. I'll come back to it again next week hopefully, after deciding whether to prioritize handle type or curve shape. I implemented two options for the "curve evaluation instancing". We had talked about a "Curve to Points" node for that use case, but after I thought about it more I thought of another option which I like more. I implemented a basic curve deform node, parts of which were quite simple with the code so far, but figuring out how exactly to change the position was harder than I expected, and I didn't quite finish.

I also made these design tasks:
 * : Curve Change Direction Node
 * : Curve Length Node
 * Curve evaluation / to points for instancing

Changes / Features
 * Geometry Nodes: Support curve data in the geometry delete node
 * Geometry Nodes: Skip calculating normals in transform node
 * Geometry Nodes: Allow reading converted attribute directly from spline
 * Splines: Function to copy spline settings without data
 * : Geometry Nodes: Join dynamic curve attributes in the join geometry node
 * : Geometry Nodes: Add "No attribute" warning to geometry delete node
 * : WIP: Geometry Nodes: Add curve subdivision node

Bug Fixes
 * Fix T88732: Curve to mesh node crash with empty input curve

Cleanup
 * Cleanup: Avoid duplicating node input retrieval
 * Fix assert with geometry node output
 * Cleanup: Correct comments
 * Cleanup: Add comment explaining assert
 * Cleanup: Clang format

Review
 * [Requested changes] : Spreadsheet: Dataset region for spreadsheet editor
 * [Accepted, commented] : Geometry Nodes: Convex Hull Node
 * [Accepted] : Geometry Nodes: Add empty material slot to new meshes.
 * [Committed] Geometry Nodes: Add Delete Geometry Node
 * [Requested changes, committed] : Geometry Nodes: Curve Length Node
 * [Commented] : Function node: Value to String
 * [Commented] : Fix T88598: Support disabling task isolation in task pool.
 * [Closed] : Solution for T37878 - Viewport normal drawing with constant length

Tracker
 * Investigated: 2
 * Archived: 1
 * Dupliucate: 2

Next Week

I'll start by doing some code review, then I'll focus on finishing up the curve tasks on the workboard finally, which I actually think is possible now.

May 24 - May 28
This week I continued development for curve nodes, where the system is starting to get more complete. Once we have a proper way to evaluate splines I think it will be quite powerful. Apart from some design disagreements this project has been really satisfying.

Changes / Features
 * Geometry Nodes: Add Mesh to Curve Node
 * Geometry Nodes: Draw curve data in the viewport
 * Geometry Nodes: Support interpolation between curve domains
 * Geometry Nodes: Expose texture and material inputs to modifier
 * Geometry Nodes: Polish switch node UI

Bug Fixes
 * Fix T88452: Point Separate crash on curve component
 * Fix T88603: Crash with spline attributes after curve resample
 * Fix T88601: Attribute Compare boolean doesn't expose socket

Cleanup
 * Cleanup: Simplify spline point attribute materialize functions
 * Cleanup: Convert to static type directly from CPPType
 * Cleanup: Remove completed "TODO" comment
 * Cleanup: Use consistent variable names
 * Cleanup: Fix short comparison with bool warning
 * Cleanup: Fix forward declaring class with "struct" ,

Review
 * [Requested changes] : Spreadsheet: Dataset region for spreadsheet editor
 * [Commented] : Geometry Nodes: Add node labels to Attribute maths nodes
 * [Accepted] : Fix threading issues with node ui storage, again...
 * [Closed] : Minor UI: Make the 'Snap to' dropdown inactive when the 'Snap' icon is off, in line with the operation of the 'Proportional Editing' icon and its related dropdown.

Tracker
 * Investigated: 7
 * Archived: 2

Next Week

Next week I'll do code review and continue curve nodes development and whatever else comes up. Maybe I'll make some other design tasks for ideas I've had recently.

May 17 - May 23
This week I mostly worked on curve attributes again. I committed support for dynamic attributes. The few left are NURBS weight and bezier handles, then that project is mostly finished. There are still other curve nodes I want to complete for 3.0, but I may have some work to do convincing others about my approach first.

I made changes to draw curve data in the viewport, though there are still some problems with it to fix before committing.

I also updated the manual for recently added changes to geometry nodes, and spent a bit of my own time prototyping a volume sample node, which I think would be awesome.

Changes / Features
 * Geometry Nodes: Support for dynamic attributes on curve splines
 * Geometry nodes manual updates
 * Add note about materials on join geometry page
 * Add note about attributes to the geometry join node
 * Add note about sharp edges to the curve to mesh node page
 * Geometry Nodes: Add Material Assign Node
 * Geometry Nodes: Add Material Input Node
 * Cleanup: Fix grammar, add term references
 * Geometry Nodes: Add Attribute Vector Rotate Node
 * Add more information to the curve resample node page
 * Splines: Optimize interpolation in special case virtual array
 * : Geometry Nodes: Draw curve data in the viewport
 * : WIP: Geometry Nodes: Volume Sample Node

Bug Fixes
 * Fix T87316: No undo push for clicking on attribute name

Cleanup
 * Cleanup: Use consistent order for functions in node files
 * Cleanup: Use copy constructor for CurveEval

Review
 * [Accepted] : New Geometry Nodes evaluator
 * [Commented] : Initial attribute list for meshes
 * [Accepted] : Geometry Nodes: New Material Assign node
 * [Accepted] : Geometry Nodes: New Select by Material node
 * [Accepted] : Materials: Support materials when applying modifier
 * [Committed] : Fix T87357: Missing update after removing socket
 * [Commented] : Proposal: Improved feedback when dropping is not possible on drag 'n drop
 * [Commented] : Custom Properties: Copying Utility
 * [Closed] : Expose Sculpt Face Sets To Geometry Nodes
 * [Accepted] : Geometry Nodes: New material input node

Tracker
 * Investigated: 5
 * Duplicate: 1
 * Known Issue: 1
 * Archived: 3

Next Week

Next week I'll try to make more progress on curve nodes, commit the IDProperty UI data refactor, and fix some bugs.

May 10 - May 16
This week I worked on curve control point attributes, where the main complexity is exposing separate data from multiple splines as if it were a continuous set of values. I also worked on adding support for dynamic attributes to curves. In both of these cases I'm fairly happy with the result, though there is room for performance improvement.

On Saturday I made two nodes I had been thinking about during the week:





I also started reviewing Jacques' new geometry nodes evaluator patch. I'll have to put on my smart hat and do another pass on that though.

I abandoned D10712: Geometry Nodes: Optimize transform node for meshes-- we decided to just mark the normals invalid since you often do other operations after a transform node that may or may not use normals.

Changes / Features
 * Geometry Nodes Curves: Expose first builtin point attributes
 * Functions: Add materialize methods for generic mutable virtual array
 * Functions: Expose set_all method for generic virtual arrays ,
 * : Geometry Nodes: Support for dynamic attributes on curve splines
 * : Geometry Nodes: Add Curve from Edges Node
 * : Geometry Nodes: Add Curve Instance Node

Bug Fixes
 * Fix T88262: Curve to mesh crash with vector last segment

Cleanup
 * Splines: Convenience methods for point offsets of multiple splines
 * Cleanup: Update / improve comments ,
 * Cleanup: Move attribute code to attribute header
 * Cleanup: Sort node type definitions alphabetically
 * Cleanup: Splines: Add accessors to spline vector
 * Cleanup: Simplify public/private specifiers
 * Cleanup: Use helper function for repetitive code ,
 * Cleanup: Whitespace, add doxygen sections
 * Cleanup: Reorder class variable declarations
 * Cleanup: Clang format

Review
 * [Commented] : New Geometry Nodes evaluator
 * [Requested changes] : Spreadsheet: Dataset region for spreadsheet editor
 * [Commented] : Geometry Nodes: Convex Hull Node
 * [Requested changes] : Node Editor: Paste Node on mouse position
 * [Accepted, committed] : Geometry Nodes: Add Attribute Vector Rotate node
 * [Accepted] : Fix connecting wrong sockets when inserting node
 * [Accepted] : Geometry Nodes: Implement the validate_link callback
 * [Commented] : Geometry Nodes: Add a new Delete Geometry node
 * [Commented] : Bevel on curves does not create distorted geometry anymore
 * [Commented] : Expose Sculpt Face Sets To Geometry Nodes
 * [Accepted] : Geometry Nodes: Use texture socket in Attribute Sample Texture node

Tracker
 * Investigated: 7
 * Duplicate: 2
 * Confirmed: 1
 * Archived: 4

Next Week

I'm travelling a bit so I won't have quite as much time this coming week (still almost a full week though). I'd like to finish up the intitial targets for curves (then I still have some personal ideas I'd like to find time to work on-- volume sample node, 2D curve meshing, and some others).

I'm hoping it will be possible to commit D9697: Refactor IDProperty UI data storage this coming week.

May 3 - May 9
This week I kept working on curve support and curve nodes. On Monday I committed the first change to master. Then I worked from there to add tilt control and a resample node, which is the first actually useful thing about all of this. I haven't quite finished yet but support for curve point attributes is almost ready (though `position` will take some more time, automatically adjusting Bezier handles adds a lot of complexity!). I fixed the few bugs that came up with the curve nodes, mostly unreported.



I also worked on performance for the point instance node (another 8x performance boost), and did some random reviewing. We also had a long UI meeting on Wednesday.

Not much cleanup this week, wow!

Changes / Features
 * Geometry Nodes: Initial basic curve data support
 * Geometry Nodes: Curve Resample Node
 * Geometry Nodes: Parallelize attribute nodes
 * Geometry Nodes: Improve point instance node performance
 * Nodes Splines: Apply tilt to normal evaluation

Bug Fixes
 * Fix T88126: Curve resample crash for single point input
 * Fix: Incorrect type used for geometry nodes poly splines
 * Fix: Incorrect cyclic interpolation for nodes bezier spline
 * Fix: Splines: Use consistent bezier linear interpolation method
 * Fix: Curve to mesh node fails with one point and no profile
 * Fix: Curve to mesh node assert when last profile segment is vector
 * Fix: Curve resample duplicates last point for cyclic splines
 * : Fix T87316: No undo push for clicking on attribute name

Cleanup
 * Geometry Nodes: Refactor point instance node

Review
 * [Commented] : New Geometry Nodes evaluator (WIP).
 * [Accepted] : Drag & Drop: Use session id instead of name to identify dropped object
 * [Accepted, committed] Geometry Nodes: Add Attribute Curve Map Node
 * [Accepted] : Switch Node Polish
 * [Commented] : USD Importer
 * [Commented] : Edge-scrolling for node editor
 * [Commented] : View3D: Add undo support for Lock Camera To View
 * [Accepted] : Fix T88030: operator showing options it shouldnt
 * [Accepted] : Geometry Nodes: Parallelize Attribute Curve Map node

Tracker
 * Investigated: 8
 * Duplicate: 2
 * Needs Information: 2
 * Archived: 2

Next Week

Next week I'd like to finish up builtin and generic attributes for curves, and maybe get to the other normal evaluation methods. At that point the base will be pretty solid. There are also some patches I'd like to review, and I want to push on the "Selection attribute" design.

April 26 - May 2
This week I spent most time looking through bugs and doing some fixing. I also did some review back and forth with Jacques on the curve patch to keep that moving. On Saturday I looked into parallelizing some of the attribute nodes,. I expect it depends heavily on the computer, but 3-10 times faster with 8 cores in a linear situation is pretty nice. Really that's just earlier work paying off though, but it's nice to see.



I also updated an old patch, D9697: Refactor IDProperty UI data storage, hopefully we can get that reviewed and in master soon.

Changes / Features
 * Geometry Nodes: Add a template utility to mix two attribute values
 * Spreadsheet: Add instance IDs from geometry set
 * UI: Change "Int" to "Integer" in enum item names
 * : Geometry Nodes: Initial basic curve data support
 * : Geometry Nodes: Parallelize Attribute Nodes
 * : Generic array data structure (WIP)

Bug Fixes
 * Fix T87401: Drop-down can apply the wrong modifier
 * Fix T87702: Cannot generate one point with line node in end points mode
 * Fix T87165: Join geometry node doesn't copy instance IDs
 * Fix: Self object missing from geometry nodes evaluator params

Cleanup
 * Cleanup: Replace modifyVolume with modifyGeometrySet
 * Cleanup: Mismatched array bounds in function declaration ,
 * Cleanup: Move displist.cc to C++
 * Cleanup: Make function static
 * Cleanup: Fix unused variable warning in lite build
 * Cleanup: Remove unecessary variable
 * Cleanup: Reduce indentation by returning early
 * Cleanup: Use const argument for context

Review
 * [Accepted] : Geometry Nodes: Initial Attribute Transfer node
 * [Requested changes] : Geometry Nodes: Mesh Smooth node
 * [Requested changes] : Edge-scrolling for node editor
 * [Requested changes] : Geometry Nodes: Add Attribute Vector Rotate node
 * [Accepted] : Geometry Nodes: Refactor instances component.
 * [Accepted, committed] : Nodes: Add a callback to check for valid socket type
 * [Accepted, committed] : Geometry Nodes: Add an "Auto" option for Attribute Convert data type
 * [Accepted] : Geometry Nodes: Improve geometry nodes evaluator api.
 * [Accepted] : Fix T85889: Recursive instances result in crash.
 * [Accepted, committed] : Fix T87749: Fix text jitter in buttons with icons
 * [Requested changes] : Geometry Nodes: Convex Hull Node
 * [Commented] : Adaptive Curve Resolution
 * [Commented] : Expose Face Sets to Python
 * [Commented] : Fix: Undo history for 3D viewport pivot dropdown
 * [Accepted] : Fix T87767: Spreadsheet not updating on texture changes.
 * [Accepted] : Fix T87876: Vertex groups missing when mesh is in edit mode.
 * [Accepted] : Fix T87526: Poor contrast in attribute search.

Tracker
 * Investigated: 14
 * Needs Information: 3
 * Archived: 5
 * Resolved: 1

Next Week

Maybe more of the same (fixing final bugs for 2.93, various smaller design topics, curve support, and general refactoring). That's my prediction anyway.

April 19 - April 25
This week I mainly worked more on curves. I got NURBS splines working, generalized some of the interpolation from control points to evaluated points, and planned how I'll implement more features in the future. I'm quite happy with how it's turning out. It's taken a while to get the base working well, but the result is quite nice I think. It should be faster and more understandable than the current curve code, and it lays the groundwork for more features like arbitrary attributes.

I've I also worked more on the spreadsheet row filters, that needs one more update before committing to master though.

Other than that, I spent time mainly on miscellaneous code review and bug fixing. We had a UI meeting too, the first in a while.

Changes / Features
 * Geometry Nodes: Get attribute domain and type without allocation
 * BLI: Add "first" method to MutableSpan and Vector

Bug Fixes
 * Geometry Nodes: Add initializer for attribute creation
 * Fix T87392: Copy modifier to selected does not do anything
 * Fix T85223: Some modifier panels can dissapear in old files
 * Fix T87567: Crash adding item in empty attribute search
 * Fix windows build: Don't use designated initializers in C++

Cleanup
 * Cleanup: Clang tidy, clang format
 * : Cleanup: Move displist.cc to C++
 * : Cleanup: Replace modifyVolume with modifyGeometrySet

Review
 * [Requested changes] : Geometry Nodes: Initial Attribute Transfer node.
 * [Requested changes] : T86838 Geometry Nodes: Add Mesh To Volume Node
 * [Requested changes] : Add Extras Dropdown Menu to Constraints
 * [Requested changes, accepted] : Line Art manual page
 * [Accepted] : Curve modifiers: Disable 'Apply on Spline' option if not available
 * [Accepted] : Geometry Nodes: Add a new Delete Geometry node.
 * [Accepted] : Spreadsheet: Combine vector/color spreadsheet columns.
 * [Accepted] : Partially fix T87749: Fix text jitter in buttons and spreadsheet editor
 * [Accepted] : Fix T87637: Dragging button value cancel not working
 * [Accepted] : Geometry Nodes: Support Geometry Nodes modifier on volume objects.
 * [Commented] : UI: Add curve handle buttons to CurveMap interface
 * [Commented] : Nodes: Add a callback to check for valid socket type
 * [Requested changes] : Geometry Nodes: add Attribute Edge Length

Tracker


 * Investigated: 8
 * Archived: 2
 * Resolved: 4

Next Week

Next week will be a combination of bug fixing and working more on the curves.

April 12 - April 18
This week I worked on spreadsheet row filters, the final improvements to the attribute search menu, and I continued working on curves.

For the row filters I implemented drag and drop support, mostly just for the fun of it.

Some initial design documents for a few of the curve nodes:
 * Curve Trim Node
 * Curve Extrude Node

Changes / Features
 * Geometry Nodes: Add domain and data type to attribute search
 * UI: Add a workspace for geometry nodes in the default startup file
 * Geometry Nodes: Realize instances when applying modifiers
 * : Spreadsheet Editor: Row filters

Bug Fixes
 * Fix compile warning
 * Fix text in startup file python console
 * Fix T87555: Incorrect view transform default in startup file

Cleanup
 * Cleanup: Use C++ types in object_dupli.cc
 * Cleanup: Nodes: Use consistent errors for nodes built without features

Review
 * [Accepted] : Geometry Nodes: Use virtual arrays in internal attribute api (WIP).
 * [Requested changes, accepted] : Spreadsheet: Breadcrumbs and node pinning.
 * [Closed] : New Voxel Mesher Modifier
 * [Requested changes] : Geometry Nodes: Convex Hull Node
 * [Accepted] : Geometry Nodes: Add Attribute Curve Mapping node
 * [Accepted] : Nodes: Tooltip for Group Input properties
 * [Accepted] : Spreadsheet: Rename Point to Vertex.
 * [Accepted] : Fix T87356 & T87358: Small multi-input socket issues

Tracker
 * Reported: : Poor contrast for right aligned grayed text in search menu active item
 * Investigated: 7
 * Confirmed: 1
 * Needs Information: 1
 * Archived: 4

Next Week

This coming week I'm hoping to get some of the curve support into master, fix a few bugs, and do code review. I'd also like to create design tasks for a few of the volume nodes.

April 5 - April 11
This week I worked more on improvements to attribute search, row filtering for the spreadsheet, and various other tasks for geometry nodes. One area I focused on was volumes, where I refactored some code for more general improvements.



In my free time I also worked on curve nodes a bit, I've been having quite a bit of fun with that.



Changes / Features
 * Geometry Nodes: Greatly improve speed of some mesh primitives
 * Geometry Nodes: Support instances in attribute search
 * Geometry Nodes: Bounding Box Node
 * Geometry Nodes: Rename grid output UV attribute
 * Geometry Nodes: Support volumes in the bounding box node
 * BKE: Add a utility to transform a shallow copy of a volume grid

Bug Fixes
 * Fix T87264: Button to remove physics modifier doesn't work
 * Fix: Dragging a modifier to the same index recalculates modifier stack

Cleanup
 * Cleanup: Remove unused includes, use consistent order
 * Cleanup: Use const arguments for volume code
 * BKE: Refactor volume bounding box code
 * Cleanup: Rename function, switch order of arguments

Review
 * [Accepted] : Spreadsheet: Persistent column storage and data source.
 * [Requested changes] : T86838 Geometry Nodes: Add Mesh To Volume Node
 * [Requested changes] : Geometry Nodes: Attribute Statistic node
 * [Accepted, committed] : Use distance property subtype for geometry node sockets
 * [Requested changes] : Nodes: Tooltip for Group Input properties
 * [Accepted] : Geometry Nodes: Add Attribute Curve Mapping node
 * [Accepted] : Fix T87167: Object dragged from Outliner into Geo Nodes doesn't auto update
 * [Accepted] : Node Editor: Show frame label only when a label is set
 * [Accepted] : Fix T87263: Animation decorator not working on Grease Pencil Build modifier Factor value
 * [Accepted] : Spreadsheet: Add spreadsheet width unit.

Tracker
 * Reported: : Crash using menu search from the top bar
 * Reported: : Bad offset for node link in multi-input socket after disconnecting
 * Reported: : Assert for boolean node multi-input socket
 * Investigated: 7
 * Confirmed: 3
 * Archived: 1

Next Week

The next sprint will be focused on finishing up some improvements we want for 2.93, and as a nice surprise, curve and volume nodes, yay!

March 29 - April 4
This week I spent time on miscellaneous geometry nodes tasks, started work on row filtering for the spreadsheet, and finished up my work on the boolean node, including some cleanup of the boolean modifier at the end.

I also finally committed a change the UI team had talked about a while ago: returning hover shortcuts for mesh modifiers. I'm still not happy with the way it looks though-- The blue border around the active modifier makes it look like it's selected, but it has no effect on which shortcut the modifiers apply to. I brainstormed some ideas, nothing great yet though.

I moved the curve support in geometry nodes design document to the wiki. This weekend I started working on implementing this plan-- surprisingly it's not taking quite as much time as I thought. It's been quite fun.



Changes / Features
 * Geometry Nodes: Improve speed of boolean node, use multi-input socket
 * Geometry Nodes: Separate grid primitive X and Y size ,
 * Geometry Nodes: Set default grid vertices to 3 by 3
 * UI: Bring back hover shortcuts for mesh modifiers
 * Geometry Nodes: Rename "Grid" to "Density"
 * Geometry Nodes: Change point translate and scale node defaults
 * Geometry Nodes: Allow float input for point scale node ,

Bug Fixes
 * Fix unused variable warning caused by recent cleanup
 * Fix T87094: Transforming geometry instances component is broken
 * : Fix: Button to remove physics modifier doesn't work

Cleanup
 * Cleanup: Remove unecessary C API for direct mesh boolean
 * Cleanup: Remove remaining unused code for DispList "bevel_split"
 * Cleanup: Remove unused code in boolean modifier
 * Cleanup: Use const arguments in curve code
 * Cleanup: Use float4x4 type and constructor
 * Cleanup: Move object_dupli.cc to C++
 * Cleanup: Decrease variable scope
 * Cleanup: Fix incorrect socket list name
 * Cleanup: Improve comment
 * Cleanup: Remove unused code
 * Cleanup: Remove unecessary part of instances component C API
 * Cleanup: Use const arguments
 * : Cleanup: Fix incorrect error in mesh validation code

Review
 * [Requested changes] : Geometry Nodes: Mirror node
 * [Commented] : Point Distribute Volume
 * [Committed] : Expose multi input socket in python API
 * [Accepted] : Fix T86874: Wireframe Overlay Mesh Primitives Grid, Circle. Add ME_EDGEDRAW, ME_EDGERENDER edge flags
 * [Closed] : Fix T86874: Wireframe Overlay Mesh Primitives Grid, Circle
 * [Accepted] : BLI: Rename resource collector to resource scope.
 * [Commented] : Spreadsheet: Show data of active node (WIP).
 * [Accepted] : UI: Align Spreadsheet Reals and Integer to Right
 * [Accepted] : Fix T86654: wrong Vertex Interpolation option default when importing alembic caches

Tracker
 * Reported: : Memory leak in boolean fast solver collection mode
 * Investigated: 3
 * Confirmed: 1
 * Archived: 1

Next Week

Next week I'll finish up the row filtering for the spreadsheet, and work on some remaining issues I'd like to solve before Bcon4. On Monday I'm going to just work on curve support though.

March 22 - March 28
Since the focus for this past week was documentation, I made design tasks for porting a few modifiers to nodes. I'm finding I really like focusing on design:
 * : Mesh to Volume Node
 * : Mesh Bevel Node
 * : WIP: Attribute Transfer Node
 * : Mesh Screw Node
 * : Mesh Smooth Node
 * : Split Components Node

I also worked on a design task to clarify the idea of using boolean attributes as selections. I think the right approach is pretty clear, tried to think through pros and cons of different options: : Selection / Tagging in Geometry Nodes

Earlier in the week I had a short meeting with Howard and Campbell going over my proposals for curve support in geometry nodes and for converting modifiers to nodes. That was actually very nice; reflecting on it a bit I couldn't imagine doing anything like that a year ago, and their reception was positive!

Lastly I worked with Antonio on getting the grease pencil I/O patch,, ready for master, which we finally did!

Changes / Features
 * UI: Remove text for add and remove buttons in cryptomatte node
 * BLI: Add "identity" constructor to float4x4 type
 * Geometry Nodes: Remove location and rotation from mesh primitives
 * Geometry Nodes: Move mesh primitives to their own category
 * Geometry Nodes: Make plane primitive size consistent
 * Geometry Nodes: Rename "Plane" primitive to "Grid"
 * Add an example to the Attribute Vector Math page
 * UI: Use correct property split ratio for node socket buttons
 * : Geometry Nodes: Improve speed of boolean node, use multi-input sockets
 * : Geometry Nodes: Support X and Y size for grid primitive
 * : Geometry Nodes: Bounding Box Node

Bug Fixes
 * Fix T86875: "Show on Cage" crash for geometry nodes primitives

Cleanup
 * Fix build error and warnings in new grease pencil IO code
 * Cleanup: Pass instance group result vector as an argument
 * Cleanup: Geometry Nodes: Allow using "Auto" domain to avoid adapting
 * Cleanup: Remove unecessary enum funcs
 * Cleanup: Use enum for "in" vs. "out" node sockets

Review
 * [Requested changes] : Geometry Nodes: Add a new Delete Geometry node.
 * [Accepted] : Fix drag and drop issues with Object Info for geometry nodes
 * [Requested changes] : Line Art manual page
 * [Committed] : Themes: Update the "Minimal Dark" theme preset
 * [Commented] : Boolean modifier: new option to set bevel weight / edge crease for new edges
 * [Commented] : Geometry Nodes: Use implicit conversion when writing to built-in attributes
 * [Committed] : Geometry Nodes: Center Plane primitive around origin and fix UV size
 * [Committed] : Geometry Nodes: add Attribute Map Range
 * [Committed] : Geometry Nodes: Add remaining operations of the Vector Math node
 * [Committed] : Cleanup: "Warning" in tooltips/description, use unified format
 * [Committed] : UI - Remove 'Enable physics for:' text
 * [Commented] : Geometry Nodes: Add node labels to Attribute maths nodes
 * [Commented] : VSE UI: Sidebar overlapping and transparent
 * [Accepted] : Geometry Nodes: Rename attribute domains.
 * [Commented] : Add Object: Point Primitive

Tracker
 * Investigated: 6
 * Confirmed: 2
 * Archived: 2

Next Week I'm not exactly sure what the next week's focus will be, but I expect bug fixing, review, and maybe some prototyping.

March 15 - March 21
This was a very scattered week. I was hoping to get to starting the attribute processor prototype, but I had to keep pushing that back in order to finish the mesh primitives, fix bugs, review code, and have design discussions. I'm still happy with it, it was just all over the place.



In order to make review of the mesh primitives patch easier, I split up some of the new implementations into a separate patch,. Doing that I discovered that the new implementation for the sphere was over 4000 times faster in some cases. Regardless of whatever stupid reason causes that, it's a nice feeling!



I also spent a fair amount of time going over the line art commit for a UI pass, mostly for wording of tooltips, etc. That involved some discussion for figuring out what some of the options do.

I made a design task for a Geometry Delete Node after some discussion because Wannes Malfait wanted to work on porting the mask modifier.

Changes / Features
 * Geometry Nodes: Add initial version of mesh primitives
 * UI: Tweak labels, descriptions, and panel layout for line art
 * UI: Correct icon and description for "Object Line Art"
 * Geometry Nodes: Add geometry instances data to the spreadsheet
 * Geometry Nodes: Implicit interpolations to and from the edge domain
 * Geometry Nodes: Don't create empty components when realizing instances
 * Geometry Nodes: Rename "Subdivide Smooth" back to "Subdivision Surface" ,
 * Geometry Nodes: Use consistent default for cylinder node
 * Geometry Nodes: Move cone primtive to rest on its base by default
 * Geometry Nodes: Make cone primitive 2m tall by default
 * : Geometry Nodes: Greatly improve speed of some mesh primitives

Bug Fixes
 * Geometry Nodes: Refactor / fix point separate node
 * Add versioning code removed in 91561629cd0b

Cleanup
 * BLI: Add location, rotation, scale constructor to float4x4
 * Cleanup: Remove commented code
 * Cleanup: Don't use class method to override equality operator

Review
 * [Requested changes] : GPencil: New modules for Import and Export
 * [Requested changes] : Point Distribute Volume
 * [Requested changes] : Node Redesign: Dot Grid
 * [Requested changes] : Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
 * [Accepted] : Geometry Nodes: Add Attribute Clamp Node
 * [Commented] : Bevel on curves does not create distorted geometry anymore
 * [Commented] : Fix T86602: Redo Last Panel in the bottom left disappears on left click (regression)
 * [Committed] Update the deep grey theme preset
 * [Accepted] : Documention for Attribute Remove node
 * [Accepted] : Geometry Nodes: Expose crease attribute
 * [Accepted] : Nodes: Fix crash after undo after recent multi-input-socket changes
 * [Accepted] : UI: Rename Init to Initialize Face Sets in menu
 * [Accepted] : Fix T86548: Sculpt: Mask by Color tool not working
 * [Accepted, committed] : Fix T86701 : Geometry nodes Cube and UV Sphere mesh size
 * [Accepted, committed] : Reset View (CurveProfile) function access for python

Tracker
 * Investigated: 5
 * Confirmed: 2
 * Archived: 1
 * Resolved:

Next Week

I have quite a bit of review piling up now: the grease pencil IO patch, line art documentation (which I'll probably only look at briefly for something like a "native speaker pass"), and others. Then I should really change back to the hover shortcuts for modifiers sooner rather than later, and there are a few UI bug fixes to get too as well.

On top of that there are some design discussions coming up that I'm dreading a bit since there's some disagreement about the answers. I'm trying to find the right balance of pushing back, but in some cases I just think it's important. Speaking of compromising, I'll remove the location and rotation control from the primitives as well.

Also I'll need to add the manual pages for the primitive nodes...

March 8 - March 14
This week I re-wrote the "normal" attribute, reverting the previous implementation which was a bit hacky and not properly thought-through. I also mostly finished the initial version of the mesh primitives and posted a patch for that.

I wrote down some design ideas for the attribute processor node, thought it seems we'll be heading in a different direction. I wasn't there on Friday when the latest design was presented.

I also wrote about some design disagreements for the "tools" task and the status bar for the spreadsheet editor. The need to do that comes partly from time zone differences, since it's harder to be involved in design discussions in real time. Sometimes that makes it feel like we're rushing with some design decisions.

Changes / Features
 * Geometry Nodes: Improve performance of point distribute node
 * Geometry Nodes: Revert current normal attribute implementation
 * Geometry Nodes: Add "normal" attribute for face normals
 * Geometry Nodes: Expose "shade smooth" as an attribute
 * Geometry Nodes: Add Attribute interpolation for polygon domains
 * Geometry Nodes: Rename subdivision nodes ,
 * UI: Clean up sub-panel for new boolean modifier options
 * Geometry Nodes: Add color to boolean implicit conversion
 * Nodes: Move group input and output to a consistent menu location
 * Nodes: Add distance float socket type
 * : Geometry Nodes: Add initial mesh primitives
 * : WIP: Geometry Nodes: Optimize transform node for meshes
 * : Add location, rotation, scale constructor to float4x4

Bug Fixes
 * Fix geometry nodes implicit conversion to booleans reversed

Cleanup
 * Cleanup: Move geometry component implementations to separate files ,
 * Cleanup: Do not pass stack allocated string to MEM_callocN
 * BLI: Add "is_zero" method to float2 and float3 types

Review
 * [Wrote alternate version, committed] : Geometry Nodes: Add Attribute Convert node
 * [Requested changes] : Geometry Nodes: Switch Node
 * [Requested changes] : Geometry Nodes: Add Attribute Clamp Node
 * [Requested changes] : Point Distribute Volume
 * [Accepted] : Spreadsheet: New spreadsheet editor (MVP).
 * [Accepted] : Spreadsheet: Expose more domains and point cloud data.
 * [Accepted] : Spreadsheet: Support showing data from original/unevaluated object.
 * [Accepted] : Manual: Add Page for Attribute Proximity (Geometry) Node
 * [Accepted] : Spreadsheet: Add boilerplate code for new editor type.
 * [Commented, accepted] : Nodes: Fix drag link from output to already linked Multi-Input Socket
 * [Requested changes] : Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
 * [Accepted] : Fix (unreported) geometry node attribute search not working in the Properties Editor
 * [Requested changes] : Bevel on curves does not create distorted geometry anymore
 * [Requested changes] : Nodes: Add Refract function to Vector Maths nodes
 * [Requested changes] : Geometry Nodes: Add shader Color Mix node

Tracker
 * Investigated: 5
 * Archived: 3
 * Resolved: 2

Next Week

Next week I expect an initial rush to get some changes into 2.93 before Bcon2, then I'll focus on working on some of the other things we planned for this sprint, like some of the prototypes we wanted to look into. I'd really like to progress on the "modifiers to nodes" design write-up I wanted to do too.

March 1 - March 7
This week I worked on attribute search for geometry nodes, exposing normals as an attribute, a design document for supporting curves in geometry nodes, and updating miscellaneous work-in-progress patches. I'm really happy to have the curve support design document mostly finished, I think it turned out well.

I also reviewed a patch for improved breadcrumbs in the node editor, but when I thought it was ready we received some feedback that it shouldn't be committed. The headless status of the UI module means it's not very clear what happens next there.

Changes / Features
 * Geometry Nodes: Attribute search drop-down
 * Geometry Nodes: Expose vertex normals as an attribute
 * UI: Allow translation for node error messages
 * UI: Correct output attribute name in proximity node
 * Geometry Nodes: Allow clearing an attribute text field
 * Geometry Nodes: Sort attribute search items when menu opens
 * UI: Expose an "is first search" boolean to search button callbacks
 * UI: Remove extra blank space for decorators in FCurve modifiers
 * : Geometry Nodes: Use read-only instances in point distribute node
 * : WIP: Curve Profile Presets
 * : Geometry Nodes: Add domain and data type to attribute search (WIP)

Bug Fixes
 * Fix Node UI Storage Threading Issues
 * UI: Rename search button variable
 * Fix crash when dragging nodes
 * Fix crash with pinned geometry node tree with no active object

Cleanup
 * Cleanup: Use span and float matrix type in direct boolean code
 * Cleanup: Rename node UI storage function ,

Review
 * [Requested changes] : GPencil: New modules for Import and Export
 * [Requested changes] : Spreadsheet: New spreadsheet editor.
 * [Accepted] : Nodes: Breadcrumbs for node editor
 * [Closed] : Geometry Nodes: Point Array Node
 * [Requested changes] : Point Distribute Volume
 * [Accepted] : Refactor derived node tree.
 * [Requested changes, committed] : Fix: Fixes Bug with Multi Input Sockets picking wrong link if no link is selected
 * [Accepted, committed] : UI Cleanup: "Draw" to "Display"
 * [Accepted, committed] : Reset View (CurveMapping) function access for python
 * [Accepted] : UI: UVProject modifier: clarify aspect & scale are only for camera projectors
 * [Commented] : Add Root operation to math node (all Editors)

Tracker
 * Investigated: 9
 * Confirmed: 1
 * Invalid: 2
 * Resolved: 2

Next Week

Next week the next sprint will start, so I'm not exactly sure what I'll be working on. There are a fair amount of new features to wrap up for 2.93 though, I assume that may be the focus.

February 22 - February 28
This week I mainly worked on attribute search and code review. The initial version of the search is just waiting on code review now. I did a code review session with Julian on Wednesday, and after that I was able to commit some old patches, which was nice. I still have to work on actually finishing projects I start!



I also spent some extra time working on initial mesh primitive nodes, mostly for fun, but they'll be really nice to have in soon I think.



Changes / Features
 * Improve the attribute reference page (for 2.92 and 2.93)
 * UI: Fix icon width and padding in search menus
 * : Geometry Nodes: Attribute Search Buttons
 * : UI: Add an option to search buttons to allow any string input
 * : UI: Expose an "is first search" boolean to search button callbacks
 * : Geometry Nodes: Expose "shade smooth" as an attribute
 * : Geometry Nodes: Expose vertex normals as an attribute

Bug Fixes
 * UI: Reorder mesh merge operator types for consistent shortcuts
 * Fix T84953: Incorrect tooltip for dragging collections
 * Fix T85963: Combine and separate XYZ nodes don't work on instances
 * Fix T85979: Attribute missing warning with empty geometry

Cleanup
 * Cleanup: Remove unused node editor button event defines
 * Cleanup: Remove unecessary double negative
 * Cleanup: Clang tidy fixes ,
 * Cleanup: Decrease variable scope
 * Cleanup: Use bool instead of char
 * Geometry Nodes: Move node UI storage function to BKE

Review
 * [Requested changes] : Nodes: Breadcrumbs for node editor
 * [Accepted, committed] : Geometry Nodes: add Location output to Attribute Proximity node
 * [Requested changes] : Geometry Nodes: Add alternative distribution options to the Attribute Randomize node
 * [Requested changes] : Geometry Nodes: Add Attribute Clamp Node
 * [Commented] : VSE UI: rework "Frame Overlay" panel to make it more user friendly
 * [Accepted] : Geometry Nodes: Improve accessing attribute meta data.
 * [Accepted] : Add documentation for Attribute Combine and Separate XYZ nodes.
 * [Commented] : Nodes Redesign: Colored Links
 * [Requested changes] : Node Redesign: Dot Grid
 * [Accepted] : Fix T83398: Fade inactive geometry overlay option not visible depending on the mode
 * [Accepted] : UI - Remove 'Enable physics for:' text
 * [Accepted] : UI Cleanup: "Draw" to "Display"
 * [Accepted, committed] : Fix T84796: Particle tools properties displayed for select/cursor tool
 * [Accepted, committed] : Nodes: Make Virtual Sockets better recognizable.
 * [Accepted, committed] : Cleanup: Fixes for labels and descriptions in various places
 * [Accepted, committed] : Cleanup: use of the term "Metaballs"
 * [Accepted, committed] : Cleanup: "Dupli" to "Instance"

Tracker
 * Investigated: 6
 * Confirmed: 2
 * Invalid: 1

Next Week

Next week I'll continue work on what we have planned for the geometry nodes sprint. Earlier in the week I'll hope to commit the initial version of the attribute search and review the spreadsheet editor code. And again, I have way too many open patches and ongoing projects, I need to finish some of them.

February 15 - February 21
This week I focused on a few geometry nodes features. First is error messages, which also includes laying the groundwork for more information to be stored for the UI during the node tree evaluation, like a list of attribute names, which I worked on later in the week (no visual results yet though).



I worked on some other features: adding mesh primitives, speeding up some nodes with read-only access to instances, and adding the `material_index` attribute. I wrote more about the "Attribute Processor" design, and worked on design for converting existing modifiers into nodes.



On Friday I was able to commit some UI patches that had been around for a while, which was really nice! I also reviewed and committed some geometry nodes patches.

Changes / Features
 * Geometry Nodes: Node error messages
 * UI: FModifier layout updates, drag and drop
 * Geometry Nodes: Expose material index attribute
 * Geometry Nodes: Support integer type in the Attribute Fill Node
 * UI: Use property split in geometry node properties
 * UI: Expand enum in collection info node
 * UI: Use title case for label
 * : Geometry Nodes: Bounding Box Node

Bug Fixes
 * Fix T83027: Incorrect outliner collection state after operator
 * Fix T85664: 3D Viewport issues with curve poly splines
 * Fix T85716: "Applied Modifier:" report hides more important message
 * Fix: Attribute randomize node broken for integer attributes

Cleanup
 * Cleanup: Disentangle outliner active status "get" and "set"
 * Cleanup: Compile node_draw.c with C++
 * Cleanup: Used derived node in geometry exec params
 * Cleanup: Remove use of designated initializers in C++
 * Cleanup: Comment formatting in node_draw.cc
 * Cleanup: Comment formatting, spelling
 * Cleanup: Use Vector instead of of raw array
 * Cleanup: Return bool instead of int
 * Cleanup: Use const argument, decrease variable scope ,
 * Cleanup: Use consistent order placement for include
 * Cleanup: Clang tidy, , ,
 * Cleanup: Remove type from global namespace in C++ header

Review
 * [Requested changes] : Nodes: Breadcrumbs for node editor
 * [Requested changes] : Geometry Nodes: add Location output to Attribute Proximity node
 * [Requested changes] : Geometry Nodes: Add all UV Smooth and Boundary Smooth options to subdivision node
 * [Commented] : Geometry Nodes: Add Invert option to the Transform node
 * [Accepted, committed] : Geometry Nodes: Add string input node
 * [Accepted, committed] : Geometry Nodes: Add Simple Subdivision node
 * [Accepted, committed] : Fix T85410: Quick liquid domain alignment
 * [Commented] : Geometry Nodes: Add distribution option to the Attribute Randomize node
 * [Accepted] : Geometry Nodes: Realize instances before passing geometry to mesh modifier.
 * [Accepted] : Geometry Nodes: Convert point cloud to mesh vertices for other modifiers.
 * [Accepted] : Geometry Nodes: Use corner domain for density map in Point Distribute node.
 * [Accepted] : Geometry Nodes: Support float2 attribute in Python api and for rendering.

Tracker
 * Investigated: 5
 * Duplicate: 1
 * Confirmed: 2
 * Invalid: 2

Next Week

Next week I'll work with Jacques to finish the code for displaying a list of attribute name hints in the UI, and hopefully finish some of the other assorted geometry nodes tasks I've been working on.

February 8 - February 14
We spent most of the week on geometry nodes design, like we planned. Though we didn't have enough time to cover all of the topics we wanted to (simulation in particular we didn't really get to, though Jacques did share some thoughts with me). I wrote a document discussing how to convert existing modifiers to nodes, and worked on a mock-up to address some feedback from Simon.





With the rest of the time not spent on design, I worked on making instances work properly in the node tree, and supporting attribute domains besides "points" in nodes. I also spent a fair amount of time finishing up review for the multi-socket join node, where I ended up adjusting a few parts of the patch.

Changes / Features
 * Geometry Nodes: Make instances real on-demand
 * Geometry Nodes: Add dependency relation for collection objects
 * Geometry Nodes: Allow attribute nodes to use different domains
 * Geometry Nodes: Add operation setting to attribute randomize node
 * : WIP: Geometry Nodes: Material Index attribute, polygon domain interpolation
 * : WIP: Geometry Nodes: Bounding Box Node

Bug Fixes
 * Fix Geometry Nodes: Broken built-in attribute exists check
 * Fix errors in point separate page
 * Fix T85555: Geometry Nodes: Attribute Vector Math Wrap is broken
 * Fix ASAN report when creating attribute math node
 * Fix T85633: Misspelling of "neighborhood" in description

Cleanup
 * Cleanup: Simplify three functions in displist.c
 * Cleanup: Register node property layout callbacks in files
 * Cleanup: Decrease scope of RNA enum definitions
 * Cleanup: Simplify geometry nodes attribute API usage
 * Cleanup: Remove unecessary padding from small DNA structs
 * Cleanup: Remove unused variable
 * Add additional object to curve_to_mesh test file ,

Review
 * [Requested changes, committed] : UI: Multi-input node socket spacing and interaction
 * [Accepted] : Geometry Nodes: Refactor internal attribute access architecture.
 * [Accepted] : Geometry Nodes: Initial attribute interpolation between domains.
 * [Requested changes, accepted] : Geometry Nodes: add Attribute Map Range
 * [Accepted] : Geometry Nodes: Add Combine and Separate XYZ nodes for attributes
 * [Commented] : Preserve Layer Collections During Sync
 * [Requested changes] : Added New String Input Node
 * [Accepted] : RNA: Support bool attribute in RNA.
 * [Accepted] : Bevel on curves does not create distorted geometry anymore
 * [Committed] : Fix: T85493 move FLT_MAX fill outside of parallel_for
 * [Committed] : Cleanup: Fix clang compile warning

Tracker
 * Investigated: 11
 * Duplicate: 4
 * Confirmed: 3
 * Invalid: 2
 * Resolved: 3

Next Week

Next week we'll be focusing on polishing the attribute workflow. So of course the first order of business is finally finishing the node error messages, because the socket inspection relies on that concept. Then, I'd also be interested in looking into the attribute spreadsheet idea.

February 1 - February 7
This week I worked on a few things:
 * Implementing and implementing an API to support reading instances in geometry nodes and making them real when necessary. This project has been really enjoyable, and quite important for the project I think. Though the largest user-visible change will probably be "the collection info node works" for now.
 * Node error messages. Unfortunately this is still in progress, but I know the next steps and they should be relatively quick.
 * Code and design review for geometry nodes and the UI module



Changes / Features
 * : WIP: Geometry Nodes: Instances API, support in point distribute node
 * : WIP: Geometry Nodes: Node error messages

Bug Fixes
 * Fix T85155: Vertex groups from object don't transfer to next nodes modifier
 * Fix build error on windows after recent commit

Cleanup
 * Blenkernel: Move node.c to C++
 * Cleanup: Alphabetize function order
 * : Cleanup: Register node property layout callbacks in files
 * : WIP: Cleanup: Use Map instead of GHash for node type hashes
 * : Cleanup: Remove unecessary padding from small DNA structs

Review
 * [Updated, committed] : Geometry Nodes: add Attribute Proximity node
 * [Requested changes] : UI: Multi-input node socket spacing and interaction
 * [Requested changes] : Geometry Nodes: Add Combine and Separate XYZ nodes for attributes
 * [Accepted, committed] : Geometry Nodes: Multi Input Sockets
 * [Requested changes] : Geometry Nodes: Changes Join Geometry Node to use Multi Input Sockets
 * [Commented, Accepted] : Geometry Nodes: Add Volume to Mesh Node
 * [Commented] : Preserve Layer Collections During Sync
 * [Commented] : VSE: Draw function for add strip operators
 * [Commented] : Added New String Input Node
 * [Commented] : cleanup: fix source typos (API breakage)
 * [Accepted] : Geometry Nodes: New Is Viewport node.

Tracker
 * Reported : Quick Liquid has no effect until playback loops back on the start frame
 * Reported : Rotation of new object created by "Quick Liquid" affected by user preference
 * Investigated: 11
 * Confirmed: 3
 * Invalid: 3

Next Week

This coming week we're going to try to work on "Everything Nodes Design", which should be quite interesting. I'm not quite sure how it's going to work though, since most people on the team are only working on the project for a day or two a week. I'll have to work on other stuff for much of the time anyway, because of the time zone offset. Hopefully I can wrap up a lot of my existing patches.

January 25 - January 31
This wasn't the most productive bug week, a few of my fixes are still in review, but I just didn't get to very many bugs. It's a bit hard to say in retrospect, but probably for a few reasons: time spent organizing the workboard (which can sometimes result in catching up on old design tasks), time spent working on design for geometry nodes, time spent on code cleanup, time spend on code review, and the difficulty of finding a good bug to work on.

Actually, when I look back on that list, the week doesn't seem unproductive.



Changes / Features
 * Geometry Nodes: Support all operations in the "Attribute Math" node
 * Geometry Nodes: Use highest complexity attribute in join node
 * Geometry Nodes: Add attribute reference page to manual
 * UI: Fix ugly alignment of timeline popover buttons
 * Geometry Nodes: Add float2 to attribute complexity map
 * : Geometry Nodes: Upgrade Attribute Randomize node with operation

Bug Fixes
 * Fix: Unable to animate nodes modifier exposed properties
 * UI: Fix incorrect RNA percentage property definitions
 * Fix T83988: Active modifier outline uses search theme color
 * RNA: Add warning to float percentage property definition
 * Fix build error
 * Fix incorrect RNA enum default
 * : Fix T83027: Incorrect outliner collection state after operator
 * : Fix T85155: Vertex groups from object don't transfer to next nodes modifier
 * : Fix T84953: Incorrect tooltip for dragging collections
 * : Geometry Nodes: Add "Group Input" and "Group Output" nodes to menu

Cleanup
 * Cleanup: Reduce variable scope, use LISTBASE_FOREACH macro, , , ,
 * Cleanup: Comment formatting, grammar
 * Cleanup: Correct comments in ID type enum
 * Cleanup: Use const arguments
 * : Cleanup: Disentangle outliner active status "get" and "set"

Review
 * [Requested changes] : Geometry Nodes: add Attribute Proximity node
 * [Requested changes] : Geometry Nodes: Socket Growing and Link Spaceing
 * [Accepted] : Fix T84935: Boolean custom data layers not saved correctly.
 * [Accepted] : Fix T84907: Incorrect dirty mask after geometry join node.
 * [Requested changes] : fix preserving user selected exclude-state of nested collections.
 * [Accepted] : Fix for T84038: Improved Report Warnings
 * [Accepted] : Cleanup: "Dupli" to "Instance"
 * [Accepted] : UI: Current Frame Marker Cleanup
 * [Accepted] : Nodes: Make Virtual Sockets better recognizable.
 * [Accepted] : UI: Allow node editor wires to have alpha
 * [Accepted] : UI: Update community themes for node wire alpha

Tracker
 * Reported : Undo assert changing property in redo panel
 * Investigated: 7
 * Invalid: 1

Next Week

Next week is the first sprint of the second phase of the geometry nodes project. That's probably going to involve lots of little things with attributes and instances. Personally I'm looking forward to creating a proper API to retrieve instanced geometry, and to cleaning up the attribute API so that using it is a bit more intuitive.

January 18 - January 24
This was a relatively less productive week in terms of features and fixes finished and committed. I spent quite a while working on node error messages, which ended up being more complicated than I expected. I didn't quite get to the point of posting a patch for that this week, but it's basically finished.

I spent the remainder of my time doing code review and working on a few bug fixes for geometry nodes. I also spent a while looking into the attribute system, seeing if I could expose the `normal` and `material_index` attributes. The latter lead to me looking into attribute domain conversion, which is an interesting problem but sort of a big one!



Changes / Features
 * : Geometry Nodes: Expose normals as an attribute
 * : Geometry Nodes: Randomize random attribute seed socket

Bug Fixes
 * Fix: Mouse presses in some areas do not set active modifier
 * : Fix animating nodes modifier properties doesn't work
 * Fix "use after scope" reported by ASAN

Cleanup
 * Cleanup: Store runtime space node variables in a separate struct
 * UI Code Quality: Use "params" struct for area and region callbacks
 * Cleanup: Use const arguments, explicit type
 * Cleanup: Clang tidy else after return ,

Review
 * [Requested changes] : Geometry Nodes: Changes Join Geometry Node to use Multi Input Sockets
 * [Commented, accepted] : Geometry Nodes: New Sample Texture node.
 * [Accepted] : Geometry Nodes - Object Info: Transformation Space
 * [Accepted] : Geometry Nodes: New Sample Texture node.
 * [Commented] : Geometry Nodes: add Attribute Proximity node
 * [Commented] : Geometry Nodes: New Points to Volume node.
 * [Commented] : Object Context Menu tweaks for consistency
 * [Commented] : Refactor modifier copying code.
 * [Commented] : VSE: Expose existing Transform Expand as a Select Tool toggle button
 * [Requested changes] : Fix T846224: Extra user for geometry nodes data-blocks
 * [Requested changes] : Geometry Nodes: Plane Primitive Node
 * [Commented] : Fix T84600: prevent bone groups operators on proxies/overrides
 * [Commented] : Better categorization in Grease Pencil Layers sub-panels

Tracker
 * Investigated: 5
 * Invalid: 2

Next Week

A bug fixing week. I'd like to look into UI and geometry nodes bugs, and hopefully finish up some of my previous bug fix patches.

January 11 - January 17
I spent the first half of the week somewhat frantically finishing up polishing changes to geometry nodes for 2.92. The team was only back together this week after holidays, so that left a fair amount of changes we wanted to make for 2.92 in a short amount of time. I'm relatively happy with how it's turning out. There are still some pretty significant usability challenges though.

The first of those is that there are no error messages when nodes don't work for some reason, which I spent some time on later in the week. Other than that I spent time on code review for geometry nodes and UI changes, worked on bug fixes, and participated in meetings, including an extra UI meeting this week.

Changes / Features
 * Geometry Nodes: Attribute Vector Math Node ,
 * Geometry Nodes: Output the most complex attribute data type
 * Geometry Nodes Point Distribution: Align points to face normals
 * Geometry Nodes: Enable exposing object and collection sockets
 * Geometry Nodes: Add "Point Translate" and "Point Scale" nodes ,
 * Bevel Modifier: Use angle limit method by default
 * UI: Update geometry icon files
 * UI: Clarify the property name of "F-Curve Visibility"
 * Geometry Nodes documentation tweaks ,
 * Geometry Nodes: Rename boolean input sockets
 * Geometry Nodes: Rename "Rotate Points" to "Point Rotate"
 * UI: Use capital letters for X Y and Z axes
 * UI: Draw socket type colors on the left in group sockets list
 * Bump file subversion after recent node versioning commit

Bug Fixes
 * Fix T84686: Node vector socket default values not animate-able
 * Fix "Make Instances Real" to work with nodes modifier instances ,
 * Geometry Nodes: Use a default value in the point scale node

Cleanup
 * Cleanup: Add const in various places in node code
 * Cleanup: Fix incorrect function name
 * Cleanup: Remove unecessary namespace prefixes

Review
 * [Requested changes] : Geometry Nodes: Multi Input Sockets
 * [Requested changes] : Geometry Nodes: Plane Primitive Node
 * [Requested changes] : Fix T846224: Extra user for geometry nodes data-blocks
 * [Requested changes, committed] : Fix T84713: Implement the update function for geometry nodes
 * [Committed] : UI: Icon for Multires Displacement Smear Tool
 * [Commented] : VSE: Expose existing Transform Expand as a Select Tool toggle button.
 * [Accepted] : Geometry Nodes: New Align Rotation to Vector node.
 * [Accepted] : Geometry Nodes: Transfer corner and point attributes in Point Distribute node.
 * [Requested changes] : Geometry Nodes: Plane Primitive Node
 * [Requested changes] : Fix T846224: Extra user for geometry nodes data-blocks

Tracker
 * Reported : Scale attribute has no default value after distribution
 * Reported : Geometry Nodes: Node group data-block has phantom user
 * Investigated: 11
 * Invalid: 6
 * Needs Information: 1
 * Resolved: 5
 * Confirmed: 2

Next Week

The second week of the sprint! Hopefully I can get the error messages finished up. I'm hoping to look into adding another data type to the node tree too, and I'm sure other things will come up.

January 3 - January 10
This was mostly a regular bug fixing week. I fixed some UI bugs and some geometry nodes bugs. Lack of communication and code review means it's a bit harder to make solid progress on bugs than it could be though. For example, I still have some open patches for bug fixes from weeks and months ago.

I spent some time advising contributors making patches for the UI and geometry nodes. It's been very satisfying to see their progress. I made a task for a UI inconsistency that the UI team discussed,.

I also spent a bit of time cleaning up old patches for the UI module. Still at 218 open patches though.

Changes / Features
 * UI: Improve node group input / output list interface
 * Corrections and clarifications to geometry nodes documentation
 * Geometry Nodes: Don't start with empty group nodes selected
 * UI: Use the 3D cursor icon for the RNA struct
 * Geometry Nodes: Gray out "New" button when curve object is active
 * Keymap: Enable repeat for "Make Edge/Face" operator
 * : Geometry Nodes: Make instances real when applying the modifier
 * : Change operators to add new "group" collections to the scene
 * : Geometry Nodes: New duplicate node group and assign operator
 * : Geometry Nodes: Enable Exposing object and collection sockets

Bug Fixes
 * UI: Fix typo in operator description
 * Fix T84382: Geometry Nodes: Vertex group attributes are removed
 * Fix T83868: Disabled or inactive list items are not grayed out
 * Fix T78681: "Add Primitive" icons are cropped in tool header ,
 * Fix T84326: No ID for geometry nodes instances after scattering
 * Fix T78017: Broken layout in "View Lock" panel with armature
 * Fix T84517: Two geometry node trees added with "New" button
 * : UI: Reorder mesh merge operator types for consistent shortcuts
 * : Fix T84455: Circle select tool cursor draws in overlapping regions
 * : Fix T84417: Common noisy terminal messages when entering numbers
 * : UI: Clarify the property name of "F-Curve Visibility"

Cleanup
 * Cleanup: Remove unused variables in transform mesh skin code
 * Cleanup: Use LISTBASE_FOREACH macro
 * Cleanup: Reduce variable scope
 * Cleanup: Use bool instead of int ,
 * Cleanup: Declare variables where initialized
 * Cleanup: Use flag type explicitly

Review
 * [Requested changes] : Geometry Nodes: add method for Poisson Disk sampling on mesh
 * [Commented] : File Browser: select files and directories after renaming
 * [Accepted] : Gizmos: Keep navigation gizmo visible during modals
 * [Commented] : Fix T84367: Fix crash when showing invalid/legacy constraints
 * [Committed] : Fix T84183: Dark area in the bevel custom profile widget
 * [Committed] : Fix T83094: Alternate rows in the Sequencer are green (macOS)
 * [Commented] : UI: Icons for Sculpt Displacement tools
 * [Commented] : Fix NURBS Repeat for Extrude doesn't repeat extrusion.
 * [Requested changes] : Add fill to Grease Pencil Topbar Radius sliders
 * [Committed] : UI: Fix various issues with UI text
 * [Commented] : Configurable rotation angle increments

Tracker
 * Reported : Failing assert when choosing custom icon for brush
 * Investigated: 23
 * Invalid: 4
 * Duplicate: 2
 * Resolved: 2
 * Known Issue: 2
 * Confirmed: 3

Next Week

Next week may be the first "normal" week in quite a while. As far as I know, we're back to work on geometry nodes. Personally I'm excited to fix some problems with attributes and tackle more "edit mode like" features. I'll also spend time on code review and finishing up ongoing projects (really trying not to start new ones!)