diff --git a/BRANCH_PREFIX_FIX.md b/BRANCH_PREFIX_FIX.md new file mode 100644 index 000000000..0d0fadf2d --- /dev/null +++ b/BRANCH_PREFIX_FIX.md @@ -0,0 +1,95 @@ +# Branch Prefix Fix - v2.5.5-dev Issue Resolved + +## Problem Identified + +The user discovered that when trying to install `2.5.5-dev`, the installer was incorrectly trying to access: +``` +https://raw.githubusercontent.com/usmannasir/cyberpanel/2.5.5-dev/requirments.txt +``` + +But the actual branch exists as `v2.5.5-dev` (with the `v` prefix): +``` +https://github.com/usmannasir/cyberpanel/blob/v2.5.5-dev/requirments.txt +``` + +## Root Cause + +The `Branch_Check()` function in `cyberpanel.sh` was not properly handling development version branch names. When a user entered `2.5.5-dev`, the code was setting `Branch_Name="2.5.5-dev"` instead of adding the required `v` prefix to make it `v2.5.5-dev`. + +## Solution Applied + +### 1. Enhanced Branch Name Logic +Updated the `Branch_Check()` function to automatically add the `v` prefix for development branches: + +```bash +# Handle both stable and development versions +if [[ "$1" =~ -dev$ ]]; then + # Add 'v' prefix for development branches if not already present + if [[ "$1" =~ ^v.*-dev$ ]]; then + Branch_Name="${1//[[:space:]]/}" + else + Branch_Name="v${1//[[:space:]]/}" + fi + echo -e "\nSet branch name to $Branch_Name (development version)..." +``` + +### 2. Updated User Guidance +Modified the version prompt to clarify that the `v` prefix will be automatically added: + +``` +2.5.5-dev (development version - will auto-add 'v' prefix) +v2.3.5-dev (development version with 'v' prefix) +``` + +## Verification + +✅ **Confirmed**: The `v2.5.5-dev` branch exists and is accessible +✅ **Confirmed**: The requirements file is available at the correct URL +✅ **Confirmed**: The fix handles both formats (`2.5.5-dev` and `v2.5.5-dev`) + +## Impact + +- Users can now enter `2.5.5-dev` and it will automatically work as `v2.5.5-dev` +- Existing users who were already using `v2.5.5-dev` format continue to work +- No breaking changes to existing functionality +- Clearer user guidance about branch naming + +## Files Modified + +- `cyberpanel/cyberpanel.sh` - Enhanced `Branch_Check()` function +- `cyberpanel/tools/test_fixes.sh` - Updated test cases +- `cyberpanel/BRANCH_PREFIX_FIX.md` - This documentation + +## Test Results + +```bash +# Test 1: Non-existent branch (should fail) +curl -I https://raw.githubusercontent.com/usmannasir/cyberpanel/2.5.5-dev/requirments.txt +# Result: 404 Not Found ✅ + +# Test 2: Correct branch name (should work) +curl -I https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/requirments.txt +# Result: 200 OK ✅ +``` + +## Installation Examples + +### Now Works: +```bash +sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh) +# When prompted, enter: 2.5.5-dev +# Will automatically use: v2.5.5-dev +``` + +### Still Works: +```bash +sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh) +# When prompted, enter: v2.5.5-dev +# Will use: v2.5.5-dev (no change) +``` + +--- + +**Fix Applied**: September 24, 2025 +**Issue**: Branch prefix missing for development versions +**Status**: ✅ Resolved diff --git a/cyberpanel.sh b/cyberpanel.sh index a83ce3ca0..b8f103891 100644 --- a/cyberpanel.sh +++ b/cyberpanel.sh @@ -545,7 +545,12 @@ if [[ "$1" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-dev)?$ ]]; then else # Handle both stable and development versions if [[ "$1" =~ -dev$ ]]; then - Branch_Name="${1//[[:space:]]/}" + # Add 'v' prefix for development branches if not already present + if [[ "$1" =~ ^v.*-dev$ ]]; then + Branch_Name="${1//[[:space:]]/}" + else + Branch_Name="v${1//[[:space:]]/}" + fi echo -e "\nSet branch name to $Branch_Name (development version)..." # Check if the development branch exists @@ -1241,12 +1246,13 @@ fi echo -e "\nPress \e[31mEnter\e[39m key to continue with latest version or Enter specific version such as:" echo -e " \e[31m2.4.4\e[39m (stable version)" echo -e " \e[31m2.5.0\e[39m (stable version)" -echo -e " \e[31mv2.3.5-dev\e[39m (development version - note: use 'v' prefix)" +echo -e " \e[31m2.5.5-dev\e[39m (development version - will auto-add 'v' prefix)" +echo -e " \e[31mv2.3.5-dev\e[39m (development version with 'v' prefix)" echo -e " \e[31mv2.3.4\e[39m (stable version)" echo -e " \e[31mb05d9cb5bb3c277b22a6070f04844e8a7951585b\e[39m (specific commit)" echo -e " \e[31mb05d9cb\e[39m (short commit hash)" echo -e "" -echo -e "\e[33mNote: The '2.5.5-dev' branch does not exist. Use 'v2.3.5-dev' instead.\e[39m" +echo -e "\e[33mNote: Development versions will automatically get 'v' prefix if not provided.\e[39m" printf "%s" "" read -r Tmp_Input diff --git a/tools/test_fixes.sh b/tools/test_fixes.sh index 53d3a8c56..a0dadf009 100644 --- a/tools/test_fixes.sh +++ b/tools/test_fixes.sh @@ -10,11 +10,18 @@ echo "" echo "Test 1: Testing requirements file fallback logic..." echo "Testing non-existent branch (should show 404)..." if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/2.5.5-dev/requirments.txt" | grep -q "404 Not Found"; then - echo "✅ Non-existent branch correctly returns 404" + echo "✅ Non-existent branch (without 'v' prefix) correctly returns 404" else echo "❌ Non-existent branch test failed" fi +echo "Testing v2.5.5-dev branch (should show 200)..." +if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/requirments.txt" | grep -q "200 OK"; then + echo "✅ v2.5.5-dev branch correctly returns 200" +else + echo "❌ v2.5.5-dev branch test failed" +fi + echo "Testing existing commit (should show 200)..." if curl -s -I "https://raw.githubusercontent.com/usmannasir/cyberpanel/b05d9cb5bb3c277b22a6070f04844e8a7951585b/requirments.txt" | grep -q "200 OK"; then echo "✅ Existing commit correctly returns 200"