Skip to content

Feature/streamlink integration - #35

Merged
BP602 merged 7 commits into
mainfrom
feature/streamlink-integration
Sep 10, 2025
Merged

BP602 merged 7 commits into
mainfrom
feature/streamlink-integration

Conversation

@BP602

@BP602 BP602 commented Sep 10, 2025

Copy link
Copy Markdown
Owner

Summary

Enhances the existing Streamlink integration with improved UX and better error handling:

Native notifications: Replaces window.alert with Electron's native dialog system for better user experience
Availability checks: Validates Streamlink installation before attempting to launch, with automatic fallback
Install guidance: Adds direct Install Streamlink button in settings when not available
Improved UI: Better placeholder text and error states

Changes Made

Notification System

  • Added utils:showNotification IPC handler using Electron's native dialog.showMessageBox
  • Replaced window.alert calls with customizable native dialogs (warning type, custom titles)
  • Consistent notification styling across the app

Streamlink Integration Improvements

  • Added availability checks before launch attempts in StreamerInfo and ChatroomTab components
  • Automatic disabling of Streamlink setting when not available
  • Install button linking to official Streamlink installation page
  • Updated placeholder text from "Not found" to "Not installed"

Files Modified

  • src/main/index.js: Added notification IPC handler and Streamlink detection logic
  • src/preload/index.js: Added showNotification to utils API
  • src/renderer/src/components/Chat/StreamerInfo.jsx: Added availability checks and notifications
  • src/renderer/src/components/Navbar/ChatroomTab.jsx: Added availability checks and notifications
  • src/renderer/src/components/Dialogs/Settings/Sections/General.jsx: Added install button and improved messaging

Test Plan

  • Test availability check when Streamlink is installed
  • Test availability check when Streamlink is not installed
  • Test notification dialogs display properly
  • Test install button opens correct URL
  • Test automatic setting disable/enable behavior

  - 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
…tall guidance

This captures the addition of Streamlink availability detection, automatic disabling, user alerts, and the new install button in settings, improving the user experience for external player integration.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codex Review: Here are some suggestions.

Reply with @codex fix comments to fix any unresolved comments.

About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you open a pull request for review, mark a draft as ready, or comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex fix this CI failure" or "@codex address that feedback".

Comment thread src/main/index.js
- Use spawnSync with --version to verify streamlink is actually available
- Fixes false positive detection when streamlink not in PATH
- Addresses Codex review feedback about availability gating
- Add windowsHide: true to spawn options to prevent scary black console window
- Improves UX by eliminating virus-like appearance on Windows systems
- Cross-platform safe (ignored on macOS/Linux)
- Consistent with existing findStreamlink() implementation
- Resolved conflicts by keeping feature improvements
- Preserves notification system, availability checks, and Windows terminal hiding
- Incorporates latest changes from main branch
@BP602
BP602 merged commit 14f78a6 into main Sep 10, 2025
5 checks passed
@BP602
BP602 deleted the feature/streamlink-integration branch September 10, 2025 17:26
thedrkness pushed a commit that referenced this pull request Oct 6, 2025
* Fix cross-platform icon compatibility

- Add cross-platform icon handling for Linux/macOS support
- Convert Windows .ico to .png for non-Windows platforms
- Update tray and thumbar icons to use platform-appropriate format

Fixes application crashes on Linux due to unsupported .ico format

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: add missing dependencies @lexical/text and lodash

Resolves #35

- Add @lexical/text dependency required by Chat Input component
- Add lodash dependency required by hooks utility
- These dependencies were missing from package.json preventing compilation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

1 participant