fix(plugins): prune superseded plugin versions after a confirmed start (#2921)

Bounds plugin disk use: installing never removed the version it replaced, so
~/.kandev/plugins/<id>/ accumulated a full copy per install forever (4.2GB on
one machine, 3.74GB of it superseded versions). A plugin now keeps its active
version plus one rollback target, pruned only once the new version is
confirmed running.

Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
João Salavisa
2026-08-22 15:35:58 +01:00
committed by GitHub
parent f284985d10
commit dc8403e2e8
9 changed files with 908 additions and 2 deletions
+6 -1
View File
@@ -44,7 +44,12 @@ flowchart LR
Installation validates the manifest, archive paths, checksums, managed runtime,
and the current host executable before extraction. Kandev then supervises the
declared subprocess and injects a Host connection. The UI bundle is static
declared subprocess and injects a Host connection. Installing a new version
does not remove the one it replaces: that version stays on disk as the rollback
target, and only the versions before it are deleted, once the new one is
confirmed running. Two extracted versions is therefore the steady state for a
plugin that runs; a plugin that is disabled or failed to start keeps every
version it has, and `data/` is never part of that cleanup. The UI bundle is static
package content loaded by the browser; it does not run inside the backend
subprocess. On disable or uninstall, the host calls destroy when present and
bulk-revokes registrations, styles, routes, handlers, and navigation. Reloads and