v2.5.22
馃摑 VenvHub Pro - Release Notes (Changelog)
Version: v2.5.22 (Jump from version v2.5.17)
This document summarizes all differences, new features, and bug fixes between versions 2.5.17 and 2.5.22.
馃殌 New Features and Improvements
Intelligent Dependency Management (APT Logic and Uninstall Guard)
- An invisible background process (
AptListener.start_listening) was added to monitor installations and uninstallations. - Uninstall Guard: The system now prevents the user from uninstalling a package that other installed packages depend on (prevents breaking the environment).
- Auto-Remove: Automatic removal of "orphaned" dependencies when the main package is uninstalled (similar to
apt-get autoremovein Linux).
Parallel Package Loading (Pip Manager Speedup)
- Parallel processing (
concurrent.futures.ThreadPoolExecutor) was implemented in theload_list.pyfile. - The list of installed and outdated packages is now loaded concurrently, cutting the Pip Manager loading time in half.
New Robust Parser for requirements.txt
- Created a new service
RequirementsParserthat reads package requirements with extreme precision. - Supports nested files (
-r), editable installations (-e), direct URL links (@ url), ignoring comments, and line continuation (\). - Includes security protection against Path Traversal attacks.
Bulk Operations
- New commands
show_multipleanduninstall_multiplewere added topip_commands.pyanduv_commands.pyfor extremely fast bulk operations on packages.
Comprehensive Test Suite
- Added a
tests/folder to the project structure with an extensive suite of automated tests (e.g.,test_detectors_flow.py,test_apt_listener.py,test_requirements_parser.py).
馃悰 Bug Fixes and Stability
Thread-Safety Locks (Protection Against Freezes and Thread Crashes)
- LanguageManager: Added
threading.Lock(). Prevents application crashes if multiple windows attempt to read/change language files simultaneously. - AptLogic: Implemented reentrant locks (
threading.RLock) separated for each virtual environment (Venv). Multiple operations in a single Venv can no longer conflict over writing to files.
Atomic Configuration Writing (Data Loss Protection)
- In
system_listener.py, the method for savingportable_system_py.jsonwas rewritten. Data is first written to a temporary file (.tmp), flush to disk is forced (os.fsync), and subsequently the old file is replaced in a single atomic operation (os.replace). If the PC crashes during saving, the configuration file will never be corrupted.
GUI Freeze Fixes
- In
python_ver.py, when deleting runtimes, signals were connected with an explicitQt.ConnectionType.QueuedConnectionparameter. This prevented the main window from freezing when working with background threads.
More Accurate and Safer uv Installer Detection
- The
uv_detector.pymodule underwent a complete rewrite. The old (slow and error-prone) method usingpip show uvwas replaced by intelligent searching. - The application now strictly checks whether the detected
uv.exeactually belongs to the actively selected Python. This prevents launching an incompatibleuvfrom another (foreign) Python version. - Added an accurate error message in the GUI if the user attempts to enable
uvfor a Python that does not have it installed.
Proper Pip Worker Success Evaluation
- In the
PipWorkerandUpdateAllWorkerclasses, theself.successattribute was fixed. Previously, callbacks for APT logic could trigger even when a background installation actually failed (e.g., due to an error code). Now,process.returncode == 0is checked.