# 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.05.26 Release: 1.20250613142857135312.pr13.332.gb0f7ab57cc%{?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 libkdtree++-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 * Fri Jun 13 2025 Packit - 1:weekly.2025.05.26-1.20250613142857135312.pr13.332.gb0f7ab57cc - add git information (github-actions[bot]) - add permission (filippor) - Update fedora-daily.yml (FilippoR) - add github action (filippor) - authomatic build on commit (filippor) - fix packit (filippor) - fix format (filippor) - change packit configuration (filippor) - small fix (filippor) - Update package/fedora/freecad.spec (FilippoR) - small fix (filippor) - Update package/fedora/freecad.spec (FilippoR) - Update package/fedora/freecad.spec (FilippoR) - fix and disable option without bundled_gtest (filippor) - use default build type for pr build and always print buiild time tests result (filippor) - add test that read build time tests result (filippor) - add tests in test-farm (filippor) - simplify configuration to use only packit remove script used to have only a spec file and build with 3 system rpkg custom bash script packit (filippor) - add new build on release (filippor) - escape changelog for spec file (filippor) - add packit configuration (filippor) - refactor prepare for packit (filippor) - remove rpkg macro for archive extraction (filippor) - add timeout to tests (filippor) - Disabile gui test to avoid timeout (FilippoR) - simplify regexp. remove delete unused source enable gui tests other fix (filippor) - use new macro for filtering requires provides (filippor) - export libondselsolver (filippor) - export dev package for ondselsolver (filippor) - build in RelWithDebInfo to generate correctly the debuginfo package (debug info will be stripped from standard package and a debuginfo package will be generated (filippor) - remove python bytecompile is default (filippor) - add tests (filippor) - configure cmake correctly to avoid moving file later (filippor) - use standard builddir and don't delete it to fast local rebuild (filippor) - use bcond macro (filippor) - add script for build from source archive (filippor) - reformat freecad.spec (filippor) - use custom macro to package the source file (filippor) - Draft: OrthoArray task panel change some strings to sentence case (#21959) (Roy-043) - TechDraw: fix typo in comment (Luz Paz) - Gui: Fix dragger update when moving to target object and make flip independent of selected components. (Max Wilfinger) - Sketcher: Refactor access to OVPs to not repeat array access everytime (tetektoza) - [TD]fix bad element name in Vertex::Restore (wandererfan) - Test: Do not write test files into CWD (wmayer) - CI: set MACOS_DEPLOYMENT_TARGET=10.13 for Intel macOS. (Jacob Oursland) - Gui: fix ViewProviderCoordinateSystem::claimChildren() (Ladislav Michl) - Gui: Add guidelines for input hints (Kacper Donat) - Draft: Fix several SVG import bugs (#20293) (Mino-Tsuzuku) - CI: install black for python format checker (#21858) (Jackson Oursland) - [BIM] Fix Attribute Error when user moves and then deletes the BimViewArea dock widget (#21830) (Syres916) - Sketcher: Sketch autoscale (#21084) (theo-vt) - Gui: Add BitmapFactory::empty method (Kacper Donat) - Helper function to get preferred delete key depending on platform (wmayer) - CI: add ifcopenshell to Ubuntu native builds (#21709) (Furgo) - Add 3.175mm milling bit to default tool library as it's extremely common bit size (Tomas Mudrunka) - Material: Fix unused parameters warnings. (#21584) (João Matos) - Partial homogenization of FEM dialogs for constraints (#21538) (Ralf Habacker) - [TD]fix dim reference repair (wandererfan) - [TD]Cosmetic vertex tag save/restore fail (fix #21069) (#21374) (WandererFan) - BIM: Add top level group when importing obj file into active document (Ralf Habacker) - Draft: Introduce 1-axis mode for ortho array (#21602) (tetektoza) - [Start] add Tooltip to show full path when the ShortCustomFolder is true (Syres916) - CAM: Remove unwanted transparency from shape icons (Samuel Abels) - Pixi: remove explictly setting Qt6 now that it is the default. (Jacob Oursland) - Addon Manager: Update to latest main (Chris Hennes) - [Start] show the actual custom folder name... (Syres916) - Gui: remove taskheader animation (Alfredo Monclus) - Advanced options for move to other object in the transform tool. Allows for masking of individual translation or rotation axes. (Max Wilfinger) - Sketcher: Allow user to reset OVP state using backspace key (tetektoza) - Update stale action (#21860) (Max Wilfinger) - Update GitHub stale action and fix typo (Max Wilfinger) - - Refactor Point tool hint implementation with direct return (trival) pattern (longrackslabs) - CMake: Switch default Qt to Qt6 (Chris Hennes) - Change hint size for status bar consistency (Max Wilfinger) - Update codeql.yml (#21819) (saso badovinac) - Fix linter warnings (Max Wilfinger) - Fix label action for changes in Mod/Surface. (Max Wilfinger) - Surface: Fix transaction support of BlendCurvePanel and bind widgets to properties (wmayer) - Surface: Add task panel for blending curve (wmayer) - Renaming Gui::SiemensNXStyle to Gui::SiemensNXNavigationStyle for consistency (Max Wilfinger) - Added UI for Siemens NX navigation style. Ordered navigation styles alphabetically. (Max Wilfinger) - Gui: Refactor navigation styles (wmayer) - Gui: Refactor navigation styles (wmayer) - Gui: Refactor navigation styles (wmayer) - Gui: Implement navigation style for NX (wmayer) - Gui: KeypadModifier should be used via bitwise or (Chris Hennes) - Gui: Improve orthographic camera rotation stability (Bas Ruigrok) - BIM: Roof add tolerance to parallel check (#21814) (Roy-043) - Draft: fix focus behavior if Length has default focus and axis constraint is used (Roy-043) - Gui: fix taskpanel header label font descents (Alfredo Monclus) - Block preselect on selection (dzid26) - Gui: Adding translation comments to hints and new numpad keys. (Max Wilfinger) - CAM: fix default asset directory (#21775) (Samuel) - Sketcher: fix typo in source comment (Luz Paz) - BIM: Arch, docstring and linter fixes (#21763) (Furgo) - [ArchWindow] Bug-fix Changing Sill _&_ SketchArch Support Sill Property (#21726) (paul) - Sheet: Further cleanup in Sheet class (wmayer) - Sheet: Improve handling of unsupported formulas (wmayer) - Sheet: Fix crash in Cell::setContent (wmayer) - Sheet: Fix reading xlsx files (wmayer) - Sheet: Disable zooming (wmayer) - Avoid error importing spreadsheet with deleted sheet (#19757) (Gonzalo) - BIM: improve unit handling in Arch_Roof task panel (#21773) (Roy-043) - update addonManager submodule to main (Andrea) - Preferences: Better grouping for Selection page (#21750) (Kacper Donat) - Bump github/codeql-action from 3.28.18 to 3.28.19 (dependabot[bot]) - Gui: Fix hints on high DPI screens (#21762) (Max Wilfinger) - Materials: Set array quantity format (#21647) (David Carter) - Base: Fix size in array (wmayer) - Base: Fix typo (wmayer) - Base: Remove weird error parameter from encode (wmayer) - Base: Allow to also throw exception by given Python type (wmayer) - Base: Improve Python exception handling (wmayer) - Fem: Fix typo in VTK module warning: 'then' -> 'than' (#21752) (Ryan Kembrey) - Sketcher: Fix #21646 (#21739) (PaddleStroke) - Gui: Ensure width and height of QAbstractView checkboxes (Kacper Donat) - Cam: Add Ondsel SVG post processor (#21743) (sliptonic) - Gui: Implement validator for ExpressionLineEdit (wmayer) - Gui: Make checkbox in the property view QSS aware (Kacper Donat) - PD: hole change the task panel threaded and model thread checkboxes into a combo/dropdown (#21664) (Alfredo Monclus) - Gui: Property editor use a checkbox instead of a combobox for booleans (#21555) (Alfredo Monclus) - App::Document addObject and removeObject code reuse (#21481) (theo-vt) - BIM: ignore FreeCAD groups for IFC export, controlled by a user preference (#21583) (Furgo) - Sketcher: Fix scaling down ellipses and arcs of ellipses (#21718) (theo-vt) - [BimWindow] ArchWindow/MakeWindow Normal Default Auto & SketchArch Support Sill Property (#21568) (paul) - proposed fix for https://https://github.com/FreeCAD/FreeCAD/issues/20856github.com/FreeCAD/FreeCAD/issues/20856. NOTE: AddonManager and Telemetry addon ui files are in separate repos (Brad Eric Hollister) - Base: Units: refactor (bofdahof) - Base: Units: introduce unit one (Ladislav Michl) - Fem: get unit via quantity (Ladislav Michl) - Base: Quantity: use isDimensionless whenever feasible (Ladislav Michl) - App: Quantity: use predefined unit types (Ladislav Michl) - Gui: use Units namespace in DlgUnitsCalculatorImp (Ladislav Michl) - Gui: do not create intermediate Quantity class in property editor (Ladislav Michl) - Base: minor refactoring of UnitsSchema::toLocale (Ladislav Michl) - Base: fix UnitsSchema::translate (Ladislav Michl) - Test: Add further test cases for quantities (wmayer) - Test: Add test case for UnitsSchemaMeterDecimal (wmayer) - fix #10514 (julian1) - Fix compiling ProgressIndicator with precompiled headers (samrg472) - Sketcher: Do not allow mouse interruption while entering dimension (#20925) (tetektoza) - CAM: Vcarve - fix zStart (tarman3) - Bump ossf/scorecard-action from 2.4.1 to 2.4.2 (dependabot[bot]) - Materials: Pass by reference instead of pointers (David Carter) - BIM: fix ArchRebar default name (#21681) (Furgo) - TechDraw: Sheet view: add property to claim sheet as child. (#21624) (PaddleStroke) - Update Help.py (Turan Furkan Topak) - Merge pull request #21377 from WandererFan/Removesnprintf (WandererFan) - Update codeql.yml (saso badovinac) - Core: Fix Thermal Conductivity units conversion (David Carter) - feat(PD): ISO tyre valve threads (Alfredo Monclus) - Draft/BIM: change BezCurve, BSpline and Wire to Part::FeaturePython (Roy-043) - BIM: clarify window frame depth (#21486) (Furgo) - fix: preferences key for asset path (Samuel Abels) - update pixi.lock to sync updates to recipe.yaml (Zbyněk Winkler) - typing_extensions package was missing 's' (Zbyněk Winkler) - Gui: Property editor combobox fix not popping up if the user canceled (#21688) (Alfredo Monclus) - Sketcher: Fix Arrow Direction of Angle Arrows (#21645) (matthiasdanner) - FEM: clean code (#21526) (mosfet80) - fix use of viewScalingFactor (Matthias Danner) - Sketcher: Implement hints for for all drawing tools and modes (consolidates previous PRs into a single PR) (#21632) (George Peden) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - Translations: Merged crowdin translations (Yorik van Havre) - BIM: Terrain should not also be in Group of Site (Roy-043) - Translations: updated ts files (Yorik van Havre) - Start: Fix possible crash when opening Start page (wmayer) - App: Handle possibly raised exception in ZipFile constructor (wmayer) - CI: add typing_extensions to runtime dependency for weekly build. (Jacob Oursland) - BIM: fix typo in Arch.py (#21696) (luzpaz) - Draft: DraftGui.py correct handling of last point (#21698) (Roy-043) - CAM: Fix Job toggleVisibility (tarman3) - Draft: Tweak working plane code (#21672) (Roy-043) - CAM(PathSimulator): Use single-precision pi (Chris Hennes) - CAM(libarea): Fix encoding of clipper.cpp (Chris Hennes) - Gui: Fix TreeWidget::addDependentToSelection (wmayer) - Revert "[Gui] Fix "Select dependent objects" with cycles" (Ladislav Michl) - command to open folder with macros (tarman3) - PartDesign: Add OCCT progress support to `FeatureTransformed`. (James Stanley) - Part: Add OCCT progress support to Part boolean and shape builders (Joao Matos) - Gui: Show date & time in locale specific format (wmayer) - Gui: Improve DlgAddPropertyVarSet (wmayer) - Gui: In DockWindowItems::addDockWidget replace the booleans with the enum class DockWindowOptions (wmayer) - Gui: Improve auto-saving (wmayer) - Gui: Move define HAS_QTBUG_129596 to separate header file (wmayer) - Gui: Fix crash in ~PythonBaseWorkbench with Python 3.12 (wmayer) - Gui: avoid code duplication in PythonEditor (wmayer) - Gui: Replace calls of FCMD_SET_EDIT with Gui::cmdSetEdit (wmayer) - Gui: Handle exception when trying to start editing an object (wmayer) - Gui: Fix crash in Command::keySequenceToAccel (wmayer) - Gui: Improve document recovery (wmayer) - Gui: Use QDialogButtonBox in DlgExpressionInput (wmayer) - Gui: Fix stackoverflow when loading corrupted file (wmayer) - Gui: Fix crash when trying to transform link object (wmayer) - Gui: Fix command StdCmdProperties (wmayer) - Gui: Make AccelLineEdit a subclass of QKeySequenceEdit (wmayer) - Base: Add `Base::ProgressIndicator` for OCCT progress reporting (James Stanley) - Gui: Do not round color values set in property editor (wmayer) - Gui: Fix DlgPreferencesImp::minimumDialogWidth() to return a reasonable width (wmayer) - Gui: Fix several methods in Workbench to list all items (wmayer) - Gui: Adjust transform dragger after undo/redo (wmayer) - Gui: Fix undo/redo behaviour in transformation tool (wmayer) - Gui: Use Py::SmartPtr instead of raw pointer (wmayer) - Gui: Add Action::setBlockedChecked (wmayer) - CAM: Simulator - Drilling - RetractMode G98/G99 (tarman3) - CAM: Drilling - Retract mode readonly (tarman3) - App: Make Label property on Document read only (#21562) (Gonzalo Odiard) - Gui: property-editor open the combo directly and apply after selection (Alfredo Monclus) - Gui: property-editor add property copy context menu (Alfredo Monclus) - PartDesign: Fix hole centered on point edge case (#21257) (theo-vt) - CAM: Fix: case_sensitive argument for glob() not supported in Python 2.10 (Samuel Abels) - CAM: Handle import of unknown shape types gracefully; allow case insensitive filenames, and allow invalid tool ID data type (Samuel Abels) - Gui: property-editor fix text not showing due to stylesheets (Alfredo Monclus) - Start: fix thumbnails not keeping aspect ratio (Alfredo Monclus) - TechDraw: fix incorrect click handles of editable labels (#21131) (Benjamin Bræstrup Sayoc) - CAM: Dressup context submenu (tarman3) - [pre-commit.ci] pre-commit autoupdate (pre-commit-ci[bot]) - TechDraw: Fix DrawViewSpreadsheet being assigned wrong QGI in QGSPage.cpp (#21623) (PaddleStroke) - Bump github/issue-metrics from 3.20.0 to 3.20.1 (dependabot[bot]) - CAM: Dressup Boundary - CmdMoveDrill (tarman3) - BIM: Add support for deactivation active object to BIM Views Tree (#21570) (tetektoza) - CAM: Dressup LeadInOut - fix property name select style (tarman3) - CAM: Fix: Custom tool parameters not showing up in property editor (Samuel Abels) - CAM: Fix: Chamfer schema was missing TipDiameter (Samuel Abels) - Draft: Added snap recenter functionality (#19728) (Yorik van Havre) - CAM: Set outside by default for selected Edges (tarman3) - CAM: remove left over debug print (Samuel Abels) - CAM: No need to copy defaultl shapes anymore, because the asset manager now dynamically fetches built-in shapes as a fallback (Samuel Abels) - CAM: Fix: ShapeType not displayed correctly in property editor (Samuel Abels) - CAM: Improved handling of toolbit shape type inference (Samuel Abels) - CAM: Refactor ToolBit.from_dict() for clarity and to generate more relevant warnings (Samuel Abels) - CAM: Change Camotics file extension to .json (Samuel Abels) - CAM: Improve LinuxCNC and Camotics serializer tests (Samuel Abels) - CAM: use three decimals in LinuxCNC export (Samuel Abels) - CAM: Fix: all toolbits in camotics exported as Cylindrical (Samuel Abels) - CAM: only copy shape icons if the shape folder is not initialized (Samuel Abels) - Fix various typos (Luz Paz) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - CAM: Fix: Only attach view if the Gui is up (Samuel Abels) - CAM: Fix recursionlimit due to invalid overwrite of exec() (Samuel Abels) - CAM: Reintroduce Save button for the library editor (Samuel Abels) - CI: pin occt==7.8.1 on weekly builds. (Jacob Oursland) - CAM: Fix: viewprovider not added when adding a tool to a document from the dock (Samuel Abels) - Spreadsheet: Add tests for rename property (Pieter Hijma) - Core: Add tests for renaming dynamic properties (Pieter Hijma) - Core: Update expressions on property rename (Pieter Hijma) - Core: Add a Python interface for property rename (Pieter Hijma) - Core: Add logic to rename dynamic properties (Pieter Hijma) - fix for #20656 (chris) - [Gui] InputField correct icon visibility logic on opening a pre-completed task panel (Syres916) - CAM: Fix SurfaceSupport operation for new type toolbits (Samuel Abels) - CAM: Add CamAssetManager now falls back to builtin assets if not found in user assets (Samuel Abels) - CAM: AssetManager now supports passing mutilple stores to all get_*() methods (Samuel Abels) - CAM: Ensure float constants are single-precision (#21322) (Chris Hennes) - CAM: Rename getBuiltinToolPath to getBuiltinAssetPath (Samuel Abels) - [App] Use consistent unit schema names (#21355) (Syres916) - [TD] fix small angle dims (fix #21114) (#21208) (WandererFan) - TechDraw: richannotation : Fix white text issue (#21515) (PaddleStroke) - TechDraw: fix state handling of dimensions (Benjamin Bræstrup Sayoc) - Gui: property-editor make readonly cells look disabled (Alfredo Monclus) - CAM: Added property CycleTime to old Array (tarman3) - Gui: property editor do not enter edit mode if the property is read-only (Alfredo Monclus) - CAM: added command line arguments for line number start, increment (Lawrence Woestman) - CAM: sort locations for all drilling operations (jffmichi) - [TD]fix hidden vertex not created (wandererfan) - [TD]fix vertex visible attribute not restored (wandererfan) - [TD]return Qt or conventional coords (wandererfan) - PD: hole safeguard countersink depth calculation against possible math issues (Alfredo Monclus) - PD: hole calculate counterbore and countersink if no standards are available (Alfredo Monclus) - PD: hole fix head custom values checkbox not appearing (Alfredo Monclus) - PD: hole: calculate depth of countersink and adjust other parameters accordingly when changed (Alfredo Monclus) - PD: hole: fix standarized head cuts not working in metric regular sizes (Alfredo Monclus) - CAM: prevent dogbones between two travel moves (jffmichi) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - . (Andrea) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - CAM: use std::numbers pi definition (Andrea) - CAM: Do not create useless G0 X0 Y0 movements for mutliprofile operations (tarman3) - CAM: Fix: updateSpinBox renamed to updateWidget (Samuel Abels) - CAM: Update asset manager docs (Samuel Abels) - CAM: fix philips postprocessor always writing to "-" instead of specified file and not processing arguments (jffmichi) - CAM: fix fablin postprocessor always writing to "-" instead of specified file (jffmichi) - CAM: fix some non-refactored postprocessors crashing on blank lines (jffmichi) - CAM: fix Custom operation UI panel dropping trailing blank lines (jffmichi) - CAM: add configuration value to suppress blank lines in refactored postprocessors (jffmichi) - CAM: fix refactored postprocessors crashing on blank lines (jffmichi) - CAM: Fix some type hints and unnecessary debug output (Samuel Abels) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - CAM: Add explicit implementation of FileStore.exists(), so AssetManager.exists() does not log FileNotFound warnings (Samuel Abels) - CAM: Fix: Show builtin shapes in separate section in shape selector (Samuel Abels) - CAM: Show shape ID on shape buttons (Samuel Abels) - CAM: Handle shape schema violations gracefully (for now) (Samuel Abels) - CAM: Add built-in shapes to asset folder if they do not already exist (Samuel Abels) - CAM: Fix Gui test for ToolBitBrowserWidget (Samuel Abels) - [pre-commit.ci] auto fixes from pre-commit.com hooks (pre-commit-ci[bot]) - CAM: Replace complete tool management (PR 21425) (Samuel Abels) - Gui: add 'System' style to leave QtStyle unset (Alfredo Monclus) - Gui: Set QStyle to Fusion if not set (Alfredo Monclus) - CAM: Adaptive: Fix helix entry start height (fix #21058) (Dan Taylor)