1. 26 Aug, 2025 15 commits
    • Stefy Lanza (nextime / spora )'s avatar
      v1.2.10: Fix critical betting system bugs and enhance stability · 638edd7e
      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
      638edd7e
    • Stefy Lanza (nextime / spora )'s avatar
      fix: Correct attribute name in betting outcomes API · f22b4a1e
      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
      f22b4a1e
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Implement dynamic betting outcomes and print functionality · 93ffae85
      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
      93ffae85
    • Stefy Lanza (nextime / spora )'s avatar
      Version 1.2.8: Offline CDN Fallback & Enhanced Cashier Interface · e8012cdc
      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.
      e8012cdc
    • Stefy Lanza (nextime / spora )'s avatar
      Version 1.2.7: Fix API client health monitoring and add betting mode configuration · 126fa697
      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
      126fa697
    • Stefy Lanza (nextime / spora )'s avatar
      fix: Register MatchTimerComponent with message bus · 4ddf7439
      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
      4ddf7439
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Implement real-time notifications with long polling · c0463982
      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
      c0463982
    • Stefy Lanza (nextime / spora )'s avatar
      refactor: Consolidate message types - rename START_GAMES to SCHEDULE_GAMES · 74557512
      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
      74557512
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Remove betting mode select menu from cashier dashboard · d5cdad5a
      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
      d5cdad5a
    • Stefy Lanza (nextime / spora )'s avatar
      fix: Add missing heartbeat to MatchTimerComponent · b188a174
      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
      b188a174
    • Stefy Lanza (nextime / spora )'s avatar
      fix: Add missing Flask 'g' import to routes.py · 7d3b1b04
      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
      7d3b1b04
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Add automated game timer with --start-timer command line switch · 13175bf9
      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.
      13175bf9
    • Stefy Lanza (nextime / spora )'s avatar
      docs: Add comprehensive match timer system documentation · 17a5dc02
      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
      17a5dc02
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Add countdown timer for match intervals · 97cca9c5
      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
      97cca9c5
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Add extraction management page and server time digital clock · 2966ca0e
      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
      2966ca0e
  2. 22 Aug, 2025 1 commit
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Add comprehensive screen casting system with Chromecast integration · 40636f79
      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
      40636f79
  3. 21 Aug, 2025 3 commits
    • Stefy Lanza (nextime / spora )'s avatar
      Fix API timestamp format bug and complete fixtures management system (v1.2.3.1) · da6b6529
      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'
      da6b6529
    • Stefy Lanza (nextime / spora )'s avatar
      Add matches and match_outcomes database tables with cross-platform PyInstaller persistence (v1.2.3) · 800411c8
      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
      800411c8
    • Stefy Lanza (nextime / spora )'s avatar
      feat: Complete template management system with live switching and persistent storage · c344a65f
      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
      c344a65f
  4. 20 Aug, 2025 6 commits
    • Stefy Lanza (nextime / spora )'s avatar
      CRITICAL FIX: Resolve Qt video player display issues and implement clean interface · 9ea25a11
      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.
      9ea25a11
    • Stefy Lanza (nextime / spora )'s avatar
      removed useless videos · 72a87e4b
      Stefy Lanza (nextime / spora ) authored
      72a87e4b
    • Stefy Lanza (nextime / spora )'s avatar
      Fix Qt player overlay window positioning · 0959c74e
      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
      0959c74e
    • Stefy Lanza (nextime / spora )'s avatar
      Fix Qt player overlay transparency: Allow video to show through WebEngine overlay · 54d1a139
      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.
      54d1a139
    • Stefy Lanza (nextime / spora )'s avatar
      Fix video test page: Remove web player modal and fix Qt player file paths · bed48471
      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.
      bed48471
    • Stefy Lanza (nextime / spora )'s avatar
      v1.2.0: Qt Player Overlay System Enhancement and Complete Shutdown Fix · 11265546
      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
      11265546
  5. 19 Aug, 2025 6 commits
    • Stefy Lanza (nextime / spora )'s avatar
      Removed qt5 and add qt6 · 83fb8e59
      Stefy Lanza (nextime / spora ) authored
      83fb8e59
    • Stefy Lanza (nextime / spora )'s avatar
      Finalized user creation · 862b21ba
      Stefy Lanza (nextime / spora ) authored
      862b21ba
    • Stefy Lanza (nextime / spora )'s avatar
      Fix user management interface · 1c13c949
      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.
      1c13c949
    • Stefy Lanza (nextime / spora )'s avatar
      Fix user creation frontend - replace placeholder alerts with actual API calls · 7ab1fbf6
      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.
      7ab1fbf6
    • Stefy Lanza (nextime / spora )'s avatar
      Version 1.1.0: Major stability and usability improvements · de923e4b
      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
      de923e4b
    • Stefy Lanza (nextime / spora )'s avatar
      Initial release of MbetterClient v1.0.0 · cd20c430
      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
      cd20c430