@@ -120,18 +120,30 @@ actions.addRelease = function( data, fn ) {
120
120
this . parallel ( ) ( null , pageDetails ) ;
121
121
var versions = getVersions ( existingPage ) ,
122
122
mainPageCallback = this . parallel ( ) ,
123
- existingCustomFields = existingPage && existingPage . customFields ?
124
- existingPage . customFields : [ ] ,
123
+ existingCustomFields = existingPage . customFields || [ ] ,
124
+ mainPage = {
125
+ customFields : existingCustomFields
126
+ } ;
127
+
128
+ // The main page starts as an empty object so that publishing a new
129
+ // version which is not the latest version only updates the metadata
130
+ // of the main page. If the new version is the latest, then use the
131
+ // main page is constructed from the new version since pretty much
132
+ // anything can change between versions.
133
+ if ( versions . latest === manifest . version ) {
125
134
mainPage = Object . create ( pageDetails ) ;
135
+ mainPage . name = manifest . name ;
136
+ mainPage . customFields = mergeCustomFields (
137
+ existingCustomFields , pageDetails . customFields ) ;
138
+ }
126
139
127
- mainPage . name = manifest . name ;
128
- mainPage . customFields = mainPage . customFields . concat ( [
140
+ // Always update the metadata for the main page
141
+ mainPage . customFields = mergeCustomFields ( mainPage . customFields , [
129
142
{ key : "versions" , value : JSON . stringify ( versions . listed ) } ,
130
143
{ key : "latest" , value : versions . latest } ,
131
144
{ key : "watchers" , value : repoMeta . watchers } ,
132
145
{ key : "forks" , value : repoMeta . forks }
133
146
] ) ;
134
- mainPage . customFields = mergeCustomFields ( existingCustomFields , mainPage . customFields ) ;
135
147
136
148
if ( ! existingPage . id ) {
137
149
wordpress . newPost ( mainPage , mainPageCallback ) ;
0 commit comments