@@ -60,31 +60,51 @@ async function getCurrentVersion(): Promise<string> {
6060 return packageJson . version ;
6161}
6262
63- async function getLatestGitVersion ( ) : Promise < string | null > {
63+ async function getAllGitVersions ( ) : Promise < string [ ] > {
6464 try {
6565 // Fetch tags to ensure we have the latest
6666 // Use --force to overwrite local tags that conflict with remote
67- await $ `git fetch --tags --force --quiet` ;
67+ try {
68+ await $ `git fetch --tags --force --quiet` ;
69+ } catch ( fetchError ) {
70+ console . warn ( "Warning: Could not fetch remote tags, using local tags only" ) ;
71+ }
6872
6973 // Get all version tags
70- const result = await $ `git tag -l "v*" ` ;
74+ const result = await $ `git tag -l v* ` ;
7175 const tags = result . stdout . trim ( ) . split ( "\n" ) . filter ( Boolean ) ;
7276
7377 if ( tags . length === 0 ) {
74- return null ;
78+ return [ ] ;
7579 }
7680
77- // Parse and find the latest version (excluding prereleases )
81+ // Parse and sort all versions (newest first )
7882 const versions = tags
7983 . map ( tag => tag . replace ( / ^ v / , "" ) )
8084 . filter ( v => semver . valid ( v ) )
8185 . sort ( ( a , b ) => semver . rcompare ( a , b ) ) ;
8286
83- return versions [ 0 ] || null ;
87+ return versions ;
8488 } catch ( error ) {
85- console . warn ( "Warning: Could not fetch git tags:" , error ) ;
89+ console . warn ( "Warning: Could not get git tags:" , error ) ;
90+ return [ ] ;
91+ }
92+ }
93+
94+ async function getLatestGitVersion ( ) : Promise < string | null > {
95+ const versions = await getAllGitVersions ( ) ;
96+
97+ if ( versions . length === 0 ) {
8698 return null ;
8799 }
100+
101+ // Find the latest version (excluding prereleases)
102+ const stableVersions = versions . filter ( v => {
103+ const parsed = semver . parse ( v ) ;
104+ return parsed && parsed . prerelease . length === 0 ;
105+ } ) ;
106+
107+ return stableVersions [ 0 ] || null ;
88108}
89109
90110async function shouldTagAsLatest ( newVersion : string ) : Promise < boolean > {
@@ -442,10 +462,24 @@ async function main() {
442462 const branch = branchResult . stdout . trim ( ) ;
443463 console . log ( ` Branch: ${ branch } ` ) ;
444464
445- // Get latest git version for context
446- const latestGitVersion = await getLatestGitVersion ( ) ;
447- if ( latestGitVersion ) {
448- console . log ( ` Current latest version: ${ latestGitVersion } ` ) ;
465+ // Get and display recent versions
466+ const allVersions = await getAllGitVersions ( ) ;
467+
468+ if ( allVersions . length > 0 ) {
469+ // Find the latest stable version (excluding prereleases)
470+ const stableVersions = allVersions . filter ( v => {
471+ const parsed = semver . parse ( v ) ;
472+ return parsed && parsed . prerelease . length === 0 ;
473+ } ) ;
474+ const latestStableVersion = stableVersions [ 0 ] || null ;
475+
476+ console . log ( `\nRecent versions:` ) ;
477+ const recentVersions = allVersions . slice ( 0 , 10 ) ;
478+ for ( const version of recentVersions ) {
479+ const isLatest = version === latestStableVersion ;
480+ const marker = isLatest ? " (latest)" : "" ;
481+ console . log ( ` - ${ version } ${ marker } ` ) ;
482+ }
449483 }
450484
451485 // Prompt for confirmation
0 commit comments