Add distinction between "released", "beta", and "user" nodes#3147
Add distinction between "released", "beta", and "user" nodes#3147cbentejac wants to merge 15 commits into
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces support for user-contributed plugins and node versioning (Unknown, Released, Beta, User) in Meshroom. It adds environment variables to load user plugins, determines node version types based on plugin origin and module version, and updates the UI to visually differentiate user and beta nodes. The review feedback highlights several robustness improvements, including adding null checks for self.plugin and node properties in Python and QML, as well as handling potential ValueError exceptions during version parsing to prevent crashes.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
67b578c to
5883dea
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #3147 +/- ##
===========================================
- Coverage 85.34% 85.31% -0.04%
===========================================
Files 73 73
Lines 11460 11543 +83
===========================================
+ Hits 9781 9848 +67
- Misses 1679 1695 +16 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
USER logo is not ideal. |
`NodeVersionType` aims to identify clearly the "type" of node based on the description's version: - beta: the version is below 1.0, the node is working but not necessarily future-proof - released: the version is at least 1.0, the node has been approved and is future-proof - user: the node is not distributed with Meshroom and has been developed by a user; it may or may not work correctly - unknown: the node has no version, its status cannot be determined; it may or may not work correctly
…pe` to QML This prevents duplicating the enum on the QML side, which makes it harder to maintain whenever there are changes.
5883dea to
174bc17
Compare
…lugin Plugins with the `isUserPlugin` flag are to be distinguished from "regular" plugins, which are maintained by the core team.
`MESHROOM_USER_PLUGINS_PATH` and `MESHROOM_USER_REZ_PLUGINS` will load plugins in the same way as those declared in `MESHROOM_PLUGINS_PATH` and `MESHROOM8REZ_PLUGINS` but will flag them as "user" plugins.
…gins In addition to loading plugins declared in `MESHROOM_PLUGINS_PATH` and `MESHROOM_REZ_PLUGINS`, load those declared in `MESHROOM_USER_PLUGINS_PATH` and `MESHROOM_USER_REZ_PLUGINS` and flag them as user plugins.
174bc17 to
6b46c70
Compare
Description
This PR introduces a new concept pertaining to the version of nodes, which are now classified into three different types:
RELEASED: the node has a version that is at least 1.0.BETA: the node has a version that is below 1.0.USER: the node comes from a user plugin, meaning it is not maintained by Meshroom's core team.USERnodes are loaded through new environment variables,MESHROOM_USER_PLUGINS_PATHandMESHROOM_USER_REZ_PLUGINS. Once loaded, they appear with a specific icon (and a tooltip) and an easy-to-identify header, both on the node itself and in the Node Editor.RELEASEDnodes appear as they used to, nothing changes when it comes to them.BETAnodes appear with a specific icon (and a tooltip) indicating their status. Neither the node's nor the Node Editor's header color changes.Features list
NodeVersionTypeenum for nodes and expose it to the QML engine.