feat(plugins): source Superpowers from GitHub and show update badges - #1066
Conversation
Source the Superpowers plugin from its GitHub release (v6.0.3) instead of a vendored copy, and drop the explicit version field. Derive marketplace entry versions from GitHub source URLs when the version field is omitted, keeping the source URL the single source of truth. Show update badges for installed plugins on the /plugins Installed tab.
🦋 Changeset detectedLatest commit: 421d53e The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
commit: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 06cd76da19
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| "homepage": "https://github.com/obra/superpowers", | ||
| "keywords": ["skills", "planning", "tdd", "debugging", "code-review"], | ||
| "source": "./curated/superpowers" | ||
| "source": "https://github.com/obra/superpowers/releases/tag/v6.0.3" |
There was a problem hiding this comment.
Preserve Superpowers version in the catalog
When the CDN marketplace is generated from this file, remote sources are passed through without stamping a version (the build script only stamps local relative plugin sources), and released CLIs before this patch read only the explicit marketplace version field. After this entry drops version, a user on those clients with Superpowers 5.1.0 installed will no longer see the marketplace update badge even though this source pins v6.0.3. Please keep the explicit version, or stamp versions for pinned GitHub sources before publishing the catalog.
Useful? React with 👍 / 👎.
Older CLIs only read the explicit marketplace version and cannot derive it from a GitHub source URL. When publishing the CDN catalog, stamp the version derived from a pinned GitHub source so those clients still surface update badges. The source plugins/marketplace.json keeps no explicit version; the version is derived at build time instead.
Point the Superpowers marketplace entry at the bare GitHub repo URL so it tracks the latest release instead of a pinned tag. When a marketplace entry omits version and its source is a bare GitHub repo URL, resolve the latest release tag at load time (via the /releases/latest redirect) to fill the version for update detection. Revert the build-time version stamping; it is no longer needed. Older CLIs that only read the explicit catalog version will no longer see update badges for Superpowers, since the catalog no longer carries one.
On the Installed tab, Enter now installs the available update when one is present, and falls back to opening plugin details otherwise. Add the I key to always open plugin details, so details remain reachable when Enter is occupied by an update. Update the installed hint, docs and changeset accordingly.
Move the "Installing … from marketplace" notice from a transient status message into the plugins panel itself, so the user sees progress in the interactive card while an install or update is in flight.
Highlight "Run /new or /reload to apply plugin changes." in warning color after plugin install and remove, and make the two notices symmetric. Add a root dev:cli:marketplace script that points the dev CLI at the production marketplace instead of the local dev server.
Drop the redundant showNotice on marketplace installs so the success message is shown only once, symmetric with remove.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 421d53e2c3
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| panel.setInstalling(selection.entry.displayName); | ||
| host.state.ui.requestRender(); | ||
| await installPluginFromSource(host, selection.entry.source); |
There was a problem hiding this comment.
Reset the installing state when installs fail
When installPluginFromSource rejects for a marketplace or Custom-tab install (for example, network failure or an invalid plugin manifest), control jumps to the outer onSelect catch in showPluginsPicker, which only calls showError; host.restoreEditor() is never reached and PluginsPanelComponent keeps rendering the one-way Installing ... view because panel.setInstalling(...) is never cleared. That leaves the plugin manager stuck in a stale in-progress state after a failed install instead of returning to the list so the user can retry or choose another plugin.
Useful? React with 👍 / 👎.
When a marketplace or Custom-tab install rejects, clear the installing state and return to the list so the user can retry, instead of leaving the panel stuck on the one-way "Installing…" view.

Related Issue
N/A — see Problem below.
Problem
.kimi-plugin/plugin.json), so the local copy is no longer needed./pluginsInstalled tab does not tell users when an installed plugin has a newer version in the marketplace — they only see update badges on the Official/Third-party tabs.What changed
version./releases/latestredirect — noapi.github.comquota) to fill the version for entries whose source is a bare GitHub repo URL. This powers update detection and the install-button label.update <local> → <latest>) for installed plugins on the/pluginsInstalled tab once the marketplace catalog is loaded. On that tab,Enternow installs the available update (or opens details when up to date), andIalways opens plugin details.pnpm dev:cli:marketplacescript that runs the dev CLI against the production marketplace.superpowersignore rules from.gitignoreand.oxlintrc.json.Compatibility note
Older CLIs (before this change) only read the explicit
versionfield from the catalog and cannot resolve latest at runtime. Since the catalog no longer carries an explicit Superpowers version, those clients will no longer show an update badge for Superpowers. Installing and updating still work normally; only the badge is affected.Checklist
gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.