Skip to content

Releases: LordKnish/StreamGrid

StreamGrid v2.0.0 - Automation & Advanced Controls

25 Oct 06:15
6b39394

Choose a tag to compare

🎉 Major Features

REST API for External Control (Closes #17)

  • Complete REST API with 7 endpoints for programmatic control
  • Stream management: GET, POST, PUT, DELETE /api/streams
  • Grid management: GET, POST /api/grids, PUT /api/grids/:id/load
  • API key authentication with Bearer token support
  • Rate limiting (100 requests per 15 minutes per IP)
  • CORS support for cross-origin requests
  • Comprehensive API documentation (docs/API.md)
  • Bruno API test collection for easy testing (bruno/README.md)
  • Settings UI with API key generation and server controls
  • Disabled by default (user opt-in for security)

RTSP Stream Support

  • Production-ready RTSP/RTSPS streaming with FFmpeg transcoding
  • Express server on localhost:8100 for HLS segment delivery
  • Support for authentication (username:password in URL)
  • Multiple concurrent RTSP streams with isolated directories
  • Automatic retry logic (3 attempts with exponential backoff)
  • Low-latency transcoding (2-second HLS segments)
  • Progressive loading messages for better UX
  • Automatic resource cleanup on stream stop and app quit
  • Comprehensive error handling and FFmpeg availability checking

M3U Playlist Import

  • Import M3U/M3U8 playlists with one click
  • Automatic grid arrangement with intelligent layout algorithm
  • Support for UTF-16 encoded playlists (LE and BE)
  • Viewport-aware grid sizing for optimal display
  • Row-budget constrained integer grid algorithm
  • Support for both local files and remote URLs

Sound Management System (Closes #15)

  • Global mute/unmute all streams with single button
  • Per-stream audio controls for individual management
  • Auto-start streams muted option
  • Default mute setting for new streams
  • Persistent audio state across sessions
  • Settings dialog for audio preferences

Auto-Start Streams on Launch (Closes #19)

  • Automatically play all streams when app opens
  • Configurable startup delay (0-5 seconds)
  • Perfect for monitoring and surveillance setups
  • Toggle in settings for user control
  • Respects mute settings during auto-start

Auto-Restart Failed Streams (Closes #16)

  • Automatic retry with exponential backoff (30s, 60s, 120s)
  • Configurable max retry attempts (default: 3)
  • Manual retry button for failed streams
  • Retry status indicators in UI
  • Persistent retry settings across sessions
  • Smart error detection and recovery

Auto-Arrange Grid

  • Intelligent grid layout with row-budget algorithm
  • Viewport-aware sizing for optimal space utilization
  • Optimal stream distribution across rows
  • One-click grid organization
  • Maintains aspect ratios during arrangement

🐛 Bug Fixes

Linux Auto-Updater (Closes #18)

  • Fixed missing latest-linux.yml errors
  • Graceful handling of update check failures
  • Non-intrusive error logging for update issues
  • Improved error handling for missing update files

Twitch Embedding

  • Resolved Content Security Policy (CSP) violations
  • Fixed Twitch stream embedding issues
  • Improved iframe handling for Twitch streams

Build System

  • Fixed TypeScript compilation errors in rtspService.ts
  • Resolved electron-updater import failures in production builds
  • Improved error handling for missing dependencies
  • Enhanced build reliability across all platforms

Stream Management

  • Enhanced error handling across all components
  • Improved RTSP URL validation and detection
  • Fixed ReactPlayer race conditions with RTSP streams
  • Added Express server request logging for debugging
  • Enhanced FFmpeg output logging for troubleshooting

🔧 Technical Improvements

New Dependencies

  • cors@^2.8.5 - CORS support for REST API
  • express-rate-limit@^8.1.0 - API rate limiting
  • fluent-ffmpeg@^2.1.3 - RTSP transcoding (already present)
  • express@^5.1.0 - REST API server (already present)

New Files Created

  • src/main/apiServer.ts (390 lines) - REST API implementation
  • src/main/apiAuth.ts (79 lines) - API authentication middleware
  • src/main/rtspService.ts (454 lines) - RTSP transcoding service
  • src/shared/types/api.ts (21 lines) - API type definitions
  • src/shared/types/rtsp.ts (38 lines) - RTSP type definitions
  • docs/API.md (455 lines) - Complete API documentation
  • bruno/*.bru - Bruno API test collection
  • src/renderer/src/components/M3U8ImportDialog.tsx - M3U playlist import UI
  • src/renderer/src/components/AutoArrangeDialog.tsx - Auto-arrange UI
  • src/renderer/src/utils/m3u8Parser.ts - M3U playlist parser

Architecture Changes

  • Express REST server in main process (port 3737)
  • Express HLS server for RTSP (port 8100)
  • IPC bridge for renderer-main API communication
  • Shared type definitions for cross-process safety
  • FFmpeg process lifecycle management
  • Automatic server shutdown on app quit
  • Enhanced error boundaries and recovery mechanisms

Documentation

  • Complete REST API documentation with examples
  • Bruno API collection for all endpoints
  • Comprehensive RTSP setup guide in README
  • Updated README with all v2.0.0 features
  • API documentation links prominently displayed

🔄 Upgrading

This version is fully compatible with previous configurations. Your existing stream layouts and settings will be preserved.

What's Changed

  • StreamGrid v1.2.3 - Stream Video Scaling Toggle by @LordKnish in #11
  • StreamGrid v2.0.0 - Automation & Advanced Controls by @LordKnish in #20

Full Changelog: v1.2.3...v2.0.0

StreamGrid v1.2.3

01 Sep 14:02

Choose a tag to compare

🎉 New Features

Per-Stream Video Scaling Toggle

  • Added individual video scaling controls for each stream
  • Toggle between "Fit" and "Fill" modes per stream
  • Maintains aspect ratio in "Fit" mode, fills entire container in "Fill" mode
  • Settings persist across sessions

🐛 Bug Fixes

Stream Input & Validation

  • Fixed paste functionality in the Add Stream dialog
  • Improved URL validation for various stream formats
  • Enhanced clipboard event handling for better cross-browser compatibility

Content Security Policy (CSP)

  • Updated CSP to allow blob URLs for media content
  • Fixed media loading issues with certain stream types
  • Improved security while maintaining functionality

Build System

  • Fixed Linux build failures caused by 7zip extraction errors
  • Resolved "entry file does not exist" errors across all platforms
  • Fixed invalid deb package compression settings
  • Improved GitHub Actions workflow reliability

🔧 Technical Improvements

Build & Release Process

  • Separated build and release jobs for better control
  • Added system fpm installation for Linux builds
  • Implemented unsigned builds for all platforms
  • Created automated draft release workflow

Package Configuration

  • Added proper Debian package metadata
  • Updated maintainer information
  • Configured appropriate package dependencies

🔄 Upgrading

This version is fully compatible with previous configurations. Your existing stream layouts and settings will be preserved.

Full Changelog: v1.2.2...v1.2.3

StreamGrid v1.2.1 - Fixed Twitch Stream Embedding

29 Aug 05:50
ef6c6a1

Choose a tag to compare

Fixed Twitch Stream Embedding

  • Issue: Twitch streams were failing to load due to Content Security Policy (CSP) violations and missing parent parameter
  • Error Messages:
    • "Refused to frame 'https://www.twitch.tv/' because an ancestor violates the following Content Security Policy directive"
    • "Twitch embed error message:[NoParent] parent query string value was not specified"
  • Solution: Updated Twitch iframe implementation to use proper parent parameter for Electron environment
  • Affected File: src/renderer/src/components/StreamCard.tsx

Technical Details

  • Implemented request interception in Electron main process to add parent parameter to Twitch embeds
  • Removes Content-Security-Policy headers from Twitch responses
  • Added permissive CSP meta tag to HTML for iframe compatibility
  • Uses direct iframe embedding for Twitch streams with parent=localhost
  • ReactPlayer continues to handle all other stream types (YouTube, HLS, DASH, etc.)

What's Changed

  • fix: resolve Twitch embed CSP errors with iframe and request intercep… by @LordKnish in #8

Full Changelog: v1.2.0...v1.2.1

StreamGrid v1.2.0 – Performance Optimizations & Cross-Platform Builds

28 Aug 15:24
7567210

Choose a tag to compare

🆕 Release Notes

🎉 Major Features

Performance Upgrades

  • Virtual grid rendering with react-window for smooth performance even with 50+ streams
  • Player pooling system to reduce memory usage and speed up stream switching
  • Debounced state updates for fewer unnecessary re-renders
  • Layout calculations moved to web workers via comlink
  • Lazy-loaded chat components for lighter startup
  • Built-in performance monitoring hooks

Cross-Platform Builds

  • Production-ready installers for Windows, macOS, and Linux
  • Supported formats:
    • Windows: NSIS (.exe)
    • macOS: DMG (.dmg)
    • Linux: AppImage, DEB, RPM
  • Fixed TypeScript compilation issues blocking builds
  • Added missing minification dependency (terser)

🔧 Feature Enhancements

  • Grid management system with save, load, and preset switching
  • Import and export grid configurations
  • Local file playback support
  • Improved error handling and recovery
  • Smarter auto-save behavior (delay adjusted from 2s → 5s)

🎨 UI/UX Improvements

  • Faster startup experience
  • Smoother drag-and-drop operations within the grid
  • More reliable grid renaming and preset handling

🐛 Bug Fixes

  • Fixed Twitch streams failing to start (parent parameter added)
  • Corrected grid rename functionality
  • Fixed memory leaks caused by unmounted components
  • Cleaned up unused variable warnings

📦 Technical Details

  • New components: VirtualStreamGrid.tsx, OptimizedStreamCard.tsx, LazyChat.tsx
  • New hooks: usePerformanceMonitor, usePlayerPool, useDebouncedStore, useLayoutWorker
  • Build updates: enhanced electron-builder.yml, improved package.json scripts, fixed TS config
  • Dependencies added: react-window, react-window-infinite-loader, comlink, web-vitals

🧪 Testing

  • Validated performance with 100+ simultaneous streams at 60fps
  • Memory usage tested over extended sessions
  • Verified Windows installer (96 MB)
  • macOS and Linux builds prepared and pending community testing

This release represents a big step forward for StreamGrid, making it faster, more efficient, and available across all major desktop platforms.

Full Changelog: v1.1.0...v1.2.0

StreamGrid v1.1.0 - Multi-Platform Streaming & Chat Integration

28 Jan 14:29

Choose a tag to compare

🆕 Release Notes


🎉 Major Features:

  • Added comprehensive support for multiple streaming platforms:

    • YouTube: Standard videos, live streams, and shorts.
    • Twitch: Live streams with chat integration.
    • MPEG-DASH: Support for Dynamic Adaptive Streaming.
  • Integrated chat functionality:

    • YouTube live chat for streams and videos.
    • Twitch chat with proper embedding.
    • Draggable and resizable chat windows.
    • Auto-closing chat when a stream stops.

🔧 Technical Improvements:

  • Stream Type Detection:

    • Automatic detection of HLS, DASH, and Direct Stream formats.
    • Real-time stream type display in the "Add Stream" dialog.
    • Dynamic updates on URL changes and edits.
  • Enhanced YouTube Integration:

    • Fixed CORS issues with thumbnails using i.ytimg.com.
    • Improved name and thumbnail auto-population.
    • Standardized URL handling and cleanup.
  • Twitch Integration:

    • Added stream info auto-population.
    • Implemented live preview images.
    • Updated chat interface for multi-platform support.
    • Fixed content security policy for chat embedding.
StreamGridTwitchYoutube.mp4

🎨 UI/UX Enhancements:

  • Improved drag functionality.
  • Disabled text selection to prevent interference with drag operations.
  • Maintained existing values when editing streams.
  • Enhanced stream management interface.

🐛 Bug Fixes:

  • Resolved URL duplication issues in stream editing.
  • Fixed content security policy violations for Twitch chat.
  • Improved thumbnail loading reliability.
  • Enhanced error handling for invalid URLs.

This release represents a major step forward in StreamGrid's capabilities, adding robust multi-platform support and integrated chat functionality while improving overall stability and user experience.

Full Changelog: 1.0.2...1.1.0

StreamGrid v1.0.2: Performance Improvements & Stream Management Enhancement

27 Jan 13:10

Choose a tag to compare

🆕 Release Notes

This release brings significant improvements to performance, error handling, and stream management capabilities.


Major Improvements

  • Added a comprehensive test stream configuration bundle with 11 pre-configured streams.
  • Implemented application performance optimizations.
  • Added a loading screen for a smoother user experience.
  • Enhanced stream management and playback controls.
  • Integrated automatic GitHub release version checking.

Technical Enhancements

  • Improved error boundary implementation for better stream error handling.
  • Fixed TypeScript types and event handling across components.
  • Optimized UI components for efficient stream management.
  • Added version checking and display functionality.
  • Improved overall application stability and performance.

Stream Configuration

  • Added stream-config.json with test streams from multiple providers.
  • Configured an optimal grid layout for stream visualization.
  • Integrated support for various streaming formats:
    • HLS, MP4, and fMP4.
  • Added support for both live and VOD content testing.

This release focuses on improving the overall application stability, performance, and user experience while providing robust testing capabilities through pre-configured streams.

Full Changelog: 1.0.1...1.0.2

StreamGrid v1.0.1: Enhanced Grid Layout & UI Refinements

25 Jan 21:23

Choose a tag to compare

This release focuses on improving the core viewing experience with enhanced grid layout and UI refinements.

Key Improvements:

  • Optimized stream grid layout for better space utilization
  • Enhanced stream card design and responsiveness
  • Improved overall UI consistency and visual appeal
  • Fixed grid spacing and alignment issues
  • Better handling of stream card interactions

This update provides a more polished and reliable streaming experience while maintaining the core functionality of StreamGrid

Full Changelog: 1.0.0...1.0.1

StreamGrid v1.0.0 - Initial Release

25 Jan 19:58

Choose a tag to compare

StreamGrid v1.0.0 brings you a powerful and flexible stream viewing experience:

Key Features:
• Multi-stream Layout: Watch multiple streams simultaneously with a customizable grid layout
• Drag & Drop Interface: Easily rearrange streams within the grid
• Stream Management: Add, remove, and modify streams with an intuitive dialog interface
• HLS Support: Compatible with HLS streaming format
• Fullscreen Mode: Toggle fullscreen for an immersive viewing experience
• Responsive Design: Adapts to different window sizes and screen resolutions
• Material UI: Clean, modern interface using Material Design components

Technical Highlights:
• Built with Electron 31 and React 18
• TypeScript for enhanced reliability
• Zustand state management
• HLS.js for stream playback
• React Grid Layout for flexible stream positioning

This initial release provides a solid foundation for managing and viewing multiple streams in a single application. Perfect for users who need to monitor multiple video feeds simultaneously.

System Requirements:
• Windows 10/11 64-bit
• 4GB RAM minimum
• 100MB disk space

Full Changelog: https://github.com/LordKnish/StreamGrid/commits/1.0.0