Skip to content

Make plugin updates compatibility-safe - #37

Open
lyrishark wants to merge 3 commits into
PsycherosAI:mainfrom
lyrishark:agent/plugin-manager-compatible-updates
Open

Make plugin updates compatibility-safe#37
lyrishark wants to merge 3 commits into
PsycherosAI:mainfrom
lyrishark:agent/plugin-manager-compatible-updates

Conversation

@lyrishark

Copy link
Copy Markdown

Why

The plugin manager currently assumes every Git plugin lives at the repository root and treats the highest matching tag as the update. That makes monorepo addons awkward to install and can offer or apply a release that does not support the running Psycheros version. The apply route also accepts repository details from the browser instead of re-reading the installed plugin's declared update channel.

What changed

  • add optional update.packagePath metadata for plugins stored in a repository subdirectory
  • support inspecting and installing that subdirectory without copying the rest of the repository
  • inspect each tagged plugin.json and choose the newest release compatible with the running Psycheros and Entity Core versions
  • validate plugin identity, tag/manifest version agreement, compatibility ranges, and the pinned update channel again during apply
  • make apply requests identify only the selected tag; repository coordinates now come from the installed manifest
  • report skipped newer releases and their reasons in the addon manager UI
  • document the monorepo and compatibility-safe release contract and cover it with tests

Verification

  • deno test -A packages/plugin-api/tests/manifest_test.ts packages/psycheros/tests/updater_test.ts packages/psycheros/tests/plugin_installer_test.ts — 26 passed
  • deno test -A --quiet packages/psycheros/tests packages/plugin-api/tests — 156 passed
  • deno lint on all touched TypeScript files — passed
  • deno check on the updater and plugin-manager routes — passed
  • deno fmt --check on all applicable touched files — passed
  • isolated Psycheros 0.9.2 smoke test with a tagged local monorepo plugin:
    • installed addons/live-smoke v1.0.0
    • rejected incompatible v2.0.0 without changing the installation or leaving staging files
    • applied compatible v1.1.0 with a v1.0.0 backup
    • restarted cleanly with the updated plugin active

The full workspace test task reports 163 passes and 8 Windows cleanup failures in packages/entity-core/tests/runner_test.ts (os error 32 while removing temporary database directories). The same failure reproduces on pristine upstream main, so it is not introduced by this branch. Repository-wide fmt:check also reports pre-existing formatting differences in unrelated launcher and Entity Loom files; all files changed here pass their targeted format check.

Draft for maintainer review before we convert and publish the first monorepo addon releases against this contract.

@lyrishark

Copy link
Copy Markdown
Author

Live 0.10 verification is complete and this is ready for maintainer review.

Additional proof since the draft opened:

  • integrated against psycheros-v0.10.0 / Entity Core 0.6.0
  • full reconciled workspace gate passed (440 Deno tests, Entity Loom, 90 launcher tests, format/check/lint, pinned Windows builds)
  • installed the exact HTF Music Listener 0.2.0 release ZIP through the live Settings > Plugins UI
  • manager correctly previewed 0.2.0-rc.1 → 0.2.0, compatibility >=0.10.0 <0.11.0, packagePath, and update metadata
  • replacement created a timestamped backup; restart loaded 0.2.0 active/non-degraded with all capabilities and its settings surface
  • after publishing psycheros-htf-music-listener-v0.2.0, the live update check resolved that monorepo tag and correctly reported the installed plugin current (updateAvailable: false)

The first public monorepo addon release is here: https://github.com/lyrishark/community-addons/releases/tag/psycheros-htf-music-listener-v0.2.0

@lyrishark
lyrishark marked this pull request as ready for review July 24, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant