{"ref":"refs/heads/main","before":"7cbaf46f768e88b6aebb4965b45a9402e5c849f6","after":"545c7adcea9e0f5513f7b137b8353f10e57c2930","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-07-19T02:32:14Z","pushed_at":1784515695,"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":2643214,"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/7cbaf46f768e...545c7adcea9e","commits":[{"id":"088cb48630522f14856fa0f7d714598167147405","tree_id":"f7995c7a3d3f79502796484cdb02a4fbf415f7ab","distinct":true,"message":"WindowsInstaller: get APP_NAME dynamically from freecadcmd and remove from version sync script","timestamp":"2026-06-20T13:24:26-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/088cb48630522f14856fa0f7d714598167147405","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-05T11:24:10-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-20T13:24:26-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/write_version_nsh.py","src/Tools/sync_version.py","src/Tools/tests/test_sync_version.py"]},{"id":"f00dab5f3e445911791040b52352e02f92b95c26","tree_id":"a64b88462e4481bee122a182374d259fa0a40d50","distinct":true,"message":"WindowsInstaller: use windows explorer to launch freecad without elevated privileges after install\n\nmight avoid creating the situation that triggers https://github.com/FreeCAD/FreeCAD/issues/29245","timestamp":"2026-06-22T02:26:11-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/f00dab5f3e445911791040b52352e02f92b95c26","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-05T12:17:27-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T02:26:11-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/gui.nsh","package/WindowsInstaller/setup/configure.nsh"]},{"id":"e0268935dd35831288210a2cb3642f36a96e9b00","tree_id":"e93a6e5ddca603047643f0722f764a559032842e","distinct":true,"message":"WindowsInstaller: raise minimum windows version to windows 10 1809\n\nuse nsis built in functions to detect windows version to fix version detection for windows 8.1+\nqt 6.8+ list windows 10 1809 as minimum version so check for build number too","timestamp":"2026-06-22T02:26:12-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/e0268935dd35831288210a2cb3642f36a96e9b00","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-14T20:33:26-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T02:26:12-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/init.nsh"]},{"id":"221cd58108f907b77ea59733028224c0e00f1b16","tree_id":"6278322ec4509919d2869cb1a7f0b6a9577246de","distinct":true,"message":"WindowsInstaller: fix installer ignoring /D command line argument","timestamp":"2026-06-22T02:26:12-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/221cd58108f907b77ea59733028224c0e00f1b16","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-14T21:44:46-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T02:26:12-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/init.nsh"]},{"id":"2f28320b18164fa73ca01e82b29f152862ffabb0","tree_id":"99b7cbc99d709e5b51944dd711c5444bd7ddc61a","distinct":true,"message":"WindowsInstaller: better install dir validation and clean it before install\n\nask user for confirmation if the directory is not empty and empty it before installing, avoids library conflicts when upgrading such as https://github.com/FreeCAD/FreeCAD/issues/25740 or https://github.com/FreeCAD/FreeCAD/issues/22943\n\nImprove AlreadyInstalled lang string now that the installer empties the directory, in which case it is ok to just overwrite a test build or faulty install","timestamp":"2026-06-22T03:05:06-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/2f28320b18164fa73ca01e82b29f152862ffabb0","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-12T16:45:24-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T03:05:06-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/gui.nsh","package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/include/utils.nsh","package/WindowsInstaller/lang/arabic.nsh","package/WindowsInstaller/lang/basque.nsh","package/WindowsInstaller/lang/catalan.nsh","package/WindowsInstaller/lang/czech.nsh","package/WindowsInstaller/lang/danish.nsh","package/WindowsInstaller/lang/dutch.nsh","package/WindowsInstaller/lang/english.nsh","package/WindowsInstaller/lang/french.nsh","package/WindowsInstaller/lang/galician.nsh","package/WindowsInstaller/lang/german.nsh","package/WindowsInstaller/lang/hungarian.nsh","package/WindowsInstaller/lang/indonesian.nsh","package/WindowsInstaller/lang/italian.nsh","package/WindowsInstaller/lang/japanese.nsh","package/WindowsInstaller/lang/norwegian.nsh","package/WindowsInstaller/lang/polish.nsh","package/WindowsInstaller/lang/portuguese.nsh","package/WindowsInstaller/lang/portugueseBR.nsh","package/WindowsInstaller/lang/romanian.nsh","package/WindowsInstaller/lang/russian.nsh","package/WindowsInstaller/lang/slovak.nsh","package/WindowsInstaller/lang/spanish.nsh","package/WindowsInstaller/lang/swedish.nsh","package/WindowsInstaller/lang/turkish.nsh","package/WindowsInstaller/lang/ukrainian.nsh","package/WindowsInstaller/setup/install.nsh"]},{"id":"5ca98ebdf271cc0690d64ff60cc70b9eb429f5c9","tree_id":"54cd6107925f2e0a8cee96166dfff8ce6759b856","distinct":true,"message":"WindowsInstaller: less verbose detail list view to speed up install/uninstall\n\npreviously the detail list view would update on every deleted and extracted file which made the install much slower and was unreadable anyways\nlimiting what is shown in the detail list made the installer and uninstaller 2x to 3x faster on my system\nthis is recommended in docs when working with many small files https://nsis.sourceforge.io/Reference/SetDetailsPrint\nfull details of installed files is still be saved to $INSTDIR/install.log","timestamp":"2026-06-22T13:08:58-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/5ca98ebdf271cc0690d64ff60cc70b9eb429f5c9","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T02:42:57-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T13:08:58-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/utils.nsh","package/WindowsInstaller/setup/install.nsh","package/WindowsInstaller/setup/uninstall.nsh"]},{"id":"852efdc5c5ac60127a0e4df2bc6f57f94570975b","tree_id":"369c076312ab94471d733e1b9907991680bd1d85","distinct":true,"message":"WindowsInstaller: Formatting\n\nremove duplicated logiclib include in install.nsh\nuse more readable quotes in system call in settings.nsh","timestamp":"2026-06-22T13:08:58-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/852efdc5c5ac60127a0e4df2bc6f57f94570975b","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-21T13:13:49-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T13:08:58-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/FreeCAD-installer.nsi","package/WindowsInstaller/Settings.nsh","package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/gui.nsh","package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/include/utils.nsh","package/WindowsInstaller/setup/configure.nsh","package/WindowsInstaller/setup/install.nsh","package/WindowsInstaller/setup/uninstall.nsh"]},{"id":"8d5e7914a61bdf9b8a2d8018dd0f05552006e41d","tree_id":"7553e964912da7892688d9dd6add3c4253618ccb","distinct":true,"message":"WindowsInstaller: remove nsprocess dependency and check if freecadcmd is running too\n\nuse native windows commands instead of nsprocess","timestamp":"2026-06-22T13:09:33-03:00","url":"https://github.com/ilf-S/FreeCAD/commit/8d5e7914a61bdf9b8a2d8018dd0f05552006e41d","author":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-14T20:27:06-03:00","username":"adrianinsaval"},"committer":{"name":"Adrian Insaurralde Avalos","email":"adrianinsaval@gmail.com","date":"2026-06-22T13:09:33-03:00","username":"adrianinsaval"},"added":[],"removed":[],"modified":["package/WindowsInstaller/FreeCAD-installer.nsi","package/WindowsInstaller/README.md","package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/include/utils.nsh","package/rattler-build/windows/create_bundle.sh"]},{"id":"20c6486fac297046936745a9d6d2d1bfbd27089b","tree_id":"d093ca049f032cf88380cda3cb7c13d449785c0e","distinct":true,"message":"Gui: remove unused OpenGL depth-range toggles","timestamp":"2026-07-17T12:29:44+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/20c6486fac297046936745a9d6d2d1bfbd27089b","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T12:11:47+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:29:44+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/View3DInventorViewer.cpp"]},{"id":"38db2c263180d110a7493746423a702dd87979ae","tree_id":"23d21ebe21f5cf2775c418e3bfa2bc6023825ff0","distinct":true,"message":"Gui: isolate the GL render-action scene path\n\nSeparate the existing SoGLRenderAction scene sequence from viewer-level orchestration. This gives alternate render backends a clear integration point while keeping background, delayed annotation, foreground, and decoration traversal together.\n\nFactor the out-of-memory recovery into a shared helper without narrowing the original exception boundary: both the main traversal and delayed annotation replay remain covered.","timestamp":"2026-07-17T12:29:44+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/38db2c263180d110a7493746423a702dd87979ae","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-04T14:36:28+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:29:44+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h"]},{"id":"6daae9c1f5244a1e8e454ae0748f20598cbd410c","tree_id":"5af3c2271ba97fa730ea150e6294efba4fee6630","distinct":true,"message":"Gui: copy dynamically wrapped QImage values\n\nThe runtime PySide fallback wraps QImage references as borrowed C++ objects. Callers can pass local or temporary images, leaving Python with a dangling wrapper once the C++ call returns.\n\nUse the borrowed wrapper only to create an independent QImage value. The compiled Shiboken path already uses copyToPython(), which provides the required ownership semantics.","timestamp":"2026-07-17T12:53:19+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/6daae9c1f5244a1e8e454ae0748f20598cbd410c","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T21:03:36+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:53:19+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/PythonWrapper.cpp"]},{"id":"be65f37ff80374f39a6bd63c0f0dada2b61330eb","tree_id":"854bc1abcdf98e108788e2cc81d82e76a8520735","distinct":true,"message":"Gui: add controlled image rendering API\n\nIntroduce a render-image options object for controlled captures used by thumbnails and printing. Keep dimensions, samples, background, and render intent together, and return a value image so callers do not manage output ownership.","timestamp":"2026-07-17T12:53:19+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/be65f37ff80374f39a6bd63c0f0dada2b61330eb","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-11T00:12:12+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:53:19+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Thumbnail.cpp","src/Gui/View3DInventor.cpp","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h"]},{"id":"735bf02dbbe73254500c64fd85ba7881dc0efa0d","tree_id":"5949421a7e03f08abc775af985f8f7688ff8804c","distinct":true,"message":"Gui: make viewer lighting optional for framebuffer capture\n\nExpose fresh framebuffer capture to Python with an independent option for viewer-owned lighting. Captures exclude viewer decorations, while callers can omit viewer lights without affecting lights supplied by the captured scene.\n\nKeep viewer lighting under a retained scene-graph root so lighting-free traversal can select the geometry root without changing persistent light fields.","timestamp":"2026-07-17T12:53:19+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/735bf02dbbe73254500c64fd85ba7881dc0efa0d","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-15T12:45:06+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:53:19+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/FreeCADGui._View3DInventorViewer.pyi","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h","src/Gui/View3DViewerPy.cpp","src/Gui/View3DViewerPy.h"]},{"id":"aafceca38e71ee23b001488e840399c0068aff68","tree_id":"7673a83159a2e0cbad64c12df4d5c6332096e102","distinct":true,"message":"Gui: capture the live viewport through QOpenGLWidget","timestamp":"2026-07-17T12:53:19+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/aafceca38e71ee23b001488e840399c0068aff68","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-15T12:46:15+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:53:19+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/FreeCADGui._View3DInventorViewer.pyi","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h","src/Gui/View3DViewerPy.cpp"]},{"id":"58ad0535dd5ca4038bfb23f52ebbe7fc362a023f","tree_id":"e3c41647a6196e7c09ec5fdc98ad931ba1080b79","distinct":true,"message":"Test: cover 3D viewer image capture contracts","timestamp":"2026-07-17T12:53:19+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/58ad0535dd5ca4038bfb23f52ebbe7fc362a023f","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-15T12:46:42+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:53:19+01:00","username":"tritao"},"added":["src/Mod/Test/TestView3DFramebufferCapture.py"],"removed":[],"modified":["src/Mod/Test/CMakeLists.txt"]},{"id":"41608f69a3a883cf227b32b184fdb7739bf7e7ca","tree_id":"64fa44d402014d552ab9e61d2f80f1a75ad0962a","distinct":true,"message":"Gui: drain deferred view deletion before Python shutdown\n\nClosing an MDI view can detach its QMdiSubWindow and schedule the\nparentless widget for deferred deletion. If the event loop exits before\nthat event is delivered, the view can survive beyond GUI teardown and\nlater try to invalidate or release its Python wrapper after the embedded\ninterpreter has been finalized.\n\nAdd an exception-safe GUI shutdown phase around the event-loop lifetime.\nBefore the main window, GUI application, and QApplication are destroyed,\nmark the GUI as closing, close any remaining documents, and deliver\ndeferred-delete events.\n\nThis keeps Python-owning GUI objects within the interpreter lifetime and\npreserves normal reference-counting semantics without a global runtime\npredicate or deliberately leaked Python references.","timestamp":"2026-07-17T12:53:19+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/41608f69a3a883cf227b32b184fdb7739bf7e7ca","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T21:03:28+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T12:53:19+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Application.cpp","src/Gui/Application.h"]},{"id":"e009e546b2f4a586a49d73d89ec054282c91c04c","tree_id":"5ba45241bdcf255f9b5900d7a175b95a3733f9cb","distinct":true,"message":"Test: render Coin node snapshots through the live viewer\n\nExercise Coin node snapshots through View3DInventorViewer instead of the separate offscreen renderer so the tests cover the rendering path used interactively.\n\nManage the temporary viewer document with an exception-safe context manager and wait on observable widget, framebuffer, and document state with bounded timeouts. Keep the existing snapshot scenes unchanged, regenerate only baselines with real pixel differences, and restrict the culling callback to GL render actions because scene installation also performs non-render traversals.","timestamp":"2026-07-18T20:10:49+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/e009e546b2f4a586a49d73d89ec054282c91c04c","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-06T00:02:03+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:49+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py","tests/visual/baselines/coin-nodes/SoBrepFaceSetHighlight.png","tests/visual/baselines/coin-nodes/SoBrepFaceSetSelection.png","tests/visual/baselines/coin-nodes/SoDatumLabel.png","tests/visual/baselines/coin-nodes/SoDrawingGrid.png","tests/visual/baselines/coin-nodes/SoFCBackgroundGradient.png","tests/visual/baselines/coin-nodes/SoFCIndexedFaceSetTranslucent.png","tests/visual/baselines/coin-nodes/SoNaviCube.png","tests/visual/baselines/coin-nodes/SoNaviCubeHiliteFront.png","tests/visual/baselines/coin-nodes/SoNaviCubeTranslucent.png","tests/visual/baselines/coin-nodes/SoPolygonNonPlanar.png","tests/visual/baselines/coin-nodes/SoPolygonTriangle.png","tests/visual/baselines/coin-nodes/SoStringLabel.png","tests/visual/baselines/coin-nodes/SoTextLabel.png"]},{"id":"74c8f1967099dc868ecade10bb2aeaebfceb9d84","tree_id":"effc8b2cfca61cedb1f146782af6639754c5e0d4","distinct":true,"message":"Gui: add SoFCScreenSpaceGroup\n\nAdd a retained screen-space group that establishes coordinate space, depth, texture, and lighting policy for overlay children. Keep this state setup in one node so legacy and alternate render traversals consume the same screen-space geometry.","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/74c8f1967099dc868ecade10bb2aeaebfceb9d84","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T13:49:31+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":["src/Gui/Inventor/SoFCScreenSpaceGroup.cpp","src/Gui/Inventor/SoFCScreenSpaceGroup.h"],"removed":[],"modified":["src/Gui/CMakeLists.txt","src/Gui/SoFCDB.cpp"]},{"id":"94c6631a14f3e68a13216b78394a6d6b49c504ba","tree_id":"f72b4e5611b2021d8eebf9d46d87bae52e12758e","distinct":true,"message":"Gui: refactor screen-space nodes onto SoFCScreenSpaceGroup","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/94c6631a14f3e68a13216b78394a6d6b49c504ba","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T13:50:21+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoDrawingGrid.cpp","src/Gui/Inventor/SoDrawingGrid.h","src/Gui/Inventor/SoFCBackgroundGradient.cpp","src/Gui/Inventor/SoFCBackgroundGradient.h","tests/visual/baselines/coin-nodes/SoDrawingGrid.png"]},{"id":"d4435c095a3073bcb32238897e7e77d1770947f3","tree_id":"11898b122113b069b5b319491042aa5e349520c0","distinct":true,"message":"Gui,Test: make SoFCBackgroundGradient field-driven","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/d4435c095a3073bcb32238897e7e77d1770947f3","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T21:04:00+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoFCBackgroundGradient.cpp","src/Gui/Inventor/SoFCBackgroundGradient.h","src/Gui/View3DViewerPy.cpp","src/Mod/Test/TestCoinNodeSnapshots.py","tests/visual/baselines/coin-nodes/SoFCBackgroundGradient.png","tests/visual/baselines/coin-nodes/SoNaviCubeTranslucent.png"]},{"id":"ea64b2c5adead47d017b8fcec7148cd0fe06605e","tree_id":"4c6dde5cc014e814cc0c173810c131841cc9e1d5","distinct":true,"message":"Gui: centralize screen-space overlay geometry preparation\n\nAdd a protected preparation hook to SoFCScreenSpaceGroup and invoke it before retained children are traversed. GL traversal runs the hook after installing the temporary screen-space state, while generic actions can prepare field-driven geometry without duplicating traversal entry points.\n\nMove SoDrawingGrid and SoFCBackgroundGradient onto the hook. The grid prepares only for GL render actions because its geometry depends on viewport state; the background gradient can refresh for every traversal because its geometry depends only on fields.","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/ea64b2c5adead47d017b8fcec7148cd0fe06605e","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T23:04:48+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoDrawingGrid.cpp","src/Gui/Inventor/SoDrawingGrid.h","src/Gui/Inventor/SoFCBackgroundGradient.cpp","src/Gui/Inventor/SoFCBackgroundGradient.h","src/Gui/Inventor/SoFCScreenSpaceGroup.cpp","src/Gui/Inventor/SoFCScreenSpaceGroup.h"]},{"id":"2946449b2d12a0969f9ea53fa3f288653d604c65","tree_id":"b55349a9ad63c37ee780f272a6a55014a6ac68a8","distinct":true,"message":"Gui: make SoRegPoint a retained separator node","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/2946449b2d12a0969f9ea53fa3f288653d604c65","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T14:02:55+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoAxisCrossKit.cpp","src/Gui/Inventor/SoAxisCrossKit.h"]},{"id":"b27bfe7db6e88bde650036c440df70b10e57cd2c","tree_id":"e09a803f4520ec93e6ea4c0c9e9fc23b0bcda8aa","distinct":true,"message":"Gui: make SoShapeScale action-aware for retained traversal","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/b27bfe7db6e88bde650036c440df70b10e57cd2c","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T14:03:05+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoAxisCrossKit.cpp","src/Gui/Inventor/SoAxisCrossKit.h"]},{"id":"8199c22396f17311de5187a874ae49692c67f929","tree_id":"30ae195996519aa1d04a16725e6d4cebd572d4fa","distinct":true,"message":"Gui: extract TranslateManip from label nodes\n\nMove TranslateManip into dedicated source and header files, update its view-provider user to include the new declaration directly, and keep node registration explicit in SoFCDB. This separates the transform manipulator from the unrelated label node collection without changing behavior.","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/8199c22396f17311de5187a874ae49692c67f929","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-10T01:42:38+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":["src/Gui/TranslateManip.cpp","src/Gui/TranslateManip.h"],"removed":[],"modified":["src/Gui/CMakeLists.txt","src/Gui/SoFCDB.cpp","src/Gui/SoTextLabel.cpp","src/Gui/SoTextLabel.h","src/Gui/ViewProviderAnnotation.cpp","src/Gui/ViewProviderAnnotation.h"]},{"id":"0c8b6218dc4f0f8cafd3198eeeb0bf7cbb646408","tree_id":"25c3498587bb0555a3f52c5ebc2e16606933b567","distinct":true,"message":"Gui: remove the unused SoTextLabel node\n\nSoTextLabel is no longer registered or used, while its source files also contain the active color-bar, string, and frame label nodes. Remove the dead node and its obsolete visual baseline, rename the shared files to SoLabelNodes, update all consumers, and trim includes that belonged only to the removed implementation.","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/0c8b6218dc4f0f8cafd3198eeeb0bf7cbb646408","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-10T01:43:39+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":["src/Gui/SoLabelNodes.cpp","src/Gui/SoLabelNodes.h"],"removed":["src/Gui/SoTextLabel.cpp","src/Gui/SoTextLabel.h","tests/visual/baselines/coin-nodes/SoTextLabel.png"],"modified":["src/Gui/CMakeLists.txt","src/Gui/Inventor/Draggers/SoLinearDragger.cpp","src/Gui/Inventor/Draggers/SoPlanarDragger.cpp","src/Gui/Inventor/Draggers/SoTransformDragger.cpp","src/Gui/Inventor/SoFCPlacementIndicatorKit.cpp","src/Gui/SoFCColorGradient.cpp","src/Gui/SoFCDB.cpp","src/Gui/ViewProviderLine.cpp","src/Mod/Measure/Gui/ViewProviderMassPropertiesResult.cpp","src/Mod/Measure/Gui/ViewProviderMeasureAngle.h","src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp","src/Mod/Measure/Gui/ViewProviderMeasureBase.h","src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp","src/Mod/Test/TestCoinNodeSnapshots.py"]},{"id":"068641382976ab27e432d1baed288fcb28c668b7","tree_id":"b1175f0e9a0f75757d462bf7d8b69138695b0082","distinct":true,"message":"Gui: cache SoFrameLabel effective render colors\n\nKeep configured foreground and background colors unchanged when labels inherit the current material color. Rasterize the effective colors lazily during GL rendering and reuse the image until either label inputs or inherited colors change.","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/068641382976ab27e432d1baed288fcb28c668b7","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-10T01:44:11+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/SoLabelNodes.cpp","src/Gui/SoLabelNodes.h"]},{"id":"8cd7ef358def0572a0a7cf8a8c9ea886e17eb552","tree_id":"3ac072d0c0150aa1fd6eface15676c018384404a","distinct":true,"message":"Gui: defer placement indicator rebuilds until construction completes","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/8cd7ef358def0572a0a7cf8a8c9ea886e17eb552","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T22:26:50+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoFCPlacementIndicatorKit.cpp","src/Gui/Inventor/SoFCPlacementIndicatorKit.h"]},{"id":"9e99acd788fffa3398afe25e98311964c7988a59","tree_id":"25dadb48d3349d9718fea8330e86c1fd14367354","distinct":true,"message":"Gui: initialize NaviCube style state deterministically","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/9e99acd788fffa3398afe25e98311964c7988a59","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-07T21:04:13+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoNaviCube.cpp","src/Gui/Inventor/SoNaviCube.h","src/Gui/NaviCube.cpp"]},{"id":"38493961418701a56965688a075ed4bdbe50608b","tree_id":"5033cc4162917735b73c5aac8c4f2935354681f1","distinct":true,"message":"PartGui: retain spline control-point geometry","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/38493961418701a56965688a075ed4bdbe50608b","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-11T10:46:28+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Part/Gui/SoFCShapeObject.cpp","src/Mod/Part/Gui/SoFCShapeObject.h"]},{"id":"6ec6db32d334172a3a0b38d9a11f23b01b8fd49a","tree_id":"c5adb4133e2ab83c7fbd5320f6df2776a71cee6d","distinct":true,"message":"Gui: retain screen-space label geometry","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/6ec6db32d334172a3a0b38d9a11f23b01b8fd49a","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-11T10:47:25+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/SoLabelNodes.cpp","src/Gui/SoLabelNodes.h","tests/visual/baselines/coin-nodes/SoStringLabel.png"]},{"id":"90926f3a91f6ac4562916031b68d498c9c30ae98","tree_id":"ff216007361180b10ae734319cb643cecea52db2","distinct":true,"message":"Gui: share retained datum-label scene preparation\n\nSeparate datum-label scene synchronization from GL traversal so legacy and alternate render actions can consume the same retained geometry and text representation.","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/90926f3a91f6ac4562916031b68d498c9c30ae98","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-11T10:48:20+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/SoDatumLabel.cpp","src/Gui/SoDatumLabel.h"]},{"id":"02a59fb0f21186f82b162eba44f863aedb0d173f","tree_id":"6e8862a094382a38fbd9bd3da5b1731c1d49eb89","distinct":true,"message":"Test: isolate annotation overlay snapshots","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/02a59fb0f21186f82b162eba44f863aedb0d173f","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-12T16:14:32+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py","tests/visual/baselines/coin-nodes/SoDatumLabel.png","tests/visual/baselines/coin-nodes/SoDrawingGrid.png","tests/visual/baselines/coin-nodes/SoRegPoint.png","tests/visual/baselines/coin-nodes/SoStringLabel.png"]},{"id":"54392f32808fe9122a78c4cad6cafbf514b1d6b9","tree_id":"3bc9b703c2ee4f37eba0d2545fc304ebbbf60e2a","distinct":true,"message":"Test: add translucent Coin snapshots","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/54392f32808fe9122a78c4cad6cafbf514b1d6b9","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-12T16:17:27+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py","tests/visual/baselines/coin-nodes/SoFCIndexedFaceSetTranslucent.png"]},{"id":"cbd6f2081422c464029e77b76a265b46fe1a83e0","tree_id":"f914bae33e0a74c97235b05b790ffde34e34b1c3","distinct":true,"message":"Test: cover core GUI overlay nodes","timestamp":"2026-07-18T20:10:58+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/cbd6f2081422c464029e77b76a265b46fe1a83e0","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-12T16:18:05+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:58+01:00","username":"tritao"},"added":["tests/visual/baselines/coin-nodes/SoAxisCrossKit.png","tests/visual/baselines/coin-nodes/SoColorBarLabel.png","tests/visual/baselines/coin-nodes/SoFCPlacementIndicatorKit.png","tests/visual/baselines/coin-nodes/SoFrameLabel.png"],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py"]},{"id":"a6826a76847a7062dd2c6a00defd25dddd197f69","tree_id":"373fc5624fcd0ddc73a4db3adc37b4d15f650e6b","distinct":true,"message":"Test: build material resources before visual sources","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/a6826a76847a7062dd2c6a00defd25dddd197f69","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-13T14:29:12+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/CMakeLists.txt"]},{"id":"395d2ad3bddfc41a853481c2f2ffeb7fbf98db7a","tree_id":"d0c6a73a2b66e874c5bb6dc005225be524add8c3","distinct":true,"message":"Test: centralize snapshot fixture configuration","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/395d2ad3bddfc41a853481c2f2ffeb7fbf98db7a","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-12T22:27:56+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py","tools/rendering/manage_coin_node_baselines.py"]},{"id":"14d9e575fa79e0458077ef5f92f94a6d8fed8bec","tree_id":"72b565bedc8d0a963cb4662d2b5d7f31b96b9d8b","distinct":true,"message":"Test: cover retained GUI helper nodes","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/14d9e575fa79e0458077ef5f92f94a6d8fed8bec","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T15:07:55+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":["tests/visual/baselines/coin-nodes/SoFCBoundingBox.png","tests/visual/baselines/coin-nodes/SoPreviewShape.png"],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py","tests/visual/baselines/coin-nodes/SoFCControlPoints.png"]},{"id":"e6932d2a00982fdea7a91a8f4be4acea5f905e2b","tree_id":"6c723b36f4c04b9815d4a4a748e310f65149efa9","distinct":true,"message":"Gui,Test: render delayed annotations in framebuffer captures","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/e6932d2a00982fdea7a91a8f4be4acea5f905e2b","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-13T16:55:31+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":["tests/visual/baselines/coin-nodes/So3DAnnotation.png"],"removed":[],"modified":["src/Gui/Inventor/So3DAnnotation.cpp","src/Gui/Inventor/So3DAnnotation.h","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h","src/Mod/Test/TestCoinNodeSnapshots.py","tests/visual/baselines/coin-nodes/SoPreviewShape.png"]},{"id":"6fd85dad9aee275fa292bc9c01ccca4453b77b1f","tree_id":"9ba71f08ba1c98f94978649c86b792ce238550c3","distinct":true,"message":"Gui: separate bounding-box preparation from GL rendering","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/6fd85dad9aee275fa292bc9c01ccca4453b77b1f","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-13T20:57:29+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/Inventor/SoFCBoundingBox.cpp","src/Gui/Inventor/SoFCBoundingBox.h"]},{"id":"d4d707d3fb1b5a9123fa9daaa2e0baa18a348d0a","tree_id":"edc8de1971490f9fa16352ed4a21b664ee5c8582","distinct":true,"message":"Gui,Test: add color-scale state model","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/d4d707d3fb1b5a9123fa9daaa2e0baa18a348d0a","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-15T08:47:54+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":["src/Gui/ColorScaleOverlay.cpp","src/Gui/ColorScaleOverlay.h","tests/src/Gui/ColorScaleOverlayTest.cpp"],"removed":[],"modified":["src/Gui/CMakeLists.txt","tests/src/Gui/CMakeLists.txt"]},{"id":"d33340210fc68279921168d27195b3a514a46a14","tree_id":"a02f27b9a6246f02467bcf44d3725dcb40720810","distinct":true,"message":"Gui,Test: consolidate color-scale presentation in SoFCColorBar\n\nFold the standalone SoFCColorBar snapshot coverage into the consolidated presentation change.","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/d33340210fc68279921168d27195b3a514a46a14","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-13T15:04:42+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":["tests/visual/baselines/coin-nodes/SoFCColorBar.png"],"removed":["src/Gui/SoFCColorGradient.cpp","src/Gui/SoFCColorGradient.h","src/Gui/SoFCColorLegend.cpp","src/Gui/SoFCColorLegend.h"],"modified":["src/Gui/CMakeLists.txt","src/Gui/SoFCColorBar.cpp","src/Gui/SoFCColorBar.h","src/Gui/SoFCColorBarNotifier.cpp","src/Gui/SoFCColorBarNotifier.h","src/Gui/SoFCDB.cpp","src/Mod/Test/TestCoinNodeSnapshots.py"]},{"id":"d7e631dd483ccbcb37ba6214a092dd3d386a5ec2","tree_id":"a6226784cbcfdd48dacf5a5d2e67daa916ed500e","distinct":true,"message":"Test: use production selection APIs for visual overlays","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/d7e631dd483ccbcb37ba6214a092dd3d386a5ec2","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T13:25:36+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":["src/Mod/Test/TestSelectionVisual.py"],"removed":["src/Mod/Test/TestCoinSelectionVisual.py"],"modified":["src/Mod/Test/CMakeLists.txt","src/Mod/Test/InitGui.py"]},{"id":"3eb0a967f5fbf8f5dfad1bc09b45343f87e07bc9","tree_id":"a7cf40305b6fe72ae4a5b488f64b780b1410589b","distinct":true,"message":"Gui: remove Coin selection Python API","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/3eb0a967f5fbf8f5dfad1bc09b45343f87e07bc9","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T13:29:22+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Gui/FreeCADGui.Selection.module.pyi","src/Gui/FreeCADGuiInit.py","src/Gui/Selection/Selection.cpp","src/Gui/Selection/Selection.h"]},{"id":"930a29a50854d09f0ccd4f62a9e686fdd8c2a1a3","tree_id":"e15d0a4a62fca8d4a22423004b2ad52659294afc","distinct":true,"message":"Test: centralize Coin snapshot runtime imports","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/930a29a50854d09f0ccd4f62a9e686fdd8c2a1a3","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-17T15:23:17+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py"]},{"id":"66907e0b72a4fe977fcda70b05d0938ad204526c","tree_id":"7c9049ff9472b415096271adf20ee8c1df25a52c","distinct":true,"message":"Test: guard drawing-grid material state","timestamp":"2026-07-18T20:10:59+01:00","url":"https://github.com/ilf-S/FreeCAD/commit/66907e0b72a4fe977fcda70b05d0938ad204526c","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-16T14:18:20+01:00","username":"tritao"},"committer":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-18T20:10:59+01:00","username":"tritao"},"added":[],"removed":[],"modified":["src/Mod/Test/TestCoinNodeSnapshots.py"]},{"id":"18df4279408cf9538ddbaa3e05e4441ff6a0d17a","tree_id":"86683e9ecea8e8eaa7c758d54975a547dd45b26d","distinct":true,"message":"Part: Delay angular deflection warning until editing is finished","timestamp":"2026-07-19T08:28:46+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/18df4279408cf9538ddbaa3e05e4441ff6a0d17a","author":{"name":"KKTHEGREAT07","email":"khurram.bwd@gmail.com","date":"2026-07-18T23:25:06+05:30","username":"KKTHEGREAT07"},"committer":{"name":"Louis Gombert","email":"44813937+Lgt2x@users.noreply.github.com","date":"2026-07-19T08:28:46+02:00","username":"Lgt2x"},"added":[],"removed":[],"modified":["src/Mod/Part/Gui/DlgSettings3DViewPartImp.cpp","src/Mod/Part/Gui/DlgSettings3DViewPartImp.h"]},{"id":"e13f1c0f10c776f4a0e6cf23255ebf81c21d09c3","tree_id":"705c3a2eaaa729340916cd79081f37f9b13bc688","distinct":true,"message":"BIM: support different sections for pipe T-connector (#29504)\n\n* Refactor radius calculation for pipe connectors\n\n* BIM: support different sections for pipe T-connector\n\nCloses #22351.","timestamp":"2026-07-19T06:33:50Z","url":"https://github.com/ilf-S/FreeCAD/commit/e13f1c0f10c776f4a0e6cf23255ebf81c21d09c3","author":{"name":"Roy-043","email":"70520633+Roy-043@users.noreply.github.com","date":"2026-07-19T08:33:50+02:00","username":"Roy-043"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T06:33:50Z","username":"web-flow"},"added":[],"removed":[],"modified":["src/Mod/BIM/Arch.py","src/Mod/BIM/ArchPipe.py"]},{"id":"c27551b451785ad72294a49a3aaba588e64e7bef","tree_id":"14784fc212ffb04d1902723bd842a2d0b4cdcedc","distinct":true,"message":"Update make_clone.py","timestamp":"2026-07-19T08:40:50+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/c27551b451785ad72294a49a3aaba588e64e7bef","author":{"name":"Roy-043","email":"70520633+Roy-043@users.noreply.github.com","date":"2026-06-24T13:45:28+02:00","username":"Roy-043"},"committer":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-07-19T08:40:50+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Draft/draftmake/make_clone.py"]},{"id":"caa400a2e6f0e714beea603b210c19d8cbb45216","tree_id":"e98b7a49c377dce98c0e2a4099bd5a6406abd9eb","distinct":true,"message":"Skip ApplicationDirectoriesTest on Windows when user cannot create a symlink (#31338)","timestamp":"2026-07-19T06:50:10Z","url":"https://github.com/ilf-S/FreeCAD/commit/caa400a2e6f0e714beea603b210c19d8cbb45216","author":{"name":"Louis Gombert","email":"44813937+Lgt2x@users.noreply.github.com","date":"2026-07-19T08:50:10+02:00","username":"Lgt2x"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T06:50:10Z","username":"web-flow"},"added":[],"removed":[],"modified":["tests/src/App/ApplicationDirectories.cpp"]},{"id":"a4b8ca1ada115e69a41b2d46f3b3e01f98cbed14","tree_id":"1ad919cd67dcf2eaf83943ff163246c627afb0b3","distinct":true,"message":"Sketcher: accept empty internal face results\n\nFaceMakerBuildFace must inspect the complete sketch edge set because it can derive bounded regions after splitting intersecting open wires. Pre-filtering on TopoShape::isClosed() incorrectly drops valid faces in sketches with diagonals and T-junctions.\n\nFor genuinely open-only sketches, the face maker returns a null result and TopoShape::makeElementFace() raises Part::NullShapeException. Treat only that exception as an expected no-faces outcome, then continue through the existing open-wire handling. Other FreeCAD and OCCT failures remain warnings.\n\nThis removes the spurious face-maker warning without duplicating or weakening FaceMakerBuildFace's topology logic.\n\nTested: pre-commit hooks; SketchObject.cpp translation-unit compilation.","timestamp":"2026-07-19T10:12:22+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/a4b8ca1ada115e69a41b2d46f3b3e01f98cbed14","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-15T12:43:00+01:00","username":"tritao"},"committer":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-07-19T10:12:22+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Sketcher/App/SketchObject.cpp"]},{"id":"a94d5aa0c2675ade98bd8d42de37fd325fea2802","tree_id":"8137e549c71af2679dfe4b8af8f4d2caade86806","distinct":true,"message":"Assembly simulation export: improve video generation function\n\nApply review comments: doc, error handling & context manager","timestamp":"2026-07-19T13:18:08+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/a94d5aa0c2675ade98bd8d42de37fd325fea2802","author":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-14T22:06:56+02:00","username":"Lgt2x"},"committer":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-19T13:18:08+02:00","username":"Lgt2x"},"added":[],"removed":[],"modified":["src/Mod/Assembly/CommandCreateSimulation.py"]},{"id":"9027bef63245369f000fca766ccfcbcec4f92ec0","tree_id":"40d0c97f10ff03f1c31d9d93966d95f72a6d3fa9","distinct":true,"message":"Assembly simulation export: add video export test\n\nfor more information, see https://pre-commit.ci","timestamp":"2026-07-19T13:18:08+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/9027bef63245369f000fca766ccfcbcec4f92ec0","author":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-14T22:07:32+02:00","username":"Lgt2x"},"committer":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-19T13:18:08+02:00","username":"Lgt2x"},"added":["src/Mod/Assembly/AssemblyTests/TestSimulationExport.py"],"removed":["src/Mod/Assembly/AssemblyTests/TestTEMPLATE.py"],"modified":["src/Mod/Assembly/AssemblyTests/TestCommandInsertLink.py","src/Mod/Assembly/AssemblyTests/TestCore.py","src/Mod/Assembly/CMakeLists.txt","src/Mod/Assembly/CommandCreateSimulation.py","src/Mod/Assembly/TestAssemblyWorkbench.py"]},{"id":"59e2914813b475b2b387108ebdb766501012195e","tree_id":"05ca210823e0a90da124311226dceb8aa44cf232","distinct":true,"message":"BIM: show arrow cursor when IFC import dialog is open\n\nFixes #16408.\r\n\r\nSame solution as used for STEP import in the Part WB.","timestamp":"2026-07-19T14:06:41+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/59e2914813b475b2b387108ebdb766501012195e","author":{"name":"Roy-043","email":"70520633+Roy-043@users.noreply.github.com","date":"2026-07-19T12:01:46+02:00","username":"Roy-043"},"committer":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-07-19T14:06:41+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/BIM/nativeifc/ifc_import.py"]},{"id":"fbc1e88361da42b2507cf0809bb6ae18d119dee7","tree_id":"a8efe8240447c7f2388d99f2cb2e1c22b6021ba2","distinct":true,"message":"CMake: make not finding VTK Python libraries a warning","timestamp":"2026-07-19T14:13:33+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/fbc1e88361da42b2507cf0809bb6ae18d119dee7","author":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-14T19:32:58+02:00","username":"Lgt2x"},"committer":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-19T14:13:33+02:00","username":"Lgt2x"},"added":[],"removed":[],"modified":["cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake"]},{"id":"92f0ed23a4d969ff6f1a0ee1cfa53fa61a625b97","tree_id":"0cc8aee0d76283f032f685e7fdf0262b98b772f5","distinct":true,"message":"CMake: add a macro to check for runtime Python dependencies\n\nuse it to detect ifcopenshell, PyAv and PIL","timestamp":"2026-07-19T14:40:49+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/92f0ed23a4d969ff6f1a0ee1cfa53fa61a625b97","author":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-19T14:40:05+02:00","username":"Lgt2x"},"committer":{"name":"Louis Gombert","email":"louisgombert@gmail.com","date":"2026-07-19T14:40:49+02:00","username":"Lgt2x"},"added":[],"removed":[],"modified":["CMakeLists.txt","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","cMake/FreeCadMacros.cmake"]},{"id":"44694940ffcc6d49ee9e8a42c21f5e541db57eb4","tree_id":"fc2404f9e8fb2905d57b425fb129fc43c3ac1fdd","distinct":true,"message":"Draft: Prevent navigation box selection during snapping","timestamp":"2026-07-19T14:47:09+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/44694940ffcc6d49ee9e8a42c21f5e541db57eb4","author":{"name":"Joao Matos","email":"joao@tritao.eu","date":"2026-07-19T09:53:27+01:00","username":"tritao"},"committer":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-07-19T14:47:09+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Draft/draftguitools/gui_snapper.py"]},{"id":"76f294bb0cd9958f6f9f2e5f3caa5f8f08c5343d","tree_id":"6df35ea046b822b623b82ceab6e8be52687f08ee","distinct":true,"message":"Merge pull request #31187 from tritao/prep-render-backend-groundwork\n\nGui: prepare 3D rendering and visual test infrastructure for new renderer","timestamp":"2026-07-19T14:53:40+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/76f294bb0cd9958f6f9f2e5f3caa5f8f08c5343d","author":{"name":"Louis Gombert","email":"44813937+Lgt2x@users.noreply.github.com","date":"2026-07-19T14:53:40+02:00","username":"Lgt2x"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T14:53:40+02:00","username":"web-flow"},"added":["src/Gui/ColorScaleOverlay.cpp","src/Gui/ColorScaleOverlay.h","src/Gui/Inventor/SoFCScreenSpaceGroup.cpp","src/Gui/Inventor/SoFCScreenSpaceGroup.h","src/Gui/SoLabelNodes.cpp","src/Gui/SoLabelNodes.h","src/Gui/TranslateManip.cpp","src/Gui/TranslateManip.h","src/Mod/Test/TestSelectionVisual.py","src/Mod/Test/TestView3DFramebufferCapture.py","tests/src/Gui/ColorScaleOverlayTest.cpp","tests/visual/baselines/coin-nodes/So3DAnnotation.png","tests/visual/baselines/coin-nodes/SoAxisCrossKit.png","tests/visual/baselines/coin-nodes/SoColorBarLabel.png","tests/visual/baselines/coin-nodes/SoFCBoundingBox.png","tests/visual/baselines/coin-nodes/SoFCColorBar.png","tests/visual/baselines/coin-nodes/SoFCPlacementIndicatorKit.png","tests/visual/baselines/coin-nodes/SoFrameLabel.png","tests/visual/baselines/coin-nodes/SoPreviewShape.png"],"removed":["src/Gui/SoFCColorGradient.cpp","src/Gui/SoFCColorGradient.h","src/Gui/SoFCColorLegend.cpp","src/Gui/SoFCColorLegend.h","src/Gui/SoTextLabel.cpp","src/Gui/SoTextLabel.h","src/Mod/Test/TestCoinSelectionVisual.py","tests/visual/baselines/coin-nodes/SoTextLabel.png"],"modified":["src/Gui/Application.cpp","src/Gui/Application.h","src/Gui/CMakeLists.txt","src/Gui/FreeCADGui.Selection.module.pyi","src/Gui/FreeCADGui._View3DInventorViewer.pyi","src/Gui/FreeCADGuiInit.py","src/Gui/Inventor/Draggers/SoLinearDragger.cpp","src/Gui/Inventor/Draggers/SoPlanarDragger.cpp","src/Gui/Inventor/Draggers/SoTransformDragger.cpp","src/Gui/Inventor/So3DAnnotation.cpp","src/Gui/Inventor/So3DAnnotation.h","src/Gui/Inventor/SoAxisCrossKit.cpp","src/Gui/Inventor/SoAxisCrossKit.h","src/Gui/Inventor/SoDrawingGrid.cpp","src/Gui/Inventor/SoDrawingGrid.h","src/Gui/Inventor/SoFCBackgroundGradient.cpp","src/Gui/Inventor/SoFCBackgroundGradient.h","src/Gui/Inventor/SoFCBoundingBox.cpp","src/Gui/Inventor/SoFCBoundingBox.h","src/Gui/Inventor/SoFCPlacementIndicatorKit.cpp","src/Gui/Inventor/SoFCPlacementIndicatorKit.h","src/Gui/Inventor/SoNaviCube.cpp","src/Gui/Inventor/SoNaviCube.h","src/Gui/NaviCube.cpp","src/Gui/PythonWrapper.cpp","src/Gui/Selection/Selection.cpp","src/Gui/Selection/Selection.h","src/Gui/SoDatumLabel.cpp","src/Gui/SoDatumLabel.h","src/Gui/SoFCColorBar.cpp","src/Gui/SoFCColorBar.h","src/Gui/SoFCColorBarNotifier.cpp","src/Gui/SoFCColorBarNotifier.h","src/Gui/SoFCDB.cpp","src/Gui/Thumbnail.cpp","src/Gui/View3DInventor.cpp","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h","src/Gui/View3DViewerPy.cpp","src/Gui/View3DViewerPy.h","src/Gui/ViewProviderAnnotation.cpp","src/Gui/ViewProviderAnnotation.h","src/Gui/ViewProviderLine.cpp","src/Mod/Measure/Gui/ViewProviderMassPropertiesResult.cpp","src/Mod/Measure/Gui/ViewProviderMeasureAngle.h","src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp","src/Mod/Measure/Gui/ViewProviderMeasureBase.h","src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp","src/Mod/Part/Gui/SoFCShapeObject.cpp","src/Mod/Part/Gui/SoFCShapeObject.h","src/Mod/Test/CMakeLists.txt","src/Mod/Test/InitGui.py","src/Mod/Test/TestCoinNodeSnapshots.py","tests/src/Gui/CMakeLists.txt","tests/visual/baselines/coin-nodes/SoBrepFaceSetHighlight.png","tests/visual/baselines/coin-nodes/SoBrepFaceSetSelection.png","tests/visual/baselines/coin-nodes/SoDatumLabel.png","tests/visual/baselines/coin-nodes/SoDrawingGrid.png","tests/visual/baselines/coin-nodes/SoFCBackgroundGradient.png","tests/visual/baselines/coin-nodes/SoFCControlPoints.png","tests/visual/baselines/coin-nodes/SoFCIndexedFaceSetTranslucent.png","tests/visual/baselines/coin-nodes/SoNaviCube.png","tests/visual/baselines/coin-nodes/SoNaviCubeHiliteFront.png","tests/visual/baselines/coin-nodes/SoNaviCubeTranslucent.png","tests/visual/baselines/coin-nodes/SoPolygonNonPlanar.png","tests/visual/baselines/coin-nodes/SoPolygonTriangle.png","tests/visual/baselines/coin-nodes/SoRegPoint.png","tests/visual/baselines/coin-nodes/SoStringLabel.png","tools/rendering/manage_coin_node_baselines.py"]},{"id":"24df01a498aca0e3c5509b42e2eb3f1653e42822","tree_id":"90fcfd053ac7a885d6d0950c11eec777077b690d","distinct":true,"message":"BIM: fix error in #30001\n\nThe group variable did not exist after #30001. My bad.","timestamp":"2026-07-19T15:09:07+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/24df01a498aca0e3c5509b42e2eb3f1653e42822","author":{"name":"Roy-043","email":"70520633+Roy-043@users.noreply.github.com","date":"2026-07-19T12:23:18+02:00","username":"Roy-043"},"committer":{"name":"Max Wilfinger","email":"6246609+maxwxyz@users.noreply.github.com","date":"2026-07-19T15:09:07+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/BIM/nativeifc/ifc_psets.py"]},{"id":"3040ed7200d7077b6d78b394659a059f470cb8a0","tree_id":"0857ad9ef099dc5f25b2116435d481369a440bef","distinct":true,"message":"Merge pull request #31345 from Lgt2x/assembly-export-improvements\n\nAssembly video export: improvements & testing","timestamp":"2026-07-19T09:01:26-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/3040ed7200d7077b6d78b394659a059f470cb8a0","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T09:01:26-06:00","username":"chennes"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T09:01:26-06:00","username":"web-flow"},"added":["src/Mod/Assembly/AssemblyTests/TestSimulationExport.py"],"removed":["src/Mod/Assembly/AssemblyTests/TestTEMPLATE.py"],"modified":["src/Mod/Assembly/AssemblyTests/TestCommandInsertLink.py","src/Mod/Assembly/AssemblyTests/TestCore.py","src/Mod/Assembly/CMakeLists.txt","src/Mod/Assembly/CommandCreateSimulation.py","src/Mod/Assembly/TestAssemblyWorkbench.py"]},{"id":"d10ffb547239cf31333ac2534b3e9c2f189bc419","tree_id":"959bc801f949ad9057dcd3b890f88639829217b2","distinct":true,"message":"[TD]fix Balloon positioning","timestamp":"2026-07-19T17:06:16+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/d10ffb547239cf31333ac2534b3e9c2f189bc419","author":{"name":"wandererfan","email":"wandererfan@gmail.com","date":"2026-06-21T09:21:49-04:00","username":"WandererFan"},"committer":{"name":"Louis Gombert","email":"44813937+Lgt2x@users.noreply.github.com","date":"2026-07-19T17:06:16+02:00","username":"Lgt2x"},"added":[],"removed":[],"modified":["src/Mod/TechDraw/App/DrawViewBalloon.h","src/Mod/TechDraw/Gui/QGIView.h","src/Mod/TechDraw/Gui/QGIViewBalloon.cpp","src/Mod/TechDraw/Gui/QGIViewBalloon.h"]},{"id":"f36eda3cc246e5bb62100f1d199ed0ee33a6c729","tree_id":"28e1b74b12106d759c2fcc2d776970e2e466e2be","distinct":true,"message":"Merge pull request #31340 from Lgt2x/cmake-runtime-deps\n\nBuild: identify missing Python runtime dependencies at configure time","timestamp":"2026-07-19T09:48:29-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/f36eda3cc246e5bb62100f1d199ed0ee33a6c729","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T09:48:29-06:00","username":"chennes"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T09:48:29-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["CMakeLists.txt","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake","cMake/FreeCadMacros.cmake"]},{"id":"b9155035fecaaed254fbd6553229a5473532ea41","tree_id":"7808bc4c0d5b9eca33220d006574f55c60b9cee8","distinct":true,"message":"Sketcher/Measure: fix precision loss in constraint and measurement values","timestamp":"2026-07-19T10:07:41-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/b9155035fecaaed254fbd6553229a5473532ea41","author":{"name":"Bojan","email":"bojanpejic97@gmail.com","date":"2026-05-14T17:05:59+02:00","username":"Bojan9597"},"committer":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T10:07:41-06:00","username":"chennes"},"added":[],"removed":[],"modified":["src/Mod/Part/App/MeasureClient.cpp","src/Mod/Sketcher/Gui/CommandConstraints.cpp","src/Mod/Sketcher/Gui/EditDatumDialog.cpp"]},{"id":"6d9a497294edd900ddbd8a64e8fa68644eca2da0","tree_id":"1a25897dec280f970a3bd7bd5db99ee1280930d1","distinct":true,"message":"WindowsInstaller: Cleanup review comments","timestamp":"2026-07-19T11:13:25-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/6d9a497294edd900ddbd8a64e8fa68644eca2da0","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T11:13:25-05:00","username":"chennes"},"committer":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T11:13:25-05:00","username":"chennes"},"added":[],"removed":[],"modified":["package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/lang/arabic.nsh","package/WindowsInstaller/lang/basque.nsh","package/WindowsInstaller/lang/catalan.nsh","package/WindowsInstaller/lang/czech.nsh","package/WindowsInstaller/lang/danish.nsh","package/WindowsInstaller/lang/dutch.nsh","package/WindowsInstaller/lang/english.nsh","package/WindowsInstaller/lang/french.nsh","package/WindowsInstaller/lang/galician.nsh","package/WindowsInstaller/lang/german.nsh","package/WindowsInstaller/lang/hungarian.nsh","package/WindowsInstaller/lang/indonesian.nsh","package/WindowsInstaller/lang/italian.nsh","package/WindowsInstaller/lang/japanese.nsh","package/WindowsInstaller/lang/norwegian.nsh","package/WindowsInstaller/lang/polish.nsh","package/WindowsInstaller/lang/portuguese.nsh","package/WindowsInstaller/lang/portugueseBR.nsh","package/WindowsInstaller/lang/romanian.nsh","package/WindowsInstaller/lang/russian.nsh","package/WindowsInstaller/lang/slovak.nsh","package/WindowsInstaller/lang/swedish.nsh","package/WindowsInstaller/lang/turkish.nsh","package/WindowsInstaller/lang/ukrainian.nsh","package/WindowsInstaller/setup/install.nsh"]},{"id":"cc04cdcfcc7b850dd5d463ed4491e752df25e425","tree_id":"851134a8292ac4ffe4669a23d5b20fca273d147c","distinct":true,"message":"Gui: Encode path name and comment when saving an image","timestamp":"2026-07-19T18:49:08+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/cc04cdcfcc7b850dd5d463ed4491e752df25e425","author":{"name":"wwmayer","email":"wmayer@freecad.org","date":"2026-07-13T15:24:56+02:00","username":"wwmayer"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-07-19T18:49:08+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Gui/CommandView.cpp"]},{"id":"e43f3536bae1d2d655a0bc64907f884ccfe8054d","tree_id":"96036c87e2a6ab1c861aad4a51024669990f1b23","distinct":true,"message":"Fem: Replace potentially harmful use of eval()\n\nTo access the attribute of an object by string one doesn't need the\nharmful function eval() but getattr() can be safely used","timestamp":"2026-07-19T18:49:08+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/e43f3536bae1d2d655a0bc64907f884ccfe8054d","author":{"name":"wwmayer","email":"wmayer@freecad.org","date":"2026-07-14T12:15:44+02:00","username":"wwmayer"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-07-19T18:49:08+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Fem/feminout/importToolsFem.py","src/Mod/Fem/femtaskpanels/task_result_mechanical.py"]},{"id":"9276f54f9aa9e03514aa3398ad0a9d525f2f7cf7","tree_id":"e68edefe721aa4a92745e74244424b1838a6642d","distinct":true,"message":"Draft: Replace potentially harumful eval()\n\nReplace the potentially harmful use of eval() with ast.literal_eval()","timestamp":"2026-07-19T18:49:08+02:00","url":"https://github.com/ilf-S/FreeCAD/commit/9276f54f9aa9e03514aa3398ad0a9d525f2f7cf7","author":{"name":"wwmayer","email":"wmayer@freecad.org","date":"2026-07-14T15:10:32+02:00","username":"wwmayer"},"committer":{"name":"Max Wilfinger","email":"max@wilfinger.de","date":"2026-07-19T18:49:08+02:00","username":"maxwxyz"},"added":[],"removed":[],"modified":["src/Mod/Draft/draftguitools/gui_ellipses.py","src/Mod/Draft/draftguitools/gui_layers.py"]},{"id":"3c3b195f728bc1cee7265ef128b533fef77a0db0","tree_id":"a07f7568c01f615b20b3478603b55ff8a8af33aa","distinct":true,"message":"Merge pull request #30910 from adrianinsaval/win-install-improvements\n\nWindows installer improvements","timestamp":"2026-07-19T11:07:45-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/3c3b195f728bc1cee7265ef128b533fef77a0db0","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T11:07:45-06:00","username":"chennes"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T11:07:45-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["package/WindowsInstaller/FreeCAD-installer.nsi","package/WindowsInstaller/README.md","package/WindowsInstaller/Settings.nsh","package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/gui.nsh","package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/include/utils.nsh","package/WindowsInstaller/lang/arabic.nsh","package/WindowsInstaller/lang/basque.nsh","package/WindowsInstaller/lang/catalan.nsh","package/WindowsInstaller/lang/czech.nsh","package/WindowsInstaller/lang/danish.nsh","package/WindowsInstaller/lang/dutch.nsh","package/WindowsInstaller/lang/english.nsh","package/WindowsInstaller/lang/french.nsh","package/WindowsInstaller/lang/galician.nsh","package/WindowsInstaller/lang/german.nsh","package/WindowsInstaller/lang/hungarian.nsh","package/WindowsInstaller/lang/indonesian.nsh","package/WindowsInstaller/lang/italian.nsh","package/WindowsInstaller/lang/japanese.nsh","package/WindowsInstaller/lang/norwegian.nsh","package/WindowsInstaller/lang/polish.nsh","package/WindowsInstaller/lang/portuguese.nsh","package/WindowsInstaller/lang/portugueseBR.nsh","package/WindowsInstaller/lang/romanian.nsh","package/WindowsInstaller/lang/russian.nsh","package/WindowsInstaller/lang/slovak.nsh","package/WindowsInstaller/lang/spanish.nsh","package/WindowsInstaller/lang/swedish.nsh","package/WindowsInstaller/lang/turkish.nsh","package/WindowsInstaller/lang/ukrainian.nsh","package/WindowsInstaller/setup/configure.nsh","package/WindowsInstaller/setup/install.nsh","package/WindowsInstaller/setup/uninstall.nsh","package/WindowsInstaller/write_version_nsh.py","package/rattler-build/windows/create_bundle.sh","src/Tools/sync_version.py","src/Tools/tests/test_sync_version.py"]},{"id":"4cceed212bb1444ca4e790313fe03e1c5cee2efa","tree_id":"0e20c74316e954f44e113ca3f100fbfa864d66d6","distinct":true,"message":"Merge pull request #31374 from maxwxyz/cherry-picks\n\nCherry-pick security fixes","timestamp":"2026-07-19T19:27:55-06:00","url":"https://github.com/ilf-S/FreeCAD/commit/4cceed212bb1444ca4e790313fe03e1c5cee2efa","author":{"name":"Chris Hennes","email":"chennes@pioneerlibrarysystem.org","date":"2026-07-19T19:27:55-06:00","username":"chennes"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T19:27:55-06:00","username":"web-flow"},"added":[],"removed":[],"modified":["src/Gui/CommandView.cpp","src/Mod/Draft/draftguitools/gui_ellipses.py","src/Mod/Draft/draftguitools/gui_layers.py","src/Mod/Fem/feminout/importToolsFem.py","src/Mod/Fem/femtaskpanels/task_result_mechanical.py"]},{"id":"67586e16998cb81f373655c4e4fd40beaacbe2dc","tree_id":"dad59a34062d91bae72a101faae364a078431937","distinct":true,"message":"TaskView: Remove dead code from TaskView and QSint (#27653)\n\n* TaskView: Remove dead code from TaskView and QSint\n\n* Move QLabel includes","timestamp":"2026-07-19T21:38:04-05:00","url":"https://github.com/ilf-S/FreeCAD/commit/67586e16998cb81f373655c4e4fd40beaacbe2dc","author":{"name":"Grzegorz Kwacz","email":"gkwacz@hotmail.com","date":"2026-07-20T04:38:04+02:00","username":"greg19"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-19T21:38:04-05:00","username":"web-flow"},"added":[],"removed":["src/Gui/QSint/actionpanel/actionbox.cpp","src/Gui/QSint/actionpanel/actionbox.h"],"modified":["src/Gui/CMakeLists.txt","src/Gui/QSint/actionpanel/actiongroup.cpp","src/Gui/QSint/actionpanel/actiongroup.h","src/Gui/QSint/actionpanel/actionpanel.cpp","src/Gui/QSint/actionpanel/actionpanel.h","src/Gui/QSint/include/QSint","src/Gui/Stylesheets/FreeCAD.qss","src/Gui/TaskView/TaskView.cpp","src/Gui/TaskView/TaskView.h","src/Mod/Measure/Gui/TaskMeasure.h","src/Mod/Part/Gui/TaskCheckGeometry.cpp","src/Mod/PartDesign/Gui/TaskExtrudeParameters.h","src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h","src/Mod/TechDraw/Gui/CommandExtensionDims.cpp"]},{"id":"545c7adcea9e0f5513f7b137b8353f10e57c2930","tree_id":"97f1f0a8a9d3d7644c461a312b28e1a427a139b1","distinct":true,"message":"merge upstream (auto-resolve CI; keep packaging & our workflow) [skip ci]","timestamp":"2026-07-20T02:48:14Z","url":"https://github.com/ilf-S/FreeCAD/commit/545c7adcea9e0f5513f7b137b8353f10e57c2930","author":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-07-20T02:48:14Z","username":"ilf-S"},"committer":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-07-20T02:48:14Z","username":"ilf-S"},"added":["src/Gui/ColorScaleOverlay.cpp","src/Gui/ColorScaleOverlay.h","src/Gui/Inventor/SoFCScreenSpaceGroup.cpp","src/Gui/Inventor/SoFCScreenSpaceGroup.h","src/Gui/SoLabelNodes.cpp","src/Gui/SoLabelNodes.h","src/Gui/TranslateManip.cpp","src/Gui/TranslateManip.h","src/Mod/Assembly/AssemblyTests/TestSimulationExport.py","src/Mod/Test/TestSelectionVisual.py","src/Mod/Test/TestView3DFramebufferCapture.py","tests/src/Gui/ColorScaleOverlayTest.cpp","tests/visual/baselines/coin-nodes/So3DAnnotation.png","tests/visual/baselines/coin-nodes/SoAxisCrossKit.png","tests/visual/baselines/coin-nodes/SoColorBarLabel.png","tests/visual/baselines/coin-nodes/SoFCBoundingBox.png","tests/visual/baselines/coin-nodes/SoFCColorBar.png","tests/visual/baselines/coin-nodes/SoFCPlacementIndicatorKit.png","tests/visual/baselines/coin-nodes/SoFrameLabel.png","tests/visual/baselines/coin-nodes/SoPreviewShape.png"],"removed":["src/Gui/QSint/actionpanel/actionbox.cpp","src/Gui/QSint/actionpanel/actionbox.h","src/Gui/SoFCColorGradient.cpp","src/Gui/SoFCColorGradient.h","src/Gui/SoFCColorLegend.cpp","src/Gui/SoFCColorLegend.h","src/Gui/SoTextLabel.cpp","src/Gui/SoTextLabel.h","src/Mod/Assembly/AssemblyTests/TestTEMPLATE.py","src/Mod/Test/TestCoinSelectionVisual.py","tests/visual/baselines/coin-nodes/SoTextLabel.png"],"modified":["CMakeLists.txt","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake","cMake/FreeCadMacros.cmake","package/WindowsInstaller/FreeCAD-installer.nsi","package/WindowsInstaller/README.md","package/WindowsInstaller/Settings.nsh","package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/gui.nsh","package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/include/utils.nsh","package/WindowsInstaller/lang/arabic.nsh","package/WindowsInstaller/lang/basque.nsh","package/WindowsInstaller/lang/catalan.nsh","package/WindowsInstaller/lang/czech.nsh","package/WindowsInstaller/lang/danish.nsh","package/WindowsInstaller/lang/dutch.nsh","package/WindowsInstaller/lang/english.nsh","package/WindowsInstaller/lang/french.nsh","package/WindowsInstaller/lang/galician.nsh","package/WindowsInstaller/lang/german.nsh","package/WindowsInstaller/lang/hungarian.nsh","package/WindowsInstaller/lang/indonesian.nsh","package/WindowsInstaller/lang/italian.nsh","package/WindowsInstaller/lang/japanese.nsh","package/WindowsInstaller/lang/norwegian.nsh","package/WindowsInstaller/lang/polish.nsh","package/WindowsInstaller/lang/portuguese.nsh","package/WindowsInstaller/lang/portugueseBR.nsh","package/WindowsInstaller/lang/romanian.nsh","package/WindowsInstaller/lang/russian.nsh","package/WindowsInstaller/lang/slovak.nsh","package/WindowsInstaller/lang/spanish.nsh","package/WindowsInstaller/lang/swedish.nsh","package/WindowsInstaller/lang/turkish.nsh","package/WindowsInstaller/lang/ukrainian.nsh","package/WindowsInstaller/setup/configure.nsh","package/WindowsInstaller/setup/install.nsh","package/WindowsInstaller/setup/uninstall.nsh","package/WindowsInstaller/write_version_nsh.py","package/rattler-build/windows/create_bundle.sh","src/Gui/Application.cpp","src/Gui/Application.h","src/Gui/CMakeLists.txt","src/Gui/CommandView.cpp","src/Gui/FreeCADGui.Selection.module.pyi","src/Gui/FreeCADGui._View3DInventorViewer.pyi","src/Gui/FreeCADGuiInit.py","src/Gui/Inventor/Draggers/SoLinearDragger.cpp","src/Gui/Inventor/Draggers/SoPlanarDragger.cpp","src/Gui/Inventor/Draggers/SoTransformDragger.cpp","src/Gui/Inventor/So3DAnnotation.cpp","src/Gui/Inventor/So3DAnnotation.h","src/Gui/Inventor/SoAxisCrossKit.cpp","src/Gui/Inventor/SoAxisCrossKit.h","src/Gui/Inventor/SoDrawingGrid.cpp","src/Gui/Inventor/SoDrawingGrid.h","src/Gui/Inventor/SoFCBackgroundGradient.cpp","src/Gui/Inventor/SoFCBackgroundGradient.h","src/Gui/Inventor/SoFCBoundingBox.cpp","src/Gui/Inventor/SoFCBoundingBox.h","src/Gui/Inventor/SoFCPlacementIndicatorKit.cpp","src/Gui/Inventor/SoFCPlacementIndicatorKit.h","src/Gui/Inventor/SoNaviCube.cpp","src/Gui/Inventor/SoNaviCube.h","src/Gui/NaviCube.cpp","src/Gui/PythonWrapper.cpp","src/Gui/QSint/actionpanel/actiongroup.cpp","src/Gui/QSint/actionpanel/actiongroup.h","src/Gui/QSint/actionpanel/actionpanel.cpp","src/Gui/QSint/actionpanel/actionpanel.h","src/Gui/QSint/include/QSint","src/Gui/Selection/Selection.cpp","src/Gui/Selection/Selection.h","src/Gui/SoDatumLabel.cpp","src/Gui/SoDatumLabel.h","src/Gui/SoFCColorBar.cpp","src/Gui/SoFCColorBar.h","src/Gui/SoFCColorBarNotifier.cpp","src/Gui/SoFCColorBarNotifier.h","src/Gui/SoFCDB.cpp","src/Gui/Stylesheets/FreeCAD.qss","src/Gui/TaskView/TaskView.cpp","src/Gui/TaskView/TaskView.h","src/Gui/Thumbnail.cpp","src/Gui/View3DInventor.cpp","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h","src/Gui/View3DViewerPy.cpp","src/Gui/View3DViewerPy.h","src/Gui/ViewProviderAnnotation.cpp","src/Gui/ViewProviderAnnotation.h","src/Gui/ViewProviderLine.cpp","src/Mod/Assembly/AssemblyTests/TestCommandInsertLink.py","src/Mod/Assembly/AssemblyTests/TestCore.py","src/Mod/Assembly/CMakeLists.txt","src/Mod/Assembly/CommandCreateSimulation.py","src/Mod/Assembly/TestAssemblyWorkbench.py","src/Mod/BIM/Arch.py","src/Mod/BIM/ArchPipe.py","src/Mod/BIM/nativeifc/ifc_import.py","src/Mod/BIM/nativeifc/ifc_psets.py","src/Mod/Draft/draftguitools/gui_ellipses.py","src/Mod/Draft/draftguitools/gui_layers.py","src/Mod/Draft/draftguitools/gui_snapper.py","src/Mod/Draft/draftmake/make_clone.py","src/Mod/Fem/feminout/importToolsFem.py","src/Mod/Fem/femtaskpanels/task_result_mechanical.py","src/Mod/Measure/Gui/TaskMeasure.h","src/Mod/Measure/Gui/ViewProviderMassPropertiesResult.cpp","src/Mod/Measure/Gui/ViewProviderMeasureAngle.h","src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp","src/Mod/Measure/Gui/ViewProviderMeasureBase.h","src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp","src/Mod/Part/App/MeasureClient.cpp","src/Mod/Part/Gui/DlgSettings3DViewPartImp.cpp","src/Mod/Part/Gui/DlgSettings3DViewPartImp.h","src/Mod/Part/Gui/SoFCShapeObject.cpp","src/Mod/Part/Gui/SoFCShapeObject.h","src/Mod/Part/Gui/TaskCheckGeometry.cpp","src/Mod/PartDesign/Gui/TaskExtrudeParameters.h","src/Mod/Sketcher/App/SketchObject.cpp","src/Mod/Sketcher/Gui/CommandConstraints.cpp","src/Mod/Sketcher/Gui/EditDatumDialog.cpp","src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h","src/Mod/TechDraw/App/DrawViewBalloon.h","src/Mod/TechDraw/Gui/CommandExtensionDims.cpp","src/Mod/TechDraw/Gui/QGIView.h","src/Mod/TechDraw/Gui/QGIViewBalloon.cpp","src/Mod/TechDraw/Gui/QGIViewBalloon.h","src/Mod/Test/CMakeLists.txt","src/Mod/Test/InitGui.py","src/Mod/Test/TestCoinNodeSnapshots.py","src/Tools/sync_version.py","src/Tools/tests/test_sync_version.py","tests/src/App/ApplicationDirectories.cpp","tests/src/Gui/CMakeLists.txt","tests/visual/baselines/coin-nodes/SoBrepFaceSetHighlight.png","tests/visual/baselines/coin-nodes/SoBrepFaceSetSelection.png","tests/visual/baselines/coin-nodes/SoDatumLabel.png","tests/visual/baselines/coin-nodes/SoDrawingGrid.png","tests/visual/baselines/coin-nodes/SoFCBackgroundGradient.png","tests/visual/baselines/coin-nodes/SoFCControlPoints.png","tests/visual/baselines/coin-nodes/SoFCIndexedFaceSetTranslucent.png","tests/visual/baselines/coin-nodes/SoNaviCube.png","tests/visual/baselines/coin-nodes/SoNaviCubeHiliteFront.png","tests/visual/baselines/coin-nodes/SoNaviCubeTranslucent.png","tests/visual/baselines/coin-nodes/SoPolygonNonPlanar.png","tests/visual/baselines/coin-nodes/SoPolygonTriangle.png","tests/visual/baselines/coin-nodes/SoRegPoint.png","tests/visual/baselines/coin-nodes/SoStringLabel.png","tools/rendering/manage_coin_node_baselines.py"]}],"head_commit":{"id":"545c7adcea9e0f5513f7b137b8353f10e57c2930","tree_id":"97f1f0a8a9d3d7644c461a312b28e1a427a139b1","distinct":true,"message":"merge upstream (auto-resolve CI; keep packaging & our workflow) [skip ci]","timestamp":"2026-07-20T02:48:14Z","url":"https://github.com/ilf-S/FreeCAD/commit/545c7adcea9e0f5513f7b137b8353f10e57c2930","author":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-07-20T02:48:14Z","username":"ilf-S"},"committer":{"name":"ilf-S","email":"ilf-S@users.noreply.github.com","date":"2026-07-20T02:48:14Z","username":"ilf-S"},"added":["src/Gui/ColorScaleOverlay.cpp","src/Gui/ColorScaleOverlay.h","src/Gui/Inventor/SoFCScreenSpaceGroup.cpp","src/Gui/Inventor/SoFCScreenSpaceGroup.h","src/Gui/SoLabelNodes.cpp","src/Gui/SoLabelNodes.h","src/Gui/TranslateManip.cpp","src/Gui/TranslateManip.h","src/Mod/Assembly/AssemblyTests/TestSimulationExport.py","src/Mod/Test/TestSelectionVisual.py","src/Mod/Test/TestView3DFramebufferCapture.py","tests/src/Gui/ColorScaleOverlayTest.cpp","tests/visual/baselines/coin-nodes/So3DAnnotation.png","tests/visual/baselines/coin-nodes/SoAxisCrossKit.png","tests/visual/baselines/coin-nodes/SoColorBarLabel.png","tests/visual/baselines/coin-nodes/SoFCBoundingBox.png","tests/visual/baselines/coin-nodes/SoFCColorBar.png","tests/visual/baselines/coin-nodes/SoFCPlacementIndicatorKit.png","tests/visual/baselines/coin-nodes/SoFrameLabel.png","tests/visual/baselines/coin-nodes/SoPreviewShape.png"],"removed":["src/Gui/QSint/actionpanel/actionbox.cpp","src/Gui/QSint/actionpanel/actionbox.h","src/Gui/SoFCColorGradient.cpp","src/Gui/SoFCColorGradient.h","src/Gui/SoFCColorLegend.cpp","src/Gui/SoFCColorLegend.h","src/Gui/SoTextLabel.cpp","src/Gui/SoTextLabel.h","src/Mod/Assembly/AssemblyTests/TestTEMPLATE.py","src/Mod/Test/TestCoinSelectionVisual.py","tests/visual/baselines/coin-nodes/SoTextLabel.png"],"modified":["CMakeLists.txt","cMake/FreeCAD_Helpers/PrintFinalReport.cmake","cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake","cMake/FreeCadMacros.cmake","package/WindowsInstaller/FreeCAD-installer.nsi","package/WindowsInstaller/README.md","package/WindowsInstaller/Settings.nsh","package/WindowsInstaller/include/declarations.nsh","package/WindowsInstaller/include/gui.nsh","package/WindowsInstaller/include/init.nsh","package/WindowsInstaller/include/utils.nsh","package/WindowsInstaller/lang/arabic.nsh","package/WindowsInstaller/lang/basque.nsh","package/WindowsInstaller/lang/catalan.nsh","package/WindowsInstaller/lang/czech.nsh","package/WindowsInstaller/lang/danish.nsh","package/WindowsInstaller/lang/dutch.nsh","package/WindowsInstaller/lang/english.nsh","package/WindowsInstaller/lang/french.nsh","package/WindowsInstaller/lang/galician.nsh","package/WindowsInstaller/lang/german.nsh","package/WindowsInstaller/lang/hungarian.nsh","package/WindowsInstaller/lang/indonesian.nsh","package/WindowsInstaller/lang/italian.nsh","package/WindowsInstaller/lang/japanese.nsh","package/WindowsInstaller/lang/norwegian.nsh","package/WindowsInstaller/lang/polish.nsh","package/WindowsInstaller/lang/portuguese.nsh","package/WindowsInstaller/lang/portugueseBR.nsh","package/WindowsInstaller/lang/romanian.nsh","package/WindowsInstaller/lang/russian.nsh","package/WindowsInstaller/lang/slovak.nsh","package/WindowsInstaller/lang/spanish.nsh","package/WindowsInstaller/lang/swedish.nsh","package/WindowsInstaller/lang/turkish.nsh","package/WindowsInstaller/lang/ukrainian.nsh","package/WindowsInstaller/setup/configure.nsh","package/WindowsInstaller/setup/install.nsh","package/WindowsInstaller/setup/uninstall.nsh","package/WindowsInstaller/write_version_nsh.py","package/rattler-build/windows/create_bundle.sh","src/Gui/Application.cpp","src/Gui/Application.h","src/Gui/CMakeLists.txt","src/Gui/CommandView.cpp","src/Gui/FreeCADGui.Selection.module.pyi","src/Gui/FreeCADGui._View3DInventorViewer.pyi","src/Gui/FreeCADGuiInit.py","src/Gui/Inventor/Draggers/SoLinearDragger.cpp","src/Gui/Inventor/Draggers/SoPlanarDragger.cpp","src/Gui/Inventor/Draggers/SoTransformDragger.cpp","src/Gui/Inventor/So3DAnnotation.cpp","src/Gui/Inventor/So3DAnnotation.h","src/Gui/Inventor/SoAxisCrossKit.cpp","src/Gui/Inventor/SoAxisCrossKit.h","src/Gui/Inventor/SoDrawingGrid.cpp","src/Gui/Inventor/SoDrawingGrid.h","src/Gui/Inventor/SoFCBackgroundGradient.cpp","src/Gui/Inventor/SoFCBackgroundGradient.h","src/Gui/Inventor/SoFCBoundingBox.cpp","src/Gui/Inventor/SoFCBoundingBox.h","src/Gui/Inventor/SoFCPlacementIndicatorKit.cpp","src/Gui/Inventor/SoFCPlacementIndicatorKit.h","src/Gui/Inventor/SoNaviCube.cpp","src/Gui/Inventor/SoNaviCube.h","src/Gui/NaviCube.cpp","src/Gui/PythonWrapper.cpp","src/Gui/QSint/actionpanel/actiongroup.cpp","src/Gui/QSint/actionpanel/actiongroup.h","src/Gui/QSint/actionpanel/actionpanel.cpp","src/Gui/QSint/actionpanel/actionpanel.h","src/Gui/QSint/include/QSint","src/Gui/Selection/Selection.cpp","src/Gui/Selection/Selection.h","src/Gui/SoDatumLabel.cpp","src/Gui/SoDatumLabel.h","src/Gui/SoFCColorBar.cpp","src/Gui/SoFCColorBar.h","src/Gui/SoFCColorBarNotifier.cpp","src/Gui/SoFCColorBarNotifier.h","src/Gui/SoFCDB.cpp","src/Gui/Stylesheets/FreeCAD.qss","src/Gui/TaskView/TaskView.cpp","src/Gui/TaskView/TaskView.h","src/Gui/Thumbnail.cpp","src/Gui/View3DInventor.cpp","src/Gui/View3DInventorViewer.cpp","src/Gui/View3DInventorViewer.h","src/Gui/View3DViewerPy.cpp","src/Gui/View3DViewerPy.h","src/Gui/ViewProviderAnnotation.cpp","src/Gui/ViewProviderAnnotation.h","src/Gui/ViewProviderLine.cpp","src/Mod/Assembly/AssemblyTests/TestCommandInsertLink.py","src/Mod/Assembly/AssemblyTests/TestCore.py","src/Mod/Assembly/CMakeLists.txt","src/Mod/Assembly/CommandCreateSimulation.py","src/Mod/Assembly/TestAssemblyWorkbench.py","src/Mod/BIM/Arch.py","src/Mod/BIM/ArchPipe.py","src/Mod/BIM/nativeifc/ifc_import.py","src/Mod/BIM/nativeifc/ifc_psets.py","src/Mod/Draft/draftguitools/gui_ellipses.py","src/Mod/Draft/draftguitools/gui_layers.py","src/Mod/Draft/draftguitools/gui_snapper.py","src/Mod/Draft/draftmake/make_clone.py","src/Mod/Fem/feminout/importToolsFem.py","src/Mod/Fem/femtaskpanels/task_result_mechanical.py","src/Mod/Measure/Gui/TaskMeasure.h","src/Mod/Measure/Gui/ViewProviderMassPropertiesResult.cpp","src/Mod/Measure/Gui/ViewProviderMeasureAngle.h","src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp","src/Mod/Measure/Gui/ViewProviderMeasureBase.h","src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp","src/Mod/Part/App/MeasureClient.cpp","src/Mod/Part/Gui/DlgSettings3DViewPartImp.cpp","src/Mod/Part/Gui/DlgSettings3DViewPartImp.h","src/Mod/Part/Gui/SoFCShapeObject.cpp","src/Mod/Part/Gui/SoFCShapeObject.h","src/Mod/Part/Gui/TaskCheckGeometry.cpp","src/Mod/PartDesign/Gui/TaskExtrudeParameters.h","src/Mod/Sketcher/App/SketchObject.cpp","src/Mod/Sketcher/Gui/CommandConstraints.cpp","src/Mod/Sketcher/Gui/EditDatumDialog.cpp","src/Mod/Sketcher/Gui/SketcherToolDefaultWidget.h","src/Mod/TechDraw/App/DrawViewBalloon.h","src/Mod/TechDraw/Gui/CommandExtensionDims.cpp","src/Mod/TechDraw/Gui/QGIView.h","src/Mod/TechDraw/Gui/QGIViewBalloon.cpp","src/Mod/TechDraw/Gui/QGIViewBalloon.h","src/Mod/Test/CMakeLists.txt","src/Mod/Test/InitGui.py","src/Mod/Test/TestCoinNodeSnapshots.py","src/Tools/sync_version.py","src/Tools/tests/test_sync_version.py","tests/src/App/ApplicationDirectories.cpp","tests/src/Gui/CMakeLists.txt","tests/visual/baselines/coin-nodes/SoBrepFaceSetHighlight.png","tests/visual/baselines/coin-nodes/SoBrepFaceSetSelection.png","tests/visual/baselines/coin-nodes/SoDatumLabel.png","tests/visual/baselines/coin-nodes/SoDrawingGrid.png","tests/visual/baselines/coin-nodes/SoFCBackgroundGradient.png","tests/visual/baselines/coin-nodes/SoFCControlPoints.png","tests/visual/baselines/coin-nodes/SoFCIndexedFaceSetTranslucent.png","tests/visual/baselines/coin-nodes/SoNaviCube.png","tests/visual/baselines/coin-nodes/SoNaviCubeHiliteFront.png","tests/visual/baselines/coin-nodes/SoNaviCubeTranslucent.png","tests/visual/baselines/coin-nodes/SoPolygonNonPlanar.png","tests/visual/baselines/coin-nodes/SoPolygonTriangle.png","tests/visual/baselines/coin-nodes/SoRegPoint.png","tests/visual/baselines/coin-nodes/SoStringLabel.png","tools/rendering/manage_coin_node_baselines.py"]}}