{"ref":"refs/heads/main","before":"3e989c02fc78fcb0fe36b429382502d18607613b","after":"e6779380e7e74b42a6e470fa0fc9443bd62cbfd0","repository":{"id":758965894,"node_id":"R_kgDOLTzmhg","name":"FreeCAD","full_name":"ilf-S/FreeCAD","private":false,"owner":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","login":"ilf-S","id":1728511,"node_id":"MDQ6VXNlcjE3Mjg1MTE=","avatar_url":"https://avatars.githubusercontent.com/u/1728511?v=4","gravatar_id":"","url":"https://api.github.com/users/ilf-S","html_url":"https://github.com/ilf-S","followers_url":"https://api.github.com/users/ilf-S/followers","following_url":"https://api.github.com/users/ilf-S/following{/other_user}","gists_url":"https://api.github.com/users/ilf-S/gists{/gist_id}","starred_url":"https://api.github.com/users/ilf-S/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ilf-S/subscriptions","organizations_url":"https://api.github.com/users/ilf-S/orgs","repos_url":"https://api.github.com/users/ilf-S/repos","events_url":"https://api.github.com/users/ilf-S/events{/privacy}","received_events_url":"https://api.github.com/users/ilf-S/received_events","type":"User","user_view_type":"public","site_admin":false},"html_url":"https://github.com/ilf-S/FreeCAD","description":"This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.","fork":true,"url":"https://api.github.com/repos/ilf-S/FreeCAD","forks_url":"https://api.github.com/repos/ilf-S/FreeCAD/forks","keys_url":"https://api.github.com/repos/ilf-S/FreeCAD/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ilf-S/FreeCAD/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ilf-S/FreeCAD/teams","hooks_url":"https://api.github.com/repos/ilf-S/FreeCAD/hooks","issue_events_url":"https://api.github.com/repos/ilf-S/FreeCAD/issues/events{/number}","events_url":"https://api.github.com/repos/ilf-S/FreeCAD/events","assignees_url":"https://api.github.com/repos/ilf-S/FreeCAD/assignees{/user}","branches_url":"https://api.github.com/repos/ilf-S/FreeCAD/branches{/branch}","tags_url":"https://api.github.com/repos/ilf-S/FreeCAD/tags","blobs_url":"https://api.github.com/repos/ilf-S/FreeCAD/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ilf-S/FreeCAD/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ilf-S/FreeCAD/git/refs{/sha}","trees_url":"https://api.github.com/repos/ilf-S/FreeCAD/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ilf-S/FreeCAD/statuses/{sha}","languages_url":"https://api.github.com/repos/ilf-S/FreeCAD/languages","stargazers_url":"https://api.github.com/repos/ilf-S/FreeCAD/stargazers","contributors_url":"https://api.github.com/repos/ilf-S/FreeCAD/contributors","subscribers_url":"https://api.github.com/repos/ilf-S/FreeCAD/subscribers","subscription_url":"https://api.github.com/repos/ilf-S/FreeCAD/subscription","commits_url":"https://api.github.com/repos/ilf-S/FreeCAD/commits{/sha}","git_commits_url":"https://api.github.com/repos/ilf-S/FreeCAD/git/commits{/sha}","comments_url":"https://api.github.com/repos/ilf-S/FreeCAD/comments{/number}","issue_comment_url":"https://api.github.com/repos/ilf-S/FreeCAD/issues/comments{/number}","contents_url":"https://api.github.com/repos/ilf-S/FreeCAD/contents/{+path}","compare_url":"https://api.github.com/repos/ilf-S/FreeCAD/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ilf-S/FreeCAD/merges","archive_url":"https://api.github.com/repos/ilf-S/FreeCAD/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ilf-S/FreeCAD/downloads","issues_url":"https://api.github.com/repos/ilf-S/FreeCAD/issues{/number}","pulls_url":"https://api.github.com/repos/ilf-S/FreeCAD/pulls{/number}","milestones_url":"https://api.github.com/repos/ilf-S/FreeCAD/milestones{/number}","notifications_url":"https://api.github.com/repos/ilf-S/FreeCAD/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ilf-S/FreeCAD/labels{/name}","releases_url":"https://api.github.com/repos/ilf-S/FreeCAD/releases{/id}","deployments_url":"https://api.github.com/repos/ilf-S/FreeCAD/deployments","created_at":1708184682,"updated_at":"2026-02-27T01:57:46Z","pushed_at":1772243305,"git_url":"git://github.com/ilf-S/FreeCAD.git","ssh_url":"git@github.com:ilf-S/FreeCAD.git","clone_url":"https://github.com/ilf-S/FreeCAD.git","svn_url":"https://github.com/ilf-S/FreeCAD","homepage":"https://www.freecad.org","size":2398695,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"has_pull_requests":true,"pull_request_creation_policy":"all","topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"main","stargazers":0,"master_branch":"main"},"pusher":{"name":"github-actions[bot]","email":null},"forced":false,"sender":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"created":false,"deleted":false,"base_ref":null,"compare":"https://github.com/ilf-S/FreeCAD/compare/3e989c02fc78...e6779380e7e7","commits":[{"id":"22f40741ee083630fa73e2f254282b109e963fbe","tree_id":"92db1e610f907e1c8e79a314966825274368ced0","distinct":true,"message":"CAM: LeadInOut - ArcZ following profile","timestamp":"2026-01-06T14:59:25+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/22f40741ee083630fa73e2f254282b109e963fbe","author":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2025-10-25T18:21:55+03:00","username":"tarman3"},"committer":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-01-06T14:59:25+02:00","username":"tarman3"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py"]},{"id":"1800ef0f108ffcdf5be4bd06c24a1b4d3e2ae6aa","tree_id":"6204d50dd297563c4c5ff206f571f68f9a07bb86","distinct":true,"message":"CAM Waterline OCL Adaptive\n\nAdd - Optimize Linear Paths\nRemove - Unecessary BoundBox selection","timestamp":"2026-01-20T04:35:32+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/1800ef0f108ffcdf5be4bd06c24a1b4d3e2ae6aa","author":{"name":"Dimitris75","email":"30848292+Dimitris75@users.noreply.github.com","date":"2026-01-20T04:35:32+02:00","username":"Dimitris75"},"committer":{"name":"Dimitris75","email":"30848292+Dimitris75@users.noreply.github.com","date":"2026-01-20T04:35:32+02:00","username":"Dimitris75"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Op/Gui/Waterline.py","src/Mod/CAM/Path/Op/Waterline.py"]},{"id":"cdce2f0ffdd15aabd29b52430c8e1bd0142ae325","tree_id":"69f31525da8b665dab2f6b0fc757a7ab918a7e3f","distinct":true,"message":"[CAM] separate tolerance variable used for arc fitting from tolerance used for section height offsets","timestamp":"2026-01-26T10:35:23-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/cdce2f0ffdd15aabd29b52430c8e1bd0142ae325","author":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-01-26T10:35:23-05:00","username":"davidgilkaufman"},"committer":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-01-26T10:35:23-05:00","username":"davidgilkaufman"},"added":[],"removed":[],"modified":["src/Mod/CAM/libarea/Arc.cpp","src/Mod/CAM/libarea/Curve.cpp","src/Mod/CAM/libarea/Point.h"]},{"id":"8e04386c675ccf64658f403949428c1c4860e207","tree_id":"b37db9b6f5e680e33263bf5da6c6e03c2d5b3595","distinct":true,"message":"use CArea::get_accuracy instead of Point::arc_tolerance","timestamp":"2026-01-26T16:27:19-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/8e04386c675ccf64658f403949428c1c4860e207","author":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-01-26T16:27:19-05:00","username":"davidgilkaufman"},"committer":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-01-26T16:27:19-05:00","username":"davidgilkaufman"},"added":[],"removed":[],"modified":["src/Mod/CAM/libarea/Arc.cpp","src/Mod/CAM/libarea/Curve.cpp","src/Mod/CAM/libarea/Point.h"]},{"id":"388c66b41e88e662a311dd6c7c859f337a58b730","tree_id":"0cc12f2fab0ed6578db44cde2d15af9a8c26c023","distinct":true,"message":"move max-arc-radius test from AlmostALine to CheckForArc","timestamp":"2026-02-02T10:46:00-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/388c66b41e88e662a311dd6c7c859f337a58b730","author":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-02-02T10:46:00-05:00","username":"davidgilkaufman"},"committer":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-02-02T10:46:00-05:00","username":"davidgilkaufman"},"added":[],"removed":[],"modified":["src/Mod/CAM/libarea/Arc.cpp","src/Mod/CAM/libarea/Curve.cpp"]},{"id":"47d02c0618f75562ca27527eadd34e700cae2ef1","tree_id":"66c62bb13f1ef64640589831c65b9284368a1a7f","distinct":true,"message":"ExpressionParser: Return unique_ptr from parse (#27098)\n\n- Start at ScanResult, as starting higher makes it easy to have memory\n issues.\n- There are multiple memory leaks (at least in tests, but possibly in\n production code too) from using raw pointers in the public interface\n here. Fix these before adding more tests.\n- Starts at ScanResult\n- The bison changes were applied manually, as I don't think that it's\n pixified and running my local version showed many changes.\n- I've chosen not to pimplify Expression, but only because it would be\n such a significant change for not so much value.","timestamp":"2026-02-07T11:23:09+08:00","url":"https://github.com/ilf-S/FreeCAD/commit/47d02c0618f75562ca27527eadd34e700cae2ef1","author":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-01-23T11:04:42+08:00","username":"timpieces"},"committer":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-02-07T11:23:09+08:00","username":"timpieces"},"added":[],"removed":[],"modified":["src/App/Expression.cpp","src/App/Expression.h","src/App/Expression.tab.c","src/App/Expression.y","src/App/ExpressionParser.h","src/Gui/Dialogs/DlgExpressionInput.cpp","src/Mod/Part/App/AttachExtension.cpp","src/Mod/Spreadsheet/Gui/DlgSheetConf.cpp","tests/src/App/Expression.cpp"]},{"id":"1455321acef44e924f7c5587ae69e9d1ecc5b8a2","tree_id":"8f7e8d1d0ea02ce4f26b5ead9418b4994d243431","distinct":true,"message":"ExpressionParser: Return unique_ptr from eval (#27098)\n\n- Most of the usages of 'release' are temporary here, but a few will\n likely need to stay. In these cases, the existing behaviour is\n retained. To fix all usages, smart pointers would need to be used all\n throughout the tree\n- The freecad_cast looks awkward now. I haven't added a new version that\n works with smart pointers because it's not clear what the right\n ownership semantics would be. Make the caller be explicit for now.","timestamp":"2026-02-07T11:23:13+08:00","url":"https://github.com/ilf-S/FreeCAD/commit/1455321acef44e924f7c5587ae69e9d1ecc5b8a2","author":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-01-23T11:58:30+08:00","username":"timpieces"},"committer":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-02-07T11:23:13+08:00","username":"timpieces"},"added":[],"removed":[],"modified":["src/App/Expression.cpp","src/App/Expression.h","src/App/ExpressionParser.h","src/Mod/Part/App/AttachExtension.cpp","src/Mod/Spreadsheet/App/Sheet.cpp","tests/src/App/Expression.cpp"]},{"id":"8dad760db40e5085f34a06430b5fb6b9aeb0ec7f","tree_id":"102dd1d72fedc7b61e6cee23716c1c6f0b6325df","distinct":true,"message":"ExpressionParser: Return unique_ptr from copy (#27098)\n\n- We need copy().release() on many of these calls because nodes in the\n tree call 'copy' explicitly. It's not really different to the code\n that's there now, but it's not pretty either. Some of these will go\n away in the upcoming commit","timestamp":"2026-02-07T11:23:13+08:00","url":"https://github.com/ilf-S/FreeCAD/commit/8dad760db40e5085f34a06430b5fb6b9aeb0ec7f","author":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-01-23T12:18:07+08:00","username":"timpieces"},"committer":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-02-07T11:23:13+08:00","username":"timpieces"},"added":[],"removed":[],"modified":["src/App/Expression.cpp","src/App/Expression.h","src/App/ExpressionParser.h","src/Mod/Spreadsheet/App/PropertySheet.cpp"]},{"id":"daceb8afe45e90a9aff391696131d4e76915d824","tree_id":"0900834a0d6859fbf52ae146710a841280be3258","distinct":true,"message":"ExpressionParser: Return unique_ptr from simplified (#27098)\n\n- Removes many/most of the copy().release() from the last commit\n- Still some .release() in the simplify functions now\n- It doesn't work to rename simplify and turn it into a protected\n method, because it's called recursively within the tree","timestamp":"2026-02-07T11:23:13+08:00","url":"https://github.com/ilf-S/FreeCAD/commit/daceb8afe45e90a9aff391696131d4e76915d824","author":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-01-23T12:34:25+08:00","username":"timpieces"},"committer":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-02-07T11:23:13+08:00","username":"timpieces"},"added":[],"removed":[],"modified":["src/App/Expression.cpp","src/App/Expression.h","src/App/ExpressionParser.h","tests/src/App/Expression.cpp"]},{"id":"1de8cd5e36d133a62278e6b93bfcd903e10b7a65","tree_id":"c357c97d0599d12be7e0c5509d4a530776b6c520","distinct":true,"message":"ExpressionParser: Make cosmetic test changes before adding more tests (#27098)\n\nFix some weird quirks before adding new tests:\n- The whole file has clang format off, this feels unnecessary, localize\n it to where it's important\n- Put the code inside a nested test namespace within the production\n namespace, this is generally good practice rather than putting it in\n the global namespace, and it means we don't have to explicitly namespace\n methods that are directly under test\n- Rename variables to camelCase, which afaict is closer to 'normal' in\n freecad cpp\n- Remove the usage of arrays. Maintaining manual array sizes is\n annoying. Just use initializer lists here as they are all constants.\n- I have *not* renamed the snake_case methods, as I feel that it\n destroys too much of the git history for too little benefit","timestamp":"2026-02-07T11:23:13+08:00","url":"https://github.com/ilf-S/FreeCAD/commit/1de8cd5e36d133a62278e6b93bfcd903e10b7a65","author":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-01-23T12:53:38+08:00","username":"timpieces"},"committer":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-02-07T11:23:13+08:00","username":"timpieces"},"added":[],"removed":[],"modified":["tests/src/App/ExpressionParser.cpp"]},{"id":"adf15a401d767c8fc22d14c7a3005fea330c2a06","tree_id":"08a367a2ee06ba0e6aed7f70dc8051f4467893d1","distinct":true,"message":"ExpressionParser: Add more tests for expression parsing (#27098)\n\n- I'm not familiar with absolutely all usages of expressions - this is\n intended more as a starting point to make it easy to add more\n- The test captures *current* behaviour, please don't assume that\n everything it tests is *correct* behaviour","timestamp":"2026-02-07T11:23:13+08:00","url":"https://github.com/ilf-S/FreeCAD/commit/adf15a401d767c8fc22d14c7a3005fea330c2a06","author":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-01-26T16:51:24+08:00","username":"timpieces"},"committer":{"name":"timpieces","email":"tdpeskett@gmail.com","date":"2026-02-07T11:23:13+08:00","username":"timpieces"},"added":[],"removed":[],"modified":["tests/src/App/ExpressionParser.cpp"]},{"id":"69b1b19024ab79e43ff00fd10116d40a06b43eb6","tree_id":"27863374692912fa6ed905a8c8be96662782aa69","distinct":true,"message":"CAM: Refactor shape type handling for aliases and subtypes\n\nThis PR intruduces a way to dynamicly alias toolbits and adds subtype\nfor toolbits. Prior to this change, aliases were hardcoded in multiple\nlocations, making it difficult to maintain and extend. Now, aliases\nand the newly subtypes are defined in a single JSON file, which is\nloaded at runtime. This allows for easier management and addition of new\naliases or subtypes without modifying the codebase.\n\nUpdated the shape system to use a dict format for aliases and subtypes,\nimproved label formatting, and fixed normalization logic for toolbit\ntypes. Enhanced dropdown display and editor logic to properly handle\nsubtypes and aliases, including special cases for consecutive capitals.\n\nUsers can add shape_aliases.json to the toolbit Shape dirctory allowing\ntheme to add/remove entries. Adding a \"!\" in front of a alias or a\nsubtime removes it from the list.\n\nThis PR also introduces the ability for the user to choose tools from\na libary or all tools when adding tools via the Job panel.\n\nsrc/Mod/CAM/Path/Tool/docobject/ui/docobject.py:\n- Added keep_case and preserve_consecutive_caps options to\n_get_label_text for improved label formatting\n\nsrc/Mod/CAM/Path/Tool/shape/__init__.py:\n- Refactored alias/subtype loading to support new dict format\n- Applied aliases and subtypes to shape classes\n\nsrc/Mod/CAM/Path/Tool/shape/models/base.py:\n- Added subtypes attribute to ToolBitShape\n- Updated class lookup to support subtypes\n\nsrc/Mod/CAM/Path/Tool/toolbit/models/base.py:\n- Improved normalization logic for aliases and subtypes in\nToolBit.from_dict\n\nsrc/Mod/CAM/Path/Tool/toolbit/ui/editor.py:\n- Updated editor logic to use subtypes and aliases for dropdowns\n- Improved read-only and editable state handling\n\nsrc/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py:\n- Used _get_label_text for dropdown filter display with improved\nformatting\n\nsrc/Mod/CAM/Tools/Shape/shape_aliases.json:\n- Converted to new dict format with separate aliases and subtypes","timestamp":"2026-02-20T18:48:46-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/69b1b19024ab79e43ff00fd10116d40a06b43eb6","author":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2025-09-26T14:56:08-04:00","username":"Connor9220"},"committer":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2026-02-20T18:48:46-05:00","username":"Connor9220"},"added":["src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py","src/Mod/CAM/Tools/Shape/shape_aliases.json"],"removed":[],"modified":["src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Main/Gui/Job.py","src/Mod/CAM/Path/Tool/docobject/ui/docobject.py","src/Mod/CAM/Path/Tool/library/ui/browser.py","src/Mod/CAM/Path/Tool/library/ui/editor.py","src/Mod/CAM/Path/Tool/shape/__init__.py","src/Mod/CAM/Path/Tool/shape/models/ballend.py","src/Mod/CAM/Path/Tool/shape/models/base.py","src/Mod/CAM/Path/Tool/shape/models/bullnose.py","src/Mod/CAM/Path/Tool/shape/models/chamfer.py","src/Mod/CAM/Path/Tool/shape/models/custom.py","src/Mod/CAM/Path/Tool/shape/models/dovetail.py","src/Mod/CAM/Path/Tool/shape/models/drill.py","src/Mod/CAM/Path/Tool/shape/models/endmill.py","src/Mod/CAM/Path/Tool/shape/models/probe.py","src/Mod/CAM/Path/Tool/shape/models/radius.py","src/Mod/CAM/Path/Tool/shape/models/reamer.py","src/Mod/CAM/Path/Tool/shape/models/slittingsaw.py","src/Mod/CAM/Path/Tool/shape/models/tap.py","src/Mod/CAM/Path/Tool/shape/models/taperedballnose.py","src/Mod/CAM/Path/Tool/shape/models/threadmill.py","src/Mod/CAM/Path/Tool/shape/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/mixins/cutting.py","src/Mod/CAM/Path/Tool/toolbit/models/ballend.py","src/Mod/CAM/Path/Tool/toolbit/models/base.py","src/Mod/CAM/Path/Tool/toolbit/models/bullnose.py","src/Mod/CAM/Path/Tool/toolbit/models/chamfer.py","src/Mod/CAM/Path/Tool/toolbit/models/custom.py","src/Mod/CAM/Path/Tool/toolbit/models/dovetail.py","src/Mod/CAM/Path/Tool/toolbit/models/drill.py","src/Mod/CAM/Path/Tool/toolbit/models/endmill.py","src/Mod/CAM/Path/Tool/toolbit/models/probe.py","src/Mod/CAM/Path/Tool/toolbit/models/radius.py","src/Mod/CAM/Path/Tool/toolbit/models/reamer.py","src/Mod/CAM/Path/Tool/toolbit/models/slittingsaw.py","src/Mod/CAM/Path/Tool/toolbit/models/tap.py","src/Mod/CAM/Path/Tool/toolbit/models/taperedballnose.py","src/Mod/CAM/Path/Tool/toolbit/models/threadmill.py","src/Mod/CAM/Path/Tool/toolbit/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/ui/browser.py","src/Mod/CAM/Path/Tool/toolbit/ui/editor.py","src/Mod/CAM/Path/Tool/toolbit/ui/selector.py"]},{"id":"0fce2611ad48cd721f6cb35b21a379bcef8ae603","tree_id":"3ffb81130375000619f29a0d97850e646812ab34","distinct":true,"message":"CAM: Base Task Panel - Fix Apply after adding geometry","timestamp":"2026-02-22T16:38:20+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/0fce2611ad48cd721f6cb35b21a379bcef8ae603","author":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-02-17T20:19:15+02:00","username":"tarman3"},"committer":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-02-22T16:38:20+02:00","username":"tarman3"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Op/Gui/Base.py"]},{"id":"5e0695d150aaeb7425f1a3c1d76188eda17bd023","tree_id":"a366860e215abecdb82054ac3a56d35ccb25d6e0","distinct":true,"message":"CAM: CircularHoleBase.holePosition() - Fix for face with several arcs","timestamp":"2026-02-26T13:43:39+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/5e0695d150aaeb7425f1a3c1d76188eda17bd023","author":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-02-11T17:57:42+02:00","username":"tarman3"},"committer":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-02-26T13:43:39+02:00","username":"tarman3"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Op/CircularHoleBase.py"]},{"id":"7cb5c2663d72eaa08ab1751047d626c59e24b986","tree_id":"36d2d4be6f493e94d0c57bad9a7bfdf2362fc6b0","distinct":true,"message":"CAM: CircularHoleBase.holePosition() - Remove useless obj","timestamp":"2026-02-26T13:43:39+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/7cb5c2663d72eaa08ab1751047d626c59e24b986","author":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-02-26T13:42:25+02:00","username":"tarman3"},"committer":{"name":"tarman3","email":"joice501790018@tutamail.com","date":"2026-02-26T13:43:39+02:00","username":"tarman3"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestPathHelix.py","src/Mod/CAM/Path/Op/CircularHoleBase.py"]},{"id":"46dd3badbd7f93aa5461f45057697097d51e7adc","tree_id":"8a497205b47f07447979365d054b1e42426f532d","distinct":true,"message":"Replace \"Change Image\" option name for clarity (#27913)","timestamp":"2026-02-27T13:46:21+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/46dd3badbd7f93aa5461f45057697097d51e7adc","author":{"name":"FEA-eng","email":"59876896+FEA-eng@users.noreply.github.com","date":"2026-02-27T13:46:21+01:00","username":"FEA-eng"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T13:46:21+01:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Gui/ViewProviderImagePlane.cpp"]},{"id":"e292f96feb7e5598a5d58c1bf6f8317b90ceeeef","tree_id":"0b0485716bd2edf0c1d54b7389c45076cdb52898","distinct":true,"message":"Bump actions/upload-artifact from 6.0.0 to 7.0.0\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n dependency-version: 7.0.0\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] ","timestamp":"2026-02-27T09:48:11-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/e292f96feb7e5598a5d58c1bf6f8317b90ceeeef","author":{"name":"dependabot[bot]","email":"49699333+dependabot[bot]@users.noreply.github.com","date":"2026-02-27T11:54:20Z","username":"dependabot[bot]"},"committer":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-02-27T09:48:11-06:00","username":"chennes"},"added":[],"removed":[],"modified":[".github/workflows/CI_cleanup.yml",".github/workflows/codeql_cpp.yml",".github/workflows/scorecards.yml",".github/workflows/sub_buildPixi.yml",".github/workflows/sub_buildUbuntu.yml",".github/workflows/sub_buildWindows.yml",".github/workflows/sub_lint.yml",".github/workflows/sub_prepare.yml"]},{"id":"0872d458270ecd959c08f70690980542323cd5ff","tree_id":"8ae38120397df486bb04c19bd9262a6b512ca5a5","distinct":true,"message":"Merge pull request #27099 from timpieces/expressionparser-improvements\n\nExpressionParser: Return unique_ptr from public interface (#27098)","timestamp":"2026-02-27T09:51:08-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/0872d458270ecd959c08f70690980542323cd5ff","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-02-27T09:51:08-06:00","username":"chennes"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T09:51:08-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/App/Expression.cpp","src/App/Expression.h","src/App/Expression.tab.c","src/App/Expression.y","src/App/ExpressionParser.h","src/Gui/Dialogs/DlgExpressionInput.cpp","src/Mod/Part/App/AttachExtension.cpp","src/Mod/Spreadsheet/App/PropertySheet.cpp","src/Mod/Spreadsheet/App/Sheet.cpp","src/Mod/Spreadsheet/Gui/DlgSheetConf.cpp","tests/src/App/Expression.cpp","tests/src/App/ExpressionParser.cpp"]},{"id":"8a011392bcd6205684df1eb0c48f3044c5a53cc1","tree_id":"8a0e450cfe1765b528adedca9cb2f08d8849eee7","distinct":true,"message":"Merge pull request #27178 from davidgilkaufman/fix_big_arcs\n\n[CAM] separate tolerance variable used for arc fitting from tolerance used for section height offsets","timestamp":"2026-02-27T10:43:50-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/8a011392bcd6205684df1eb0c48f3044c5a53cc1","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-02-27T10:43:50-06:00","username":"sliptonic"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T10:43:50-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/libarea/Arc.cpp","src/Mod/CAM/libarea/Curve.cpp"]},{"id":"7deca678ca98b115df5e01c67bd72bb500459133","tree_id":"e9ca69d2a9d141633ad221fb61d33a9f79937208","distinct":true,"message":"Merge pull request #27686 from tarman3/base_addgeometry_apply\n\nCAM: Base Task Panel - Fix Apply after adding geometry","timestamp":"2026-02-27T11:14:21-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/7deca678ca98b115df5e01c67bd72bb500459133","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-02-27T11:14:21-06:00","username":"sliptonic"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T11:14:21-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Op/Gui/Base.py"]},{"id":"c9517011d2415916403242d9d103473163630542","tree_id":"45d784a8baf797ad7b512e01b5c01c2224cb176d","distinct":true,"message":"Merge pull request #27504 from tarman3/holes_face_multiple_edges\n\nCAM: CircularHoleBase - Fix holePosition() for face with several arcs","timestamp":"2026-02-27T11:25:20-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/c9517011d2415916403242d9d103473163630542","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-02-27T11:25:20-06:00","username":"sliptonic"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T11:25:20-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestPathHelix.py","src/Mod/CAM/Path/Op/CircularHoleBase.py"]},{"id":"51cff10dcc37bcb29c61afd33653b74159e37cc1","tree_id":"6ebef0ec5eea62c7463532a07cfa183a32d07d86","distinct":true,"message":"Merge pull request #24849 from tarman3/leadinout_arcz\n\nCAM: LeadInOut - ArcZ following profile","timestamp":"2026-02-27T11:28:06-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/51cff10dcc37bcb29c61afd33653b74159e37cc1","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-02-27T11:28:06-06:00","username":"sliptonic"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T11:28:06-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py"]},{"id":"2b98e8031378830dcdc0d1d74411bf756ad19630","tree_id":"d758a6d20fcac7a0618a85fc7b474ec80c417e7e","distinct":true,"message":"Merge pull request #27091 from Connor9220/ToolbitSubClass\n\nCAM: Refactor shape type handling for aliases and subtypes","timestamp":"2026-02-27T11:53:47-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/2b98e8031378830dcdc0d1d74411bf756ad19630","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-02-27T11:53:47-06:00","username":"sliptonic"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T11:53:47-06:00","username":"web-flow"},"added":["src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py","src/Mod/CAM/Tools/Shape/shape_aliases.json"],"removed":[],"modified":["src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Main/Gui/Job.py","src/Mod/CAM/Path/Tool/docobject/ui/docobject.py","src/Mod/CAM/Path/Tool/library/ui/browser.py","src/Mod/CAM/Path/Tool/library/ui/editor.py","src/Mod/CAM/Path/Tool/shape/__init__.py","src/Mod/CAM/Path/Tool/shape/models/ballend.py","src/Mod/CAM/Path/Tool/shape/models/base.py","src/Mod/CAM/Path/Tool/shape/models/bullnose.py","src/Mod/CAM/Path/Tool/shape/models/chamfer.py","src/Mod/CAM/Path/Tool/shape/models/custom.py","src/Mod/CAM/Path/Tool/shape/models/dovetail.py","src/Mod/CAM/Path/Tool/shape/models/drill.py","src/Mod/CAM/Path/Tool/shape/models/endmill.py","src/Mod/CAM/Path/Tool/shape/models/probe.py","src/Mod/CAM/Path/Tool/shape/models/radius.py","src/Mod/CAM/Path/Tool/shape/models/reamer.py","src/Mod/CAM/Path/Tool/shape/models/slittingsaw.py","src/Mod/CAM/Path/Tool/shape/models/tap.py","src/Mod/CAM/Path/Tool/shape/models/taperedballnose.py","src/Mod/CAM/Path/Tool/shape/models/threadmill.py","src/Mod/CAM/Path/Tool/shape/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/mixins/cutting.py","src/Mod/CAM/Path/Tool/toolbit/models/ballend.py","src/Mod/CAM/Path/Tool/toolbit/models/base.py","src/Mod/CAM/Path/Tool/toolbit/models/bullnose.py","src/Mod/CAM/Path/Tool/toolbit/models/chamfer.py","src/Mod/CAM/Path/Tool/toolbit/models/custom.py","src/Mod/CAM/Path/Tool/toolbit/models/dovetail.py","src/Mod/CAM/Path/Tool/toolbit/models/drill.py","src/Mod/CAM/Path/Tool/toolbit/models/endmill.py","src/Mod/CAM/Path/Tool/toolbit/models/probe.py","src/Mod/CAM/Path/Tool/toolbit/models/radius.py","src/Mod/CAM/Path/Tool/toolbit/models/reamer.py","src/Mod/CAM/Path/Tool/toolbit/models/slittingsaw.py","src/Mod/CAM/Path/Tool/toolbit/models/tap.py","src/Mod/CAM/Path/Tool/toolbit/models/taperedballnose.py","src/Mod/CAM/Path/Tool/toolbit/models/threadmill.py","src/Mod/CAM/Path/Tool/toolbit/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/ui/browser.py","src/Mod/CAM/Path/Tool/toolbit/ui/editor.py","src/Mod/CAM/Path/Tool/toolbit/ui/selector.py"]},{"id":"b8f98e284297ebe2e0e943f2a458569f4ac16652","tree_id":"ea10e7359a56c4c95adfbfbfd937ffff5bc5fe1a","distinct":true,"message":"Merge pull request #27040 from Dimitris75/CAM-Waterline-OCL-Adaptive-Add-Optimize-Linear-Paths\n\nCAM: Waterline OCL Adaptive - Adding Optimize Linear Paths - Removing BoundBox ComboBox","timestamp":"2026-02-27T11:57:53-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/b8f98e284297ebe2e0e943f2a458569f4ac16652","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-02-27T11:57:53-06:00","username":"sliptonic"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T11:57:53-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Op/Gui/Waterline.py","src/Mod/CAM/Path/Op/Waterline.py"]},{"id":"b4325de67273ef5c786e6dd38a4ee9d725a62fa4","tree_id":"e12eec0176530429b6eaab2619ccf2c3e3677200","distinct":true,"message":"Core: Allow implicit construction of QString from ASCII","timestamp":"2026-02-27T23:21:17+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/b4325de67273ef5c786e6dd38a4ee9d725a62fa4","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-02-23T21:33:10-06:00","username":"chennes"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:21:17+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/FCConfig.h"]},{"id":"07e94dfaae30afb75845e16b58df06d3b681076d","tree_id":"6e7c3cabd299de0a1f573ea52d0977d903ab28cd","distinct":true,"message":"Part: Eliminate use of sscanf\n\nReplace with safer modern C++ `std::from_chars` (plus some additional\nvalidation for expected inputs). Includes unit tests for new function.","timestamp":"2026-02-27T23:29:31+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/07e94dfaae30afb75845e16b58df06d3b681076d","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-02-15T21:01:53-06:00","username":"chennes"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:29:31+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/App/ElementNamingUtils.cpp","src/App/ElementNamingUtils.h","src/Mod/Part/App/PartFeature.cpp","src/Mod/Part/Gui/DlgFilletEdges.cpp","tests/src/App/ElementNamingUtils.cpp"]},{"id":"ac576bc05e65b5fecde7908ef42a46f92a805e4c","tree_id":"326d2c85e25804e27e2c24c80ad47545b566936c","distinct":true,"message":"Part: Migrate version check to ProgramVersion class\n\nAlso add v1.2 to the recognized program version enumeration.","timestamp":"2026-02-27T23:30:11+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/ac576bc05e65b5fecde7908ef42a46f92a805e4c","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-02-15T21:23:38-06:00","username":"chennes"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:30:11+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/Base/ProgramVersion.h","src/Mod/Part/App/AttachExtension.cpp"]},{"id":"3d605313900eb21f2ca0ce8f7eabcdeaed44f24f","tree_id":"5ab1dd3c61959b81d7fcfce3ed8299532317048b","distinct":true,"message":"TD: Migrate version check to ProgramVersion class\n\nEliminates a use of deprecated `sscanf`","timestamp":"2026-02-27T23:30:37+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/3d605313900eb21f2ca0ce8f7eabcdeaed44f24f","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-02-15T21:42:23-06:00","username":"chennes"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:30:37+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/Mod/TechDraw/Gui/ViewProviderDimension.cpp","src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp","src/Mod/TechDraw/Gui/ViewProviderDrawingView.h"]},{"id":"b37da5b3cc36518206553596a0961c85589d2f33","tree_id":"8b008fea32031d9dad1644d81663a1ddf198f97b","distinct":true,"message":"App: Check for empty path component name before appending","timestamp":"2026-02-27T23:37:03+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/b37da5b3cc36518206553596a0961c85589d2f33","author":{"name":"Chris Hennes","email":"chennes@gmail.com","date":"2026-02-15T15:52:43-06:00","username":"chennes"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:37:03+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/App/ApplicationDirectories.cpp"]},{"id":"92ebf00cc4f518a413e086a4e6812618c8b79c7d","tree_id":"f29213224c302c57de6f3b309ef5cb090ff05e6e","distinct":true,"message":"Gui: Add attempted lock file name when IPC fails","timestamp":"2026-02-27T23:37:33+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/92ebf00cc4f518a413e086a4e6812618c8b79c7d","author":{"name":"Chris Hennes","email":"chennes@gmail.com","date":"2026-02-15T14:48:07-06:00","username":"chennes"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:37:33+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/Gui/Application.cpp"]},{"id":"d588e89d1da7939bbbaf53ee5b93640046fd6d5c","tree_id":"23a403277579904e6639b667e6f65cb1879920a1","distinct":true,"message":"Gui: Do not allow to activate disabled workbench\n\nChange Command::_assureWorkbench to check if the passed workbench is\ndisabled or not. If yes then do nothing.\n\nThis fixes issue 21477.\n\nHint: The method Application::activateWorkbench() is still able to\nactivate a disabled workbench","timestamp":"2026-02-27T23:45:37+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/d588e89d1da7939bbbaf53ee5b93640046fd6d5c","author":{"name":"wmayer","email":"wmayer@freecad.org","date":"2025-05-21T14:13:37+02:00","username":"wwmayer"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-27T23:45:37+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/Gui/Command.cpp"]},{"id":"61d17a6122fa8b3c96901376dc3883cbbae198e1","tree_id":"510f4ddeb49d0b753ae65e1dee7cb07b77f19810","distinct":true,"message":"Part: Fix crash in Revolution::execute()\n\nIf a datum line is used as base shape then it causes a segmentation\nfault because the shape is infinite that the CAD kernel fails with.\n\nSolution:\nExplicitly check beforehand if the shape is infinite or null.\n\nThis fixes issue 21429","timestamp":"2026-02-28T00:38:21+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/61d17a6122fa8b3c96901376dc3883cbbae198e1","author":{"name":"wmayer","email":"wmayer@freecad.org","date":"2025-05-18T08:40:29+02:00","username":"wwmayer"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-28T00:38:21+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/Mod/Part/App/FeatureRevolution.cpp"]},{"id":"8caa218950f181e6c58788f53f2eef1d43b2a85d","tree_id":"17f2ac421687de880aaf1714561b7a6ac7730b16","distinct":true,"message":"Sketcher: Handle exception in DrawSketchHandlerOffset::drawOffsetPreview\n\nDo not let exception slip through Qt event handlers as this is known to cause a crash on macOS.\n\nThis fixes issue 19587","timestamp":"2026-02-28T01:33:35+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/8caa218950f181e6c58788f53f2eef1d43b2a85d","author":{"name":"wmayer","email":"wmayer@freecad.org","date":"2025-03-10T13:01:16+01:00","username":"wwmayer"},"committer":{"name":"Kacper Donat","email":"kadet1090@gmail.com","date":"2026-02-28T01:33:35+01:00","username":"kadet1090"},"added":[],"removed":[],"modified":["src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h"]},{"id":"88787b11d1cbdff198ac1141cea0e3f750e82ae6","tree_id":"64a2be7ee96e3e10e455896bc4f9cf41b5379a42","distinct":true,"message":"Changed Insert Component parts list to be collapsed by default (#27658)\n\n* Changed Insert Component parts list to be collapsed by default\n\n* only collapse large assemblies and only expand first child.\n\n---------\n\nCo-authored-by: Adam Spontarelli ","timestamp":"2026-02-27T18:43:28-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/88787b11d1cbdff198ac1141cea0e3f750e82ae6","author":{"name":"Adam Spontarelli","email":"spontarelliam@gmail.com","date":"2026-02-27T19:43:28-05:00","username":"spontarelliam"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-02-27T18:43:28-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/Assembly/CommandInsertLink.py"]},{"id":"e6779380e7e74b42a6e470fa0fc9443bd62cbfd0","tree_id":"76e7200bcde5db7889584b0b49019afc40709740","distinct":true,"message":"merge upstream (auto-resolve CI; keep packaging & our workflow) [skip ci]","timestamp":"2026-02-28T01:48:24Z","url":"https://github.com/ilf-S/FreeCAD/commit/e6779380e7e74b42a6e470fa0fc9443bd62cbfd0","author":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-02-28T01:48:24Z","username":"ilf-S"},"committer":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-02-28T01:48:24Z","username":"ilf-S"},"added":["src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py","src/Mod/CAM/Tools/Shape/shape_aliases.json"],"removed":[],"modified":["src/App/ApplicationDirectories.cpp","src/App/ElementNamingUtils.cpp","src/App/ElementNamingUtils.h","src/App/Expression.cpp","src/App/Expression.h","src/App/Expression.tab.c","src/App/Expression.y","src/App/ExpressionParser.h","src/Base/ProgramVersion.h","src/FCConfig.h","src/Gui/Application.cpp","src/Gui/Command.cpp","src/Gui/Dialogs/DlgExpressionInput.cpp","src/Gui/ViewProviderImagePlane.cpp","src/Mod/Assembly/CommandInsertLink.py","src/Mod/CAM/CAMTests/TestPathHelix.py","src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py","src/Mod/CAM/Path/Main/Gui/Job.py","src/Mod/CAM/Path/Op/CircularHoleBase.py","src/Mod/CAM/Path/Op/Gui/Base.py","src/Mod/CAM/Path/Op/Gui/Waterline.py","src/Mod/CAM/Path/Op/Waterline.py","src/Mod/CAM/Path/Tool/docobject/ui/docobject.py","src/Mod/CAM/Path/Tool/library/ui/browser.py","src/Mod/CAM/Path/Tool/library/ui/editor.py","src/Mod/CAM/Path/Tool/shape/__init__.py","src/Mod/CAM/Path/Tool/shape/models/ballend.py","src/Mod/CAM/Path/Tool/shape/models/base.py","src/Mod/CAM/Path/Tool/shape/models/bullnose.py","src/Mod/CAM/Path/Tool/shape/models/chamfer.py","src/Mod/CAM/Path/Tool/shape/models/custom.py","src/Mod/CAM/Path/Tool/shape/models/dovetail.py","src/Mod/CAM/Path/Tool/shape/models/drill.py","src/Mod/CAM/Path/Tool/shape/models/endmill.py","src/Mod/CAM/Path/Tool/shape/models/probe.py","src/Mod/CAM/Path/Tool/shape/models/radius.py","src/Mod/CAM/Path/Tool/shape/models/reamer.py","src/Mod/CAM/Path/Tool/shape/models/slittingsaw.py","src/Mod/CAM/Path/Tool/shape/models/tap.py","src/Mod/CAM/Path/Tool/shape/models/taperedballnose.py","src/Mod/CAM/Path/Tool/shape/models/threadmill.py","src/Mod/CAM/Path/Tool/shape/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/mixins/cutting.py","src/Mod/CAM/Path/Tool/toolbit/models/ballend.py","src/Mod/CAM/Path/Tool/toolbit/models/base.py","src/Mod/CAM/Path/Tool/toolbit/models/bullnose.py","src/Mod/CAM/Path/Tool/toolbit/models/chamfer.py","src/Mod/CAM/Path/Tool/toolbit/models/custom.py","src/Mod/CAM/Path/Tool/toolbit/models/dovetail.py","src/Mod/CAM/Path/Tool/toolbit/models/drill.py","src/Mod/CAM/Path/Tool/toolbit/models/endmill.py","src/Mod/CAM/Path/Tool/toolbit/models/probe.py","src/Mod/CAM/Path/Tool/toolbit/models/radius.py","src/Mod/CAM/Path/Tool/toolbit/models/reamer.py","src/Mod/CAM/Path/Tool/toolbit/models/slittingsaw.py","src/Mod/CAM/Path/Tool/toolbit/models/tap.py","src/Mod/CAM/Path/Tool/toolbit/models/taperedballnose.py","src/Mod/CAM/Path/Tool/toolbit/models/threadmill.py","src/Mod/CAM/Path/Tool/toolbit/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/ui/browser.py","src/Mod/CAM/Path/Tool/toolbit/ui/editor.py","src/Mod/CAM/Path/Tool/toolbit/ui/selector.py","src/Mod/CAM/libarea/Arc.cpp","src/Mod/CAM/libarea/Curve.cpp","src/Mod/Part/App/AttachExtension.cpp","src/Mod/Part/App/FeatureRevolution.cpp","src/Mod/Part/App/PartFeature.cpp","src/Mod/Part/Gui/DlgFilletEdges.cpp","src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h","src/Mod/Spreadsheet/App/PropertySheet.cpp","src/Mod/Spreadsheet/App/Sheet.cpp","src/Mod/Spreadsheet/Gui/DlgSheetConf.cpp","src/Mod/TechDraw/Gui/ViewProviderDimension.cpp","src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp","src/Mod/TechDraw/Gui/ViewProviderDrawingView.h","tests/src/App/ElementNamingUtils.cpp","tests/src/App/Expression.cpp","tests/src/App/ExpressionParser.cpp"]}],"head_commit":{"id":"e6779380e7e74b42a6e470fa0fc9443bd62cbfd0","tree_id":"76e7200bcde5db7889584b0b49019afc40709740","distinct":true,"message":"merge upstream (auto-resolve CI; keep packaging & our workflow) [skip ci]","timestamp":"2026-02-28T01:48:24Z","url":"https://github.com/ilf-S/FreeCAD/commit/e6779380e7e74b42a6e470fa0fc9443bd62cbfd0","author":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-02-28T01:48:24Z","username":"ilf-S"},"committer":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-02-28T01:48:24Z","username":"ilf-S"},"added":["src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py","src/Mod/CAM/Tools/Shape/shape_aliases.json"],"removed":[],"modified":["src/App/ApplicationDirectories.cpp","src/App/ElementNamingUtils.cpp","src/App/ElementNamingUtils.h","src/App/Expression.cpp","src/App/Expression.h","src/App/Expression.tab.c","src/App/Expression.y","src/App/ExpressionParser.h","src/Base/ProgramVersion.h","src/FCConfig.h","src/Gui/Application.cpp","src/Gui/Command.cpp","src/Gui/Dialogs/DlgExpressionInput.cpp","src/Gui/ViewProviderImagePlane.cpp","src/Mod/Assembly/CommandInsertLink.py","src/Mod/CAM/CAMTests/TestPathHelix.py","src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Dressup/Gui/LeadInOut.py","src/Mod/CAM/Path/Main/Gui/Job.py","src/Mod/CAM/Path/Op/CircularHoleBase.py","src/Mod/CAM/Path/Op/Gui/Base.py","src/Mod/CAM/Path/Op/Gui/Waterline.py","src/Mod/CAM/Path/Op/Waterline.py","src/Mod/CAM/Path/Tool/docobject/ui/docobject.py","src/Mod/CAM/Path/Tool/library/ui/browser.py","src/Mod/CAM/Path/Tool/library/ui/editor.py","src/Mod/CAM/Path/Tool/shape/__init__.py","src/Mod/CAM/Path/Tool/shape/models/ballend.py","src/Mod/CAM/Path/Tool/shape/models/base.py","src/Mod/CAM/Path/Tool/shape/models/bullnose.py","src/Mod/CAM/Path/Tool/shape/models/chamfer.py","src/Mod/CAM/Path/Tool/shape/models/custom.py","src/Mod/CAM/Path/Tool/shape/models/dovetail.py","src/Mod/CAM/Path/Tool/shape/models/drill.py","src/Mod/CAM/Path/Tool/shape/models/endmill.py","src/Mod/CAM/Path/Tool/shape/models/probe.py","src/Mod/CAM/Path/Tool/shape/models/radius.py","src/Mod/CAM/Path/Tool/shape/models/reamer.py","src/Mod/CAM/Path/Tool/shape/models/slittingsaw.py","src/Mod/CAM/Path/Tool/shape/models/tap.py","src/Mod/CAM/Path/Tool/shape/models/taperedballnose.py","src/Mod/CAM/Path/Tool/shape/models/threadmill.py","src/Mod/CAM/Path/Tool/shape/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/mixins/cutting.py","src/Mod/CAM/Path/Tool/toolbit/models/ballend.py","src/Mod/CAM/Path/Tool/toolbit/models/base.py","src/Mod/CAM/Path/Tool/toolbit/models/bullnose.py","src/Mod/CAM/Path/Tool/toolbit/models/chamfer.py","src/Mod/CAM/Path/Tool/toolbit/models/custom.py","src/Mod/CAM/Path/Tool/toolbit/models/dovetail.py","src/Mod/CAM/Path/Tool/toolbit/models/drill.py","src/Mod/CAM/Path/Tool/toolbit/models/endmill.py","src/Mod/CAM/Path/Tool/toolbit/models/probe.py","src/Mod/CAM/Path/Tool/toolbit/models/radius.py","src/Mod/CAM/Path/Tool/toolbit/models/reamer.py","src/Mod/CAM/Path/Tool/toolbit/models/slittingsaw.py","src/Mod/CAM/Path/Tool/toolbit/models/tap.py","src/Mod/CAM/Path/Tool/toolbit/models/taperedballnose.py","src/Mod/CAM/Path/Tool/toolbit/models/threadmill.py","src/Mod/CAM/Path/Tool/toolbit/models/vbit.py","src/Mod/CAM/Path/Tool/toolbit/ui/browser.py","src/Mod/CAM/Path/Tool/toolbit/ui/editor.py","src/Mod/CAM/Path/Tool/toolbit/ui/selector.py","src/Mod/CAM/libarea/Arc.cpp","src/Mod/CAM/libarea/Curve.cpp","src/Mod/Part/App/AttachExtension.cpp","src/Mod/Part/App/FeatureRevolution.cpp","src/Mod/Part/App/PartFeature.cpp","src/Mod/Part/Gui/DlgFilletEdges.cpp","src/Mod/Sketcher/Gui/DrawSketchHandlerOffset.h","src/Mod/Spreadsheet/App/PropertySheet.cpp","src/Mod/Spreadsheet/App/Sheet.cpp","src/Mod/Spreadsheet/Gui/DlgSheetConf.cpp","src/Mod/TechDraw/Gui/ViewProviderDimension.cpp","src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp","src/Mod/TechDraw/Gui/ViewProviderDrawingView.h","tests/src/App/ElementNamingUtils.cpp","tests/src/App/Expression.cpp","tests/src/App/ExpressionParser.cpp"]}}