feat: increase API timeout to 10 seconds for improved reliability dur… #86
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release | |
| on: | |
| push: | |
| tags: | |
| - "*" | |
| branches: | |
| - "main" | |
| pull_request: | |
| branches: | |
| - "main" | |
| jobs: | |
| build-windows: | |
| if: startsWith(github.ref, 'refs/tags/') | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: "18" | |
| - name: Install Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.11" | |
| architecture: "x64" | |
| - name: Setup Python and venv | |
| run: | | |
| python -m venv venv | |
| .\venv\Scripts\activate | |
| python -m pip install --upgrade pip | |
| python -m pip install wheel pyinstaller | |
| pip install -r requirements.txt | |
| - name: Build Windows Executable | |
| run: | | |
| .\venv\Scripts\activate | |
| pyinstaller --noconfirm KickViewerBOT.spec | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-build | |
| path: dist/KickViewerBOT.exe | |
| build-macos: | |
| runs-on: macos-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: "18" | |
| - name: Install Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.11" | |
| - name: Setup Python and venv | |
| run: | | |
| python -m venv venv | |
| source venv/bin/activate | |
| python -m pip install --upgrade pip | |
| python -m pip install pyinstaller | |
| pip install -r requirements.txt | |
| - name: Build MacOS App | |
| run: | | |
| source venv/bin/activate | |
| pyinstaller --noconfirm KickViewerBOT-macOS.spec | |
| - name: zip the app | |
| run: | | |
| cd dist | |
| zip -r KickViewerBOT-MacOS.zip KickViewerBOT | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-build | |
| path: dist/KickViewerBOT-MacOS.zip | |
| create-release: | |
| needs: [build-windows, build-macos] | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - name: Extract tag name | |
| id: get_version | |
| run: | | |
| echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | |
| # Check if tag contains beta, alpha, rc, or preview | |
| if [[ "${GITHUB_REF#refs/tags/}" =~ (beta|alpha|rc|preview) ]]; then | |
| echo "IS_PRERELEASE=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "IS_PRERELEASE=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Create Release | |
| id: create_release | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
| with: | |
| tag_name: ${{ github.ref }} | |
| release_name: Release ${{ steps.get_version.outputs.VERSION }} | |
| prerelease: ${{ steps.get_version.outputs.IS_PRERELEASE }} | |
| body: | | |
| # 🚀 KickViewerBOT — Stability Update & Deployment Notes | |
| ## ✨ Key Highlights | |
| ### 🔥 Stability Mode | |
| Stability Mode remains the core of this release: it maintains long-lived WebSocket connections and emulates real browser behavior to stabilize viewer counts. | |
| - 🎯 Persistent connections: regular handshakes and session maintenance | |
| - 📈 Stable viewer counts: periodic tracking events | |
| - 🛡️ Platform-friendly behavior: ping/pong, user_event, and error handling | |
| - ⚡ "Set & forget" mode with monitoring and automatic reconnection | |
| ### 🔧 Smart Port Management | |
| We've simplified deployment: the executable no longer requires administrator privileges. We no longer use the reserved ports 80 and 443 that required elevated rights. | |
| - No UAC elevation required for the Windows executable | |
| - The bot now uses non-reserved ports and automatically discovers a free port | |
| - Fewer permission and firewall issues during installation and runtime | |
| ### 🐛 Fixes & Improvements | |
| - ✅ Fixed the viewer count dropping after 1 minute (improved tracking) | |
| - ✅ Better handling of WebSocket messages and Kick protocol | |
| - ✅ Improved resilience with exponential backoff | |
| - ✅ Enhanced logging for easier debugging | |
| - ✅ Improved proxy rotation and token management | |
| - ✅ Frontend: correct display of "Active Connections" | |
| --- | |
| ## 📥 Deployment Notes (Recommended Practices) | |
| 1. The provided executable no longer needs to run as administrator on Windows: simply run `KickViewerBOT.exe` as a standard user. | |
| 2. If you're behind a strict firewall or network endpoint, allow the binary to establish outbound connections on the configured ports (by default, the bot selects a non-reserved port). | |
| 3. Check your OS/antivirus rules if the executable is blocked on first run. | |
| ## 📥 Getting Started | |
| - For Stability Mode: download and run the executable as a standard user, enable Stability Mode in settings, and adjust thread count. | |
| - For Standard Mode: works as before with short-lived connections. | |
| --- | |
| ## 💡 Why this update matters | |
| - Before: elevation was required to bind to reserved ports (caused deployment friction). | |
| - Now: simplified install and run experience, reduced friction for users. | |
| --- | |
| **Need help?** Open an issue: https://github.com/H1B0B0/Kick-Viewerbot/issues | |
| *Thanks for your support — this update makes the bot easier to deploy and more robust.* 🙏 | |
| draft: false | |
| - name: Upload Windows Release Asset | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
| with: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| asset_path: ./artifacts/windows-build/KickViewerBOT.exe | |
| asset_name: KickViewerBOT-Windows.exe | |
| asset_content_type: application/octet-stream | |
| - name: Upload MacOS Release Asset | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} | |
| with: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| asset_path: ./artifacts/macos-build/KickViewerBOT-MacOS.zip | |
| asset_name: KickViewerBOT-MacOS.zip | |
| asset_content_type: application/zip |