feat(plugins,skills): add update check and version comparison#27
Open
DeryFerd wants to merge 1 commit into
Open
feat(plugins,skills): add update check and version comparison#27DeryFerd wants to merge 1 commit into
DeryFerd wants to merge 1 commit into
Conversation
- Add plugin_update_manager.py with version comparison logic - Implement PluginUpdateManager and SkillUpdateManager classes - Add version parsing supporting semver and pre-release versions - Add API endpoints for checking updates: * /api/plugins/updates/check * /api/plugins/<id>/updates/status * /api/skills/updates/check * /api/skills/<id>/updates/status - Add comprehensive unit tests (25 tests, all passing) - Tests cover version parsing, comparison, and update checking
jeffrysurya
pushed a commit
to jeffrysurya/evonic
that referenced
this pull request
May 20, 2026
Database._connect() now caches one connection per thread via threading.local(). First access: open connection + PRAGMAs. Subsequent accesses: return cached conn with row_factory reset to None for a clean slate each time. sqlite3.Connection.__exit__ handles transactions but does not close, so the connection stays alive for the thread lifetime. No caller explicitly closes connections from _connect(), so this is safe. Fixes hundreds of call sites across all mixins in one shot.
ureh-terbalik
pushed a commit
to ureh-terbalik/evonic
that referenced
this pull request
May 20, 2026
…ton, replace bell icons with play/pause
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.
Problem
Right now there's no way to check if plugins or skills have updates available. Users have to manually track versions or check external sources to know when new versions are released. This makes it hard to keep plugins and skills up to date.
What This PR Does
This adds version checking infrastructure for both plugins and skills. The system can now:
Implementation Details
New Module:
plugin_update_manager.pyCreated a new module that handles all version comparison logic:
Version Parsing:
1.0.0,2.1.3,10.20.301.0→1.0.0,2→2.0.0v1.0.0→1.0.01.0.0-beta,2.1.0-alpha,1.0.0-rc.11.0.0-beta < 1.0.0Version Comparison:
1if update available (latest > current)0if up to date (latest == current)-1if current is newer (latest < current)Manager Classes:
PluginUpdateManager- checks plugin updates viaplugin_lifecycle.PluginManagerSkillUpdateManager- checks skill updates viaskills_managerplugin_update_managerandskill_update_managerNew API Endpoints
Added four new REST endpoints:
Plugin Endpoints:
GET /api/plugins/updates/check{updates: [...], count: N}GET /api/plugins/<plugin_id>/updates/statusSkill Endpoints:
GET /api/skills/updates/check{updates: [...], count: N}GET /api/skills/<skill_id>/updates/statusHow It Works
The update manager reads the
updatefield from plugin/skill manifests:{ "id": "my-plugin", "version": "1.0.0", "update": { "latest_version": "1.1.0", "url": "https://example.com/my-plugin-v1.1.0.zip", "changelog": "Bug fixes and improvements" } }When checking for updates:
Testing
Added comprehensive unit tests in
unit_tests/test_plugin_update_manager.py:Test Coverage (25 tests total):
All 25 tests passing.
Test Examples:
What's NOT Included
This PR focuses on the core checking logic only. The following are intentionally left for future PRs:
These can be added incrementally once the core version checking logic is reviewed and merged.
Files Changed
backend/plugin_update_manager.py- 277 lines (new file)routes/plugins.py- 17 lines added (2 new endpoints)routes/skills.py- 17 lines added (2 new endpoints)unit_tests/test_plugin_update_manager.py- 366 lines (new file)Total: 677 lines added across 4 files
How to Test Manually
updatefield in its manifestFuture Work
After this PR is merged, follow-up PRs could add: