Skip to content

feat(plugins): tabulate plugin list output#23727

Merged
caseychow-oai merged 6 commits into
mainfrom
caseychow/codex/plugin-list-table-version
May 20, 2026
Merged

feat(plugins): tabulate plugin list output#23727
caseychow-oai merged 6 commits into
mainfrom
caseychow/codex/plugin-list-table-version

Conversation

@caseychow-oai
Copy link
Copy Markdown
Contributor

@caseychow-oai caseychow-oai commented May 20, 2026

Summary

  • render codex plugin list as one table per marketplace with the marketplace manifest path shown above each table
  • surface the installed plugin version in the CLI output by threading installed_version through marketplace listing state
  • narrow the system-root exemption so only known bundled/runtime marketplaces skip missing-manifest failures, and keep VERSION empty for cached-but-unconfigured plugins

Rationale

The plugin list UX was hard to scan as a flat list and did not show which installed version was active. This change makes the CLI output easier to read in the real multi-marketplace case, keeps the plugin path visible, fixes the Sapphire regression where bundled/runtime marketplace roots were blocking plugin list, and addresses the two review findings that came out of the follow-up deep review.

Key Decisions

  • kept the CLI output grouped per marketplace instead of one global table so the marketplace path can live with the rows it owns
  • kept VERSION as the installed version, which means it is empty until a plugin is actually installed
  • handled the bundled/runtime regression in the CLI snapshot validation path rather than widening app-server protocol or changing marketplace loading behavior
  • narrowed the exemption to known system marketplace names plus expected system paths, so user-configured marketplaces under those directories still fail loudly
  • gated installed_version on actual installed state so VERSION cannot show stale cache state for not installed rows

Validation

  • just fmt
  • Sapphire: cargo test -p codex-cli --test plugin_cli (14 passed; 0 failed)
  • Sapphire smoke test: bundled/runtime roots still work
    • cargo run -q -p codex-cli -- plugin add sample@debug
    • cargo run -q -p codex-cli -- plugin list
    • verified the bundled/runtime-root scenario no longer errors and shows the expected marketplace table output
  • Sapphire smoke test: custom marketplace under bundled path still errors
    • verified failed to load configured marketplace snapshot(s) for custom-marketplace
  • Sapphire smoke test: cached-but-unconfigured plugin hides version
    • verified sample@debug not installed renders with an empty VERSION column

Sample Output

/tmp/custom-marketplace/plugin.json
NAME          VERSION  STATUS         DESCRIPTION
sample@debug  1.0.0    enabled        Debug sample plugin
other@local            not installed  Local development plugin

@caseychow-oai caseychow-oai force-pushed the caseychow/codex/plugin-list-table-version branch from bdb7518 to 4a214ce Compare May 20, 2026 20:15
@caseychow-oai caseychow-oai marked this pull request as ready for review May 20, 2026 21:08
@caseychow-oai caseychow-oai merged commit 3075061 into main May 20, 2026
46 of 47 checks passed
@caseychow-oai caseychow-oai deleted the caseychow/codex/plugin-list-table-version branch May 20, 2026 22:04
@github-actions github-actions Bot locked and limited conversation to collaborators May 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants