Repository navigation
fix(plugin): real Update/repair upgrades and live /plugin info actions - #80
Merged
Merged
Conversation
- installEntry no longer refuses installed entries: dsh plugin add replaces manifest rows in place (the updater's swap seam); a failed operation rolls back by removing newly introduced rows, re-adding previous rows pinned to their pre-operation versions, and restoring captured files byte-exactly, then re-importing the restored rows before reporting completion - /plugin info <id> wires the same detail action handlers as the browser panel instead of rendering dead Install/Remove buttons - admitReply throws for any non-observation event without a structured reply, so an action with no registered handler can never record silent success; the ui-gallery demo pane settles its actions per the contract - operate() reports update progress/failure/success with update wording, with zh catalog entries Refs #58, #59
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.
Closes #58, closes #59.
What
installEntryhard-refused any entry with installed rows. Now installing over installed rows is a real upgrade:dsh plugin addreplaces the manifest rows in place (the updater's swap seam). A failed operation rolls back transactionally — newly introduced rows are removed, previous rows are re-added pinned to their pre-operation versions (registry-external specs likegithub:reinstall verbatim), captured profile files restore byte-exactly, and an update's rollback re-imports the restored rows before reporting completion; rollback failures surface asrollback incomplete: …instead of a false success./plugin info <id>had dead Install/Remove buttons. The overlay now wires the same detail action handler as the browser panel (detailActionHandler, shared), so Install/Remove actually run and report their outcome. In the browser, completion returns to the market pane.admitReplyin@ephemeral-ai/mayfly-uinow throwsTypeError('UI actions require a structured reply')for any non-observation event without a structured reply, so an action with no registered handler can never record silent success again. The ui-gallery demo pane settles its actions per the contract.operate()reports update progress/failure/success (updating "…"…,update failed: …,updated; restart Mayfly and start a new session to apply) with zh catalog entries.Verification
pnpm run verify:full— exit 0 (build, typecheck, lint, 3773 tests at 100% per-file coverage including the touched files, happy smoke, screenshot freshness)@deepseek-ai/dsh-mcp-client@0.1.6-alpha.2, theninstallEntryupgraded it in place to0.1.7-rc.2with the post-install import check; a deliberately broken package install rolled backpackage.json/pnpm-lock.yaml/pnpm-workspace.yaml/cordis.patch.ymlbyte-exactly;uninstallEntryreturned the profile to baseline/plugincatalog (real index, 15 entries) and/plugin info mcpoverlay render and exit cleanly at 100×30 and 50×24; genericsmoke:ptypassesNotes
packages/mayfly/AGENTS.mdsay so.mcpentry's bare npm spec resolves tolatest= incompatible0.0.1-rc.1on npm, so installingmcpfrom the market is rejected by dsh's peer check regardless of this change.