Skip to content

Version 1.9.0

Choose a tag to compare

@BlueSquare23 BlueSquare23 released this 08 Feb 22:41
· 161 commits to master since this release
bb90635

Web-LGSM v1.9.0 Release Notes

Release Overview

Release Date: February 8, 2026
Version: v1.9.0 (Previously planned as v1.8.7)
Significance: This release marks a major architectural shift with significant structural changes, improved user management, and some security patches. The version jump to v1.9.0 reflects some minor breaking changes and substantial re-architecture work undertaken.

Major Architectural Improvements

Application Restructuring

  • Modular Codebase Organization:

    • Broke up monolithic views.py, auth.py, and utils.py into modular, route-specific blueprint files
    • Restructured app directory to better house individual application components
    • Separated API routes into individual blueprint files for better scalability
    • Organized models into individual files within a models package directory
  • Service Layer Implementation:

    • Introduced new service classes for better separation of concerns
    • Created ConfigManager class for handling INI configurations with Flask-like interface
    • Implemented CommandExecService with dependency inversion for local/remote command execution
    • Added UserModuleService for running shared code as multiple users via sudo
    • Introduced BlocklistService and ProcInfoService as proper singleton classes
  • Directory Reorganization:

    • Created dedicated services/ and managers/ directories
    • Moved extension initialization to separate extensions.py file
    • Renamed "scripts" directory to "bin" for consistency

Enhanced User Management & Security

New Alternative User Management System

  • Sudo-Based User Execution:

    • Replaced SSH-based local user management with sudoers-based approach
    • Added new playbook for managing sudoers rules during user creation/deletion
    • Created mechanism for extending allowed username list with custom entries
    • Improved speed by eliminating SSH overhead for local user operations
  • User Permission Structure Overhaul:

    • BREAKING CHANGE: Completely restructured user permission JSON format
    • New permission structure with separate routes, controls, and server_ids arrays
    • Simplified permission checking using Flask's current_user interface
    • Moved permission logic into database class for cleaner implementation

User Interface & Experience

Installation Improvements

  • Enhanced Install Page:

    • Added new form to edit server details before installation
    • Support for custom installation username, path, and server name
    • Add backend mechanism for allowing persistent non-lgsm system user installs
  • Terminal & Control Improvements:

    • Fixed terminal scaling issues on dynamic user resize
    • Renamed "Command" to "Controls" throughout the project for consistency
    • Refactored command handling into new ControlService class
    • Updated controls page to work with both same-user and alternative user installs

Performance & Infrastructure

Caching & Optimization

  • Flask Cache Integration:

    • Implemented Flask-Cache for tmux socket name caching
    • Added caching for configuration buttons on controls page
    • Fixed cached null socket file name bug after fresh installations
  • SSH Connection Optimization:

    • Added caching for authenticated SSH client objects to reduce response times
    • Improved overall system performance for remote server management

Technical Foundation

Testing & Quality Assurance

  • Enhanced Test Infrastructure:

    • Added random test execution order to catch order-dependent bugs
    • Fixed integration test race conditions and debugging issues
    • Added unit tests for new service classes including ConfigManager
  • Continuous Integration:

    • Fixed CI/CD pipeline coverage badge generation

System Administration

Configuration Management

  • Dynamic Configuration Handling:

    • New ConfigManager class with batch update capabilities using context managers
    • Support for dynamic config reloading when underlying files change
    • Default value fallbacks for robust error handling
  • Process Management:

    • Moved global process management to dedicated service classes
    • Improved process information sharing between application components
    • Better separation of concerns for system monitoring

Bug Fixes & Maintenance

Critical Fixes

  • Installation & Deployment:

    • Fixed dpkg installation checks for Debian systems
    • Fixed same-user installation status indicators
  • Security Updates:

    • Upgraded requests dependency to v2.32.5
    • Updated SECURITY.md documentation with new version support information
  • User Interface:

    • Fixed bug with term not scaling on dynamic user resize
    • Added new form for entering game server installation details

Breaking Changes & Migration Notes

  • User Permission Structure: The user permission JSON format has changed significantly. An Admin user will need to go to the Edit Users and manually re-enter the users permissions, then save. Refer to FAQ #13 for migration instructions.
  • SSH Local Management: The SSH-based local user management system has been replaced with a sudoers-based approach, requiring sudoers rule configuration during installation. App will try to update sudoers appropriately.
  • API Endpoints: Some API endpoints may have changed due to architectural restructuring.

Future Development Foundation

This release lays the groundwork for continued application growth with:

  • Cleaner separation of concerns through service classes
  • More maintainable codebase structure
  • Improved scalability for future features
  • Better testing infrastructure for reliable development

Note: This release represents a significant milestone in Web-LGSM's evolution, transitioning from a monolithic codebase to a more modular, maintainable architecture while introducing important security and user management improvements. Users should review the breaking changes before upgrading from v1.8.x versions. Feel free to report any issue or reach out for support!