From aa70855efc8dd725bee0ab35bcc8584dccf7e4d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:38:59 +0000 Subject: [PATCH 1/2] Initial plan From f15fb62f7b3f83e57d1529ff773460da20356998 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:44:49 +0000 Subject: [PATCH 2/2] feat: add v1.0.0 release features and release workflow - Add __version__ = "1.0.0" constant to qoder_reset_gui.py - Add version display in GUI status bar - Create GitHub Actions release workflow (.github/workflows/release.yml) triggered on tag push (v*) to build and publish releases - Update CHANGELOG.md with version management features for 1.0.0 - Add version badge to README.md Co-authored-by: VoDaiLocz <88762074+VoDaiLocz@users.noreply.github.com> --- .github/workflows/release.yml | 113 ++++++++++++++++++++++++++++++++++ CHANGELOG.md | 12 ++-- README.md | 1 + qoder_reset_gui.py | 12 ++++ 4 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fbec2a1 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,113 @@ +name: Release + +on: + push: + tags: + - 'v*' + +permissions: + contents: write + +jobs: + build: + name: Build on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.9' + + - name: Install system dependencies (Linux) + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install -y xvfb libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pyinstaller + + - name: Build executable (Windows) + if: runner.os == 'Windows' + run: | + pyinstaller --onefile --windowed --name "QoderResetTool" qoder_reset_gui.py + + - name: Build executable (macOS) + if: runner.os == 'macOS' + run: | + pyinstaller --onefile --windowed --name "QoderResetTool" qoder_reset_gui.py + + - name: Build executable (Linux) + if: runner.os == 'Linux' + run: | + pyinstaller --onefile --windowed --name "QoderResetTool" qoder_reset_gui.py + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: qoder-reset-tool-${{ runner.os }} + path: dist/ + + release: + name: Create GitHub Release + needs: [build] + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + + - name: Create release archives + run: | + cd qoder-reset-tool-Linux && tar -czf ../qoder-reset-tool-linux.tar.gz * && cd .. + cd qoder-reset-tool-Windows && zip -r ../qoder-reset-tool-windows.zip * && cd .. + cd qoder-reset-tool-macOS && tar -czf ../qoder-reset-tool-macos.tar.gz * && cd .. + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + name: "Qoder-Free ${{ github.ref_name }}" + body: | + ## Qoder-Free ${{ github.ref_name }} + + ### ✨ Features + - One-click reset functionality for Qoder application data + - Machine ID reset with UUID generation + - Telemetry data cleanup and privacy protection + - Deep identity cleanup with comprehensive file removal + - Hardware fingerprint reset for advanced anti-detection + - Multi-language support (English, Vietnamese, Chinese, Russian) + - Cross-platform compatibility (Windows, macOS, Linux) + - Modern PyQt5-based GUI with professional styling + - Version display in status bar + + ### 📦 Downloads + - **Windows**: `qoder-reset-tool-windows.zip` + - **macOS**: `qoder-reset-tool-macos.tar.gz` + - **Linux**: `qoder-reset-tool-linux.tar.gz` + + ### 📋 Requirements + - Python 3.7+ (if running from source) + - PyQt5 >= 5.15.0 + - requests >= 2.25.0 + files: | + qoder-reset-tool-linux.tar.gz + qoder-reset-tool-windows.zip + qoder-reset-tool-macos.tar.gz + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b5e6cb..10427e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Added -- Initial release preparation -- Professional documentation -- GitHub Actions workflow - -## [1.0.0] - 2024-08-31 +## [1.0.0] - 2025-03-05 ### Added - **Core Features** @@ -22,6 +17,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Deep identity cleanup with comprehensive file removal - Hardware fingerprint reset for advanced anti-detection +- **Version Management** + - Added `__version__` constant for programmatic version access + - Version display in GUI status bar + - GitHub Actions release workflow for automated releases on tag push + - **Multi-Language Support** - English (en) - Full support - Vietnamese (vi) - Tiếng Việt diff --git a/README.md b/README.md index 4465ff4..6e7c784 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Qoder Reset Tool 🔒 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/locfaker/Qoder-Free/releases/tag/v1.0.0) [![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/) [![PyQt5](https://img.shields.io/badge/GUI-PyQt5-green.svg)](https://pypi.org/project/PyQt5/) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/locfaker/Qoder-Free) diff --git a/qoder_reset_gui.py b/qoder_reset_gui.py index 4165d8f..1b15d9b 100644 --- a/qoder_reset_gui.py +++ b/qoder_reset_gui.py @@ -4,6 +4,8 @@ Implemented using PyQt5, fully designed according to user prototype """ +__version__ = "1.0.0" + import os import sys import json @@ -435,6 +437,16 @@ def init_ui(self): } """) + # Status bar with version info + self.statusBar().showMessage(f"Qoder-Free v{__version__}") + self.statusBar().setStyleSheet(""" + QStatusBar { + background-color: #ecf0f1; + color: #7f8c8d; + font-size: 12px; + } + """) + # Initialize status check self.initialize_status_check()