[minor] Add in-app plugin updates and distinct plugin symbols - #49
Merged
Merged
Conversation
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
Signed-off-by: Codex <codex@openai.com>
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.
Loaded plugins currently have no way to discover or install a newer validated version from inside CurveMole, and every contribution uses the same diamond marker. This makes maintenance manual and obscures which plugin provides each command or function.
This PR adds a plugin update controller that checks only currently loaded plugins against the validated Community Plugins catalog at startup and hourly. A status badge and Plugin Manager entry show available versions. Selected updates are downloaded, bounded, checked against the catalog fingerprint, validated for identity and API compatibility, and staged atomically for the next application start. The running plugin remains active so fits, panels and automatic imports are not interrupted. Failed downloads retain the previous installation; private, disabled, unloaded and entry-point plugins are not changed.
Each plugin now receives a persistent distinct symbol. The symbol appears consistently on contributions and functions, while tooltips name the providing plugin in menus, function selectors, components, solvers, automatic workflows and the Plugin Manager.
Documentation covers update behavior and keeps plugin-specific manuals inside each downloaded plugin. This is marked as a minor application release because both features change CurveMole's general plugin host.
Validation:
ruff check .pytest -q: 319 passed, 1 Windows-only test skipped