Skip to content

fix(ModelIntersection): add computation of intersection between lines…#177

Merged
BotellaA merged 5 commits into
nextfrom
fix/surface_remesh_introduces_internal_line_intersection
May 19, 2026
Merged

fix(ModelIntersection): add computation of intersection between lines…#177
BotellaA merged 5 commits into
nextfrom
fix/surface_remesh_introduces_internal_line_intersection

Conversation

@BenPinet
Copy link
Copy Markdown
Member

… internal to block and surfaces

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 19, 2026

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-tidy (v20.1.8) reports: 33 concern(s)
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:73:51: warning: [hicpp-uppercase-literal-suffix]

    integer literal has suffix 'u', which is not uppercase

       73 |                 next_apex + 1 == polygon.size() ? 0u : next_apex + 1;
          |                                                   ^~
          |                                                    U
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:84:13: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'BRepLineSurfacesIntersection' of similar type ('const geode::uuid &') are easily swapped by mistake

       84 |             const geode::uuid& surface_id,
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       85 |             const geode::uuid& line_id )
          |             ~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:84:32: note: the first parameter in the range is 'surface_id'
       84 |             const geode::uuid& surface_id,
          |                                ^~~~~~~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:85:32: note: the last parameter in the range is 'line_id'
       85 |             const geode::uuid& line_id )
          |                                ^~~~~~~
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:185:9: warning: [modernize-use-nodiscard]

    function 'polygons_intersect' should be marked [[nodiscard]]

      185 |         bool polygons_intersect(
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:186:13: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'polygons_intersect' of similar type ('geode::index_t') are easily swapped by mistake

      186 |             geode::index_t p1_id, geode::index_t p2_id ) const
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:186:28: note: the first parameter in the range is 'p1_id'
      186 |             geode::index_t p1_id, geode::index_t p2_id ) const
          |                            ^~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:186:50: note: the last parameter in the range is 'p2_id'
      186 |             geode::index_t p1_id, geode::index_t p2_id ) const
          |                                                  ^~~~~
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:215:9: warning: [modernize-use-nodiscard]

    function 'triangles_intersection_detection' should be marked [[nodiscard]]

      215 |         bool triangles_intersection_detection(
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:226:9: warning: [modernize-use-nodiscard]

    function 'triangles_common_vertices' should be marked [[nodiscard]]

      226 |         absl::InlinedVector< std::array< geode::index_t, 2 >, 3 >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:228:17: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'triangles_common_vertices' of similar type ('const geode::PolygonVertices &') are easily swapped by mistake

      228 |                 const geode::PolygonVertices& t1_vertices,
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      229 |                 const geode::PolygonVertices& t2_vertices ) const
          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:228:47: note: the first parameter in the range is 't1_vertices'
      228 |                 const geode::PolygonVertices& t1_vertices,
          |                                               ^~~~~~~~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:229:47: note: the last parameter in the range is 't2_vertices'
      229 |                 const geode::PolygonVertices& t2_vertices ) const
          |                                               ^~~~~~~~~~~
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:251:9: warning: [modernize-use-nodiscard]

    function 'triangles_intersect' should be marked [[nodiscard]]

      251 |         bool triangles_intersect( const geode::PolygonVertices& t1_vertices,
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:261:9: warning: [modernize-use-nodiscard]

    function 'mesh1' should be marked [[nodiscard]]

      261 |         const geode::SurfaceMesh< Model::dim >& mesh1() const
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:266:9: warning: [modernize-use-nodiscard]

    function 'mesh2' should be marked [[nodiscard]]

      266 |         const geode::SurfaceMesh< Model::dim >& mesh2() const
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:271:9: warning: [modernize-use-nodiscard]

    function 'mesh_triangle' should be marked [[nodiscard]]

      271 |         geode::Triangle< Model::dim > mesh_triangle(
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:410:59: warning: [readability-function-cognitive-complexity]

    function 'triangles_intersect' has cognitive complexity of 28 (threshold 10)

      410 |     bool ModelSurfacesIntersectionBase< geode::Section >::triangles_intersect(
          |                                                           ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:416:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      416 |         if( common_vertices.size() == 2 )
          |         ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:424:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      424 |             if( geode::segment_segment_intersection_detection(
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:428:17: note: +1
      428 |                 || geode::segment_segment_intersection_detection(
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:440:20: note: +1
      440 |                    || geode::point_triangle_position( t2_third_pt, t1 )
          |                    ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:443:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      443 |         for( const auto t1_edge_v : geode::LRange{ 3 } )
          |         ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:447:44: note: +2, including nesting penalty of 1, nesting level increased to 2
      447 |                 t1_vertices[t1_edge_v == 2 ? 0 : t1_edge_v + 1]
          |                                            ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:451:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      451 |             for( const auto t2_edge_v : geode::LRange{ 3 } )
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:455:48: note: +3, including nesting penalty of 2, nesting level increased to 3
      455 |                     t2_vertices[t2_edge_v == 2 ? 0 : t2_edge_v + 1]
          |                                                ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:461:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      461 |                 if( edge_edge_inter.first == geode::POSITION::outside
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:462:21: note: +1
      462 |                     || edge_edge_inter.first == geode::POSITION::parallel )
          |                     ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:466:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      466 |                 if( common_vertices.size() != 1 )
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:474:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      474 |                 if( t1_edge_inter_pt_id == geode::NO_LID
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:475:21: note: +1
      475 |                     || t2_edge_inter_pt_id == geode::NO_LID )
          |                     ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:479:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      479 |                 if( edge1_vertices[t1_edge_inter_pt_id] != common_vertices[0][0]
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:480:21: note: +1
      480 |                     || edge2_vertices[t2_edge_inter_pt_id]
          |                     ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:436:24: warning: [readability-identifier-length]

    variable name 't1' is too short, expected at least 3 characters

      436 |             const auto t1 = mesh_triangle( mesh1_, t1_vertices );
          |                        ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:437:24: warning: [readability-identifier-length]

    variable name 't2' is too short, expected at least 3 characters

      437 |             const auto t2 = mesh_triangle( mesh2_, t2_vertices );
          |                        ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:490:10: warning: [readability-function-cognitive-complexity]

    function 'triangle_intersects_other' has cognitive complexity of 22 (threshold 10)

      490 |     bool triangle_intersects_other( const geode::Triangle3D& t1,
          |          ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:497:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      497 |         for( const auto v_id : geode::LRange{ 3 } )
          |         ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:499:42: note: +2, including nesting penalty of 1, nesting level increased to 2
      499 |             const auto v2_id = v_id == 2 ? 0 : v_id + 1;
          |                                          ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:502:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      502 |             if( intersection.first != geode::POSITION::outside )
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:504:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      504 |                 if( common_vertices.size() != 1 )
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:512:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      512 |                 if( edge_inter_pt_id == geode::NO_LID
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:513:21: note: +1
      513 |                     || t2_inter_pt_id == geode::NO_LID )
          |                     ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:517:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      517 |                 if( t1_vertices[edge_inter_pt_id == 0 ? v_id : v2_id]
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:519:21: note: +1
      519 |                     || t2_vertices[t2_inter_pt_id]
          |                     ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:517:55: note: +3, including nesting penalty of 2, nesting level increased to 3
      517 |                 if( t1_vertices[edge_inter_pt_id == 0 ? v_id : v2_id]
          |                                                       ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:518:71: note: +3, including nesting penalty of 2, nesting level increased to 3
      518 |                         != common_vertices[0][t2_vertex_position == 0 ? 1 : 0]
          |                                                                       ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:490:10: warning: [readability-function-size]

    function 'triangle_intersects_other' exceeds recommended size/complexity thresholds

      490 |     bool triangle_intersects_other( const geode::Triangle3D& t1,
          |          ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:490:10: note: 6 parameters (threshold 4)
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:490:62: warning: [readability-identifier-length]

    parameter name 't1' is too short, expected at least 3 characters

      490 |     bool triangle_intersects_other( const geode::Triangle3D& t1,
          |                                                              ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:491:34: warning: [readability-identifier-length]

    parameter name 't2' is too short, expected at least 3 characters

      491 |         const geode::Triangle3D& t2,
          |                                  ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:536:20: warning: [readability-identifier-length]

    variable name 't2' is too short, expected at least 3 characters

      536 |         const auto t2 = mesh_triangle( mesh2_, t2_vertices );
          |                    ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:553:20: warning: [readability-identifier-length]

    variable name 't1' is too short, expected at least 3 characters

      553 |         const auto t1 = mesh_triangle( mesh1_, t1_vertices );
          |                    ^
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:556:19: warning: [readability-suspicious-call-argument]

    3rd argument 't2_vertices' (passed to 't1_vertices') looks like it might be swapped with the 4th, 't1_vertices' (passed to 't2_vertices')

      556 |                || triangle_intersects_other(
          |                   ^
      557 |                    t2, t1, t2_vertices, t1_vertices, common_vertices, 0 );
          |                            ~~~~~~~~~~~  ~~~~~~~~~~~
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:490:10: note: in the call to 'triangle_intersects_other', declared here
      490 |     bool triangle_intersects_other( const geode::Triangle3D& t1,
          |          ^
      491 |         const geode::Triangle3D& t2,
      492 |         const geode::PolygonVertices& t1_vertices,
          |                                       ~~~~~~~~~~~
      493 |         const geode::PolygonVertices& t2_vertices,
          |                                       ~~~~~~~~~~~
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:582:9: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

      582 |         Impl( const Model& model ) : model_( model ) {}
          |         ^
          |         explicit 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:584:9: warning: [modernize-use-nodiscard]

    function 'model_has_intersecting_surfaces' should be marked [[nodiscard]]

      584 |         bool model_has_intersecting_surfaces() const
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:590:24: warning: [readability-simplify-boolean-expr]

    redundant boolean literal in conditional return statement

      588 |             if( intersections.empty() )
          |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |             return !static_cast<bool>(intersections.empty())
      589 |             {
          |             ~
      590 |                 return false;
          |                 ~~~~~~~^~~~~~
      591 |             }
          |             ~
      592 |             return true;
          |             ~~~~~~~~~~~
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons<(anonymous namespace)::AllModelSurfacesAutoIntersectiongeode::BRep>' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons<(anonymous namespace)::AllModelSurfacesAutoIntersectiongeode::Section>' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons<(anonymous namespace)::AllModelSurfacesIntersectiongeode::BRep>' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons<(anonymous namespace)::AllModelSurfacesIntersectiongeode::Section>' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons<(anonymous namespace)::OneModelSurfacesIntersectiongeode::BRep>' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:670:9: warning: [modernize-use-nodiscard]

    function 'intersecting_polygons<(anonymous namespace)::OneModelSurfacesIntersectiongeode::Section>' should be marked [[nodiscard]]

      670 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:737:9: warning: [modernize-use-nodiscard]

    function 'intersecting_lines_surfaces' should be marked [[nodiscard]]

      737 |         std::vector< std::pair< ComponentMeshElement, ComponentMeshElement > >
          |         ^
          |         [[nodiscard]] 
  • src/geode/inspector/criterion/intersections/model_intersections.cpp:738:13: warning: [readability-function-cognitive-complexity]

    function 'intersecting_lines_surfaces' has cognitive complexity of 15 (threshold 10)

      738 |             intersecting_lines_surfaces( const BRep& brep ) const
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:743:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      743 |             for( const auto& surface : brep.active_surfaces() )
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:745:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      745 |                 if( surface.mesh().nb_polygons() == 0 )
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:754:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      754 |             for( const auto& line : brep.active_lines() )
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:756:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      756 |                 if( line.mesh().nb_edges() == 0 )
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:768:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      768 |             for( const auto& surface : brep.active_surfaces() )
          |             ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:773:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      773 |                 for( const auto& line : brep.active_lines() )
          |                 ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:775:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      775 |                     if( brep.nb_embedding_blocks( line ) == 0 )
          |                     ^
    /__w/OpenGeode-Inspector/OpenGeode-Inspector/src/geode/inspector/criterion/intersections/model_intersections.cpp:786:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      786 |                     for( const auto& element_pair :
          |                     ^

Have any feedback or feature suggestions? Share it here.

@BenPinet BenPinet requested a review from BotellaA May 19, 2026 09:06
Comment thread src/geode/inspector/criterion/intersections/model_intersections.cpp
Comment thread src/geode/inspector/criterion/intersections/model_intersections.cpp Outdated
@BotellaA BotellaA merged commit 1aa0d5a into next May 19, 2026
19 checks passed
@BotellaA BotellaA deleted the fix/surface_remesh_introduces_internal_line_intersection branch May 19, 2026 15:33
@BotellaA
Copy link
Copy Markdown
Member

🎉 This PR is included in version 6.8.22-rc.2 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@BotellaA
Copy link
Copy Markdown
Member

🎉 This PR is included in version 6.8.22 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants