Skip to content

Show the plugin's version and offer Codex's own update in the panel header - #17

Merged
MainSequenceDev merged 1 commit into
mainfrom
claude/plugin-version-update
Nov 1, 2026
Merged

MainSequenceDev merged 1 commit into
mainfrom
claude/plugin-version-update

Conversation

@MainSequenceDev

Copy link
Copy Markdown
Contributor

What

The panel header now always shows the running plugin version next to MainSequence, plus where it stands against the catalog Codex installs from (.agents/plugins/marketplace.json on main):

  • ● Up to date
  • Update to x.y.z: asks for confirmation, then runs Codex's own plugin commands
  • x.y.z installed · start a new chat
  • Check for updates: shown when the catalog couldn't be read

This is the Codex counterpart of the Claude Desktop header that shipped in 0.4.23 (mainsequence-sdk/mainsequence-claude-desktop#33).

How

  • src/hosts/pluginUpdate.ts compares the running version with the published catalog and with the copy Codex has installed (codex plugin list --json). One successful check serves the chat's panels for 30 minutes; Check for updates reads again.
  • Update runs codex plugin marketplace upgrade mainsequence, then codex plugin add mainsequence@mainsequence. It only ever runs the codex binary that started the server (the parent process), never another codex on PATH.
  • The new mainsequence_plugin tool is app-only, so the model can't update the plugin.
  • When Codex's commands can't run, the plugin came from another marketplace (for example mainsequence-local), or the update fails, the header shows the two terminal commands instead.
  • The open chat keeps working after Codex removes the old version's folder, because the server captures its files at startup. The new version loads in a new chat.

Testing

  • npm run release:check passes: 65 tests, and the packed 0.7.12 installs with devtools 0.3.14.
  • New tests: tests/plugin-update.test.cjs covers the module, and three new panel tests in tests/panel-ui.test.cjs cover the header: confirmed update, terminal-steps fallback, manual re-check.
  • End to end with the real CLI in a throwaway CODEX_HOME: installed 0.7.10 from the GitHub marketplace, pointed it at main, and the module reported "0.7.11 available", updated it, then reported "0.7.11 installed · start a new chat".
  • Clicked through the header in scripts/preview-panel.mjs in both themes; at 360px the status wraps under the name without horizontal scroll.
  • Not yet checked inside the Codex desktop app itself.

No version bump; releasing is separate.

🤖 Generated with Claude Code

…eader

The header shows the running version beside MainSequence, and where it stands
against the catalog Codex installs from (the mainsequence marketplace on main):
Up to date, Update to x.y.z, x.y.z installed · start a new chat, or Check for
updates when the catalog cannot be read. One successful check serves the
chat's panels for 30 minutes.

Update asks first, then runs the Codex binary that started the server:
`codex plugin marketplace upgrade mainsequence` and
`codex plugin add mainsequence@mainsequence`. When those commands cannot run,
the plugin came from another marketplace, or the update fails, the header
shows the two commands to run in a terminal. The open chat keeps its version
until a new chat starts. The new mainsequence_plugin tool is app-only, so the
model never updates the plugin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MainSequenceDev
MainSequenceDev merged commit 4262e1b into main Nov 1, 2026
4 checks passed
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