Skip to content

feat: increase API timeout to 10 seconds for improved reliability dur… #86

feat: increase API timeout to 10 seconds for improved reliability dur…

feat: increase API timeout to 10 seconds for improved reliability dur… #86

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