diff --git a/Install-Claude.ps1 b/Install-Claude.ps1 index adfdc9f3..4cfeb0df 100644 --- a/Install-Claude.ps1 +++ b/Install-Claude.ps1 @@ -78,7 +78,10 @@ if ($PSVersionTable.PSVersion.Major -ge 6) { # Script metadata $ScriptName = "Claude Code Workflow System Installer" -$Version = "2.1.0" +$ScriptVersion = "2.2.0" # Installer script version + +# Default version (will be overridden by -SourceVersion from install-remote.ps1) +$DefaultVersion = "unknown" # Initialize backup behavior - backup is enabled by default unless NoBackup is specified if (-not $BackupAll -and -not $NoBackup) { @@ -141,8 +144,15 @@ function Show-Banner { } function Show-Header { + param( + [string]$InstallVersion = $DefaultVersion + ) + Show-Banner - Write-ColorOutput " $ScriptName v$Version" $ColorInfo + Write-ColorOutput " $ScriptName v$ScriptVersion" $ColorInfo + if ($InstallVersion -ne "unknown") { + Write-ColorOutput " Installing Claude Code Workflow v$InstallVersion" $ColorInfo + } Write-ColorOutput " Unified workflow system with comprehensive coordination" $ColorInfo Write-ColorOutput "========================================================================" $ColorInfo if ($NoBackup) { @@ -638,8 +648,8 @@ function Create-VersionJson { [string]$InstallationMode ) - # Determine version from source or default - $versionNumber = if ($SourceVersion) { $SourceVersion } else { $Version } + # Determine version from source parameter (passed from install-remote.ps1) + $versionNumber = if ($SourceVersion) { $SourceVersion } else { $DefaultVersion } $sourceBranch = if ($SourceBranch) { $SourceBranch } else { "unknown" } # Create version.json content @@ -649,6 +659,7 @@ function Create-VersionJson { installation_path = $TargetClaudeDir installation_date_utc = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") source_branch = $sourceBranch + installer_version = $ScriptVersion } $versionJsonPath = Join-Path $TargetClaudeDir "version.json" @@ -1024,7 +1035,10 @@ function Show-Summary { } function Main { - Show-Header + # Use SourceVersion parameter if provided, otherwise use default + $installVersion = if ($SourceVersion) { $SourceVersion } else { $DefaultVersion } + + Show-Header -InstallVersion $installVersion # Test prerequisites Write-ColorOutput "Checking system requirements..." $ColorInfo diff --git a/install-remote.ps1 b/install-remote.ps1 index df450c68..1bb6f9c5 100644 --- a/install-remote.ps1 +++ b/install-remote.ps1 @@ -563,7 +563,23 @@ function Main { } # Determine version and branch information to pass - $versionToPass = if ($Tag) { $Tag } else { "latest" } + $versionToPass = "" + if ($Tag) { + # Specific tag version + $versionToPass = $Tag -replace '^v', '' # Remove 'v' prefix + } elseif ($Version -eq "stable") { + # Auto-detected latest stable + $latestTag = Get-LatestRelease + if ($latestTag) { + $versionToPass = $latestTag -replace '^v', '' + } else { + $versionToPass = "latest" + } + } else { + # Latest development or branch + $versionToPass = "latest" + } + $branchToPass = if ($Version -eq "branch") { $Branch } elseif ($Version -eq "latest") { "main" } elseif ($Tag) { $Tag } else { "main" } Write-ColorOutput "Version info: $versionToPass (branch: $branchToPass)" $ColorInfo diff --git a/install-remote.sh b/install-remote.sh index 902852f6..30d1b62e 100644 --- a/install-remote.sh +++ b/install-remote.sh @@ -209,6 +209,8 @@ function extract_repository() { function invoke_local_installer() { local repo_dir="$1" + local version_info="$2" + local branch_info="$3" local installer_path="${repo_dir}/Install-Claude.sh" # Make installer executable @@ -249,6 +251,15 @@ function invoke_local_installer() { params+=("-BackupAll") fi + # Pass version and branch information + if [ -n "$version_info" ]; then + params+=("-SourceVersion" "$version_info") + fi + + if [ -n "$branch_info" ]; then + params+=("-SourceBranch" "$branch_info") + fi + # Execute installer if (cd "$repo_dir" && "$installer_path" "${params[@]}"); then return 0 @@ -632,8 +643,41 @@ function main() { if [ $extract_status -eq 0 ] && [ -n "$repo_dir" ] && [ -d "$repo_dir" ]; then write_color "Extraction successful: $repo_dir" "$COLOR_SUCCESS" - # Run local installer - if invoke_local_installer "$repo_dir"; then + # Determine version and branch information to pass + local version_to_pass="" + local branch_to_pass="" + + if [ -n "$TAG_VERSION" ]; then + # Specific tag version - remove 'v' prefix + version_to_pass="${TAG_VERSION#v}" + elif [ "$VERSION_TYPE" = "stable" ]; then + # Auto-detected latest stable + local latest_tag + latest_tag=$(get_latest_release) + if [ -n "$latest_tag" ]; then + version_to_pass="${latest_tag#v}" + else + version_to_pass="latest" + fi + else + # Latest development or branch + version_to_pass="latest" + fi + + if [ "$VERSION_TYPE" = "branch" ]; then + branch_to_pass="$BRANCH" + elif [ "$VERSION_TYPE" = "latest" ]; then + branch_to_pass="main" + elif [ -n "$TAG_VERSION" ]; then + branch_to_pass="$TAG_VERSION" + else + branch_to_pass="main" + fi + + write_color "Version info: $version_to_pass (branch: $branch_to_pass)" "$COLOR_INFO" + + # Run local installer with version information + if invoke_local_installer "$repo_dir" "$version_to_pass" "$branch_to_pass"; then success=true echo "" write_color "✓ Remote installation completed successfully!" "$COLOR_SUCCESS"