- 26 Aug, 2025 15 commits
-
-
Stefy Lanza (nextime / spora ) authored
Critical Fixes: - Fixed SQLite NOT NULL constraint violation in bet creation API by properly extracting fixture_id from match data - Resolved 500 error in bet details page route by implementing complete database data fetching and template variable population - Fixed moment() undefined template rendering error by removing server-side JavaScript calls and using client-side time handling - Corrected JavaScript API endpoint mismatches (POST /cancel vs DELETE /bets/{uuid}) and added missing event handlers Bug Fixes: - Enhanced bet creation logic to query MatchModel and extract fixture_id from first bet detail's match - Implemented comprehensive bet details route with database session management and statistics calculation - Fixed template compatibility issues by eliminating server-side/client-side JavaScript conflicts - Added proper event listeners for delete bet detail buttons in bet management interface Database & API Improvements: - Ensured proper foreign key relationships between bets, bet_details, and matches tables - Enhanced error handling with proper HTTP status codes and user-friendly messages - Fixed attribute reference from column_value to float_value in MatchOutcomeModel queries - Improved database constraint compliance and data consistency validation Documentation Updates: - Updated README.md with version 1.2.10 critical bug fixes and stability improvements - Enhanced CHANGELOG.md with detailed technical fixes and implementation details - Added comprehensive troubleshooting section to DOCUMENTATION.md with root cause analysis The betting system is now fully functional with:✅ Complete CRUD operations without database constraint violations✅ Proper bet details page display with comprehensive information✅ Fixed JavaScript API interactions and event handling✅ Stable template rendering without server-side JavaScript conflicts✅ Enhanced error handling and user experience -
Stefy Lanza (nextime / spora ) authored
- Fixed 'MatchOutcomeModel' object has no attribute 'column_value' error - Changed outcome.column_value to outcome.float_value to match database model - API endpoint /api/cashier/available-matches now works correctly
-
Stefy Lanza (nextime / spora ) authored
- Replace hardcoded WIN1/WIN2/X betting terminology with database-driven outcomes - Enhanced /cashier/available-matches API endpoint to query match_outcomes table - Added generateOutcomeOptionsHTML() function for dynamic betting option generation - Implemented graceful fallback to standard options when database outcomes unavailable - Added print button to bets list in cashier dashboard with placeholder functionality - Enhanced API response structure with outcome_id, outcome_name, outcome_value, display_name - Updated documentation with comprehensive betting system section - Added troubleshooting guides and performance optimization details - Version 1.2.9 changelog and README updates with new features
-
Stefy Lanza (nextime / spora ) authored
Features: - Added comprehensive offline CDN fallback system with local Bootstrap and FontAwesome - Enhanced cashier interface with streamlined navigation (logo + clock + user menu only) - Implemented automatic CDN-to-local resource switching for network environments - Added PyInstaller integration for offline functionality in executable builds Technical Improvements: - Fixed FontAwesome icon display issues with proper CDN priority and local fallback - Optimized cashier navbar layout for focused, distraction-free interface - Added local vendor directory with complete Bootstrap 5.3.0 and FontAwesome 6.0.0 - Implemented JavaScript-based resource availability detection - Enhanced PyInstaller build configuration for automatic vendor file inclusion Documentation Updates: - Updated README.md with version 1.2.8 improvements - Enhanced CHANGELOG.md with detailed feature descriptions - Added comprehensive offline capabilities section to DOCUMENTATION.md - Documented cashier interface navigation and access control Files Modified: - mbetterclient/web_dashboard/templates/base.html (CDN fallback, navbar layout) - mbetterclient/web_dashboard/static/vendor/ (new directory with CDN resources) - CHANGELOG.md, README.md, DOCUMENTATION.md (documentation updates) - build.py (PyInstaller integration verified) This release ensures MbetterClient works seamlessly in offline network environments while providing a cleaner, more focused cashier interface.
-
Stefy Lanza (nextime / spora ) authored
- Fixed 'Unhealthy components detected: api_client' warning by implementing comprehensive heartbeat system - Added heartbeat calls in main loop, HTTP requests, database operations, and error handling - Added betting mode configuration UI in web dashboard with database persistence - Created Migration_015_AddBettingModeTable for betting_modes table - Added betting mode API endpoints (GET/POST /api/betting-mode) - Updated documentation with betting mode configuration and API client health monitoring - Enhanced error handling to prevent thread hangs and maintain health status - Added troubleshooting section for API client health issues
-
Stefy Lanza (nextime / spora ) authored
- Add message_bus.register_component() call in MatchTimerComponent constructor - Add message_bus.unregister_component() call in shutdown method - Fixes 'Recipient match_timer not found' warning when sending messages - Ensures proper message routing to the match timer component - Component can now receive START_GAME, SCHEDULE_GAMES, and CUSTOM messages
-
Stefy Lanza (nextime / spora ) authored
- Add /api/notifications endpoint for long polling real-time updates - Implement JavaScript long polling in base template for all dashboards - Add START_GAME, MATCH_START, and GAME_STATUS message handling - Update cashier dashboard with real-time timer and status updates - Handle match status updates when messages are received - Add visual notifications with toast messages - Implement automatic reconnection with exponential backoff - Update match timer display and pending matches list in real-time - Add event-driven architecture for dashboard updates Features: - Long polling requests every 30 seconds for real-time updates - START_GAME message starts countdown timer and updates status - MATCH_START message resets timer and shows running state - GAME_STATUS message updates match status and refreshes data - Automatic UI updates without page refresh - Toast notifications for important events - Robust error handling and reconnection logic
-
Stefy Lanza (nextime / spora ) authored
- Rename START_GAMES message type to SCHEDULE_GAMES for clarity - Add schedule_games() method to MessageBuilder class - Update all references in games_thread.py, match_timer.py, routes.py, and tests - Improve message naming consistency: * START_GAME: Actually starts games/timers * SCHEDULE_GAMES: Changes status to scheduled (doesn't start timer) - All message types now follow consistent naming convention - Fixes potential confusion between starting and scheduling actions
-
Stefy Lanza (nextime / spora ) authored
- Remove betting mode configuration section from cashier.html template - Remove associated JavaScript functions (loadCashierBettingMode, saveBettingMode) - Clean up event listeners and initialization code - Betting mode functionality is now restricted to admin users only - Improves UI by removing irrelevant features for cashier role
-
Stefy Lanza (nextime / spora ) authored
- Add self.heartbeat() call in MatchTimerComponent run loop - Fixes unhealthy component warning for match_timer - Ensures proper health monitoring for the timer component - Component will now pass health checks and not appear in unhealthy list
-
Stefy Lanza (nextime / spora ) authored
- Fix NameError: name 'g' is not defined in get_match_timer_state() function - Add 'g' to Flask imports in routes.py - This resolves the 500 error when accessing /api/match-timer/state endpoint
-
Stefy Lanza (nextime / spora ) authored
- Add --start-timer command line argument with configurable delay (default 4 minutes) - Implement MatchTimerComponent integration with proper initialization and registration - Add timer state API endpoints for web dashboard integration - Enhance message bus communication between timer component and web dashboard - Update documentation and changelog with comprehensive timer feature details - Fix timer component not being initialized during application startup - Add timer state caching and real-time API endpoint integration The timer automatically sends START_GAME messages after the specified delay, enabling automated match progression without manual intervention.
-
Stefy Lanza (nextime / spora ) authored
- Add complete match timer system section to documentation - Document timer display locations and visual states - Explain automatic match progression algorithm - Detail API endpoints for timer configuration and match starting - Document message bus integration with MATCH_START message - Add troubleshooting section for timer issues - Include performance optimization details - Document configuration options and visual styling - Add examples for API usage and error handling
-
Stefy Lanza (nextime / spora ) authored
- Add MATCH_START message type to message bus for match status changes - Implement countdown timer in both user and cashier interfaces - Create API endpoints for match timer configuration and match starting - Add timer display to status bar and navbar with visual feedback - Implement automatic match progression when timer reaches zero - Add CSS styling with color-coded states and animations - Timer defaults to configured match interval (20 minutes) - Automatically finds and starts next available match in priority order - Stops timer when no matches are available to start Features: - Real-time countdown with MM:SS format display - Color-coded timer states (normal/warning/danger) - Automatic match status progression via message bus - Priority-based match selection (bet -> scheduled -> pending) - Responsive design for both desktop and mobile - Error handling and graceful fallbacks - Integration with existing dashboard notification system
-
Stefy Lanza (nextime / spora ) authored
- Add comprehensive extraction management page with drag-and-drop interface - Implement server time digital clock showing time from mbetterc machine - Create database models for extraction associations and game configuration - Add database migration for new tables with proper indexing - Implement REST API endpoints for extraction management - Add server time API endpoint for accurate time synchronization - Update navigation to include extraction management page - Add digital clock to all dashboard interfaces including cashier dashboard - Implement default outcome associations (WIN1, X, WIN2) - Add time limit configuration for UNDER/OVER outcomes - Update documentation with comprehensive extraction system details - Add troubleshooting section for extraction and clock features Features: - Drag-and-drop outcome association management - Multi-association support for outcomes - Trash bin removal functionality - Real-time server time display (24-hour format) - Cross-interface clock availability - Database persistence for all settings - Professional UI with responsive design - Error handling and graceful fallbacks
-
- 22 Aug, 2025 1 commit
-
-
Stefy Lanza (nextime / spora ) authored
- Add ScreenCastComponent: New threaded component for screen capture and streaming - Implement FFmpeg-based cross-platform screen capture (Linux, Windows, macOS) - Add Chromecast device discovery and streaming using pychromecast - Create web-based screen cast interface at /screen_cast with real-time controls - Add HTTP streaming server for Chromecast-compatible video delivery - Integrate screen cast settings into web dashboard configuration panel - Add --no-screen-cast command line flag (enabled by default) - Update dependencies: ffmpeg-python>=0.2.0, pychromecast>=13.0.0 New Files: - mbetterclient/core/screen_cast.py: Main ScreenCastComponent implementation - mbetterclient/web_dashboard/screen_cast_routes.py: Flask API routes - mbetterclient/web_dashboard/templates/dashboard/screen_cast.html: Web interface - test_screen_cast_integration.py: Integration test suite Key Features: - Real-time device discovery and status updates - Platform-specific audio/video input sources - Quality settings (resolution, frame rate, bitrate) - Network stream URL generation for Chromecast access - Proper component lifecycle management and cleanup - Message bus integration with WEB_ACTION support Documentation: - Updated README.md with screen casting features and usage - Added comprehensive CHANGELOG.md entry for v1.2.4 - Extended DOCUMENTATION.md with complete screen casting guide Architecture Enhancement: - Extended from 4 to 5 threaded components - Added ScreenCastConfig to settings with database persistence - Enhanced web dashboard navigation with screen cast section
-
- 21 Aug, 2025 3 commits
-
-
Stefy Lanza (nextime / spora ) authored
- Fixed critical API synchronization bug: send Unix timestamp as long integer instead of ISO datetime string - Updated _get_last_fixture_timestamp() to return str(fixture_active_time) for proper server compatibility - Added comprehensive fixtures management system with dashboard integration - Created fixtures list and detail pages with Bootstrap styling and admin controls - Enhanced API client with proper timestamp handling and authentication for ZIP downloads - Updated documentation (README.md, CHANGELOG.md, DOCUMENTATION.md) with new features - Completed fixtures dashboard with real-time synchronization and administrative controls - Fixed server communication to use proper Unix timestamp format: '1755773200' instead of '2025-08-21T14:31:3'
-
Stefy Lanza (nextime / spora ) authored
- Added MatchModel and MatchOutcomeModel SQLAlchemy models adapted from mbetterd MySQL schema to SQLite - Created Migration_008_AddMatchTables with comprehensive indexing and foreign key constraints - Enhanced cross-platform directory handling for Windows (%APPDATA%), macOS (~/Library/Application Support), and Linux (~/.local/share) - Implemented persistent user data/config directories for PyInstaller executable compatibility - Added comprehensive test suite (test_persistent_dirs.py) for cross-platform directory functionality - Updated settings.py with robust error handling and fallback mechanisms for directory creation - Modified application.py and main.py to use consistent persistent directory approach - Updated documentation (README.md, CHANGELOG.md, DOCUMENTATION.md) with new features and cross-platform persistence details - Cleaned up test files and upload artifacts
-
Stefy Lanza (nextime / spora ) authored
- Template Management System: Complete HTML overlay template upload, delete, and real-time editing - Persistent Template Storage: Cross-platform user template storage (AppData/Library/config) - Template Priority System: Uploaded templates override built-in templates with same filename - Custom URL Scheme Handler: overlay:// protocol enables uploaded templates to access overlay.js - Live Template Switching: Dashboard forms instantly switch to selected template with overlay updates - Template Code Viewer: View and copy template source code with syntax highlighting - File Watcher Integration: Automatic template reloading when files change on disk - Enhanced Template UI: Popup previews, source viewer, dynamic template selection Fixes: - API endpoint mismatch: Fixed /api/overlay/update vs /api/overlay URL inconsistency - Template selection: Fixed video test page template selection with auto .html extension - JavaScript accessibility: Custom overlay:// scheme allows uploaded templates to access overlay.js - MessageBuilder: Added missing overlay_update() method - Template reload logic: Load specific template from form instead of reloading current Technical details: - OverlayUrlSchemeHandler for JavaScript file serving via overlay:// protocol - Qt Resource Collections (QRC) integration for embedded JavaScript files - PyInstaller compatibility with persistent user data outside executable bundle - WebChannel communication enhanced between Qt application and JavaScript overlays - Cross-platform persistent storage paths with proper fallback mechanisms
-
- 20 Aug, 2025 6 commits
-
-
Stefy Lanza (nextime / spora ) authored
- FIXED: Qt video black screen issue - WindowStaysOnTopHint interference eliminated - FIXED: Database configuration persistence preventing always_on_top fix from taking effect - FIXED: Threading architecture - Qt player now runs properly on main thread - FIXED: Window behavior - main window goes behind other apps, overlay stays on top - ADDED: Clean minimal interface - removed all toolbars, menus, status bars, context menus - ADDED: Complete keyboard control - all functionality via shortcuts (F11, S, Space, M, Escape) - UPDATED: Documentation with critical fixes and resolution details - UPDATED: CHANGELOG.md with version 1.2.1 improvements - UPDATED: README.md with latest critical fixes and interface changes This resolves the core video display problem and achieves complete functional parity between main.py and test_video_debug.py with professional interface.
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
- Add window positioning synchronization for separate overlay windows - Overlay window now correctly appears over main video player window - Add move and resize event handlers to keep windows synchronized - Add proper overlay window cleanup in closeEvent - Separate top-level window approach successfully resolves Qt rendering conflicts
-
Stefy Lanza (nextime / spora ) authored
- Enhanced QWebEngineView transparency configuration without desktop bleed-through - Modified overlay HTML structure to remove container wrapper that was blocking video - Improved overlay positioning as child widget instead of layout widget - Added explicit transparent background CSS for HTML and body elements - Fixed overlay container to ensure no background interferes with video display - Maintained overlay functionality while allowing video content to be visible underneath This should resolve the issue where videos were playing but hidden behind the overlay widget.
-
Stefy Lanza (nextime / spora ) authored
- Removed web video player modal from video test page - Updated instructions to clarify videos play in Qt player window - Changed button text to 'Play in Qt Player' for clarity - Added warning alert explaining Qt player window usage - Enhanced success message to guide users to Qt player window - Fixed Qt player file path handling for relative paths from uploads directory - Added file existence verification before attempting to play video - Improved error handling for missing video files with overlay display Videos uploaded through web interface now properly play in Qt player window instead of web browser.
-
Stefy Lanza (nextime / spora ) authored
- Implemented dual overlay system with command-line switchable options (--overlay-type webengine/native) - Fixed critical Qt player window close to properly exit entire application - Restored and enhanced Ctrl+C signal handling functionality - Added admin-only quit button to web dashboard with guaranteed force termination - Fixed background thread management with proper daemon threads - Resolved WebEngine JavaScript timing errors with enhanced DOM readiness checks - Eliminated desktop transparency bleed-through issues - Removed video controls for clean overlay-only interface - Prevented circular dependency deadlocks in shutdown process - Enhanced Qt threading architecture and signal integration - Updated comprehensive documentation and changelog Technical fixes: - closeEvent() in Qt player now allows proper Qt shutdown sequence - signal_handler() enhanced to detect Qt applications and use qt_app.quit() - ThreadManager modified to set daemon=True for all background threads - Added /api/system/shutdown endpoint with force-exit mechanism using os._exit(0) - Enhanced aboutToQuit signal handling for proper lifecycle management - WebEngine overlay safety improved with comprehensive error handling
-
- 19 Aug, 2025 6 commits
-
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
-
Stefy Lanza (nextime / spora ) authored
- Remove 'user created successfully' alert after user creation - Replace edit user placeholder alert with fully functional edit modal - Add update_user() method to AuthManager with validation - Add update_user() method to DashboardAPI class - Add PUT /api/users/{user_id} route for user updates - Edit modal includes form validation and error handling - Pre-populates current user data in edit form - Supports updating username, email, password (optional), and admin status - Validates username/email uniqueness before saving - Automatically refreshes user list after successful updates User management interface is now fully functional with create, edit, and delete operations. -
Stefy Lanza (nextime / spora ) authored
- Replace alert placeholders with proper fetch() calls to /api/users endpoint - Add proper error handling for user creation and deletion - Enhanced user list loading with error handling - Users can now be actually created, deleted, and refreshed properly - Form resets after successful user creation - Modal closes automatically after successful creation This completes the user management functionality that was showing alerts instead of performing actual database operations.
-
Stefy Lanza (nextime / spora ) authored
- Fixed critical Ctrl+C signal handler - now exits gracefully with single press - Fixed API token display issue - tokens now properly show in modal dialog after creation - Fixed user creation and management - users now save properly and display immediately - Fixed SQLAlchemy session binding issues causing data access errors - Added permanent token deletion functionality (revoke now deletes completely) - Added missing ConfigManager.update_section() method for web dashboard settings - Enhanced frontend with professional modal dialogs and proper error handling - Optimized shutdown process with reduced timeouts for faster exit - Updated comprehensive documentation with troubleshooting guide - Added detailed CHANGELOG.md documenting all improvements Technical improvements: - All database operations now extract data before session closure - Enhanced signal handling flow: signal → shutdown event → cleanup → exit - Section-based configuration management with nested support - Improved session lifecycle management across all components - Professional UI enhancements with Bootstrap modal integration
-
Stefy Lanza (nextime / spora ) authored
- Complete cross-platform multimedia client application - PyQt5 video player with dynamic overlay templates - Flask web dashboard with JWT authentication - REST API client with configurable endpoints - Multi-threaded architecture with Queue-based messaging - SQLite database with automatic migrations - PyInstaller build configuration for executables - Comprehensive documentation and build scripts - Offline-first design with local asset fallbacks
-