Skip to content

feat: add Streamlink integration with comprehensive settings UI#26

Merged
BP602 merged 3 commits intomainfrom
feature/streamlink-integration
Sep 3, 2025
Merged

feat: add Streamlink integration with comprehensive settings UI#26
BP602 merged 3 commits intomainfrom
feature/streamlink-integration

Conversation

@BP602
Copy link
Owner

@BP602 BP602 commented Sep 3, 2025

Summary

Implements complete Streamlink integration for KickTalk, allowing users to open Kick streams in external media players like VLC, mpv, etc.

Features Added

  • External Players Settings Section: New dedicated settings UI under General > External Players
  • Context Menu Integration: Added Streamlink options to both StreamerInfo and ChatroomTab right-click menus
  • Cross-Platform Support: Automatic Streamlink detection for Windows, macOS, and Linux
  • Quality Selection: Full quality dropdown including audio_only, 1080p60, 720p, etc.
  • Custom Player Support: Configure any media player (VLC, mpv, custom paths)
  • Optimized Streaming: Default low-latency arguments for minimal stream delay
  • Proper UI Styling: Text inputs match existing settings design consistency

Implementation Details

  • IPC Communication: Secure main-renderer process communication for Streamlink operations
  • Settings Schema: Complete configuration schema with validation and defaults
  • Error Handling: Comprehensive error handling and user feedback
  • Platform Detection: Smart Streamlink discovery across different installation methods

Technical Changes

  • src/main/index.js: Streamlink detection, launch logic, IPC handlers
  • src/preload/index.js: Renderer API extensions for Streamlink functions
  • utils/config.js: Settings schema for Streamlink configuration
  • src/renderer/src/components/Dialogs/Settings/: Complete settings UI implementation
  • src/renderer/src/assets/styles/dialogs/Settings.scss: New settingTextInput styling
  • Context menu updates in StreamerInfo and ChatroomTab components

Test plan

  • Enable Streamlink in External Players settings
  • Test different quality options (best, 1080p, 720p, audio_only)
  • Verify player command configuration (vlc, mpv, custom paths)
  • Test custom arguments for low-latency optimization
  • Right-click context menus show Streamlink option when enabled
  • Cross-platform functionality (if possible to test)
  • Error handling when Streamlink not installed

Fixes #25

  - Implement complete Streamlink integration for external media player support
  - Add External Players settings section with quality selection and custom arguments
  - Include context menu options in both StreamerInfo and ChatroomTab components
  - Cross-platform Streamlink detection (Windows, macOS, Linux)
  - Optimized low-latency streaming defaults
  - Proper text input styling consistency with existing settings UI
  - Support for all quality options including audio_only
  - VLC as default player with mpv and custom player support
  - Settings validation and error handling throughout
  - IPC handlers for secure main-renderer communication

  Fixes #25
…ility

  - Add automatic fallback from specific quality to "best" when quality unavailable
  - Fix race condition between spawn/exit events causing false timeouts
  - Improve success detection for long-running Streamlink processes
  - Increase timeout for fallback attempts (25s) vs initial (20s)
  - Remove quality display from context menus to avoid stale information
  - Update settings tooltip to mention automatic fallback behavior

  Resolves issue where selecting unavailable stream quality (e.g. 1080p60)
  would fail instead of falling back to available quality.
…n\n- Validate username slug in main before launching Streamlink\n- Default player to empty string for auto-detect\n- Subscribe to store updates in StreamerInfo and ChatroomTab\n- Disable quality dropdown when Streamlink is disabled\n- Gate enabling Streamlink with availability check + alert\n- Add Streamlink Path field with Refresh in Settings\n- Update tooltip/placeholder to reflect auto-detect default
@BP602 BP602 merged commit 984bf67 into main Sep 3, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Add Streamlink integration for external stream playback

1 participant