mirror of
https://git.axenov.dev/mirrors/cursor-free-vip.git
synced 2026-01-03 09:19:27 +03:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad98bed98d | ||
|
|
6f2ec1b373 | ||
|
|
5574091273 | ||
|
|
0226c9e735 | ||
|
|
375347a7a5 | ||
|
|
8301ea74d5 | ||
|
|
96981a2c37 | ||
|
|
975647765d | ||
|
|
808b1ba3dc | ||
|
|
9595a8792f | ||
|
|
6b5dfab362 |
@@ -1,5 +1,10 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## v1.7.09
|
||||||
|
1. Add: Development Version Check | 增加開發版本檢查
|
||||||
|
2. Remove: Github Trial Reset | 移除 Github 試用重置
|
||||||
|
3. Fixed: Some Issues | 修復一些問題
|
||||||
|
|
||||||
## v1.7.08
|
## v1.7.08
|
||||||
1. Add: Google OAuth Authentication | 增加 Google OAuth 認證
|
1. Add: Google OAuth Authentication | 增加 Google OAuth 認證
|
||||||
2. Add: GitHub OAuth Authentication | 增加 GitHub OAuth 認證
|
2. Add: GitHub OAuth Authentication | 增加 GitHub OAuth 認證
|
||||||
|
|||||||
@@ -14,7 +14,8 @@
|
|||||||
"program_terminated": "Program was terminated by user",
|
"program_terminated": "Program was terminated by user",
|
||||||
"error_occurred": "An error occurred: {error}. Please try again",
|
"error_occurred": "An error occurred: {error}. Please try again",
|
||||||
"press_enter": "Press Enter to Exit",
|
"press_enter": "Press Enter to Exit",
|
||||||
"disable_auto_update": "Disable Cursor Auto-Update"
|
"disable_auto_update": "Disable Cursor Auto-Update",
|
||||||
|
"lifetime_access_enabled": "LIFETIME ACCESS ENABLED"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "English",
|
||||||
@@ -278,6 +279,7 @@
|
|||||||
"continue_anyway": "Continuing with current version...",
|
"continue_anyway": "Continuing with current version...",
|
||||||
"update_confirm": "Do you want to update to the latest version? (Y/n)",
|
"update_confirm": "Do you want to update to the latest version? (Y/n)",
|
||||||
"update_skipped": "Skipping update.",
|
"update_skipped": "Skipping update.",
|
||||||
"invalid_choice": "Invalid choice. Please enter 'Y' or 'n'."
|
"invalid_choice": "Invalid choice. Please enter 'Y' or 'n'.",
|
||||||
|
"development_version": "Development Version {current} > {latest}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,8 @@
|
|||||||
"program_terminated": "Chương trình đã bị người dùng chấm dứt",
|
"program_terminated": "Chương trình đã bị người dùng chấm dứt",
|
||||||
"error_occurred": "Đã xảy ra lỗi: {error}. Vui lòng thử lại",
|
"error_occurred": "Đã xảy ra lỗi: {error}. Vui lòng thử lại",
|
||||||
"press_enter": "Nhấn Enter để Thoát",
|
"press_enter": "Nhấn Enter để Thoát",
|
||||||
"disable_auto_update": "Tắt Tự Động Cập Nhật Cursor"
|
"disable_auto_update": "Tắt Tự Động Cập Nhật Cursor",
|
||||||
|
"lifetime_access_enabled": "LIFETIME ACCESS ENABLED"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "English",
|
||||||
@@ -276,6 +277,7 @@
|
|||||||
"continue_anyway": "Tiếp Tục Với Phiên Bản Hiện Tại...",
|
"continue_anyway": "Tiếp Tục Với Phiên Bản Hiện Tại...",
|
||||||
"update_confirm": "Bạn Có Muốn Cập Nhật Lên Phiên Bản Mới Nhất Không? (Y/n)",
|
"update_confirm": "Bạn Có Muốn Cập Nhật Lên Phiên Bản Mới Nhất Không? (Y/n)",
|
||||||
"update_skipped": "Bỏ Qua Cập Nhật.",
|
"update_skipped": "Bỏ Qua Cập Nhật.",
|
||||||
"invalid_choice": "Lựa Chọn Không Hợp Lệ. Vui Lòng Nhập 'Y' Hoặc 'n'."
|
"invalid_choice": "Lựa Chọn Không Hợp Lệ. Vui Lòng Nhập 'Y' Hoặc 'n'.",
|
||||||
|
"development_version": "Phiên Bản Phát Triển {current} > {latest}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,8 @@
|
|||||||
"program_terminated": "程序已被用户终止",
|
"program_terminated": "程序已被用户终止",
|
||||||
"error_occurred": "发生错误:{error},请重试",
|
"error_occurred": "发生错误:{error},请重试",
|
||||||
"press_enter": "按回车键退出",
|
"press_enter": "按回车键退出",
|
||||||
"disable_auto_update": "禁用 Cursor 自动更新"
|
"disable_auto_update": "禁用 Cursor 自动更新",
|
||||||
|
"lifetime_access_enabled": "永久订阅"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "English",
|
||||||
@@ -274,6 +275,7 @@
|
|||||||
"continue_anyway": "继续使用当前版本...",
|
"continue_anyway": "继续使用当前版本...",
|
||||||
"update_confirm": "是否要更新到最新版本? (Y/n)",
|
"update_confirm": "是否要更新到最新版本? (Y/n)",
|
||||||
"update_skipped": "跳过更新。",
|
"update_skipped": "跳过更新。",
|
||||||
"invalid_choice": "选择无效。请输入 'Y' 或 'n'."
|
"invalid_choice": "选择无效。请输入 'Y' 或 'n'.",
|
||||||
|
"development_version": "开发版本 {current} > {latest}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,8 @@
|
|||||||
"program_terminated": "程式已被使用者終止",
|
"program_terminated": "程式已被使用者終止",
|
||||||
"error_occurred": "發生錯誤:{error},請重試",
|
"error_occurred": "發生錯誤:{error},請重試",
|
||||||
"press_enter": "按返回鍵退出",
|
"press_enter": "按返回鍵退出",
|
||||||
"disable_auto_update": "停用 Cursor 自動更新"
|
"disable_auto_update": "停用 Cursor 自動更新",
|
||||||
|
"lifetime_access_enabled": "永久訂閱"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"en": "English",
|
"en": "English",
|
||||||
@@ -254,6 +255,7 @@
|
|||||||
"continue_anyway": "繼續使用當前版本...",
|
"continue_anyway": "繼續使用當前版本...",
|
||||||
"update_confirm": "是否要更新到最新版本? (Y/n)",
|
"update_confirm": "是否要更新到最新版本? (Y/n)",
|
||||||
"update_skipped": "跳過更新。",
|
"update_skipped": "跳過更新。",
|
||||||
"invalid_choice": "選擇無效。請輸入 'Y' 或 'n'."
|
"invalid_choice": "選擇無效。請輸入 'Y' 或 'n'.",
|
||||||
|
"development_version": "開發版本 {current} > {latest}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
32
main.py
32
main.py
@@ -220,9 +220,9 @@ def print_menu():
|
|||||||
print(f"{Fore.GREEN}1{Style.RESET_ALL}. {EMOJI['RESET']} {translator.get('menu.reset')}")
|
print(f"{Fore.GREEN}1{Style.RESET_ALL}. {EMOJI['RESET']} {translator.get('menu.reset')}")
|
||||||
print(f"{Fore.GREEN}2{Style.RESET_ALL}. {EMOJI['SUCCESS']} {translator.get('menu.register')}")
|
print(f"{Fore.GREEN}2{Style.RESET_ALL}. {EMOJI['SUCCESS']} {translator.get('menu.register')}")
|
||||||
print(f"{Fore.GREEN}3{Style.RESET_ALL}. 🌟 {translator.get('menu.register_google')}")
|
print(f"{Fore.GREEN}3{Style.RESET_ALL}. 🌟 {translator.get('menu.register_google')}")
|
||||||
print(f"{Fore.YELLOW} ┗━━ 🔥 LIFETIME ACCESS ENABLED 🔥{Style.RESET_ALL}")
|
print(f"{Fore.YELLOW} ┗━━ 🔥 {translator.get('menu.lifetime_access_enabled')} 🔥{Style.RESET_ALL}")
|
||||||
print(f"{Fore.GREEN}4{Style.RESET_ALL}. ⭐ {translator.get('menu.register_github')}")
|
print(f"{Fore.GREEN}4{Style.RESET_ALL}. ⭐ {translator.get('menu.register_github')}")
|
||||||
print(f"{Fore.YELLOW} ┗━━ 🚀 LIFETIME ACCESS ENABLED 🚀{Style.RESET_ALL}")
|
print(f"{Fore.YELLOW} ┗━━ 🚀 {translator.get('menu.lifetime_access_enabled')} 🚀{Style.RESET_ALL}")
|
||||||
print(f"{Fore.GREEN}5{Style.RESET_ALL}. {EMOJI['SUCCESS']} {translator.get('menu.register_manual')}")
|
print(f"{Fore.GREEN}5{Style.RESET_ALL}. {EMOJI['SUCCESS']} {translator.get('menu.register_manual')}")
|
||||||
print(f"{Fore.GREEN}6{Style.RESET_ALL}. {EMOJI['ERROR']} {translator.get('menu.quit')}")
|
print(f"{Fore.GREEN}6{Style.RESET_ALL}. {EMOJI['ERROR']} {translator.get('menu.quit')}")
|
||||||
print(f"{Fore.GREEN}7{Style.RESET_ALL}. {EMOJI['LANG']} {translator.get('menu.select_language')}")
|
print(f"{Fore.GREEN}7{Style.RESET_ALL}. {EMOJI['LANG']} {translator.get('menu.select_language')}")
|
||||||
@@ -281,7 +281,27 @@ def check_latest_version():
|
|||||||
if not latest_version:
|
if not latest_version:
|
||||||
raise Exception("Invalid version format received")
|
raise Exception("Invalid version format received")
|
||||||
|
|
||||||
if latest_version != version:
|
# Parse versions for proper comparison
|
||||||
|
def parse_version(version_str):
|
||||||
|
"""Parse version string into tuple for proper comparison"""
|
||||||
|
try:
|
||||||
|
return tuple(map(int, version_str.split('.')))
|
||||||
|
except ValueError:
|
||||||
|
# Fallback to string comparison if parsing fails
|
||||||
|
return version_str
|
||||||
|
|
||||||
|
current_version_tuple = parse_version(version)
|
||||||
|
latest_version_tuple = parse_version(latest_version)
|
||||||
|
|
||||||
|
# Compare versions properly
|
||||||
|
is_newer_version_available = False
|
||||||
|
if isinstance(current_version_tuple, tuple) and isinstance(latest_version_tuple, tuple):
|
||||||
|
is_newer_version_available = current_version_tuple < latest_version_tuple
|
||||||
|
else:
|
||||||
|
# Fallback to string comparison
|
||||||
|
is_newer_version_available = version != latest_version
|
||||||
|
|
||||||
|
if is_newer_version_available:
|
||||||
print(f"\n{Fore.YELLOW}{EMOJI['INFO']} {translator.get('updater.new_version_available', current=version, latest=latest_version)}{Style.RESET_ALL}")
|
print(f"\n{Fore.YELLOW}{EMOJI['INFO']} {translator.get('updater.new_version_available', current=version, latest=latest_version)}{Style.RESET_ALL}")
|
||||||
|
|
||||||
# Ask user if they want to update
|
# Ask user if they want to update
|
||||||
@@ -328,7 +348,11 @@ def check_latest_version():
|
|||||||
print(f"{Fore.YELLOW}{EMOJI['INFO']} {translator.get('updater.manual_update_required')}{Style.RESET_ALL}")
|
print(f"{Fore.YELLOW}{EMOJI['INFO']} {translator.get('updater.manual_update_required')}{Style.RESET_ALL}")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {translator.get('updater.up_to_date')}{Style.RESET_ALL}")
|
# If current version is newer or equal to latest version
|
||||||
|
if current_version_tuple > latest_version_tuple:
|
||||||
|
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {translator.get('updater.development_version', current=version, latest=latest_version)}{Style.RESET_ALL}")
|
||||||
|
else:
|
||||||
|
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {translator.get('updater.up_to_date')}{Style.RESET_ALL}")
|
||||||
|
|
||||||
except requests.exceptions.RequestException as e:
|
except requests.exceptions.RequestException as e:
|
||||||
print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('updater.network_error', error=str(e))}{Style.RESET_ALL}")
|
print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('updater.network_error', error=str(e))}{Style.RESET_ALL}")
|
||||||
|
|||||||
Reference in New Issue
Block a user