Repository navigation
feat: plugin SDK (identity, owned computations, recipes, applications, welcome tiles) - #374
Merged
Merged
Conversation
Persist plugin enablement by namespaced IDs with legacy migration. Assisted-by: GPT-5.6 Sol
Introduce stable feature IDs, ownership-aware cleanup, and reload-safe computation registration. Assisted-by: GPT-5.6 Sol
Expose immutable capability metadata and display translated labels in the plugin configuration dialog. Assisted-by: GPT-5.6 Sol
Combine pip-installed entry points with convention-based discovery, preserving provenance and rejecting stable ID collisions. Assisted-by: GPT-5.6 Sol
Define typed inputs, named outputs, scalar-result anchors, diagnostics, and technology-neutral progress and cancellation for plugin recipes. Assisted-by: GPT-5.6 Sol
Validate recipe inputs and commit cross-panel outputs atomically. Compensate partial workspace mutations when insertion fails. Assisted-by: GPT-5.6 Sol
Attach versioned run records to every successful recipe output. Preserve shared UUID provenance across JSON and HDF5 round trips. Assisted-by: GPT-5.6 Sol
Resolve example workspaces through importlib.resources. Validate recipe links and open native HDF5 examples on Desktop. Assisted-by: GPT-5.6 Sol
Assisted-by: GPT-5.6 Sol
Format long identity constants so generated plugin projects pass their bundled Ruff checks without manual edits. Assisted-by: GPT-5.6 Sol
Assisted-by: GitHub Copilot
Add explicit plugin-owned recipe launchers, safeguarded example opening, and documentation links to the Applications catalog. Assisted-by: GitHub Copilot
Assisted-by: Claude Fable 5
Assisted-by: Claude Fable 5
Assisted-by: Claude Fable 5
Assisted-by: Claude Fable 5
Allow application plugins to materialize in-memory scientific objects with immutable recipe defaults while preserving packaged resource examples. Assisted-by: GPT-5.6 Sol
Render wrapped titles, versions and descriptions directly in catalog rows and improve the dialog layout for easier scanning. Assisted-by: GPT-5.6 Sol
Assisted-by: GPT-5.6 Sol
Route open_example() through materialize_example() so in-memory campaigns load into the panels, and keep the data for parameter prefill. Assisted-by: GPT-5.6 Sol
Assisted-by: GPT-5.6 Sol
- Refactored `BasePlotHandler` to improve plot item management, including the introduction of a mapping for plot item OIDs to enhance retrieval efficiency. - Implemented atomic batch operations for adding objects in `ObjectModel`, ensuring order preservation and rollback capabilities on failure. - Updated `RecipeRunner` to batch outputs by panel, optimizing the handling of recipe results and reducing unnecessary refreshes. - Enhanced HDF5 workspace loading to support batch processing of signals and images, improving performance for large datasets. - Added unit tests to validate new functionalities and ensure robustness in bulk operations and context management. - Improved signal blocking behavior in `block_signals` to restore previous states accurately. - Updated release notes to reflect significant performance improvements and new features.
Assisted-by: Claude Opus 5.5
Built-in feature IDs follow develop's function names; plugin feature IDs are namespaced by their owner plugin (or module). SDK notes move to 1.4. Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Owned features also record their plugin as origin, so missing-plugin warnings name it. Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
PierreRaybaut
marked this pull request as draft
October 5, 2026 19:57
Assisted-by: Claude Opus 5.5
Brings the welcome page (#375). Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
Brings the welcome page shown whenever the current panel is empty (#376). Assisted-by: Claude Opus 5.5
… refresh (#382) * feat(applications): collapsible list and method accordion Assisted-by: Claude Opus 5.5 * feat(welcome): align the Desktop welcome page with DataLab-Web Assisted-by: Claude Opus 5.5
…plementation # Conflicts: # datalab/locale/fr/LC_MESSAGES/datalab.po # doc/locale/fr/LC_MESSAGES/release_notes/release_1.04.po # doc/release_notes/release_1.04.md
…ls (#384) * feat(applications): guide users to set the metadata methods expect Assisted-by: Claude Opus 5.5 * feat(plugins): menu entries, selection gating and instruments for tools Assisted-by: Claude Opus 5.5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin SDK for DataLab desktop: stable plugin identities, plugin-owned computations, headless recipes, packaged examples, an Applications catalog, welcome page tiles and a plugin project generator. Validated with the Camera and Pulse characterization pilots.
Contents
PLUGIN_INFO.id(with a module/class fallback for legacy plugins), typedcapabilities, enablement stored by ID with migration of legacy names, and plugin discovery through thedatalab.pluginsentry point group.register_computations()hook, feature IDs of the form<plugin_id>:<local_id>, automatic removal on disable/reload/uninstall, and rollback if registration fails.PluginInfo.icon) opens its page in the catalog; plugins may declare severalWelcomeTilevalues inWELCOME_TILES, each with an optionalpackage:pathicon and launcher method. The section keeps a configurable number of rows (two by default): applications come pinned first, then recently used, then by name, may be hidden, and a last tile opens the catalog for those left out. Secondary tiles are shown when there is room and otherwise move to the menu of the main tile; the catalog gains a search field and the same welcome page options. Tiles refresh when plugins are loaded, reloaded or disabled; launcher errors are reported without closing DataLab.PluginInfo.iconis shown in the Applications catalog, on welcome page tiles and in the Configure plugins... dialog; plugins without icon use a generic one.datalab-plugin createproduces a layered project (core / workflow / adapters) with tests, docs and Ruff-clean code.Merges with develop
developwas first merged in 49a3835 after two preparatory PRs (#372 deterministic feature lookup, #373 Qt 6 preview test fix) and SigimaX PR DataLab-Platform/SigimaX#7 (qthelpers fixes previously carried by this branch).calcand the Web API only fall back to another panel when a feature is not found; deleting a plugin analysis result clears its parameters; owned features record their plugin as origin.developwas merged again in f783180 to bring the welcome page (#375), on which the welcome page tiles build, and in 9d6ace0 to bring the welcome page shown whenever the current panel is empty (#376).Validation
feat/plugin-sdk-implementationbranches add dedicated SVG icons; Camera relies on the default tile, Pulse declares two tiles (application page and demo campaign).Assisted-by: Claude Opus 5.5