Skip to content

v10.4.0

Latest

Choose a tag to compare

@roigcarlo roigcarlo released this 10 Dec 10:19

What's Changed

  • Update CODEOWNERS gidpost by @jginternational in #13644
  • [GeoMechanicsApplication] Extend functionality for user soil model for interface elements by @rfaasse in #13630
  • Add the 3D missing surface conditions to UPwNormalFaceLoadCondition by @mnabideltares in #13640
  • [External] Purge unused features from gidpost by @loumalouomega in #13649
  • [Core] Refactor and clean up mortar classes adding IO implementation for debug by @loumalouomega in #13648
  • [StructuralMechanicsApplication][GeoMechanicsApplication] added 'total' motion type to moving load by @aronnoordam in #13611
  • Release 10.3.0 by @roigcarlo in #13651
  • [ContactStructuralMechanicsApplication] Missing check of denominator in CalculateDeltaCellVertex from DerivativesUtilities by @loumalouomega in #13652
  • [Doc] Update badge version to 10.3.0 by @loumalouomega in #13653
  • [Core] Minor clean up strategies by @loumalouomega in #13654
  • [Core] Avoid Ublas namespace polluting with explicit call in ModelartIO by @loumalouomega in #13508
  • [Core] Avoid Ublas namespace polluting with explicit call in BrepUtilities by @loumalouomega in #13507
  • [External][JSON] Update JSON library to 3.12 by @loumalouomega in #13461
  • [FastPR][Core] Missing move constructor and assignment in sparse graphs by @rubenzorrilla in #13650
  • [Core] Replace OpenMP pragmas with parallel_utilities in model_part.cpp by @loumalouomega in #13491
  • [Core] Remove deprecated Timer function calls in the Python bindings by @loumalouomega in #13532
  • [Core] Missing methods for initial position for Node in python by @loumalouomega in #13621
  • [IgaApplication] [FluidDynamicsApplication] sbm fluid condition for the Stokes problem by @NickNick9 in #13538
  • [ContactStructuralMechanicsApplication] Deactivate in Windows ComponentsALMHyperSimplePatchTestWithEliminationContact which fails randomly in CI by @loumalouomega in #13661
  • [SIApp] Bugfix for multiple controls by @sunethwarna in #13647
  • [FastPR][Core] Remove deprecated warning in AnalysisStage by @rubenzorrilla in #13664
  • Fix Acusolve global sequence by @ghanique-altair in #13513
  • [MPM] fix calculation of incremental deformation gradient by @VeronikaSinger in #13632
  • [GeoMechanicsApplication] Fix rotations and add missing area factor for integration of surface interfaces by @rfaasse in #13665
  • [CLApp] Adding Von Mises iso+kin plasticity in plane stress by @AlejandroCornejo in #13672
  • [OptApp] Making the Convergence Criteria to be modular. by @sunethwarna in #13667
  • [OptApp] Add spatial statistics computation process by @sunethwarna in #13673
  • Update SBM: manage mixed boundary conditions from a NURBS file by @andrewgorgi in #13674
  • [Core] Making and exposing CalculateHistoricalData function to python by @talhah-ansari in #13679
  • [SMApp] Adding 3d curved timoshenko linear beam by @AlejandroCornejo in #13666
  • [Core] Add EffectiveEquationId to dof.h by @rubenzorrilla in #13655
  • [GeoMechanicsApplication] Improved handling of unit tests that need to run conditionally by @avdg81 in #13677
  • SBM: Fix bug on snake process by @andrewgorgi in #13687
  • [GeoMechanicsApplication] Clean up process for applying constant scalar values by @rfaasse in #13676
  • [SIApp] Adding SENSOR_COMPUTED_VALUE variable by @talhah-ansari in #13691
  • [GeoMechanicsApplication] Create multistage test using orchestrator checkpoint functionality by @rfaasse in #13669
  • [GeoMechanicsApplication] Create integration tests for surface interface elements by @mnabideltares in #13684
  • [MPM] Fix build when no OpenMP by @jginternational in #13688
  • [Core] Adding Create and and Resgitry to FromJSONCheckResultProcess by @loumalouomega in #13680
  • [Core] Minor clean up in the Logger class by @loumalouomega in #13662
  • [External] GiD_Post ->Hotfix print clusters as point for by @jginternational in #13694
  • [DEMApplication] New set of tests by @rlrangel in #13692
  • [DEMApplication] RVE Utilities by @rlrangel in #13418
  • [Chimera] Fix build when no OpenMP by @jginternational in #13689
  • [Core] Skip in VTKOutput IGA related geometries by @loumalouomega in #13540
  • [CORE] Fixed issue with projection onto 2D2 line when input does not lie exactly on the line. by @rfaasse in #12637
  • [CORE] coordinate_transformation_utilitites move functions from private to protected by @VeronikaSinger in #13704
  • [GeoMechanicsApplication] Extend surface interface constitutive model for user defined material models by @rfaasse in #13693
  • [External] Adding LICENSE to AMGCL by @loumalouomega in #13670
  • [Core] LinearSolver Cleanup by @matekelemen in #13626
  • [Core] Minor clean up VtkOutput by @loumalouomega in #13709
  • [MAPPING] Iga-FEM Mortar Mapper Modeler for 1D Coupling (Curve coupling) by @juancamarotti in #13636
  • [Trilinos] Consider ACTIVE flag in BuildRHS and BuildLHS by @ddiezrod in #13710
  • [Core] Make SkylineLUFactorizationSolver Persistent by @matekelemen in #13646
  • [Core] New Create method for processes by @loumalouomega in #13708
  • [MPM] Remove default block size for AMGCL by @matekelemen in #13715
  • [HDF5] Update - 7 - ModelPartIO by @sunethwarna in #11490
  • [LinearSolvers] Add Intel ILU0 and ILUT by @matekelemen in #13373
  • [Core] Tensor Adaptors by @sunethwarna in #13554
  • [Core] Enabling TBB in KratosCore by @rubenzorrilla in #13714
  • [MPM] removes the mpm condition vtk output as the mpm vtk output is used for elements and conditions by @VeronikaSinger in #13719
  • [HDF5] Enable writing primitive data types with tensors by @sunethwarna in #13726
  • [FastPR][Core] Add SafeAssemble to sparse arrays by @rubenzorrilla in #13721
  • [MPM] json output and check results from json files to use for both elements and conditions by @VeronikaSinger in #13723
  • [GeoMechanicsApplication] Fix persistence of state parameters across stages for UDSM laws by @rfaasse in #13724
  • [FastPR][Core] Adding test utilities for future schemes/strategies by @rubenzorrilla in #13727
  • [LinearSolvers] MKL Solver - Using GetInt and GetDouble instead of Get<> by @ddiezrod in #13731
  • [GeoMechanicsApplication] Use standard import mechanism for staged analyses by @markelov208 in #13707
  • [GeoMechanicsApplication] Modify documentation, adding Biot implementation by @mnabideltares in #13725
  • [FastPR][Core] Fix warning in PointerVectorSet ctor by @rubenzorrilla in #13735
  • [GeoMechanicsApplication] Upgrade the GeoMechanicsApplication to C++ 20 by @rfaasse in #13675
  • [GeoMechanicsApplication] Replaced boost::tie with a structured binding by @rfaasse in #13743
  • [GeoMechanicsApplication] Moved C++ specification from global variable to target properties by @rfaasse in #13747
  • [GeoMechanicsApplication] Fix some SonarQube issues by @avdg81 in #13751
  • [Core/TensorAdaptors] Introducing NDData by @sunethwarna in #13728
  • [GeoMechanicsApplication] Update settlement test case 1 by @rfaasse in #13748
  • [GeoMechanicsApplication] Add abc model 1D column test cases to our test suite by @mnabideltares in #13742
  • [GeoMechanicsApplication] Use range variants of STL algorithms by @avdg81 in #13754
  • [GeoMechanicsApplication] Harmonization of Check functions (variables) by @markelov208 in #13737
  • [GeoMechanicsApplication] Reduced verbosity by making use of 'using enum' by @rfaasse in #13757
  • [Core] NewStrategies - Generic DOF array utilities by @rubenzorrilla in #13734
  • [Core] Partial replacement of pure OMP code with ParalellUtilities in ExplicitBuilder by @loumalouomega in #13502
  • Fix typos in applications/SwimmingDEMApplication by @luzpaz in #13413
  • [GeomechanicsApplication] added static scheme support by @aronnoordam in #13732
  • [Core] Add SkippableEntity method to InputOutputUtilities for geometry type checks by @loumalouomega in #13716
  • [GeomechanicsApplication] Add ABC model for dsettlment, Case 8.5 by @mnabideltares in #13755
  • [GeoMechanicsApplication] Shortened test time in nightly suite by @rfaasse in #13761
  • [CMake] Missing custom setting for PYTHON_LIBRARY by @loumalouomega in #13766
  • [GeoMechanicsApplication] Addition of DSettlement validation test case 4 by @rfaasse in #13764
  • fix start_time and end_time for stage2 in line_load_tests orchestrator by @indigocoral in #13763
  • [Core][BugFix] Include missing headers by @sunethwarna in #13770
  • [Core] Fix deprecated OMP in scaling solver by @loumalouomega in #13499
  • [Core] Missing ParallelUtilities in NormalCalculationUtils by @loumalouomega in #13660
  • [GeoMechanicsApplication] convert consecutive pipe lines tests by @mnabideltares in #13765
  • [Core] Add missing overloads for condition and element IntegrationPoint methods by @sunethwarna in #13776
  • [GeoMechanicsApplication] Cleaned up parameter files of interface tests by @rfaasse in #13759
  • [HDF5] Update - 8 - Feature - TensorAdaptorIO by @sunethwarna in #11491
  • Geo/13720 has function umat constitutive law by @WPK4FEM in #13772
  • [HDF5] Update - 9 - python ModelPart script by @sunethwarna in #11507
  • [GeoMechanicsApplication] Added two more using enum statements to reduce code smells by @rfaasse in #13778
  • [IgaApplication]: Pr assign iga external conditions process by @andrewgorgi in #13282
  • [GeoMechanicsApplication] Harmonization of Check functions (retention law) by @markelov208 in #13753
  • Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #13781
  • [GeoMechanicsApplication] Make check for Z == 0.0 more robust by @markelov208 in #13783
  • [GeoMechanicsApplication] Harmonization of Check functions (in range bounds) by @markelov208 in #13760
  • [IgaApplication] import as true geometry a nurbs curve, few improvements by @NickNick9 in #13786
  • [GeomechanicsApplication] resolved tests by @aronnoordam in #13789
  • [HDF5] Protect MPI calls with macros by @matekelemen in #13796
  • [Core] Improve TetrahedralMeshOrientationCheck logging by @loumalouomega in #13797
  • [GeoMechanicsApplication] Add settlement test case 3 by @avdg81 in #13785
  • change set process info to recursively set all sub model part by @andimkatili in #13376
  • [HDF5] Fix MPI macro bug by @matekelemen in #13801
  • [Core] Missing counter check in TetrahedralMeshOrientationCheck by @loumalouomega in #13802
  • [GeoMechanicsApplication] Remove variable NODAL_CAUCHY_STRESS_TENSOR by @avdg81 in #13799
  • [GeoMechanicsApplication] Harmonization of Check functions (constitutive law) by @markelov208 in #13771
  • [FluidDynamicsApplication] Simplify element/condition replacement logic by @Marco1410 in #13794
  • [CompressiblePotentialFlowApplication] Change the use of vacuum velocity limiter by @Marco1410 in #13803
  • [GeoMechanicsApplication] Remove the legacy piping (interface) element by @avdg81 in #13807
  • [GeoMechanicsApplication] Removed two nodal damage variables by @avdg81 in #13805
  • [CompressiblePotentialFlowApplication] Removed unused python process (define_wake_process.py) by @Marco1410 in #13809
  • [CompressiblePotentialFlowApplication] Cleanup define_wake_process_2d.py by @Marco1410 in #13810
  • [GeoMechanicsApplication] Simplify find neighbour algorithm by @rfaasse in #13686
  • [MPM] Adds Lagrange and Perturbed Lagrange Condition by @VeronikaSinger in #13390
  • [MPM][DOCS] Update documentation on lagrange multipliers and perturbed lagrangian by @ncrescenzio in #13815
  • [CompressiblePotentialFlowApplication] Removed unsused kutta_condition_process.h by @Marco1410 in #13811
  • [FastPR][Core] Add IsThreadSafe to sparse graphs by @rubenzorrilla in #13817
  • [CompressiblePotentialFlowApplication] Application update to use 3d wake process by @Marco1410 in #13795
  • [GeoMechanicsApplication] Move the check_properties of the material by @markelov208 in #13790
  • [CompressiblePotentialFlowApplication] Update compute_lift_process by @Marco1410 in #13804
  • [Hotfix][Structural] Minor fix in mixed volumetric strain element by @rubenzorrilla in #13829
  • [GeoMechanicsApplication] Add benchmark for UPw diff order local system calculation by @rfaasse in #13818
  • [GeoMechanicsApplication] Add more plots for settlement analyses by @avdg81 in #13813
  • Geo/remove drained undrained elements by @WPK4FEM in #13830
  • Geo/small sonar cloud indicated issues by @WPK4FEM in #13824
  • Bump actions/upload-pages-artifact from 3 to 4 by @dependabot[bot] in #13752
  • Geo/13558 nonzero dirichlet incremental and total displacements by @WPK4FEM in #13812
  • [IgaApplication] [ConvectionDiffusionApplication ] renaming and correct typo in laplacian element by @NickNick9 in #13832
  • [GeoMechanicsApplication] Modified the marker used for the D-Settlement curves by @avdg81 in #13835
  • [GeoMechanicsApplication] Make calculation of internal and external forces available by @rfaasse in #13820
  • [GeoMechanicsApplication] Extend TransientPwLineElement functionality to cover TransientPwElement by @markelov208 in #13456
  • Adding pyproject.toml by @roigcarlo in #13836
  • [GeoMechanicsAppication] Implement load stepping scheme component by @rfaasse in #13838
  • [Core] Remove Clone from Node by @loumalouomega in #11286
  • [GeoMechanicsApplication] Remove unused nodal smoothing by @avdg81 in #13849
  • [GeoMechanicsApplication] Remove unused link interface elements from GeoMechanicsApplication by @WPK4FEM in #13847
  • [Doc] Update VTKOutputProcess documentation by @loumalouomega in #13850
  • [Core] Future builder and schemes by @rubenzorrilla in #13762
  • [GeoMechanicsApplication] Replace the reading of material parameters in Mohr-Coulomb, to be from the yield surface by @mnabideltares in #13853
  • [Core] Revamping and Making The VtuOutput Great by @sunethwarna in #13775
  • [GeoMechanicsApplication] Fix C++ settlement workflow inconsistencies by @rfaasse in #13862
  • [MeshingApplication] Cleaning python bindings by @loumalouomega in #13854
  • [Core/TensorAdaptors] Add CombinedTensorAdaptor by @sunethwarna in #13718
  • [GeoMechanicsApplication] Split the time loop executor into a header and a source file by @rfaasse in #13865
  • [GeoMechanicsApplication] Renamed function arguments to match style guide by @rfaasse in #13868
  • [FluidDyanmicsApplication] King of typos fixed (CalulateLevelsetConsistentNodalGradientProcess) by @loumalouomega in #13866
  • [GeoMechanicsApplication] Split hydraulic_discharge.hpp into h and cpp files by @markelov208 in #13870
  • Change linear_solver.h to add a call to Clear() by @RiccardoRossi in #13867
  • [GeoMechanicsApplication] Updated the udsm with the latest one built by our pipeline by @rfaasse in #13869
  • [GeoMechanicsApplication] Integrate new load stepping scheme by @rfaasse in #13863
  • Geo/remove pw interface elements by @WPK4FEM in #13881
  • [Core] Consistent naming in test name for stl_vector_io by @loumalouomega in #13878
  • [GeoMechanicsApplication] Moved GiD output file reader class to the python scripts and fixed the imports by @rfaasse in #13879
  • [GeoMechanicsApplication] Modified utilities functions by @markelov208 in #13872
  • [GeoMechanicsApplication] Support a list of modelpart names for the k0 process by @rfaasse in #13891
  • [GeoMechanicsApplication] Attempt to fix test failures by @avdg81 in #13902
  • [CoSimulation] Fix GMRES tolerance parameter name in BLOCKIBQNLSConvergenceAccelerator by @loumalouomega in #13861
  • Cast DomainType to double for nodal_distance calculation by @RiccardoRossi in #13898
  • [LinearSolvers] Insert MKL to Registry if supported by @matekelemen in #13901
  • Remove the old ElementTestSuite form Kratos repo by @indigocoral in #13896
  • [Core] Some minor transitions changes from #11719 by @loumalouomega in #13900
  • [GeoMechanicsApplication] Add support to give list of modelpart names to "ApplyExcavationProcess" process by @markelov208 in #13897
  • [GeoMechanicsApplication] Extend and clean GiDOutputFileReader by @rfaasse in #13892
  • Geo/info for processes by @WPK4FEM in #13908
  • [GeoMechanicsApplication] Add support to give list of modelpart names to "ApplyFinalStressesOfPreviousStageToInitialState" process by @markelov208 in #13907
  • [GeoMechanicsApplication] Fixed incorrect object construction by @avdg81 in #13914
  • [GeoMechanicsApplication] Add support to give list of modelpart names to "ApplyCPhiReductionProcess" by @markelov208 in #13909
  • [Core] Adding future strategies by @rubenzorrilla in #13864
  • [PfemFluid] Bug fix on Clone() by @AFranci in #13922
  • [GeoMechanicsApplication] Added function objects to describe the Coulomb properties by @avdg81 in #13910
  • [IgaApplication] small corrections and typos in Fluid and Laplacian workflow of IgaApplication by @NickNick9 in #13912
  • [GeoMechanicsApplication] Add parameter for model part names to the (de)activate model part operations by @markelov208 in #13923
  • [TrilinosApplication] Implement checks for empty contributions in TrilinosSpace by @loumalouomega in #13918
  • [Core][TrilinosApplication] Adding option in B&S for constant constraint by @loumalouomega in #13821
  • [Core] Add methods to compute bounding boxes with tolerance to SearchUtilities by @loumalouomega in #13929
  • Fix on IGA solid element and conditions by @andrewgorgi in #13926
  • [GeoMechanicsApplication] Fixed minor linux issues by @rfaasse in #13819
  • [IGA] 2D Isogeometic Beam Element by @rickyaristio in #13253
  • [Core] Clean up MonotonicityPreservingSolver and documentation by @loumalouomega in #13932
  • Geo/revisit fully saturated settlement column by @WPK4FEM in #13928
  • [Core] Adding singular division in SVD computation for 2x2 matrices by @loumalouomega in #13938
  • [LinearSolversApplication] Update Eigen library to 5.0.0 🚀 by @loumalouomega in #13887
  • Geo/remove unused functions by @WPK4FEM in #13935
  • [IGA] Fix refinement modeler by @rickyaristio in #13936
  • [GeoMechanicsApplication] Refactor the Coulomb hardening functions factory by @avdg81 in #13937
  • [Core][Future] Strategies python exposure by @rubenzorrilla in #13939
  • First PR for GAP-SBM by @andrewgorgi in #13931
  • [StructuralMechanicsApplication] Normalize eigenmodes with respect to mass matrix by @juancamarotti in #13924
  • [GeoMechanicsApplication] Fixed some issues in the constitutive laws by @avdg81 in #13950
  • Fix MDPA file writing routine from silently overwriting model by @Lelio-Brun in #13944
  • Use strain size from constitutive law vector in 3 node Timoshenko beam by @WPK4FEM in #13951
  • [Core] Make AMGCL's hierarchy persistent by @matekelemen in #13624
  • [LinearSolverApplication] Direct thread management in MKL linear solvers by @loumalouomega in #13882
  • [Core] Geometries for the GAP_SBM process by @andrewgorgi in #13947
  • [Core] Fix FallbackLinearSolver tests by @matekelemen in #13957
  • [MAPPING] Adding a new RBF Utility inside the Mapping Application by @juancamarotti in #13958
  • [MappingApplication] Creation of the Beam Mapper for FEM by @juancamarotti in #13890
  • [StructuralMechanicsApplication] Bugfix: Correct GetLocation() in ShellCrossSection by @rickyaristio in #13943
  • [LinearSolvers] Optional Support for CHOLMOD, UMFPACK, and SPQR by @matekelemen in #13587
  • [GeoMechanicsApplication] Extract utility for neighbour search by @rfaasse in #13956
  • [StructuralMechanicsApplication] Move symbolic_generation folder by @loumalouomega in #13953
  • [GeoMechanicsApplication] Made several functions static as per clang tidy recommendation by @rfaasse in #13961
  • [ContactStructuralMechanicsApplication] automatic_differentiation consistent naming by @loumalouomega in #13960
  • [hotfix] Preventing a segfault while throwing an error by @Lelio-Brun in #13955
  • [Core] Make (number of) edges of line geometries complete and consistent with those of other geometries by @avdg81 in #13916
  • [GeoMechanicsApplication] Omit objects when calling a few static functions by @rfaasse in #13966
  • [GeoMechanicsApplication] Extrapolate stresses of neighbour element to nodes by @markelov208 in #13948
  • [LinearSolversApplication] Add installation instructions for SuiteSparse on Windows by @loumalouomega in #13970
  • [GeoMechanicsApplication] Extract tool for reversing geometry node ids by @rfaasse in #13969
  • Geo/get nodal values of to utilities by @WPK4FEM in #13968
  • Cleaned ( hopefully all ) tabs from .json files for material and procject parameters by @WPK4FEM in #13972
  • [LinearSolversApplication] Remove duplicated #pragma once in MKLUtilities by @loumalouomega in #13973
  • [Core][TrilinosApplication] Avoid random failures in fallback linear solver tests by @loumalouomega in #13974
  • [Meshing] Check conditions for SPLIT_ELEMENT flags in local refine tetra mesh on boundary only by @qiukailu in #13976
  • [GeoMechanicsApplication] Used std::move for objects that are passed by value and used only once by @rfaasse in #13978
  • [GeoMechanicsApplication] Extend neighbour element finder by @rfaasse in #13977
  • Interpolate nodal stresses to integration points for interface element. by @WPK4FEM in #13963
  • [Core] Minor clean up of Table by @loumalouomega in #13980
  • [FluidDynamicsAdpplication] automatic_differentiation consistent naming by @loumalouomega in #13962
  • [GeoMechanicsApplication] Integrate interface prestress functionality by @rfaasse in #13983
  • [TrilinosApplication] Clean up legacy typo registered solver by @loumalouomega in #13982
  • [Meshing] Transfer condition flags during local refine tetra mesh by @qiukailu in #13996
  • [IGA] Fix refinement modeler (2) - Multipatch by @rickyaristio in #14000
  • [Core] Expose PointerVectorSet::back to python by @matekelemen in #13994
  • [Core] Added cmake transition flags by @roigcarlo in #14003
  • [TrilinosApplication] Update CMake file in order to properly install the libraries, including symbolic links by @loumalouomega in #14004
  • [CMake] Remove API-breaking change messages from CMakeLists older than 2 years by @loumalouomega in #14002
  • [Structural] Extend tests for LinkConstraint by @matekelemen in #13995
  • [GeoMechanicsApplications] Made setting material params in the coulomb yield surface thread safe by @rfaasse in #13998
  • [GeoMechanicsApplication] Use the total stress vector to calculate the interface prestress by @avdg81 in #14005
  • [OptApp ] fixing l2 norm Convergence conflicting with acii output by @Igarizza in #14010
  • [Core][TrilinosApplication] Adding access options for #13821 changes (constant constraints flags in B&S) by @loumalouomega in #13954
  • [GeoMechanicsApplication] Removed a redundant pair of curly braces by @avdg81 in #14012
  • [Core] Clean up includes in some files by @loumalouomega in #14013
  • [GeoMechanicsApplication] Improve the initialization of the list of sub-modelparts related to processes by @markelov208 in #13913
  • [Scripts][Docker] Update Rocky Linux python version to 3.10.18 by @loumalouomega in #14006
  • [CI] Avoid hardcoded python 3.8 for compatibility by @loumalouomega in #14024
  • [Core] Initialize bossak constants in Predict by @sunethwarna in #13964
  • [TrilinosApplication] Some linear solvers clean up by @loumalouomega in #14025
  • [GeoMechanicsApplication] Add a unit test for the Mohr-Coulomb model that covers HIGHEST_PRINCIPAL_STRESSES as averaging type by @mnabideltares in #13991
  • [OptApp] Supporting external response functions by @sunethwarna in #13395
  • [GeoMechanicsApplication] Submerged excavation model with linear elastic materials: make it available on master by @markelov208 in #14011
  • [CMake] Adding Scalapack finding in CMake configuration in Trilinos cmake by @loumalouomega in #14028

New Contributors

Full Changelog: v10.3.0...v10.4.0