Skip to content

Version 1.9.1

Choose a tag to compare

@BlueSquare23 BlueSquare23 released this 12 Apr 01:46
· 101 commits to master since this release
c28249b

Web-LGSM v1.9.1 Release Notes

Release Overview

Release Date: April 11, 2026
Version: v1.9.1
Significance: This release is a monumental internal transformation of the Web-LGSM codebase. While user-facing features are targeted and specific, the underlying engine has been completely rebuilt using Clean Architecture principles. This sets the stage for a much more testable, maintainable, and secure application moving forward.

Major Architectural Overhaul: Clean Architecture Migration

The core of this release is a complete backend restructure. We've moved away from a monolithic "Utils and Managers" pattern to a strict Clean Architecture layering system (Domain, Application, Infrastructure, Interface). This resolves long-standing issues with circular dependencies, improves code cohesion, and dramatically increases testability.

Domain & Application Layer (Core Business Logic)

  • New Core Entities: Created proper domain objects for GameServer, User, CronJob, AuditLog, SystemMetrics, and ProcInfo.
  • Repository Pattern: Implemented repository interfaces to abstract data persistence, separating business rules from database and system implementation details.
  • Use Case Driven Development: Refactored all major features to be invoked via discrete Use Cases (e.g., InstallGameServerUseCase, UpdateSortOrderUseCase, GetUnmanagedCronJobsUseCase).

Infrastructure Layer Overhaul

  • Dependency Inversion: Concrete implementations (like SQLAlchemy for DB or python-crontab for system tasks) now depend on the core abstractions defined in the domain layer.
  • Service Decomposition: The monolithic "Services" have been broken down and moved to the Infrastructure layer as concrete adapters:
    • Cron Management: Replaced Ansible Connector calls with pure Python (python-crontab) executed via the UserModuleService. This is faster and more secure.
    • Command Execution: Moved CommandExecutor and ConfigManager into infrastructure adapters.
    • SSH Abstraction: Introduced SshClientInterface to allow for dependency inversion and unit testing of remote connections without needing live auth.
  • Cleaner Logging: Migrated all logging to standard Python logging calls, decoupling logs from the Flask app context.

Interface Layer Cleanup

  • Route Slimming: Stripped database and business logic from Flask route code. Routes now simply translate HTTP requests into Use Case calls.
  • Interface Factory: Implemented a dynamic factory to shorten complex dependency injection calls in route handlers, keeping the presentation layer clean.
  • Auth Boundary: Established a clear boundary where Flask-Login's current_user (SQLAlchemy model) is converted to a domain User entity when crossing into business logic.

New Features & Enhancements

Home Page Server Management

  • Custom & Alphabetical Sorting: You can now reorder your game server list! Use the new drag-and-drop interface (powered by SortableJS) to set a custom order, or use the new sort buttons for A-Z / Z-A ordering. (Resolves #55)

Cron Job Administration

  • Unmanaged Job Visibility: Administrators can now see a greyed-out list of cron jobs that exist in the system crontab but are not managed by Web-LGSM. This provides better visibility into system activities. (Resolves #49)
  • Natural Language Descriptions: Cron schedule expressions are now translated into more human-friendly English phrases.

Security & Documentation

  • Security Headers: Added Content-Security-Policy and XSS protection headers to harden the application interface.
  • Architecture Documentation: Added comprehensive documentation outlining the new Application Software Architecture, including detailed diagrams of the Clean Architecture layers.
  • Refreshed Documentation: Audited and updated existing project documentation to reflect the new code structure and patterns.

Bug Fixes & Maintenance

Installation & Configuration

  • Non-Fatal Install Fix: Fixed a bug in root_install.sh where attempting to create an existing directory (/opt/web-lgsm/utils) caused a fatal error. The script is now more robust.
  • Terminal Dependency: Fixed the installation script path for node xterm to ensure terminal functionality works out of the box.

Performance & Reliability

  • File Manager Memory Leak: Fixed a bug where LocalFileManager was not clearing the output buffer, causing stale process information to hang around in memory.

Code Quality & Testing

  • Increased Test Coverage: Added new unit tests for previously untested infrastructure classes, including SSH logic and critical low-coverage areas.
  • Integration Test Stability: Applied multiple tweaks to ensure the full suite of integration tests passes reliably with the new architecture.

Note on Upgrading: While this release fundamentally rewires the application internally, the upgrade path is designed to be seamless for existing installations. Database migrations will run automatically to support new features like server sort order. As always, please ensure you have a recent backup before upgrading.