I think there is a little problem with the rotation gizmo. If you look at the workspace:
You will see that the global coordinate is only rotating correctly if there is no assignment made to gizmo.updateGizmoPositionToMatchAttachedMesh prior to assigning true.
This code:
does not work as expected and it seems to only accept the first assignment.
Another question is also whether using the local mesh (i.e. gizmo.updateGizmoRotationToMatchAttachedMesh = false) should not better also yield a gizmo behaviour as in the world coordinate case, but just with the initial gizmo being accordingly rotated?