diff --git a/cli/internal/plugin/codex_marketplace_test.go b/cli/internal/plugin/codex_marketplace_test.go index d713b45..2ac4984 100644 --- a/cli/internal/plugin/codex_marketplace_test.go +++ b/cli/internal/plugin/codex_marketplace_test.go @@ -1,7 +1,9 @@ package plugin import ( + "bytes" "encoding/json" + "image/png" "os" "path/filepath" "runtime" @@ -94,8 +96,10 @@ func TestCodexMarketplaceStructure(t *testing.T) { Skills string `json:"skills"` Hooks string `json:"hooks"` Interface struct { - DisplayName string `json:"displayName"` - Category string `json:"category"` + DisplayName string `json:"displayName"` + Category string `json:"category"` + Logo string `json:"logo"` + ComposerIcon string `json:"composerIcon"` } `json:"interface"` } require.NoError(t, json.Unmarshal(pluginRaw, &plugin), "plugin.json must parse as JSON") @@ -113,6 +117,17 @@ func TestCodexMarketplaceStructure(t *testing.T) { assert.Equal(t, "./hooks/hooks.json", plugin.Hooks, "hooks must point at the bundled Codex lifecycle registration") assert.NotEmpty(t, plugin.Interface.DisplayName) assert.NotEmpty(t, plugin.Interface.Category) + assert.Equal(t, "./assets/everme-logo.png", plugin.Interface.Logo) + assert.Equal(t, "./assets/everme-logo.png", plugin.Interface.ComposerIcon) + + logoPath := filepath.Join(pluginRoot, "assets", "everme-logo.png") + logoRaw, err := os.ReadFile(logoPath) + require.NoError(t, err, "plugin logo must exist at %s", logoPath) + logoConfig, err := png.DecodeConfig(bytes.NewReader(logoRaw)) + require.NoError(t, err, "plugin logo must be a valid PNG") + assert.Equal(t, logoConfig.Width, logoConfig.Height, "plugin logo must be square") + assert.GreaterOrEqual(t, logoConfig.Width, 48, "plugin logo must meet OpenAI's minimum dimensions") + assert.LessOrEqual(t, logoConfig.Width, 4096, "plugin logo must meet OpenAI's maximum dimensions") // Native lifecycle hooks now save completed turns independently of // whether the LLM chooses an MCP tool, so the marketplace capability diff --git a/plugins/everme/.codex-plugin/plugin.json b/plugins/everme/.codex-plugin/plugin.json index 249912a..10e6889 100644 --- a/plugins/everme/.codex-plugin/plugin.json +++ b/plugins/everme/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "everme", - "version": "0.7.2", + "version": "0.7.3", "description": "Persistent memory recall and lifecycle capture for Codex sessions via EverMe.", "author": { "name": "EverMind AI", @@ -32,6 +32,8 @@ "Load my EverMe memory for this Codex session.", "Recall what we decided about EverMe last time." ], + "logo": "./assets/everme-logo.png", + "composerIcon": "./assets/everme-logo.png", "websiteURL": "https://everme.evermind.ai" } } diff --git a/plugins/everme/assets/everme-logo.png b/plugins/everme/assets/everme-logo.png new file mode 100644 index 0000000..dbb9215 Binary files /dev/null and b/plugins/everme/assets/everme-logo.png differ