@@ -142,15 +142,7 @@ class IssueSyncer extends Base {
142142 // For issues without a milestone, find the earliest release that was published after it was closed.
143143 const closed = new Date ( issue . closedAt ) ;
144144
145- // The releases object is a map of tagName -> releaseData. We need to convert it to an
146- // array of objects that include the tagName for sorting and finding.
147- const releasesWithTags = Object . entries ( ReleaseSyncer . releases || { } ) . map ( ( [ tagName , releaseData ] ) => ( {
148- tagName : tagName ,
149- ...releaseData
150- } ) ) ;
151-
152- const sortedReleases = releasesWithTags . sort ( ( a , b ) => new Date ( a . publishedAt ) - new Date ( b . publishedAt ) ) ;
153- const release = sortedReleases . find ( r => new Date ( r . publishedAt ) > closed ) ;
145+ const release = ( ReleaseSyncer . sortedReleases || [ ] ) . find ( r => new Date ( r . publishedAt ) > closed ) ;
154146
155147 // If a subsequent release exists, archive the issue under that release tag.
156148 if ( release ) {
@@ -283,7 +275,7 @@ class IssueSyncer extends Base {
283275 newMetadata . issues [ issueNumber ] = {
284276 state : issue . state ,
285277 path : targetPath ,
286- updated : issue . updatedAt ,
278+ updatedAt : issue . updatedAt ,
287279 closedAt : issue . closedAt || null ,
288280 milestone : issue . milestone ?. title || null ,
289281 title : issue . title ,
@@ -418,7 +410,7 @@ class IssueSyncer extends Base {
418410 const stats = { count : 0 , issues : [ ] } ;
419411
420412 // Ensure releases are loaded
421- if ( ! ReleaseSyncer . releases || Object . keys ( ReleaseSyncer . releases ) . length === 0 ) {
413+ if ( ! ReleaseSyncer . sortedReleases || ReleaseSyncer . sortedReleases . length === 0 ) {
422414 logger . warn ( 'No releases available for reconciliation, skipping.' ) ;
423415 return stats ;
424416 }
@@ -440,9 +432,9 @@ class IssueSyncer extends Base {
440432 const correctPath = this . #getIssuePath( {
441433 number : parseInt ( issueNumber ) ,
442434 state : issueData . state ,
443- labels : [ ] , // Dropped labels are already handled, not relevant here
444435 milestone : issueData . milestone ? { title : issueData . milestone } : null ,
445- closedAt : issueData . closedAt
436+ closedAt : issueData . closedAt ,
437+ updatedAt : issueData . updatedAt
446438 } ) ;
447439
448440 // If the correct path is null, the issue should be dropped (shouldn't happen here)
@@ -453,8 +445,6 @@ class IssueSyncer extends Base {
453445
454446 // Check if the issue needs to be moved to an archive
455447 if ( issueData . path !== correctPath ) {
456- logger . debug ( issueNumber , issueData . path , correctPath ) ;
457-
458448 // Verify the correct path is actually in an archive, not back to active directory
459449 if ( correctPath . startsWith ( issueSyncConfig . issuesDir ) &&
460450 ! correctPath . includes ( issueSyncConfig . archiveDir ) ) {
0 commit comments