fix(dashboard): refresh plugin manifests automatically - #71752
Conversation
teknium1
left a comment
There was a problem hiding this comment.
Thanks for addressing a real dashboard refresh gap. Current main returns the cached manifest list unless the cache is empty, explicitly rescanned, or a cached plugin directory disappears (hermes_cli/web_server.py:16407-16414), so additions and manifest edits remain stale.
Problems
- The asset-versioning rationale does not hold for the current server response: plugin assets already return
Cache-Control: no-store, no-cache, must-revalidate(hermes_cli/web_server.py:16795-16799). A conforming browser does not reuse the stable-URL response. - The documented lifecycle still says discovery is cached and directs users to rescan or restart (
website/docs/user-guide/features/extending-the-dashboard.md:816-823), which would become inaccurate.
Suggested changes
- Keep the manifest fingerprinting fix, but remove the redundant asset-versioning path unless a concrete cache layer that bypasses the existing no-store response is identified.
- Update the dashboard-extension documentation; preserve the backend API-route restart caveat at
website/docs/user-guide/features/extending-the-dashboard.md:914-917.
Automated hermes-sweeper review.
bad6fa6 to
c5c3ac2
Compare
|
Refreshed onto current Changes:
Verification:
|
c5c3ac2 to
3ca770e
Compare
|
Refreshed onto current |
Why
Dashboard extension manifests are cached for the lifetime of the web-server process. Installing, editing, or removing a frontend-only dashboard extension after the cache is populated leaves
GET /api/dashboard/pluginsstale until an explicit rescan or process restart.What changed
Scope
This refreshes dashboard manifests only. Static plugin assets retain stable URLs and the existing
Cache-Control: no-store, no-cache, must-revalidateresponse. Backend plugin API routers retain their process-start mount lifecycle; this PR does not hot-load or unload Python routes or model tools.No user-specific plugin content is included.
Verification
git diff --check— passedRisk
Low. The backend adds a small directory/stat fingerprint before returning the cached dashboard manifest list. Existing manifest validation, source precedence, enable/disable filtering, static-asset allowlisting, and API-route trust gates are unchanged.
Related issue
Related to #71595. Frontend dashboard manifests refresh automatically; process-global Python plugin/tool enablement remains restart-bound.