# Some configuration options for other environments # rpmbuild --without=bundled_zipios: don't use bundled version of zipios++ %bcond_without bundled_zipios # rpmbuild --with=bundled_pycxx: use bundled version of pycxx %bcond_with bundled_pycxx # rpmbuild --without=bundled_smesh: don't use bundled version of Salome's Mesh %bcond_without bundled_smesh # rpmbuild --without=bundled_gtest: don't use bundled version of gtest and gmock %bcond_with bundled_gtest # rpmbuild --without=tests exclude tests in %%check %bcond_without tests # rpmbuild --without=debug_info don't generate package with debug info %bcond_without debug_info Name: freecad Epoch: 1 Version: weekly.2025.06.23 Release: 1.20250708010003122138.main.233.g586abf3e6%{?dist} Summary: A general purpose 3D CAD modeler Group: Applications/Engineering License: LGPL-2.0-or-later URL: https://www.freecad.org/ Source0: freecad-sources.tar.gz # Maintainers: keep this list of plugins up to date # List plugins in %%{_libdir}/%%{name}/lib, less '.so' and 'Gui.so', here %global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers libarea-native %global exported_libs libOndselSolver # See FreeCAD-main/src/3rdParty/salomesmesh/CMakeLists.txt to find this out. %global bundled_smesh_version 7.7.1.0 # See /src/3rdParty/PyCXX/CXX/Version.h to find this out. %global bundled_pycxx_version 7.1.9 # See /src/3rdParty/OndselSolver/CMakeLists.txt to find this out. %global bundled_ondsel_solver_version 1.0.1 # Utilities BuildRequires: cmake gcc-c++ gettext doxygen swig graphviz gcc-gfortran desktop-file-utils tbb-devel %if %{with tests} BuildRequires: xorg-x11-server-Xvfb %if %{without bundled_gtest} BuildRequires: gtest-devel gmock-devel %endif %endif # Development Libraries BuildRequires:boost-devel Coin4-devel eigen3-devel freeimage-devel fmt-devel libglvnd-devel libicu-devel libspnav-devel libXmu-devel med-devel mesa-libEGL-devel mesa-libGLU-devel netgen-mesher-devel netgen-mesher-devel-private opencascade-devel openmpi-devel python3 python3-devel python3-matplotlib python3-pivy python3-pybind11 python3-pyside6-devel python3-shiboken6-devel pyside6-tools qt6-qttools-static qt6-qtsvg-devel vtk-devel xerces-c-devel yaml-cpp-devel #pcl-devel %if %{without bundled_smesh} BuildRequires: smesh-devel %endif %if %{without bundled_zipios} BuildRequires: zipios++-devel %endif %if %{without bundled_pycxx} BuildRequires: python3-pycxx-devel %endif # For appdata %if 0%{?fedora} BuildRequires: libappstream-glib %endif # Packages separated because they are noarch, but not optional so require them # here. Requires: %{name}-data = %{epoch}:%{version}-%{release} # Obsolete old doc package since it's required for functionality. Obsoletes: %{name}-doc < 0.22-1 Requires: hicolor-icon-theme fmt python3-matplotlib python3-pivy python3-collada python3-pyside6 qt6-assistant %if %{with bundled_smesh} Provides: bundled(smesh) = %{bundled_smesh_version} %endif %if %{with bundled_pycxx} Provides: bundled(python-pycxx) = %{bundled_pycxx_version} %endif Provides: bundled(libondselsolver) = %{bundled_ondsel_solver_version} Recommends: python3-pysolar IfcOpenShell-python3 # plugins and private shared libs in %%{_libdir}/freecad/lib are private; # prevent private capabilities being advertised in Provides/Requires %global plugin_exclude %( for i in %{plugins}; do echo -n "\|$i\(Gui\)\?"; done ) # prevent declaring Requires for internal FreeCAD libraries %global lib_exclude %( for i in %{exported_libs}; do echo -n "\|$i"; done ) %global __requires_exclude_from ^%{_libdir}/%{name}/(lib|Mod)/.* %global __provides_exclude_from ^%{_libdir}/%{name}/Mod/.* %global __provides_exclude ^(libFreeCAD.*%{plugin_exclude})\.so.* %global __requires_exclude ^(libFreeCAD.*%{plugin_exclude}%{lib_exclude})\.so.* %description FreeCAD is a general purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler, aimed directly at mechanical engineering and product design but also fits a wider range of uses in engineering, such as architecture or other engineering specialities. It is a feature-based parametric modeler with a modular software architecture which makes it easy to provide additional functionality without modifying the core system. %package data Summary: Data files for FreeCAD BuildArch: noarch Requires: %{name} = %{epoch}:%{version}-%{release} %description data Data files for FreeCAD %package libondselsolver-devel Summary: Development file for OndselSolver BuildArch: noarch Requires: %{name} = %{epoch}:%{version}-%{release} %description libondselsolver-devel Development file for OndselSolver #path that contain main FreeCAD sources for cmake %global tests_resultdir %{_datadir}/%{name}/tests_result/%{_arch} %if %{without debug_info} %global debug_package %{nil} %global _enable_debug_packages 0 %endif %prep %setup -T -a 0 -q -c -n FreeCAD-1.0.1 %build # Deal with cmake projects that tend to link excessively. LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS %cmake \ -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \ -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \ -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ -DCMAKE_INSTALL_DATAROOTDIR=%{_datadir} \ -DRESOURCEDIR=%{_datadir}/%{name} \ -DFREECAD_USE_EXTERNAL_PIVY=TRUE \ -DFREECAD_USE_EXTERNAL_FMT=TRUE \ -DFREECAD_USE_PCL:BOOL=OFF \ -DFREECAD_QT_VERSION:STRING=6 \ -DOpenGL_GL_PREFERENCE=GLVND \ -DUSE_OCC=TRUE \ %if %{without bundled_pycxx} -DPYCXX_INCLUDE_DIR=$(pkg-config --variable=includedir PyCXX) \ -DPYCXX_SOURCE_DIR=$(pkg-config --variable=srcdir PyCXX) \ %endif %if %{without bundled_smesh} -DFREECAD_USE_EXTERNAL_SMESH=TRUE \ %endif %if %{without bundled_zipios} -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \ %endif %if %{with tests} -DENABLE_DEVELOPER_TESTS=TRUE \ %if %{without bundled_gtest} -DFREECAD_USE_EXTERNAL_GTEST=TRUE \ %else -DINSTALL_GTEST=OFF \ -DINSTALL_GMOCK=OFF \ %endif %else -DENABLE_DEVELOPER_TESTS=FALSE \ %endif -DONDSELSOLVER_BUILD_EXE=TRUE \ -DBUILD_GUI=TRUE %cmake_build %install %cmake_install # Symlink binaries to /usr/bin mkdir -p %{buildroot}%{_bindir} ln -s ../%{_lib}/%{name}/bin/FreeCAD %{buildroot}%{_bindir}/FreeCAD ln -s ../%{_lib}/%{name}/bin/FreeCADCmd %{buildroot}%{_bindir}/FreeCADCmd # Remove header from external library that's erroneously installed rm -rf %{buildroot}%{_libdir}/%{name}/include/E57Format rm -rf %{buildroot}%{_includedir}/gmock rm -rf %{buildroot}%{_includedir}/gtest rm -rf %{buildroot}%{_libdir}/%{name}/%{_lib}/cmake rm -rf %{buildroot}%{_libdir}/%{name}/%{_lib}/pkgconfig %check desktop-file-validate %{buildroot}%{_datadir}/applications/org.freecad.FreeCAD.desktop %{?fedora:appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml} %if %{with tests} mkdir -p %{buildroot}%tests_resultdir pushd %_vpath_builddir if (timeout 30m ./tests/Tests_run) &> %{buildroot}%tests_resultdir/Tests_run.result ;then echo "Test_run OK" else echo "**** Failed Test_run ****" touch %{buildroot}%tests_resultdir/Tests_run.failed cat %{buildroot}%tests_resultdir/Tests_run.result fi popd if %ctest &> %{buildroot}%tests_resultdir/ctest.result ; then echo "ctest OK" else echo "**** Failed ctest ****" touch %{buildroot}%tests_resultdir/ctest.failed cat %{buildroot}%tests_resultdir/ctest.result fi %endif # Bug maintainers to keep %%{plugins} macro up to date. # # Make sure there are no plugins that need to be added to plugins macro %define plugin_regexp /^\\\(libFreeCAD.*%(for i in %{plugins}; do echo -n "\\\|$i"; done)\\\)\\\(\\\|Gui\\\)\\.so/d %define exported_libs_regexp /^\\\(%(for i in %{exported_libs}; do echo -n "\\\|$i"; done)\\\)\\.so/d new_plugins=`ls %{buildroot}%{_libdir}/%{name}/%{_lib} | sed -e '%{plugin_regexp}' -e '%exported_libs_regexp'` if [ -n "$new_plugins" ]; then echo -e "\n\n\n**** ERROR:\n" \ "\nPlugins not caught by regexps:" \ "\n" $new_plugins \ "\n\nPlugins in %{_libdir}/%{name}/lib do not exist in" \ "\nspecfile %%{plugins} or %%{exported_libs_regexp} macro." \ "\nPlease add these to %%{plugins} or %%{exported_libs}" \ "\nmacro at top of specfile" \ "\nand rebuild.\n****\n" 1>&2 exit 1 fi # Make sure there are no entries in the plugins macro that don't match plugins for p in %{plugins}; do if [ -z "`ls %{buildroot}%{_libdir}/%{name}/%{_lib}/$p*.so`" ]; then set +x echo -e "\n\n\n**** ERROR:\n" \ "\nExtra entry in %%{plugins} macro with no matching plugin:" \ "'$p'.\n\nPlease remove from %%{plugins} macro at top of" \ "\nspecfile and rebuild.\n****\n" 1>&2 exit 1 fi done # Make sure there are no entries in the exported_libs_regexp macro that don't match plugins for d in %{exported_libs}; do if [ -z "`ls %{buildroot}%{_libdir}/%{name}/%{_lib}/$d*.so`" ]; then set +x echo -e "\n\n\n**** ERROR:\n" \ "\nExtra entry in %%{exported_libs} macro with no matching lib:" \ "'$d'.\n\nPlease remove from %%{exported_libs} macro at top of" \ "\nspecfile and rebuild.\n****\n" 1>&2 exit 1 fi done %post /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : /usr/bin/update-desktop-database &> /dev/null || : /usr/bin/update-mime-database %{_datadir}/mime &> /dev/null || : %postun if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi /usr/bin/update-desktop-database &> /dev/null || : /usr/bin/update-mime-database %{_datadir}/mime &> /dev/null || : %posttrans /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor/scalable/apps &>/dev/null || : %files %{_bindir}/* %{_metainfodir}/* %dir %{_libdir}/%{name} %{_libdir}/%{name}/bin/ %{_libdir}/%{name}/%{_lib}/ %{_libdir}/%{name}/Ext/ %{_libdir}/%{name}/Mod/ %{_datadir}/applications/* %{_datadir}/icons/hicolor/* %{_datadir}/pixmaps/* %{_datadir}/mime/packages/* %{_datadir}/thumbnailers/* #find a way to configure in cmake with %%name to avoid conflict with different package name %{python3_sitelib}/freecad/* %if %{with tests} %tests_resultdir/* %endif %files data %{_datadir}/%{name}/ %{_docdir}/%{name}/LICENSE.html %{_docdir}/%{name}/ThirdPartyLibraries.html %files libondselsolver-devel %{_datadir}/pkgconfig/OndselSolver.pc %{_includedir}/OndselSolver/* %changelog * Tue Jul 08 2025 Super User - 1:weekly.2025.06.23-1.20250708010003122138.main.233.g586abf3e6 - add git information (github-actions[bot]) - add pull configuration (filippor) - enable automatic build (filippor) - add git information (github-actions[bot]) - add sync (filippor) - add github action (filippor) - add tests in test-farm (filippor) - add packit configuration (filippor) - Update spec file (filippor) - [pre-commit.ci] pre-commit autoupdate (pre-commit-ci[bot]) - Sketcher: Add tooltip for autoscale feature (#22252) (FEA-eng) - build and install debug build explicitly (Zbyněk Winkler) - update python debugger type to debugpy (Zbyněk Winkler) - Improve compatibility with VSCode (Zbyněk Winkler) - remove conda dir since we have pixi (Zbyněk Winkler) - FEM: Update ElementGeometry1D.ui (#22134) (FEA-eng) - Bump step-security/harden-runner from 2.12.1 to 2.12.2 (dependabot[bot]) - Part: Enable solid creation by default for Loft and Sweep (#22098) (FEA-eng) - Draft: gui_utils.py minor improvement for autogroup (Roy-043) - Draft: make_sketch.py should not use view direction (#22249) (Roy-043) - BIM: Add an option to preload IFC types during document opening (#21450) (tetektoza) - Copy subvolume before changing its Placement (Zbyněk Winkler) - BIM: check OutListRecursive in addComponents (Roy-043) - BIM: improve Arch_MergeWalls (#22262) (Roy-043) - BIM: fix visibility handling of objects hosted by additions (Roy-043) - BIM: fix handling of Project coin nodes (#22244) (Roy-043) - [BIM] Stop combobox sizeAdjustPolicy warning (Syres916) - BIM: fix profile selection (#22223) (Roy-043) - BIM: fix Arch_SectionPlane 'Toggle Cutview' issue (Roy-043) - Sandbox: Update UI strings for consistency (Ryan Kembrey) - BIM: fix default radius for rectangular pipe connector (Roy-043) - Sketcher: Update missed UI strings (#22363) (Max Wilfinger) - Sketcher: Autoscale: do not scale dimension's position if it is a radius or diameter (#22308) (theo-vt) - Gui: Fix too small link icon on high dpi (#22359) (Kacper Donat) - Gui: Add ThemeTokenManager class to contain theme parameters (Kacper Donat) - [TechDraw] Fix Qt6 compatability of FillTemplateFields tool (Syres916) - Update DraftGui.py (Roy-043) - CAM: Fix origin indicator for Job (Kacper Donat) - Fix various typos Found via codespell (Luz Paz) - pixi: Update pixi.lock. (Jacob Oursland) - pixi: Add freecad-stubs for python autocompletion. (Jacob Oursland) - pixi: Pin occt to 7.8 due to bugs in 7.9.0. (Jacob Oursland) - pixi: Pin versions for compatibility with VFX Reference Platform. (Jacob Oursland) - Materials: Add import for unimplemented fields (David Carter) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - FEM: Update Command.cpp (FEA-eng) - FEM: Update commands.py (FEA-eng) - FEM: Update TaskPostFrames.ui (FEA-eng) - Core: Update DlgSettingsLightSources.ui (FEA-eng) - Core: Fix property rename test (Pieter Hijma) - Materials: Add support for embedded images (David Carter) - FEM: Update Command.cpp (FEA-eng) - CAM: Changes in warnings of old Array (tarman3) - Sketcher: Update UI strings for consistency (#22167) (Max Wilfinger) - remove unused import of PartGui (Samuel Abels) - Avoid triggering circular imports by using traceback instead of inspect (Samuel Abels) - Inform Coin to use EGL when on Wayland (#21917) (Bas Ruigrok) - BIM: fix setting of self.Type (Roy-043) - Draft: fix setting of self.Type (Roy-043) - TechDraw: ActiveView rework (#22107) (Ryan K) - codespell: add 3 false positives to ignore list Added `InvertIn, LeadIn, linez` ref: https://github.com/FreeCAD/FreeCAD/pull/22137/files (Luz Paz) - Remove unused deprecated functions (Andrea) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - Update src/Mod/Fem/femtaskpanels/task_constraint_centrif.py (Max Wilfinger) - Update src/Mod/Fem/femtaskpanels/task_constraint_centrif.py (Max Wilfinger) - Update src/Mod/Fem/femcommands/commands.py (Max Wilfinger) - Update src/Mod/Fem/Gui/DlgSettingsFemCcx.ui (Max Wilfinger) - Update src/Mod/Fem/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Fem/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Fem/App/AppFem.cpp (Max Wilfinger) - FEM: Update UI strings for consistency (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Workbench.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Workbench.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Workbench.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Workbench.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Workbench.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Spreadsheet/Gui/Workbench.cpp (Max Wilfinger) - Spreadsheet: Update UI strings for consistency (Max Wilfinger) - Update src/Mod/Robot/Gui/Command.cpp (Max Wilfinger) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - Update src/Mod/Robot/Gui/TaskTrajectoryDressUpParameter.ui (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandTrajectory.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandTrajectory.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandTrajectory.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandTrajectory.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandInsertRobot.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandInsertRobot.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/CommandInsertRobot.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Robot/Gui/Command.cpp (Max Wilfinger) - Robot: Update UI strings for consistency (Max Wilfinger) - Update src/Mod/Surface/Gui/TaskSections.ui (Max Wilfinger) - Update src/Mod/Surface/Gui/TaskFillingEdge.ui (Max Wilfinger) - Update src/Mod/Surface/Gui/TaskFillingVertex.ui (Max Wilfinger) - Update src/Mod/Surface/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Surface/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Surface/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Surface/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Surface/App/FeatureFilling.cpp (Max Wilfinger) - Update src/Mod/Surface/App/FeatureFilling.cpp (Max Wilfinger) - Surface: Update UI strings for consistency (Max Wilfinger) - Update src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp (Max Wilfinger) - Update src/Mod/ReverseEngineering/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/ReverseEngineering/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/ReverseEngineering/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp (Max Wilfinger) - ReverseEngineering: Update UI strings for consistency (Max Wilfinger) - Update src/Mod/Mesh/Gui/DlgSettingsMeshView.ui (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/App/MeshPy.xml (Max Wilfinger) - Update src/Mod/Mesh/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Mesh/App/MeshPy.xml (Max Wilfinger) - Update src/Mod/Mesh/App/AppMeshPy.cpp (Max Wilfinger) - Mesh: Update UI strings for consistency (Max Wilfinger) - Update src/Mod/Points/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Points/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Points/Gui/Command.cpp (Max Wilfinger) - Update src/Mod/Points/Gui/Command.cpp (Max Wilfinger) - Points: Update UI strings for consistency (Max Wilfinger) - Inspection: Update UI strings for consistency (Max Wilfinger) - Sketcher: fix Esc can leave setting synchronization (Karliss) - Contributing: Add requirement to clearly mark ownership for cherry-picked PRs (#22001) (Kacper Donat) - Start: Update UI strings for consistency (Max Wilfinger) - Use vtkUnstructuredGrid::GetLinks instead of vtkUnstructuredGrid::GetCellLinks for VTK >= 9.3 (Jakub Klinkovský) - OpenSCAD: Update UI strings for consistency (Max Wilfinger) - Apply suggestions from code review (Chris Hennes) - FEM: Fix data extraction checkbox typo (#22225) (FEA-eng) - Clean EditableDatumLabel.cpp (mosfet80) - Gui: Selectively disable MSVC 4251 warning (Chris Hennes) - FEM: Fix missing VTK headers in PreCompiled.h (Chris Hennes) - Bump github/codeql-action from 3.29.0 to 3.29.1 (dependabot[bot]) - [BIM][Draft] QCheckBox fix regressions introduced by PR #21939 (#22199) (Syres916) - Draft: Remove redundant QGroupBoxes from some of the array panels (#21980) (tetektoza) - Gui: Use no_except=true for getExtensionByType in ViewProviderDragger (Kacper Donat) - Import: DXF reporter, add unsupported indicator (Furgo) - Import: DXF reporter, add filename to report (Furgo) - Import: DXF parser, correctly pass line no. and handle (Furgo) - Import: DXF backend/frontend, report more unsupported features info (Furgo) - Import: DXF parser, fix macOS linker issue (Furgo) - Import: DXF parser, remove original unsupported features count and warning (Furgo) - Import: DXF importer, add code comments to C++ to Python stats passing function (Furgo) - Import: DXF parser, add entities in paperspace count (Furgo) - Import: DXF parser, add DXF block count (Furgo) - Import: DXF backend, frontent; add time measurement (Furgo) - Import: DXF frontend, improve scale reporting (Furgo) - Import: DXF parser, disable now redundant unsupported entities reporting (Furgo) - Import: DXF parser/imported improve unsupported features count (Furgo) - Import: DXF parser/importer, improve scale reporting (Furgo) - Import: DXF Python frontend, implement stats reporter (Furgo) - Import: DXF importer, add Python bindings (Furgo) - Import: DXF importer, populate stats reporting structure (Furgo) - Import: DXF parser, add stats reporting structure (Furgo) - BIM: satisfy github-advanced-security (Gaël Écorchard) - PD: Correctly handle single solid rule for loft with and without base (wmayer) - PD: Use isSingleSolidRuleSatisfied() for pipe feature (wmayer) - PD: Fix regression about single-solid check (wmayer) - Update ImageBuilder.py (Roy-043) - BIM: fix geometry under node tags (Gaël Écorchard) - BIM: remove unused variable `DEBUG` (Gaël Écorchard) - BIM: improve style of importDAE.py (Gaël Écorchard) - BIM: Use labels in DAE export (Gaël Écorchard) - Draft : fix Label Justification (#13444) (alafr) - Sketcher: Add contextual input hints to constraint commands (InputHints Phase 2) (#21751) (George Peden) - Refactor slot op. (#21799) (sliptonic) - CAM: Load preferences before activating the workbench (#21981) (Samuel) - FEM: fix typos (Luz Paz) - Gui: Fix wildcard call disconnects warnings Qt6.9 (#22096) (Kacper Donat) - Gui: prevent hover tooltip from covering menu items (#22019) (tiagomscardoso) - Gui: Remove adjustCameraPosition() (Bas Ruigrok) - PartDesign: Remove use of adjustCameraPosition() (Bas Ruigrok) - Part: Remove use of adjustCameraPosition() (Bas Ruigrok) - Sketcher: Make TAB clear the field if user hasn't valid input (tetektoza) - TechDraw: Add command tool label for vertex group (#22118) (Ryan K) - Spreadsheet: Only use validator when when prefix is not '=' (Benjamin Nauck) - Tools: Add ExpressionLineEdit to QtDesigner plugin (wmayer) - FEM: Eliminate unused proxy member (Chris Hennes) - TD: Remove calls to now-empty clearLineSets() method (Chris Hennes) - TD: Add missing override (Chris Hennes) - CAM: Add missing initializers (Chris Hennes) - CAM: Add initializer for retract_mode (Chris Hennes) - Gui: Drop name of unused parameter in PropertyBoolItem (Chris Hennes) - Gui: Make narrowing conversion float->int explicit (Chris Hennes) - Gui: Mark widget as [[maybe_unused]] (Chris Hennes) - Gui: Implicit capture of this is deprecated (Chris Hennes) - Sketcher: Make TAB lock the label if user has typed previously (tetektoza) - Sketcher: Add QLabel header for newly added locked icon (tetektoza) - Sketcher: Force cycling back to first labels on OVP if they are not set (tetektoza) - Sketcher: Initialize lock icon only once (tetektoza) - Sketcher: Adjust P&D mode to new enter behavior (tetektoza) - Sketcher: Change enter behavior on OVP to put OVP in lock state only (tetektoza) - CAM: Dressup Tag some fixes (tarman3) - CAM: Engrave - Fix step down for closed profile (tarman3) - Core: Add tests for undo/redo property rename (Pieter Hijma) - Core: Add undo/redo support to property renaming (Pieter Hijma) - CAM: fix: broken import in tests (Samuel Abels) - CAM: Remove obsolete images (Samuel Abels) - CAM: move DetachedDocumentObject into a dedicated module for better reuse (Samuel Abels)