{"ref":"refs/heads/main","before":"f8f409f0d6024a4bc402283d290ef0133871edba","after":"45ff6527f5dab683ea24c74eeefe0f149a3787d0","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-10-16T03:10:25Z","pushed_at":1792206051,"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":2852047,"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/f8f409f0d602...45ff6527f5da","commits":[{"id":"af9b9920079f6c25800b759909dbb5777c5929cb","tree_id":"f3fdad48e6781c0bfd5c71e03578c23c4cd067ef","distinct":true,"message":"CAM: Corrected handling of inch precision in dynapath_4060 post processor.\n\nAlso added self test code for validating the post processor, and extend\nthe MockOperation class with MockDocument to work with the dynapath_4060\npost processor.","timestamp":"2026-10-09T12:01:16-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/af9b9920079f6c25800b759909dbb5777c5929cb","author":{"name":"Petter Reinholdtsen","email":"pere@hungry.com","date":"2026-02-12T08:51:51+01:00","username":"petterreinholdtsen"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T12:01:16-05:00","username":"sliptonic"},"added":["src/Mod/CAM/CAMTests/TestDynapath4060Post.py"],"removed":[],"modified":["src/Mod/CAM/CAMTests/PostTestMocks.py","src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Post/scripts/dynapath_4060_legacy_post.py"]},{"id":"b07709ac49a28df242534de07bd3707c3cf2ce60","tree_id":"c2c48598ab723b83cfe505fd6cc6f1f9f3cef3fe","distinct":true,"message":"CAM: Dynapath 4060 legacy post: every hole, metric arcs, tool change\n\nReworked from #28252 by luvtofish, keeping the fixes and dropping the\nheuristics the review objected to.\n\nOnly the first hole of a drilling or tapping operation was posted. The\nbranch meant to suppress XY between holes matched every parameter of\nevery command that followed a canned cycle and cleared the line. The\nbranch is gone; every hole carries its own XY.\n\nMetric programs had inch-scaled arc centers and inch-scaled X0 Y0 lines.\nPostUtils.fmt treats anything but G21 as inches and this post uses G71.\nAll lengths now go through one Quantity-based formatter.\n\nX0 Y0 was inserted on every rapid to clearance height, including the\nretract at the end of a cut, and missed on a dressup, which has no\nClearanceHeight of its own. The XYZ move Dynapath requires after a tool\nchange now follows M6 directly, on the first rapid with Z.\n\nCanned cycles are closed with G80 before the next plain command and at\nthe end of the operation. G98/G99 are dropped; Dynapath has R and O\ninstead. The spindle is stopped before M6.\n\nCo-authored-by: sliptonic \nCo-Authored-By: Claude Fable 5.1 ","timestamp":"2026-10-09T12:01:16-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/b07709ac49a28df242534de07bd3707c3cf2ce60","author":{"name":"luvtofish","email":"luvtofish@gmail.com","date":"2026-10-02T15:39:59-05:00","username":"luvtofish"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T12:01:16-05:00","username":"sliptonic"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestDynapath4060Post.py","src/Mod/CAM/Path/Post/scripts/dynapath_4060_legacy_post.py"]},{"id":"8f6e952ff234ead6fdc6a45adc167d3ec2bdf0aa","tree_id":"9b7b7d8fd5b0026c8aa4d7bc1ee4e3a33905e985","distinct":true,"message":"CAM: Machine-based Dynapath post\n\nA post of the current kind for the Dynapath Delta controls, beside the\ntwo legacy ones. It writes the EIA/ISO dialect the legacy 4060 post has\nrun on a Delta 50: a program name line, (T)...$ text events, one code\nper block with no spaces, G70/G71 units, E fixture codes, absolute arc\ncenters, quill cycles with K, L and O words and every parameter on\nevery hole, tapping at pitch times spindle speed, a dwell as L seconds,\na full XYZ move after each tool change, and the E end-of-file marker.\nG98/G99 are not written; the retract between holes is R or O.\n\nSequence numbers go on the finished text, every line but the name and\nthe E, because a Delta expects one on every event and the base numbers\nonly Path commands. Tool length offset is off by default: the control\napplies the tool table's length with the T word. The second reference\nplane, absolute arc centers, the XYZ move and the E marker are machine\nproperties; the program name is a job property.\n\nNot verified on Dynapath hardware.\n\nCo-Authored-By: Claude Fable 5.1 ","timestamp":"2026-10-09T12:01:16-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/8f6e952ff234ead6fdc6a45adc167d3ec2bdf0aa","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-02T16:01:18-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T12:01:16-05:00","username":"sliptonic"},"added":["src/Mod/CAM/CAMTests/TestDynapathPost.py","src/Mod/CAM/Path/Post/scripts/dynapath_post.py"],"removed":[],"modified":["src/Mod/CAM/CMakeLists.txt"]},{"id":"97f86c8fd51b538e1ff14b728ce38dabeeb76c58","tree_id":"4bafb1ac6b9aea5bec7185e85348fdd3aa776084","distinct":true,"message":"CAM: Dynapath legacy test finds its lines by marker\n\nReview of #33174: the tests indexed the output by line number, which\nbreaks with any change to the header or the tool change. They now find\nthe operation between the fixture's E01 and the postamble's M05, check\nthe header by its shape, and locate the tool change by its M6. The\nempty template docstrings are gone.\n\nThe legacy post's line counter was a module global that kept counting\nfrom one export to the next; it is reset at the start of each export.\n\nCo-Authored-By: Claude Fable 5.1 ","timestamp":"2026-10-09T12:01:16-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/97f86c8fd51b538e1ff14b728ce38dabeeb76c58","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T10:42:53-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T12:01:16-05:00","username":"sliptonic"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestDynapath4060Post.py","src/Mod/CAM/Path/Post/scripts/dynapath_4060_legacy_post.py"]},{"id":"78c02f62dbed51f31dd0df2947bd54951f612c4f","tree_id":"e45217f5b51b6e2902464ab5d4b02908c1f8c232","distinct":true,"message":"CAM: Dynapath post: say why $ leaves a comment, test numbered blocks\n\nReview of #33174: a $ inside a text event would close it early, and the\ncontrol has no escape for it, so the post removes it. The docstring and\nthe test now say so. A new test shows that a multi-line text block is\nnumbered line by line, with a block-delete slash kept in front of the N\nand a text event in the block numbered like any other event.\n\nCo-Authored-By: Claude Fable 5.1 ","timestamp":"2026-10-09T12:01:16-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/78c02f62dbed51f31dd0df2947bd54951f612c4f","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T10:42:54-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-09T12:01:16-05:00","username":"sliptonic"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestDynapathPost.py","src/Mod/CAM/Path/Post/scripts/dynapath_post.py"]},{"id":"1dd4a1ca2c408068edcae02fde0e8a74875a3b91","tree_id":"2d62774e3131bf2606bac88c2c93ca45c6ff767e","distinct":true,"message":"Draft: Scope task cleanup to its document\n\nKeep task dialogs, edit reset callbacks, and deferred cleanup attached to the document that started the task. Only reject fallback dialogs for registered Draft or BIM commands.\nAssisted-by: GPT-6","timestamp":"2026-10-13T20:18:04+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/1dd4a1ca2c408068edcae02fde0e8a74875a3b91","author":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-13T20:16:02+02:00","username":"maxwxyz"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-13T20:18:04+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Draft/DraftGui.py","src/Mod/Draft/draftguitools/gui_edit.py"]},{"id":"11394e5960a3f29a745b35b07d04aeba0e032beb","tree_id":"842c94f643cae6c018cb57d4de8a5e39922bca73","distinct":true,"message":"Gui: Save toolbar visibility only while available\n\nUse the existing toggle action availability to distinguish user visibility choices from toolbars hidden by a context switch. Remove the Sketcher-specific visibility heuristic.\nAssisted-by: GPT-6","timestamp":"2026-10-13T20:18:05+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/11394e5960a3f29a745b35b07d04aeba0e032beb","author":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-13T20:16:18+02:00","username":"maxwxyz"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-13T20:18:05+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Gui/ToolBarManager.cpp","src/Gui/ToolBarManager.h","src/Mod/Sketcher/Gui/Workbench.cpp"]},{"id":"02a1de6a71db271dcec2a653b459624ae6e0d110","tree_id":"d30f089b0d4b0239fe2e19aef6923ff302eab21e","distinct":true,"message":"Sketcher: Make active edit setup idempotent\n\nPair selection, event filter, and toolbar setup with a single teardown. Closing an inactive sketch no longer tears down the active document toolbars again.\nAssisted-by: GPT-6","timestamp":"2026-10-13T20:18:05+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/02a1de6a71db271dcec2a653b459624ae6e0d110","author":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-13T20:16:26+02:00","username":"maxwxyz"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-13T20:18:05+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Sketcher/Gui/ViewProviderSketch.cpp"]},{"id":"608d0e01552448f8bba955fc8450ca34ec0ab463","tree_id":"b4c2669be43cb8f2b6a15315f0e11a2fcf23d228","distinct":true,"message":"Draft: Resolve task owners at callback time\n\nAssisted-by: GPT-6","timestamp":"2026-10-14T17:14:55+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/608d0e01552448f8bba955fc8450ca34ec0ab463","author":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-14T15:47:48+02:00","username":"maxwxyz"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-14T17:14:55+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Draft/DraftGui.py","src/Mod/Draft/draftguitools/gui_edit.py","src/Mod/Draft/draftutils/gui_utils.py"]},{"id":"3f29b7272e6d1cbac17d6a7e70d8c6317ae60ce9","tree_id":"21d892d6637a55cdcfb42b7bef80e96c14d8eeff","distinct":true,"message":"[typings] Fix typings pyproject.toml structure","timestamp":"2026-10-16T00:26:04-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/3f29b7272e6d1cbac17d6a7e70d8c6317ae60ce9","author":{"name":"Frank Martinez","email":"mnesarco@gmail.com","date":"2026-10-15T21:35:20-05:00","username":"mnesarco"},"committer":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-10-16T00:26:04-05:00","username":"chennes"},"added":[],"removed":[],"modified":["src/Tools/typing/stubgen/PYPROJECT_TEMPLATE.toml"]},{"id":"a95641a6cdbad7d298307246edb49fa501e9b409","tree_id":"bf0c9ea4890b752d545c3002b4715286b1e3a22c","distinct":true,"message":"Draft: fix Trimex on arcs with a rotated placement (#33463)\n\nTrimex saved the new arc's start and end angles relative to the global X-axis but did not account for Placement rotation. Arcs whose Placement had been rotated would trim/extend with an error equal to their rotation, which could compound with repeated Trimex runs.\n\nThe fix converts the angles into the arc's own (Placement) coordinate system before saving and swaps them if the arc's Z-axis is upside down.\n\nFixes #22913\n\nAssisted-by: claude-opus-5-5","timestamp":"2026-10-16T14:32:23+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/a95641a6cdbad7d298307246edb49fa501e9b409","author":{"name":"DesignWeaver3D","email":"insubbeckley@gmail.com","date":"2026-10-16T08:32:23-04:00","username":"DesignWeaver3D"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T14:32:23+02:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/Draft/draftguitools/gui_trimex.py"]},{"id":"05d8d69e9dc358cf44d19f40b40eadd10b030357","tree_id":"1477163d58cb4d756891608c12a39fe58e60ccb7","distinct":true,"message":"Draft: fix Trimex start and end point swapping (#33442)\n\nMoving the end of a wire with Trimex saved its points backward, causing expressions referring to start or end to follow the wrong point. Trimex now keeps the direction from redraw() in self.reverse, and trimObject() reverses the points back before saving.\n\nAssisted-by: claude-opus-5-5\n\nCo-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>","timestamp":"2026-10-16T14:06:12Z","url":"https://github.com/ilf-S/FreeCAD/commit/05d8d69e9dc358cf44d19f40b40eadd10b030357","author":{"name":"DesignWeaver3D","email":"insubbeckley@gmail.com","date":"2026-10-16T10:06:12-04:00","username":"DesignWeaver3D"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T14:06:12Z","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/Draft/draftguitools/gui_trimex.py"]},{"id":"2eac669208d352c66daaae2c6b381d041313ca25","tree_id":"f6ff898bf703c828bb458107830db175b5c68ca5","distinct":true,"message":"CAM: Clipper arc fitting fixes, v2 (#33284)\n\n* fix difference in behavior between console and gui modes\n\n* fix spikes\n\n* fix Area::addWire handling of non-equal vertices in adjacent edges (within tolerance)\n\n* add regression test for offsetting near pancake arcs\n\n* interpolate radius when interpolating an arc, just for good measure\n\n* proactively filter out wrong-side offset curves when offsetting closed curves, instead of leaving it for after the union operation","timestamp":"2026-10-16T10:49:46-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/2eac669208d352c66daaae2c6b381d041313ca25","author":{"name":"David Kaufman","email":"davidgilkaufman@gmail.com","date":"2026-10-16T11:49:46-04:00","username":"davidgilkaufman"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T10:49:46-05:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/App/Area.cpp","src/Mod/CAM/CAMTests/TestArcFitting.py","src/Mod/CAM/PathScripts/PathUtils.py","src/Mod/CAM/libarea/AreaClipper.cpp"]},{"id":"e0b1900c5ecdf70877681fd4ea2afc5290f64a5c","tree_id":"2c181b90740745245d77d085a703bb0a7421e89b","distinct":true,"message":"Draft: fix BIM horizontal/vertical dimensions on a preselected edge (#33484)\n\nBIM_DimensionHorizontal and BIM_DimensionVertical ignored explicit directions when an edge was preselected, forcing aligned dimensions instead of horizontal or vertical ones. Two-point picking and chain mode already respected the command's direction.\n\nSet the dimension Direction to the working plane X or Y axis when linked to a preselected edge, and show the preview along that axis. Keep edge endpoints unchanged to preserve Shift modifier and chain mode functionality.\n\nFixes #29766\n\nAssisted-by: claude-opus-5-5","timestamp":"2026-10-16T16:26:33Z","url":"https://github.com/ilf-S/FreeCAD/commit/e0b1900c5ecdf70877681fd4ea2afc5290f64a5c","author":{"name":"DesignWeaver3D","email":"insubbeckley@gmail.com","date":"2026-10-16T12:26:33-04:00","username":"DesignWeaver3D"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T16:26:33Z","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/Draft/draftguitools/gui_dimensions.py"]},{"id":"fcd43a3261296cc4f39bd581ba8fa20f9eb1b7a6","tree_id":"4f996583209ad9aa175b7a7404415abead4f5330","distinct":true,"message":"Gui: Clarify task panel and toolbar lifecycle","timestamp":"2026-10-16T18:35:21+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/fcd43a3261296cc4f39bd581ba8fa20f9eb1b7a6","author":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-16T18:21:27+02:00","username":"maxwxyz"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-10-16T18:35:21+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Draft/DraftGui.py","src/Mod/Draft/draftutils/gui_utils.py","src/Mod/Sketcher/Gui/Workbench.cpp"]},{"id":"5fc8763384bad54bfce7f7d88c2d2b9a22b24747","tree_id":"e28206494e4326d17075966739d785fc602681c8","distinct":true,"message":"CAM: Remove the experimental warning from the machine preferences\n\nMachine definitions now drive the post-processor, so the note that\nchanges here do not affect CAM functionality is no longer true.\n\nCo-Authored-By: Claude Opus 5.5 ","timestamp":"2026-10-16T13:14:45-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/5fc8763384bad54bfce7f7d88c2d2b9a22b24747","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T12:04:43-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T13:14:45-05:00","username":"sliptonic"},"added":[],"removed":[],"modified":["src/Mod/CAM/Path/Tool/assets/ui/preferences.py"]},{"id":"058e0e31d4bb406c0c9a214407fcebf1b860a72b","tree_id":"128db130da3e424898c3a3918a19442469a17d8a","distinct":true,"message":"CAM: Machine editor points new machines to the Machines addon\n\nWhen the editor creates a new machine, a banner below the template\nselector tells the user about the community Machines addon. The banner\nopens the Addon Manager with the addon selected, or the repository URL\nif the Addon Manager is not available.\n\nThe banner hides when the Machines addon is in the template tree, and\nfor good after \"Do not show again\" (ShowMachinesAddonHint). When the\neditor becomes active again, it scans the Mod directories once more, so\na new install shows its machines without a restart.\n\nCo-Authored-By: Claude Opus 5.5 ","timestamp":"2026-10-16T13:15:04-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/058e0e31d4bb406c0c9a214407fcebf1b860a72b","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T12:04:45-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T13:15:04-05:00","username":"sliptonic"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestMachine.py","src/Mod/CAM/Machine/models/machine.py","src/Mod/CAM/Machine/ui/editor/machine_editor.py"]},{"id":"b0d42ef4b9f9d0723d43ecd7557392f369d73e02","tree_id":"0552a0c52e0ca7b05182c4604d01a07e5b677cb5","distinct":true,"message":"Merge pull request #33554 from maxwxyz/toolbar\n\nFix Sketcher toolbars disappearing when switching documents","timestamp":"2026-10-16T20:57:04+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/b0d42ef4b9f9d0723d43ecd7557392f369d73e02","author":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-10-16T20:57:04+02:00","username":"maxwxyz"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T20:57:04+02:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Gui/ToolBarManager.cpp","src/Gui/ToolBarManager.h","src/Mod/Draft/DraftGui.py","src/Mod/Draft/draftguitools/gui_edit.py","src/Mod/Draft/draftutils/gui_utils.py","src/Mod/Sketcher/Gui/ViewProviderSketch.cpp","src/Mod/Sketcher/Gui/Workbench.cpp"]},{"id":"79c2e99c0ca7465f1b9c4d672c5ad3b9e4b59b22","tree_id":"f26a1fdd3617ab7da7e88243657db756ca0d473f","distinct":true,"message":"CAM: Simulator: speed readout dark over a light background, white over a dark one","timestamp":"2026-10-16T23:17:56+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/79c2e99c0ca7465f1b9c4d672c5ad3b9e4b59b22","author":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2026-10-16T13:19:37-04:00","username":"Connor9220"},"committer":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-10-16T23:17:56+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp","src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h","src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.cpp","src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.h"]},{"id":"44a68a00462f6a04ca149879d7ae3ce4791da3e3","tree_id":"2ada413522ac5a93c0080582daa1540e30b0bfec","distinct":true,"message":"fix[build]: make Git provenance optional (11x faster builds for minor changes) (#32737)\n\n* fix[build]: make Git provenance optional\n\nDevelopment presets can disable commit provenance from being compiled in\nto avoid rebuilds caused only by Git revision changes. These rebuilds\nare especially annoying and slow because they are largely made up of\nlinker invocations, which cannot be easily parallelized.\n\nProvenance stays enabled by default for compatibility with existing\npackaging, only developer helpers disable it.\n\nAssisted-by: GPT-5.6\n\n* rename variable\n\n* add to relWithDebInfo too\n\n* Document FREECAD_VERSION_INCLUDE_GIT more precisely\n\n---------\n\nCo-authored-by: Louis Gombert ","timestamp":"2026-10-16T21:27:43Z","url":"https://github.com/ilf-S/FreeCAD/commit/44a68a00462f6a04ca149879d7ae3ce4791da3e3","author":{"name":"Flaviu Tamas","email":"me@flaviutamas.com","date":"2026-10-16T17:27:43-04:00","username":"flaviut"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T21:27:43Z","username":"web-flow"},"added":[],"removed":[],"modified":["CMakePresets.json","cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","src/Build/CMakeLists.txt"]},{"id":"53eb4ad32f296ee4988891cfee4ac5b4d97c978f","tree_id":"e5c1cba4482a9b4480eba95bb99c5dbcb0a33161","distinct":true,"message":"CAM: Dragknife - Fix the twist into an arc\n\nThe twist before an arc could end far from the arc. The dressup then cut\nthe rest of the arc as an almost full circle (#21800).\n\n- The angle of the arc start point came from a 3D vector. The start point\n is at cut depth and the arc center was taken at pivot height, so the Z\n difference made the angle too large. Use the XY components only.\n- The direction of the twist came from the previous move. It must come\n from the destination arc.\n- shortcut() took the arc tangent without regard to the arc direction.\n The tangent was reversed for a G2 arc before the corner and for a G3\n arc after it, so the twist turned the long way around the corner.\n\nAdd the first unit tests for the dressup: a line into a G2 arc, a line\ninto a G3 arc, a G2 arc into a G2 arc, and a G2 or G3 arc into a line.\n\nFixes #21800\n\nCo-Authored-By: Claude Opus 5.5 ","timestamp":"2026-10-16T18:04:51-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/53eb4ad32f296ee4988891cfee4ac5b4d97c978f","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-15T15:45:10-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T18:04:51-05:00","username":"sliptonic"},"added":["src/Mod/CAM/CAMTests/TestPathDressupDragknife.py"],"removed":[],"modified":["src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Dressup/Gui/Dragknife.py"]},{"id":"761b961b33d146756ead8892b7a5d436f64c0dba","tree_id":"b9cad43038923cb01436c0a2a5d4312d3b59b60b","distinct":true,"message":"CAM: Dynapath post: absolute arc centers with duplicate commands off\n\nWith Output > Duplicates > Commands off, every arc after the first in a\nrun lost its G2/G3 word before conversion. _convert_arc_move() was then\nnot called, so I and J stayed incremental, and K stayed on the arc.\n\nMake I and J absolute, and remove K, in a pass before duplicate\nsuppression. Test a run of arcs without duplicate commands, in metric\nand in inch.\n\nCo-Authored-By: Claude Opus 5.5 ","timestamp":"2026-10-16T18:23:27-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/761b961b33d146756ead8892b7a5d436f64c0dba","author":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T18:23:27-05:00","username":"sliptonic"},"committer":{"name":"sliptonic","email":"shopinthewoods@gmail.com","date":"2026-10-16T18:23:27-05:00","username":"sliptonic"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestDynapathPost.py","src/Mod/CAM/Path/Post/scripts/dynapath_post.py"]},{"id":"bc8d128eb938fd497d1179197d43e2ed6cad47ea","tree_id":"42bb07337449dcfa4a6307c44c76ba87de28dfd1","distinct":true,"message":"Merge pull request #33636 from sliptonic/cam-machines-addon-hint\n\nCAM: Machines addon hint and panel cleanup","timestamp":"2026-10-16T19:53:53-04:00","url":"https://github.com/ilf-S/FreeCAD/commit/bc8d128eb938fd497d1179197d43e2ed6cad47ea","author":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2026-10-16T19:53:53-04:00","username":"Connor9220"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T19:53:53-04:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/CAMTests/TestMachine.py","src/Mod/CAM/Machine/models/machine.py","src/Mod/CAM/Machine/ui/editor/machine_editor.py","src/Mod/CAM/Path/Tool/assets/ui/preferences.py"]},{"id":"0bce7451a375cc311471367aaefee11b2521ab97","tree_id":"2fde793526b639555671d6104de1c829de01602b","distinct":true,"message":"Merge pull request #33613 from sliptonic/cam-dragknife-arctwist\n\nCAM: Dragknife - Fix the twist into an arc","timestamp":"2026-10-16T22:15:53-04:00","url":"https://github.com/ilf-S/FreeCAD/commit/0bce7451a375cc311471367aaefee11b2521ab97","author":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2026-10-16T22:15:53-04:00","username":"Connor9220"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T22:15:53-04:00","username":"web-flow"},"added":["src/Mod/CAM/CAMTests/TestPathDressupDragknife.py"],"removed":[],"modified":["src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Dressup/Gui/Dragknife.py"]},{"id":"a554c0225bf34247cf473fd135a8efa04072bd0d","tree_id":"36e303c18e61d6f5a4a0227acec5a97b763f18f6","distinct":true,"message":"Merge pull request #33174 from sliptonic/cam-dynapath-fixes\n\nCam: dynapath postprocessor fixes","timestamp":"2026-10-16T22:29:00-04:00","url":"https://github.com/ilf-S/FreeCAD/commit/a554c0225bf34247cf473fd135a8efa04072bd0d","author":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2026-10-16T22:29:00-04:00","username":"Connor9220"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T22:29:00-04:00","username":"web-flow"},"added":["src/Mod/CAM/CAMTests/TestDynapath4060Post.py","src/Mod/CAM/CAMTests/TestDynapathPost.py","src/Mod/CAM/Path/Post/scripts/dynapath_post.py"],"removed":[],"modified":["src/Mod/CAM/CAMTests/PostTestMocks.py","src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Path/Post/scripts/dynapath_4060_legacy_post.py"]},{"id":"088f49373da7309845471e5286b2f6deb69ec8d7","tree_id":"afac5252cbe5d033ad667579fa1e8baf4588146c","distinct":true,"message":"CAM: Machine Editor fits on the screen, and its Machine and Toolheads tabs scroll (#33637)","timestamp":"2026-10-16T21:49:04-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/088f49373da7309845471e5286b2f6deb69ec8d7","author":{"name":"Billy Huddleston","email":"billy@ivdc.com","date":"2026-10-16T22:49:04-04:00","username":"Connor9220"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-16T21:49:04-05:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/CAM/Machine/ui/editor/machine_editor.py"]},{"id":"45ff6527f5dab683ea24c74eeefe0f149a3787d0","tree_id":"62fcdd0fc70d0f57b8f1401c03845888d9305a64","distinct":true,"message":"merge upstream (auto-resolve CI; keep packaging & our workflow) [skip ci]","timestamp":"2026-10-17T03:00:50Z","url":"https://github.com/ilf-S/FreeCAD/commit/45ff6527f5dab683ea24c74eeefe0f149a3787d0","author":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-10-17T03:00:50Z","username":"ilf-S"},"committer":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-10-17T03:00:50Z","username":"ilf-S"},"added":["src/Mod/CAM/CAMTests/TestDynapath4060Post.py","src/Mod/CAM/CAMTests/TestDynapathPost.py","src/Mod/CAM/CAMTests/TestPathDressupDragknife.py","src/Mod/CAM/Path/Post/scripts/dynapath_post.py"],"removed":[],"modified":["CMakePresets.json","cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","src/Build/CMakeLists.txt","src/Gui/ToolBarManager.cpp","src/Gui/ToolBarManager.h","src/Mod/CAM/App/Area.cpp","src/Mod/CAM/CAMTests/PostTestMocks.py","src/Mod/CAM/CAMTests/TestArcFitting.py","src/Mod/CAM/CAMTests/TestMachine.py","src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Machine/models/machine.py","src/Mod/CAM/Machine/ui/editor/machine_editor.py","src/Mod/CAM/Path/Dressup/Gui/Dragknife.py","src/Mod/CAM/Path/Post/scripts/dynapath_4060_legacy_post.py","src/Mod/CAM/Path/Tool/assets/ui/preferences.py","src/Mod/CAM/PathScripts/PathUtils.py","src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp","src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h","src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.cpp","src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.h","src/Mod/CAM/libarea/AreaClipper.cpp","src/Mod/Draft/DraftGui.py","src/Mod/Draft/draftguitools/gui_dimensions.py","src/Mod/Draft/draftguitools/gui_edit.py","src/Mod/Draft/draftguitools/gui_trimex.py","src/Mod/Draft/draftutils/gui_utils.py","src/Mod/Sketcher/Gui/ViewProviderSketch.cpp","src/Mod/Sketcher/Gui/Workbench.cpp","src/Tools/typing/stubgen/PYPROJECT_TEMPLATE.toml"]}],"head_commit":{"id":"45ff6527f5dab683ea24c74eeefe0f149a3787d0","tree_id":"62fcdd0fc70d0f57b8f1401c03845888d9305a64","distinct":true,"message":"merge upstream (auto-resolve CI; keep packaging & our workflow) [skip ci]","timestamp":"2026-10-17T03:00:50Z","url":"https://github.com/ilf-S/FreeCAD/commit/45ff6527f5dab683ea24c74eeefe0f149a3787d0","author":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-10-17T03:00:50Z","username":"ilf-S"},"committer":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-10-17T03:00:50Z","username":"ilf-S"},"added":["src/Mod/CAM/CAMTests/TestDynapath4060Post.py","src/Mod/CAM/CAMTests/TestDynapathPost.py","src/Mod/CAM/CAMTests/TestPathDressupDragknife.py","src/Mod/CAM/Path/Post/scripts/dynapath_post.py"],"removed":[],"modified":["CMakePresets.json","cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","src/Build/CMakeLists.txt","src/Gui/ToolBarManager.cpp","src/Gui/ToolBarManager.h","src/Mod/CAM/App/Area.cpp","src/Mod/CAM/CAMTests/PostTestMocks.py","src/Mod/CAM/CAMTests/TestArcFitting.py","src/Mod/CAM/CAMTests/TestMachine.py","src/Mod/CAM/CMakeLists.txt","src/Mod/CAM/Machine/models/machine.py","src/Mod/CAM/Machine/ui/editor/machine_editor.py","src/Mod/CAM/Path/Dressup/Gui/Dragknife.py","src/Mod/CAM/Path/Post/scripts/dynapath_4060_legacy_post.py","src/Mod/CAM/Path/Tool/assets/ui/preferences.py","src/Mod/CAM/PathScripts/PathUtils.py","src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp","src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h","src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.cpp","src/Mod/CAM/PathSimulator/AppGL/GuiDisplay.h","src/Mod/CAM/libarea/AreaClipper.cpp","src/Mod/Draft/DraftGui.py","src/Mod/Draft/draftguitools/gui_dimensions.py","src/Mod/Draft/draftguitools/gui_edit.py","src/Mod/Draft/draftguitools/gui_trimex.py","src/Mod/Draft/draftutils/gui_utils.py","src/Mod/Sketcher/Gui/ViewProviderSketch.cpp","src/Mod/Sketcher/Gui/Workbench.cpp","src/Tools/typing/stubgen/PYPROJECT_TEMPLATE.toml"]}}