Releases: LordKnish/StreamGrid
StreamGrid v2.0.0 - Automation & Advanced Controls
🎉 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.ymlerrors - 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 APIexpress-rate-limit@^8.1.0- API rate limitingfluent-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 implementationsrc/main/apiAuth.ts(79 lines) - API authentication middlewaresrc/main/rtspService.ts(454 lines) - RTSP transcoding servicesrc/shared/types/api.ts(21 lines) - API type definitionssrc/shared/types/rtsp.ts(38 lines) - RTSP type definitionsdocs/API.md(455 lines) - Complete API documentationbruno/*.bru- Bruno API test collectionsrc/renderer/src/components/M3U8ImportDialog.tsx- M3U playlist import UIsrc/renderer/src/components/AutoArrangeDialog.tsx- Auto-arrange UIsrc/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
🎉 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
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
🆕 Release Notes
🎉 Major Features
Performance Upgrades
- Virtual grid rendering with
react-windowfor 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, improvedpackage.jsonscripts, 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
🆕 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.
- Fixed CORS issues with thumbnails using
-
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
🆕 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.jsonwith 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
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
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